Skip to content
Snippets Groups Projects
Select Git revision
  • develop default
  • release protected
  • v0.x
  • v2.2.0
  • v2.1.0
5 results

rmchAddOn.tmLanguage.json

Blame
  • 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"
    		  }
    		]
    	  }
    	}
      }