Select Git revision
rmchAddOn.tmLanguage.json
-
Jan Gruteser authoredJan Gruteser authored
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
rmchAddOn.tmLanguage.json 7.77 KiB
{
"name": "Rules Machine B",
"scopeName": "source.rmchAddOn",
"patterns": [
{
"include": "source.rmchAddOn.rules"
},
{
"include": "#pragma"
},
{
"include": "#comments"
},
{
"include": "#strings"
},
{
"include": "#components"
},
{
"include": "#machineclauses"
},
{
"include": "#control_blocks"
},
{
"include": "#scope_blocks"
},
{
"include": "#keyword_control"
},
{
"include": "#keyword_operators"
},
{
"include": "#constant_values"
},
{
"include": "#preferences"
},
{
"include": "#identifiers"
},
{
"include": "#invalid"
},
{
"include": "#scope_blocks"
}
],
"repository": {
"identifiers": {
"patterns": [
{
"match": "\\b[a-zA-Z][a-zA-Z0-9_]*\\b",
"name": "identifier.rmchAddOn"
}
]
},
"pragma": {
"patterns": [
{
"begin": "/\\*@\\b(package|import-package|import_package|symbolic|unit|label|desc|description|conversion|file)\\b",
"captures": {
"0": {
"name": "punctuation.definition.tag.rmchAddOn"
}
},
"end": "\\*/",
"name": "identifier.rmchAddOn"
}
]
},
"comments": {
"patterns": [
{
"begin": "/\\*",
"captures": {
"0": {
"name": "punctuation.definition.comment.rmchAddOn"
}
},
"end": "\\*/",
"name": "comment.block.rmchAddOn"
},
{
"begin": "//",
"captures": {
"0": {
"name": "punctuation.definition.comment.rmchAddOn"
}
},
"end": "\n",
"name": "comment.line.rmchAddOn"
}
]
},
"strings": {
"patterns": [
{
"begin": "\"",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.rmchAddOn"
}
},
"end": "\"",
"endCaptures": {
"0": {
"name": "punctuation.definition.string.end.rmchAddOn"
}
},
"name": "string.quoted.double.rmchAddOn",
"patterns": [
{
"match": "\\\\.",
"name": "constant.character.escape.rmchAddOn"
},
{
"match": "\"\"",
"name": "constant.character.escape.quote.rmchAddOn"
}
]
},
{
"begin": "'''",
"captures": {
"0": {
"name": "punctuation.definition.string.begin.rmchAddOn"
}
},
"end": "'''",
"name": "string.quoted.triple.rmchAddOn"
}
]
},
"machineclauses": {
"patterns": [
{
"match": "(?x)\n\\b(INITIALI(Z|S)ATION|ASSERTIONS|OPERATIONS|SEES|PROMOTES|USES\n|INCLUDES|IMPORTS|REFINES|EXTENDS|REFERENCES|INVARIANT|CONCRETE_VARIABLES\n|ABSTRACT_VARIABLES|VARIABLES|PROPERTIES|CONSTANTS|ABSTRACT_CONSTANTS\n|CONCRETE_CONSTANTS|CONSTRAINTS|SETS|DEFINITIONS|VALUES)\\b",
"name": "storage.type.clause.rmchAddOn"
}
]
},
"keyword_control": {
"patterns": [
{
"match": "(?x)\n\\b(skip|BE|DO|VARIANT|ELSIF|THEN|ELSE|EITHER|CASE|SELECT\n|ASSERT|WHERE|OR|OF|IN|BODY|GOAL|DEPENDS_ON_RULE|DEPENDS_ON_COMPUTATION|ACTIVATION|REPLACES|ERROR_TYPES|CLASSIFICATION|RULEID|TAGS|BODY|EXPECT|ERROR_TYPE|COUNTEREXAMPLE|DEFINE|TYPE|DUMMY_VALUE|VALUE|PRECONDITION|POSTCONDITION)\\b",
"name": "keyword.control.rmchAddOn"
}
]
},
"keyword_operators": {
"patterns": [
{
"match": "\\bnot\\b|¬|\\bor\\b|∨",
"name": "keyword.operator.logical.rmchAddOn"
},
{
"match": "!|#|∀|∃|&|∧|<=>|=>|⇔|⇒",
"name": "keyword.operator.logical.rmchAddOn"
},
{
"match": "≠|/=|=|==",
"name": "keyword.operator.equality.rmchAddOn"
},
{
"match": "\\b(first|last|tail|front|rev|seq|seq1|conc)\\b",
"name": "keyword.operator.sequence.rmchAddOn"
},
{
"match": "\\b(tree|btree|top|const|rank|father|son|sons|subtree|arity|bin|left|right|sizet|prefix|postfix|mirror|infix)\\b",
"name": "keyword.operator.tree.rmchAddOn"
},
{
"match": "\\b(mod|succ|pred)\\b",
"name": "keyword.operator.numeric.rmchAddOn"
},
{
"match": "\\b(rec|struct)\\b",
"name": "keyword.operator.record.rmchAddOn"
},
{
"match": "\\b(ran|dom|id|prj1|prj2|closure1|closure|interate|fnc|rel)\\b|%|λ",
"name": "keyword.operator.relation.rmchAddOn"
},
{
"match": "bool",
"name": "keyword.operator.boolean.rmchAddOn"
},
{
"match": "<--|:=|::",
"name": "keyword.operator.assignment.rmchAddOn"
},
{
"match": "\\b(INTER|UNION|SIGMA|PI|POW|POW1|union|inter)\\b|⋂|⋃|∑|∏",
"name": "keyword.operator.set.rmchAddOn"
},
{
"match": "\\b(min|max|card|size)\\b",
"name": "keyword.operator.set.rmchAddOn"
},
{
"match": ":|∈|∉|\\\\/|/\\\\|∪|∩|⊄|⊈|⊂|⊆",
"name": "keyword.operator.set.rmchAddOn"
},
{
"begin": "{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.set.begin.rmchAddOn"
}
},
"end": "}",
"endCaptures": {
"0": {
"name": "punctuation.definition.set.end.rmchAddOn"
}
},
"patterns": [
{
"include": "$self"
}
]
},
{
"match": "-->|-->(>)?|>->(>)?|<->|>+>(>)?",
"name": "keyword.operator.relation.rmchAddOn"
},
{
"match": "(\\|>(>)?)|((<)?<\\|)|(\\|->)",
"name": "keyword.operator.relation.rmchAddOn"
},
{
"match": "↠|↦|⤀|⤖|⇸|⤔|◀|←|→|↔|↣|▶|⇾|⋖|⊗|◁|▷|⇽",
"name": "keyword.operator.relation.rmchAddOn"
},
{
"match": "\\|\\|",
"name": "keyword.operator.parallel.rmchAddOn"
},
{
"match": ">|<|>=|=<|≤|≥",
"name": "keyword.operator.numeric.rmchAddOn"
}
]
},
"constant_values": {
"patterns": [
{
"match": "\\b\\d+",
"name": "constant.numeric.rmchAddOn"
},
{
"match": "{}|∅",
"name": "constant.set.rmchAddOn"
},
{
"match": "\\b(TRUE|FALSE)\\b",
"name": "constant.language.boolean.rmchAddOn"
},
{
"match": "\\b(BOOL|STRING|INT(EGER)?|NAT(URAL)?(1)?|MININT|MAXINT)\\b",
"name": "constant.other.sets.rmchAddOn"
}
]
},
"control_blocks": {
"patterns": [
{
"begin": "(?x)\n\\b(BEGIN|PRE|SELECT|ANY|LET|VAR|ASSERT|WHILE|FOR|DO|IF|CHOICE|CASE|EITHER|IN)\\b",
"beginCaptures": {
"0": {
"name": "keyword.control.rmchAddOn"
}
},
"end": "\\bEND\\b",
"endCaptures": {
"0": {
"name": "keyword.control.rmchAddOn"
}
},
"patterns": [
{
"match": "\\bINVARIANT\\b",
"name": "keyword.control.rmchAddOn"
},
{
"include": "$self"
}
]
}
]
},
"scope_blocks": {
"patterns": [
{
"begin": "(?x)\n\\b(RULE|COMPUTATION|FUNCTION|RULE_FORALL|RULE_FAIL)\\b",
"beginCaptures": {
"0": {
"name": "keyword.control.rmchAddOn"
}
},
"end": "\\bEND\\b",
"endCaptures": {
"0": {
"name": "keyword.control.rmchAddOn"
}
},
"patterns": [
{
"match": "\\bINVARIANT\\b",
"name": "keyword.control.rmchAddOn"
},
{
"include": "$self"
}
]
}
]
},
"components": {
"patterns": [
{
"begin": "\\b(RULES_MACHINE)\\b",
"beginCaptures": {
"0": {
"name": "storage.type.machine.start.rmchAddOn"
}
},
"end": "\\bEND\\b",
"endCaptures": {
"0": {
"name": "storage.type.machine.end.rmchAddOn"
}
},
"name": "meta.machine.rmchAddOn",
"patterns": [
{
"include": "$self"
}
]
}
]
},
"preferences": {
"patterns": [
{
"match": "(?x)\n\\b(GOAL|SET_PREF_\\w*|FORCE_SYMMETRY_\\w*|GOAL|ANIMATION_FUNCTION_DEFAULT\n|HEURISTIC_FUNCTION|ANIMATION_FUNCTION[0-9]*|ANIMATION_IMG\\w*\n|ANIMATION_STR\\w*|ASSERT_(LTL|CTL)\\w*|SUCCEEDED_RULE(?:_ERROR_TYPE)?|GET_RULE_COUNTEREXAMPLES|FAILED_RULE(?:_ERROR_TYPE|_ALL_ERROR_TYPES)?|NOT_CHECKED_RULE|DISABLED_RULE|STRING_FORMAT)\\b",
"name": "entity.other.attribute-name.rmchAddOn"
}
]
},
"invalid": {
"patterns": [
{
"match": "@|\\?|€",
"name": "invalid.illegal.other.rmchAddOn"
},
{
"match": ";(\\s)*;",
"name": "invalid.illegal.other.rmchAddOn"
}
]
}
}
}