Commit f2279258 authored by Patrik B's avatar Patrik B

minor fixes (pre-release) and update readme

parent 8256737d
......@@ -8,7 +8,9 @@ The format is (hopefully) based on [Keep a Changelog](https://keepachangelog.com
## [1.1.0] - 2019-10-27
### Added
* Support for ALL files (work in progress)
* Syntax highlighting for the ADOxx Library Language (ALL).
### Fixed
* Fixed bug ([#15](https://git.boc-group.eu/adoxx/adoscript-vs-code-support/issues/15)) where some valid procedure parameters were marked as illegal.
## [1.0.0] - 2019-10-18
### Removed
......
# ADOxx AdoScript Extension
The extension focuses on the static aspects of the AdoScript language, providing syntax highlighting, code snippets, comment toggling and code block folding.
The extension focuses on the static aspects of the AdoScript language and others used by the ADOxx platform, providing syntax highlighting, code snippets, comment toggling and code block folding.
The syntax highlighting focuses on recognizing the right concepts and displaying them according to the used theme. Additionally it tries to identify illegal code where possible and mark it accordingly, like use of variables where they aren't allowed or having lower-case characters in a procedure name.
......@@ -27,7 +27,7 @@ The syntax highlighting focuses on recognizing the right concepts and displaying
![Code highlighting and snippets](https://git.boc-group.eu/adoxx/adoscript-vs-code-support/raw/master/images/AdoxxAdoScriptExtension1.gif)
* Highlighting of both AdoScript code and LEO programs, with some help for noticing errors: if something isn't highlighted properly or even marked as illegal then there's probably some syntax error, like missing closing brackets or unintentional escaping of double quotes. Note: the debug modifier is marked as illegal.deprecated so it can be quickly identified in the code.
* Highlighting of, AdoScript code, LEO programs and the ADOxx Library Language, with some help for noticing errors: if something isn't highlighted properly or even marked as illegal then there's probably some syntax error, like missing closing brackets or unintentional escaping of double quotes. Note: the debug modifier is marked as illegal.deprecated so it can be quickly identified in the code.
* Any LEO-program (e.g. GRAPHREP, ATTRREP, EXPRESSION-type attributes etc.) now has basic code highlighting as long as it doesn't deviate from the LEO grammar.
* Additionally AdoScript specific code highlighting is provided for its additional keywords and API-commands.
* Code snippets for typical LEO and AdoScript patterns, like conditional or loop statements and the AdoScript message port calls. All snippets in alphabetical order:
......@@ -220,7 +220,7 @@ The lists are sorted in alphabetical order.
* constant.numeric.measure - a numeric constant denoting a measure (e.g. 3cm)
* constant.numeric.time - a numeric constant denoting a time or duration (e.g. 0:002:12:30:02)
* entity.name.function - the name of a non-built-in function
* invalid.illegal - anything that looks to be something that's not allowed at the place it is
* invalid.illegal - anything that seems to be something that's not allowed at the place it is
* keyword.control.pass-on - the one commands that pass on the control flow to a different part of code (i.e. @INCLUDE)
* keyword.operator.new - functions for creating more complex values (arrays(), maps(), lambdas())
* keyword.operator.arithmetic - arithmetic operators including the unary negation (e.g. +, -, *)
......@@ -273,7 +273,7 @@ The lists are sorted in alphabetical order.
* entity.name.function - the name of a non-built-in function
* entity.name.function.procedure - the name of a non-built-in procedure (under this scope because procedures behave like functions in other languages)
* invalid.deprecated.debug - used to distinguish the debug modifier from its surroundings
* invalid.illegal - anything that looks to be something that's not allowed at the place it is
* invalid.illegal - anything that seems to be something that's not allowed at the place it is
* keyword.control.internal - commands that control the flow inside the code without really passing it outside of the execution scope (e.g. IF, ELSE, FOR, WHILE, NEXT, BREAK)
* keyword.control.pass-on - commands that pass on the control flow to a different part of code or entity (e.g. START, EXIT, CC)
* keyword.other.assignment - commands that deal with assigning values to variables (SET, SETL, SETG, LEO)
......@@ -332,4 +332,73 @@ The lists are sorted in alphabetical order.
* variable.other.assignment - the name of a variable (can also be an array or map) that gets a value assigned through using SET, SETL, SETG or LEO
* variable.parameter.definition - the name of a parameter that is defined (e.g. in a function or procedure definition)
### ALL
**Note**: all of the scopes end with `.all` which will be omitted in the following list.
**Note**: `meta.` generally covers the entire part of a specific code structure from start to finish (e.g. entire definition of a class).
* comment.line.double-slash - single line comment
* comment.todo - the TODO keyword in a comment
* constant.character.escape - the escape character used in strings
* constant.numeric.decimal - a constant decimal number (e.g. 3, 5.3)
* constant.numeric.hex - a constant hexadecimal number (e.g. $6fa)
* constant.numeric.version-number - the used ALL version
* entity.name.file - the name of a file in the library
* entity.name.type.application-library - the name of an application library
* entity.name.type.attributeprofile-class - the name of an attributeprofile class
* entity.name.type.bp-library - the name of a business process library
* entity.name.type.class - the name of a (modeling) class
* entity.name.type.record-class - the name of a record class
* entity.name.type.relationclass - the name of a relation class
* entity.name.type.we-library - the name of a working environment library
* entity.name.type.inheritance.attributeprofile-class - the name of an attributeprofile class from which aspects are inherited
* entity.name.type.inheritance.bp-library - the name of a business process library from which aspects are inherited
* entity.name.type.inheritance.class - the name of a (modeling) class from which aspects are inherited
* entity.name.type.inheritance.record-class - the name of a record class from which aspects are inherited
* entity.name.type.inheritance.we-library - the name of a working environment library from which aspects are inherited
* invalid.illegal - anything that seems to be something that's not allowed at the place it is
* keyword.operator.arithmetic - the unary negation operator -
* keyword.operator.inheritance - the : character used for inheritance
* keyword.other.content - keyword used to specify the content of a file
* keyword.other.end - keyword used to indicate the end of defining a default RECORD attribute
* keyword.other.facet - keyword used to specify a facet of an attribute
* keyword.other.from - keyword used to define the source of a relation class
* keyword.other.record-value - keyword used to define the default value for an attribute of type RECORD
* keyword.other.value - keyword used to specify the default value of an attribute of one of its facets
* keyword.other.version - keyword for indicating the used ALL version
* keyword.other.to - keyword used to define the target of a relation class
* meta.definition.app-library - everything that defines an application library
* meta.definition.attributeprofile-class - everything that defines an attributeprofile class
* meta.definition.bp-library - everything that defines a business process library
* meta.definition.class - everything that defines a (modeling) class
* meta.definition.class-attribute - everything that specifies an class attribute (static)
* meta.definition.facet - everything that specifies the facet of an attribute
* meta.definition.file - everything that specifies the contents of a file
* meta.definition.instance-attribute - everything that specifies an instance attribute
* meta.definition.record-class - everything that defines a record class
* meta.definition.record-value - everything that defines the default values for an attribute of type RECORD
* meta.definition.relationclass - everything that defines a relation class
* meta.definition.value - everything that defines the default value of an attribute or one of its facets
* meta.definition.we-library - everything that defines a working environment library
* meta.version - everything that specifies the used ALL version
* punctuation.section.comment.line - character indicating the start of a line comment
* punctuation.section.identifier - characters indicating the start or end of an identifier (i.e. < and > )
* source - anything that is considered a definition in ALL
* storage.file - the keyword used to specify the contents of a file
* storage.type - the type of an attribute (e.g. STRING, INTEGER, ENUMERATION, INTERREF)
* storage.type.application-library - the keyword to define a new application library
* storage.type.attributeprofile - the keyword to define a new attributeprofile class
* storage.type.bp-library - the keyword to define a new business process library
* storage.type.class - the keyword to define a new (modeling) class
* storage.type.class-attribute - the keyword to define a new class attribute (static)
* storage.type.instance-attribute - the keyword to define a new instance attribute
* storage.type.keyword - the keyword to specify the type of an attribute
* storage.type.record - the keyword to define a new record class
* storage.type.relationclass - the keyword to define a new relation class
* storage.type.we-library - the keyword to define a new working environment library
* string.quoted.double - a string using double-quotes
* string.quoted.double.begin - the beginning double-quote of a string
* string.quoted.double.end - the ending double-quote of a string
* support.variable.facet - the name of a facet
* variable.other.definition.attribute - the name of an attribute (instance or class)
[(back to ToC)](#toc)
\ No newline at end of file
......@@ -58,7 +58,7 @@
"include": "#file"
}, {
"match": "\\S+",
"name": "invalid.illegal.asc"
"name": "invalid.illegal.all"
}]
},
......@@ -69,11 +69,11 @@
"beginCaptures": {
"1": { "name": "storage.type.record.all" },
"2": { "name": "punctuation.section.identifier.all" },
"3": { "name": "entity.name.type.record.all" },
"3": { "name": "entity.name.type.record-class.all" },
"4": { "name": "punctuation.section.identifier.all" },
"5": { "name": "keyword.operator.all" },
"5": { "name": "keyword.operator.inheritance.all" },
"6": { "name": "punctuation.section.identifier.all" },
"7": { "name": "entity.other.inherited-class.all" },
"7": { "name": "entity.name.type.inheritance.record-class.all" },
"8": { "name": "punctuation.section.identifier.all" }
},
"patterns": [{
......@@ -84,7 +84,7 @@
"include": "#class-attribute"
}, {
"match": "\\S+",
"name": "invalid.illegal.asc"
"name": "invalid.illegal.all"
}]
},
......@@ -95,11 +95,11 @@
"beginCaptures": {
"1": { "name": "storage.type.attributeprofile.all" },
"2": { "name": "punctuation.section.identifier.all" },
"3": { "name": "entity.name.type.attributeprofile.all" },
"3": { "name": "entity.name.type.attributeprofile-class.all" },
"4": { "name": "punctuation.section.identifier.all" },
"5": { "name": "keyword.operator.all" },
"5": { "name": "keyword.operator.inheritance.all" },
"6": { "name": "punctuation.section.identifier.all" },
"7": { "name": "entity.other.inherited-class.all" },
"7": { "name": "entity.name.type.inheritance.attributeprofile-class.all" },
"8": { "name": "punctuation.section.identifier.all" }
},
"patterns": [{
......@@ -110,7 +110,7 @@
"include": "#class-attribute"
}, {
"match": "\\S+",
"name": "invalid.illegal.asc"
"name": "invalid.illegal.all"
}]
},
......@@ -123,9 +123,9 @@
"2": { "name": "punctuation.section.identifier.all" },
"3": { "name": "entity.name.type.bp-library.all" },
"4": { "name": "punctuation.section.identifier.all" },
"5": { "name": "keyword.operator.all" },
"5": { "name": "keyword.operator.inheritance.all" },
"6": { "name": "punctuation.section.identifier.all" },
"7": { "name": "entity.other.inherited-class.all" },
"7": { "name": "entity.name.type.inheritance.bp-library.all" },
"8": { "name": "punctuation.section.identifier.all" }
},
"patterns": [{
......@@ -140,7 +140,7 @@
"include": "#relationclass"
}, {
"match": "\\S+",
"name": "invalid.illegal.asc"
"name": "invalid.illegal.all"
}]
},
......@@ -153,9 +153,9 @@
"2": { "name": "punctuation.section.identifier.all" },
"3": { "name": "entity.name.type.we-library.all" },
"4": { "name": "punctuation.section.identifier.all" },
"5": { "name": "keyword.operator.all" },
"5": { "name": "keyword.operator.inheritance.all" },
"6": { "name": "punctuation.section.identifier.all" },
"7": { "name": "entity.other.inherited-class.all" },
"7": { "name": "entity.name.type.inheritance.we-library.all" },
"8": { "name": "punctuation.section.identifier.all" }
},
"patterns": [{
......@@ -170,7 +170,7 @@
"include": "#relationclass"
}, {
"match": "\\S+",
"name": "invalid.illegal.asc"
"name": "invalid.illegal.all"
}]
},
......@@ -179,7 +179,7 @@
"end": "(?=\\b(ATTRIBUTEPROFILECLASS|BUSINESS PROCESS LIBRARY|FILE|RECORDCLASS|WORKING ENVIRONMENT LIBRARY)\\b)",
"name": "meta.definition.file.all",
"beginCaptures": {
"1": { "name": "storage.file.record.all" },
"1": { "name": "storage.file.all" },
"2": { "name": "punctuation.section.identifier.all" },
"3": { "name": "entity.name.file.all" },
"4": { "name": "punctuation.section.identifier.all" }
......@@ -198,11 +198,11 @@
"include": "#number-or-string"
}, {
"match": "\\S+",
"name": "invalid.illegal.asc"
"name": "invalid.illegal.all"
}]
}, {
"match": "\\S+",
"name": "invalid.illegal.asc"
"name": "invalid.illegal.all"
}]
},
......@@ -215,9 +215,9 @@
"2": { "name": "punctuation.section.identifier.all" },
"3": { "name": "entity.name.type.class.all" },
"4": { "name": "punctuation.section.identifier.all" },
"5": { "name": "keyword.operator.all" },
"5": { "name": "keyword.operator.inheritance.all" },
"6": { "name": "punctuation.section.identifier.all" },
"7": { "name": "entity.other.inherited-class.all" },
"7": { "name": "entity.name.type.inheritance.class.all" },
"8": { "name": "punctuation.section.identifier.all" }
},
"patterns": [{
......@@ -228,7 +228,7 @@
"include": "#class-attribute"
}, {
"match": "\\S+",
"name": "invalid.illegal.asc"
"name": "invalid.illegal.all"
}]
},
......@@ -266,7 +266,7 @@
"include": "#class-attribute"
}, {
"match": "\\S+",
"name": "invalid.illegal.asc"
"name": "invalid.illegal.all"
}]
},
......@@ -292,7 +292,7 @@
"include": "#record-value"
}, {
"match": "\\S+",
"name": "invalid.illegal.asc"
"name": "invalid.illegal.all"
}]
},
......@@ -318,7 +318,7 @@
"include": "#record-value"
}, {
"match": "\\S+",
"name": "invalid.illegal.asc"
"name": "invalid.illegal.all"
}]
},
......@@ -333,6 +333,7 @@
"value": {
"begin": "\\bVALUE\\b",
"end": "(?=\\b[A-Z])",
"name": "meta.definition.value.all",
"beginCaptures": {
"0": { "name": "keyword.other.value.all" }
},
......@@ -342,13 +343,14 @@
"include": "#number-or-string"
}, {
"match": "\\S+",
"name": "invalid.illegal.asc"
"name": "invalid.illegal.all"
}]
},
"facet": {
"begin": "\\b(FACET)\\b(?:\\s+(<)([^>]+)(>))?",
"end": "(?=\\b(ATTRIBUTE|ATTRIBUTEPROFILECLASS|BUSINESS PROCESS LIBRARY|CLASS|CLASSATTRIBUTE|FACET|FILE|RECORDCLASS|RELATIONCLASS|WORKING ENVIRONMENT LIBRARY)\\b)",
"name": "meta.definition.facet.all",
"beginCaptures": {
"1": { "name": "keyword.other.facet.all" },
"2": { "name": "punctuation.section.identifier.all" },
......@@ -363,7 +365,7 @@
"include": "#value"
}, {
"match": "\\S+",
"name": "invalid.illegal.asc"
"name": "invalid.illegal.all"
}]
},
......@@ -394,7 +396,7 @@
"end": "\\bEND\\b",
"name": "meta.definition.record-value.all",
"beginCaptures": { "0": { "name": "keyword.other.record-value.all" } },
"endCaptures": { "0": { "name": "keyword.other.all" } },
"endCaptures": { "0": { "name": "keyword.other.end.all" } },
"patterns": [{
"include": "#instance-attribute"
}]
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment