Files
infocom-systems-design/node_modules/langium/lib/grammar/generated/grammar.js
2025-10-03 22:27:28 +03:00

3934 lines
102 KiB
JavaScript

/******************************************************************************
* This file was generated by langium-cli 3.3.0.
* DO NOT EDIT MANUALLY!
******************************************************************************/
import { loadGrammarFromJson } from '../../utils/grammar-loader.js';
let loadedLangiumGrammarGrammar;
export const LangiumGrammarGrammar = () => loadedLangiumGrammarGrammar !== null && loadedLangiumGrammarGrammar !== void 0 ? loadedLangiumGrammarGrammar : (loadedLangiumGrammarGrammar = loadGrammarFromJson(`{
"$type": "Grammar",
"isDeclared": true,
"name": "LangiumGrammar",
"rules": [
{
"$type": "ParserRule",
"entry": true,
"name": "Grammar",
"definition": {
"$type": "Group",
"elements": [
{
"$type": "Group",
"elements": [
{
"$type": "Assignment",
"feature": "isDeclared",
"operator": "?=",
"terminal": {
"$type": "Keyword",
"value": "grammar"
}
},
{
"$type": "Assignment",
"feature": "name",
"operator": "=",
"terminal": {
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@63"
},
"arguments": []
}
},
{
"$type": "Group",
"elements": [
{
"$type": "Keyword",
"value": "with"
},
{
"$type": "Assignment",
"feature": "usedGrammars",
"operator": "+=",
"terminal": {
"$type": "CrossReference",
"type": {
"$ref": "#/rules@0"
},
"terminal": {
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@63"
},
"arguments": []
},
"deprecatedSyntax": false
}
},
{
"$type": "Group",
"elements": [
{
"$type": "Keyword",
"value": ","
},
{
"$type": "Assignment",
"feature": "usedGrammars",
"operator": "+=",
"terminal": {
"$type": "CrossReference",
"type": {
"$ref": "#/rules@0"
},
"terminal": {
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@63"
},
"arguments": []
},
"deprecatedSyntax": false
}
}
],
"cardinality": "*"
}
],
"cardinality": "?"
},
{
"$type": "Group",
"elements": [
{
"$type": "Assignment",
"feature": "definesHiddenTokens",
"operator": "?=",
"terminal": {
"$type": "Keyword",
"value": "hidden"
}
},
{
"$type": "Keyword",
"value": "("
},
{
"$type": "Group",
"elements": [
{
"$type": "Assignment",
"feature": "hiddenTokens",
"operator": "+=",
"terminal": {
"$type": "CrossReference",
"type": {
"$ref": "#/rules@15"
},
"terminal": {
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@63"
},
"arguments": []
},
"deprecatedSyntax": false
}
},
{
"$type": "Group",
"elements": [
{
"$type": "Keyword",
"value": ","
},
{
"$type": "Assignment",
"feature": "hiddenTokens",
"operator": "+=",
"terminal": {
"$type": "CrossReference",
"type": {
"$ref": "#/rules@15"
},
"terminal": {
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@63"
},
"arguments": []
},
"deprecatedSyntax": false
}
}
],
"cardinality": "*"
}
],
"cardinality": "?"
},
{
"$type": "Keyword",
"value": ")"
}
],
"cardinality": "?"
}
],
"cardinality": "?"
},
{
"$type": "Assignment",
"feature": "imports",
"operator": "+=",
"terminal": {
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@16"
},
"arguments": []
},
"cardinality": "*"
},
{
"$type": "Alternatives",
"elements": [
{
"$type": "Assignment",
"feature": "rules",
"operator": "+=",
"terminal": {
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@15"
},
"arguments": []
}
},
{
"$type": "Assignment",
"feature": "interfaces",
"operator": "+=",
"terminal": {
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@1"
},
"arguments": []
}
},
{
"$type": "Assignment",
"feature": "types",
"operator": "+=",
"terminal": {
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@14"
},
"arguments": []
}
}
],
"cardinality": "+"
}
]
},
"definesHiddenTokens": false,
"fragment": false,
"hiddenTokens": [],
"parameters": [],
"wildcard": false
},
{
"$type": "ParserRule",
"name": "Interface",
"definition": {
"$type": "Group",
"elements": [
{
"$type": "Keyword",
"value": "interface"
},
{
"$type": "Assignment",
"feature": "name",
"operator": "=",
"terminal": {
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@63"
},
"arguments": []
}
},
{
"$type": "Group",
"elements": [
{
"$type": "Keyword",
"value": "extends"
},
{
"$type": "Assignment",
"feature": "superTypes",
"operator": "+=",
"terminal": {
"$type": "CrossReference",
"type": {
"$ref": "#/types@0"
},
"terminal": {
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@63"
},
"arguments": []
},
"deprecatedSyntax": false
}
},
{
"$type": "Group",
"elements": [
{
"$type": "Keyword",
"value": ","
},
{
"$type": "Assignment",
"feature": "superTypes",
"operator": "+=",
"terminal": {
"$type": "CrossReference",
"type": {
"$ref": "#/types@0"
},
"terminal": {
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@63"
},
"arguments": []
},
"deprecatedSyntax": false
}
}
],
"cardinality": "*"
}
],
"cardinality": "?"
},
{
"$type": "Keyword",
"value": "{"
},
{
"$type": "Assignment",
"feature": "attributes",
"operator": "+=",
"terminal": {
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@2"
},
"arguments": []
},
"cardinality": "*"
},
{
"$type": "Keyword",
"value": "}"
},
{
"$type": "Keyword",
"value": ";",
"cardinality": "?"
}
]
},
"definesHiddenTokens": false,
"entry": false,
"fragment": false,
"hiddenTokens": [],
"parameters": [],
"wildcard": false
},
{
"$type": "ParserRule",
"name": "TypeAttribute",
"definition": {
"$type": "Group",
"elements": [
{
"$type": "Assignment",
"feature": "name",
"operator": "=",
"terminal": {
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@62"
},
"arguments": []
}
},
{
"$type": "Assignment",
"feature": "isOptional",
"operator": "?=",
"terminal": {
"$type": "Keyword",
"value": "?"
},
"cardinality": "?"
},
{
"$type": "Keyword",
"value": ":"
},
{
"$type": "Assignment",
"feature": "type",
"operator": "=",
"terminal": {
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@8"
},
"arguments": []
}
},
{
"$type": "Group",
"elements": [
{
"$type": "Keyword",
"value": "="
},
{
"$type": "Assignment",
"feature": "defaultValue",
"operator": "=",
"terminal": {
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@3"
},
"arguments": []
}
}
],
"cardinality": "?"
},
{
"$type": "Keyword",
"value": ";",
"cardinality": "?"
}
]
},
"definesHiddenTokens": false,
"entry": false,
"fragment": false,
"hiddenTokens": [],
"parameters": [],
"wildcard": false
},
{
"$type": "ParserRule",
"name": "ValueLiteral",
"definition": {
"$type": "Alternatives",
"elements": [
{
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@4"
},
"arguments": []
},
{
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@5"
},
"arguments": []
},
{
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@6"
},
"arguments": []
},
{
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@7"
},
"arguments": []
}
]
},
"definesHiddenTokens": false,
"entry": false,
"fragment": false,
"hiddenTokens": [],
"parameters": [],
"wildcard": false
},
{
"$type": "ParserRule",
"name": "StringLiteral",
"definition": {
"$type": "Assignment",
"feature": "value",
"operator": "=",
"terminal": {
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@64"
},
"arguments": []
}
},
"definesHiddenTokens": false,
"entry": false,
"fragment": false,
"hiddenTokens": [],
"parameters": [],
"wildcard": false
},
{
"$type": "ParserRule",
"name": "NumberLiteral",
"definition": {
"$type": "Assignment",
"feature": "value",
"operator": "=",
"terminal": {
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@65"
},
"arguments": []
}
},
"definesHiddenTokens": false,
"entry": false,
"fragment": false,
"hiddenTokens": [],
"parameters": [],
"wildcard": false
},
{
"$type": "ParserRule",
"name": "BooleanLiteral",
"definition": {
"$type": "Alternatives",
"elements": [
{
"$type": "Assignment",
"feature": "true",
"operator": "?=",
"terminal": {
"$type": "Keyword",
"value": "true"
}
},
{
"$type": "Keyword",
"value": "false"
}
]
},
"definesHiddenTokens": false,
"entry": false,
"fragment": false,
"hiddenTokens": [],
"parameters": [],
"wildcard": false
},
{
"$type": "ParserRule",
"name": "ArrayLiteral",
"definition": {
"$type": "Group",
"elements": [
{
"$type": "Keyword",
"value": "["
},
{
"$type": "Group",
"elements": [
{
"$type": "Assignment",
"feature": "elements",
"operator": "+=",
"terminal": {
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@3"
},
"arguments": []
}
},
{
"$type": "Group",
"elements": [
{
"$type": "Keyword",
"value": ","
},
{
"$type": "Assignment",
"feature": "elements",
"operator": "+=",
"terminal": {
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@3"
},
"arguments": []
}
}
],
"cardinality": "*"
}
],
"cardinality": "?"
},
{
"$type": "Keyword",
"value": "]"
}
]
},
"definesHiddenTokens": false,
"entry": false,
"fragment": false,
"hiddenTokens": [],
"parameters": [],
"wildcard": false
},
{
"$type": "ParserRule",
"name": "TypeDefinition",
"definition": {
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@9"
},
"arguments": []
},
"definesHiddenTokens": false,
"entry": false,
"fragment": false,
"hiddenTokens": [],
"parameters": [],
"wildcard": false
},
{
"$type": "ParserRule",
"name": "UnionType",
"inferredType": {
"$type": "InferredType",
"name": "TypeDefinition"
},
"definition": {
"$type": "Group",
"elements": [
{
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@10"
},
"arguments": []
},
{
"$type": "Group",
"elements": [
{
"$type": "Action",
"inferredType": {
"$type": "InferredType",
"name": "UnionType"
},
"feature": "types",
"operator": "+="
},
{
"$type": "Group",
"elements": [
{
"$type": "Keyword",
"value": "|"
},
{
"$type": "Assignment",
"feature": "types",
"operator": "+=",
"terminal": {
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@10"
},
"arguments": []
}
}
],
"cardinality": "+"
}
],
"cardinality": "?"
}
]
},
"definesHiddenTokens": false,
"entry": false,
"fragment": false,
"hiddenTokens": [],
"parameters": [],
"wildcard": false
},
{
"$type": "ParserRule",
"name": "ArrayType",
"inferredType": {
"$type": "InferredType",
"name": "TypeDefinition"
},
"definition": {
"$type": "Group",
"elements": [
{
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@11"
},
"arguments": []
},
{
"$type": "Group",
"elements": [
{
"$type": "Action",
"inferredType": {
"$type": "InferredType",
"name": "ArrayType"
},
"feature": "elementType",
"operator": "="
},
{
"$type": "Keyword",
"value": "["
},
{
"$type": "Keyword",
"value": "]"
}
],
"cardinality": "?"
}
]
},
"definesHiddenTokens": false,
"entry": false,
"fragment": false,
"hiddenTokens": [],
"parameters": [],
"wildcard": false
},
{
"$type": "ParserRule",
"name": "ReferenceType",
"inferredType": {
"$type": "InferredType",
"name": "TypeDefinition"
},
"definition": {
"$type": "Alternatives",
"elements": [
{
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@12"
},
"arguments": []
},
{
"$type": "Group",
"elements": [
{
"$type": "Action",
"inferredType": {
"$type": "InferredType",
"name": "ReferenceType"
}
},
{
"$type": "Keyword",
"value": "@"
},
{
"$type": "Assignment",
"feature": "referenceType",
"operator": "=",
"terminal": {
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@12"
},
"arguments": []
}
}
]
}
]
},
"definesHiddenTokens": false,
"entry": false,
"fragment": false,
"hiddenTokens": [],
"parameters": [],
"wildcard": false
},
{
"$type": "ParserRule",
"name": "SimpleType",
"inferredType": {
"$type": "InferredType",
"name": "TypeDefinition"
},
"definition": {
"$type": "Alternatives",
"elements": [
{
"$type": "Group",
"elements": [
{
"$type": "Keyword",
"value": "("
},
{
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@8"
},
"arguments": []
},
{
"$type": "Keyword",
"value": ")"
}
]
},
{
"$type": "Group",
"elements": [
{
"$type": "Action",
"inferredType": {
"$type": "InferredType",
"name": "SimpleType"
}
},
{
"$type": "Alternatives",
"elements": [
{
"$type": "Assignment",
"feature": "typeRef",
"operator": "=",
"terminal": {
"$type": "CrossReference",
"type": {
"$ref": "#/types@0"
},
"terminal": {
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@63"
},
"arguments": []
},
"deprecatedSyntax": false
}
},
{
"$type": "Assignment",
"feature": "primitiveType",
"operator": "=",
"terminal": {
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@13"
},
"arguments": []
}
},
{
"$type": "Assignment",
"feature": "stringType",
"operator": "=",
"terminal": {
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@64"
},
"arguments": []
}
}
]
}
]
}
]
},
"definesHiddenTokens": false,
"entry": false,
"fragment": false,
"hiddenTokens": [],
"parameters": [],
"wildcard": false
},
{
"$type": "ParserRule",
"name": "PrimitiveType",
"dataType": "string",
"definition": {
"$type": "Alternatives",
"elements": [
{
"$type": "Keyword",
"value": "string"
},
{
"$type": "Keyword",
"value": "number"
},
{
"$type": "Keyword",
"value": "boolean"
},
{
"$type": "Keyword",
"value": "Date"
},
{
"$type": "Keyword",
"value": "bigint"
}
]
},
"definesHiddenTokens": false,
"entry": false,
"fragment": false,
"hiddenTokens": [],
"parameters": [],
"wildcard": false
},
{
"$type": "ParserRule",
"name": "Type",
"definition": {
"$type": "Group",
"elements": [
{
"$type": "Keyword",
"value": "type"
},
{
"$type": "Assignment",
"feature": "name",
"operator": "=",
"terminal": {
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@63"
},
"arguments": []
}
},
{
"$type": "Keyword",
"value": "="
},
{
"$type": "Assignment",
"feature": "type",
"operator": "=",
"terminal": {
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@8"
},
"arguments": []
}
},
{
"$type": "Keyword",
"value": ";",
"cardinality": "?"
}
]
},
"definesHiddenTokens": false,
"entry": false,
"fragment": false,
"hiddenTokens": [],
"parameters": [],
"wildcard": false
},
{
"$type": "ParserRule",
"name": "AbstractRule",
"definition": {
"$type": "Alternatives",
"elements": [
{
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@17"
},
"arguments": []
},
{
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@50"
},
"arguments": []
}
]
},
"definesHiddenTokens": false,
"entry": false,
"fragment": false,
"hiddenTokens": [],
"parameters": [],
"wildcard": false
},
{
"$type": "ParserRule",
"name": "GrammarImport",
"definition": {
"$type": "Group",
"elements": [
{
"$type": "Keyword",
"value": "import"
},
{
"$type": "Assignment",
"feature": "path",
"operator": "=",
"terminal": {
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@64"
},
"arguments": []
}
},
{
"$type": "Keyword",
"value": ";",
"cardinality": "?"
}
]
},
"definesHiddenTokens": false,
"entry": false,
"fragment": false,
"hiddenTokens": [],
"parameters": [],
"wildcard": false
},
{
"$type": "ParserRule",
"name": "ParserRule",
"definition": {
"$type": "Group",
"elements": [
{
"$type": "Alternatives",
"elements": [
{
"$type": "Assignment",
"feature": "entry",
"operator": "?=",
"terminal": {
"$type": "Keyword",
"value": "entry"
}
},
{
"$type": "Assignment",
"feature": "fragment",
"operator": "?=",
"terminal": {
"$type": "Keyword",
"value": "fragment"
}
}
],
"cardinality": "?"
},
{
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@19"
},
"arguments": []
},
{
"$type": "Alternatives",
"elements": [
{
"$type": "Assignment",
"feature": "wildcard",
"operator": "?=",
"terminal": {
"$type": "Keyword",
"value": "*"
}
},
{
"$type": "Group",
"elements": [
{
"$type": "Keyword",
"value": "returns"
},
{
"$type": "Alternatives",
"elements": [
{
"$type": "Assignment",
"feature": "returnType",
"operator": "=",
"terminal": {
"$type": "CrossReference",
"type": {
"$ref": "#/types@0"
},
"terminal": {
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@63"
},
"arguments": []
},
"deprecatedSyntax": false
}
},
{
"$type": "Assignment",
"feature": "dataType",
"operator": "=",
"terminal": {
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@13"
},
"arguments": []
}
}
]
}
]
},
{
"$type": "Assignment",
"feature": "inferredType",
"operator": "=",
"terminal": {
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@18"
},
"arguments": [
{
"$type": "NamedArgument",
"value": {
"$type": "BooleanLiteral",
"true": false
},
"calledByName": false
}
]
}
}
],
"cardinality": "?"
},
{
"$type": "Group",
"elements": [
{
"$type": "Assignment",
"feature": "definesHiddenTokens",
"operator": "?=",
"terminal": {
"$type": "Keyword",
"value": "hidden"
}
},
{
"$type": "Keyword",
"value": "("
},
{
"$type": "Group",
"elements": [
{
"$type": "Assignment",
"feature": "hiddenTokens",
"operator": "+=",
"terminal": {
"$type": "CrossReference",
"type": {
"$ref": "#/rules@15"
},
"terminal": {
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@63"
},
"arguments": []
},
"deprecatedSyntax": false
}
},
{
"$type": "Group",
"elements": [
{
"$type": "Keyword",
"value": ","
},
{
"$type": "Assignment",
"feature": "hiddenTokens",
"operator": "+=",
"terminal": {
"$type": "CrossReference",
"type": {
"$ref": "#/rules@15"
},
"terminal": {
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@63"
},
"arguments": []
},
"deprecatedSyntax": false
}
}
],
"cardinality": "*"
}
],
"cardinality": "?"
},
{
"$type": "Keyword",
"value": ")"
}
],
"cardinality": "?"
},
{
"$type": "Keyword",
"value": ":"
},
{
"$type": "Assignment",
"feature": "definition",
"operator": "=",
"terminal": {
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@21"
},
"arguments": []
}
},
{
"$type": "Keyword",
"value": ";"
}
]
},
"definesHiddenTokens": false,
"entry": false,
"fragment": false,
"hiddenTokens": [],
"parameters": [],
"wildcard": false
},
{
"$type": "ParserRule",
"name": "InferredType",
"parameters": [
{
"$type": "Parameter",
"name": "imperative"
}
],
"definition": {
"$type": "Group",
"elements": [
{
"$type": "Alternatives",
"elements": [
{
"$type": "Group",
"guardCondition": {
"$type": "ParameterReference",
"parameter": {
"$ref": "#/rules@18/parameters@0"
}
},
"elements": [
{
"$type": "Keyword",
"value": "infer"
}
]
},
{
"$type": "Group",
"guardCondition": {
"$type": "Negation",
"value": {
"$type": "ParameterReference",
"parameter": {
"$ref": "#/rules@18/parameters@0"
}
}
},
"elements": [
{
"$type": "Keyword",
"value": "infers"
}
]
}
]
},
{
"$type": "Assignment",
"feature": "name",
"operator": "=",
"terminal": {
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@63"
},
"arguments": []
}
}
]
},
"definesHiddenTokens": false,
"entry": false,
"fragment": false,
"hiddenTokens": [],
"wildcard": false
},
{
"$type": "ParserRule",
"fragment": true,
"name": "RuleNameAndParams",
"definition": {
"$type": "Group",
"elements": [
{
"$type": "Assignment",
"feature": "name",
"operator": "=",
"terminal": {
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@63"
},
"arguments": []
}
},
{
"$type": "Group",
"elements": [
{
"$type": "Keyword",
"value": "<"
},
{
"$type": "Group",
"elements": [
{
"$type": "Assignment",
"feature": "parameters",
"operator": "+=",
"terminal": {
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@20"
},
"arguments": []
}
},
{
"$type": "Group",
"elements": [
{
"$type": "Keyword",
"value": ","
},
{
"$type": "Assignment",
"feature": "parameters",
"operator": "+=",
"terminal": {
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@20"
},
"arguments": []
}
}
],
"cardinality": "*"
}
],
"cardinality": "?"
},
{
"$type": "Keyword",
"value": ">"
}
],
"cardinality": "?"
}
]
},
"definesHiddenTokens": false,
"entry": false,
"hiddenTokens": [],
"parameters": [],
"wildcard": false
},
{
"$type": "ParserRule",
"name": "Parameter",
"definition": {
"$type": "Assignment",
"feature": "name",
"operator": "=",
"terminal": {
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@63"
},
"arguments": []
}
},
"definesHiddenTokens": false,
"entry": false,
"fragment": false,
"hiddenTokens": [],
"parameters": [],
"wildcard": false
},
{
"$type": "ParserRule",
"name": "Alternatives",
"inferredType": {
"$type": "InferredType",
"name": "AbstractElement"
},
"definition": {
"$type": "Group",
"elements": [
{
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@22"
},
"arguments": []
},
{
"$type": "Group",
"elements": [
{
"$type": "Action",
"inferredType": {
"$type": "InferredType",
"name": "Alternatives"
},
"feature": "elements",
"operator": "+="
},
{
"$type": "Group",
"elements": [
{
"$type": "Keyword",
"value": "|"
},
{
"$type": "Assignment",
"feature": "elements",
"operator": "+=",
"terminal": {
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@22"
},
"arguments": []
}
}
],
"cardinality": "+"
}
],
"cardinality": "?"
}
]
},
"definesHiddenTokens": false,
"entry": false,
"fragment": false,
"hiddenTokens": [],
"parameters": [],
"wildcard": false
},
{
"$type": "ParserRule",
"name": "ConditionalBranch",
"inferredType": {
"$type": "InferredType",
"name": "AbstractElement"
},
"definition": {
"$type": "Alternatives",
"elements": [
{
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@23"
},
"arguments": []
},
{
"$type": "Group",
"elements": [
{
"$type": "Action",
"inferredType": {
"$type": "InferredType",
"name": "Group"
}
},
{
"$type": "Keyword",
"value": "<"
},
{
"$type": "Assignment",
"feature": "guardCondition",
"operator": "=",
"terminal": {
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@33"
},
"arguments": []
}
},
{
"$type": "Keyword",
"value": ">"
},
{
"$type": "Assignment",
"feature": "elements",
"operator": "+=",
"terminal": {
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@25"
},
"arguments": []
},
"cardinality": "+"
}
]
}
]
},
"definesHiddenTokens": false,
"entry": false,
"fragment": false,
"hiddenTokens": [],
"parameters": [],
"wildcard": false
},
{
"$type": "ParserRule",
"name": "UnorderedGroup",
"inferredType": {
"$type": "InferredType",
"name": "AbstractElement"
},
"definition": {
"$type": "Group",
"elements": [
{
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@24"
},
"arguments": []
},
{
"$type": "Group",
"elements": [
{
"$type": "Action",
"inferredType": {
"$type": "InferredType",
"name": "UnorderedGroup"
},
"feature": "elements",
"operator": "+="
},
{
"$type": "Group",
"elements": [
{
"$type": "Keyword",
"value": "&"
},
{
"$type": "Assignment",
"feature": "elements",
"operator": "+=",
"terminal": {
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@24"
},
"arguments": []
}
}
],
"cardinality": "+"
}
],
"cardinality": "?"
}
]
},
"definesHiddenTokens": false,
"entry": false,
"fragment": false,
"hiddenTokens": [],
"parameters": [],
"wildcard": false
},
{
"$type": "ParserRule",
"name": "Group",
"inferredType": {
"$type": "InferredType",
"name": "AbstractElement"
},
"definition": {
"$type": "Group",
"elements": [
{
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@25"
},
"arguments": []
},
{
"$type": "Group",
"elements": [
{
"$type": "Action",
"inferredType": {
"$type": "InferredType",
"name": "Group"
},
"feature": "elements",
"operator": "+="
},
{
"$type": "Assignment",
"feature": "elements",
"operator": "+=",
"terminal": {
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@25"
},
"arguments": []
},
"cardinality": "+"
}
],
"cardinality": "?"
}
]
},
"definesHiddenTokens": false,
"entry": false,
"fragment": false,
"hiddenTokens": [],
"parameters": [],
"wildcard": false
},
{
"$type": "ParserRule",
"name": "AbstractToken",
"inferredType": {
"$type": "InferredType",
"name": "AbstractElement"
},
"definition": {
"$type": "Alternatives",
"elements": [
{
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@26"
},
"arguments": []
},
{
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@27"
},
"arguments": []
}
]
},
"definesHiddenTokens": false,
"entry": false,
"fragment": false,
"hiddenTokens": [],
"parameters": [],
"wildcard": false
},
{
"$type": "ParserRule",
"name": "AbstractTokenWithCardinality",
"inferredType": {
"$type": "InferredType",
"name": "AbstractElement"
},
"definition": {
"$type": "Group",
"elements": [
{
"$type": "Alternatives",
"elements": [
{
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@41"
},
"arguments": []
},
{
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@28"
},
"arguments": []
}
]
},
{
"$type": "Assignment",
"feature": "cardinality",
"operator": "=",
"terminal": {
"$type": "Alternatives",
"elements": [
{
"$type": "Keyword",
"value": "?"
},
{
"$type": "Keyword",
"value": "*"
},
{
"$type": "Keyword",
"value": "+"
}
]
},
"cardinality": "?"
}
]
},
"definesHiddenTokens": false,
"entry": false,
"fragment": false,
"hiddenTokens": [],
"parameters": [],
"wildcard": false
},
{
"$type": "ParserRule",
"name": "Action",
"inferredType": {
"$type": "InferredType",
"name": "AbstractElement"
},
"definition": {
"$type": "Group",
"elements": [
{
"$type": "Action",
"inferredType": {
"$type": "InferredType",
"name": "Action"
}
},
{
"$type": "Keyword",
"value": "{"
},
{
"$type": "Alternatives",
"elements": [
{
"$type": "Assignment",
"feature": "type",
"operator": "=",
"terminal": {
"$type": "CrossReference",
"type": {
"$ref": "#/types@0"
},
"terminal": {
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@63"
},
"arguments": []
},
"deprecatedSyntax": false
}
},
{
"$type": "Assignment",
"feature": "inferredType",
"operator": "=",
"terminal": {
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@18"
},
"arguments": [
{
"$type": "NamedArgument",
"value": {
"$type": "BooleanLiteral",
"true": true
},
"calledByName": false
}
]
}
}
]
},
{
"$type": "Group",
"elements": [
{
"$type": "Keyword",
"value": "."
},
{
"$type": "Assignment",
"feature": "feature",
"operator": "=",
"terminal": {
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@62"
},
"arguments": []
}
},
{
"$type": "Assignment",
"feature": "operator",
"operator": "=",
"terminal": {
"$type": "Alternatives",
"elements": [
{
"$type": "Keyword",
"value": "="
},
{
"$type": "Keyword",
"value": "+="
}
]
}
},
{
"$type": "Keyword",
"value": "current"
}
],
"cardinality": "?"
},
{
"$type": "Keyword",
"value": "}"
}
]
},
"definesHiddenTokens": false,
"entry": false,
"fragment": false,
"hiddenTokens": [],
"parameters": [],
"wildcard": false
},
{
"$type": "ParserRule",
"name": "AbstractTerminal",
"inferredType": {
"$type": "InferredType",
"name": "AbstractElement"
},
"definition": {
"$type": "Alternatives",
"elements": [
{
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@30"
},
"arguments": []
},
{
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@31"
},
"arguments": []
},
{
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@47"
},
"arguments": []
},
{
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@39"
},
"arguments": []
},
{
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@40"
},
"arguments": []
},
{
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@48"
},
"arguments": []
},
{
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@29"
},
"arguments": []
}
]
},
"definesHiddenTokens": false,
"entry": false,
"fragment": false,
"hiddenTokens": [],
"parameters": [],
"wildcard": false
},
{
"$type": "ParserRule",
"name": "EndOfFile",
"definition": {
"$type": "Group",
"elements": [
{
"$type": "Action",
"inferredType": {
"$type": "InferredType",
"name": "EndOfFile"
}
},
{
"$type": "Keyword",
"value": "EOF"
}
]
},
"definesHiddenTokens": false,
"entry": false,
"fragment": false,
"hiddenTokens": [],
"parameters": [],
"wildcard": false
},
{
"$type": "ParserRule",
"name": "Keyword",
"definition": {
"$type": "Assignment",
"feature": "value",
"operator": "=",
"terminal": {
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@64"
},
"arguments": []
}
},
"definesHiddenTokens": false,
"entry": false,
"fragment": false,
"hiddenTokens": [],
"parameters": [],
"wildcard": false
},
{
"$type": "ParserRule",
"name": "RuleCall",
"definition": {
"$type": "Group",
"elements": [
{
"$type": "Assignment",
"feature": "rule",
"operator": "=",
"terminal": {
"$type": "CrossReference",
"type": {
"$ref": "#/rules@15"
},
"terminal": {
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@63"
},
"arguments": []
},
"deprecatedSyntax": false
}
},
{
"$type": "Group",
"elements": [
{
"$type": "Keyword",
"value": "<"
},
{
"$type": "Assignment",
"feature": "arguments",
"operator": "+=",
"terminal": {
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@32"
},
"arguments": []
}
},
{
"$type": "Group",
"elements": [
{
"$type": "Keyword",
"value": ","
},
{
"$type": "Assignment",
"feature": "arguments",
"operator": "+=",
"terminal": {
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@32"
},
"arguments": []
}
}
],
"cardinality": "*"
},
{
"$type": "Keyword",
"value": ">"
}
],
"cardinality": "?"
}
]
},
"definesHiddenTokens": false,
"entry": false,
"fragment": false,
"hiddenTokens": [],
"parameters": [],
"wildcard": false
},
{
"$type": "ParserRule",
"name": "NamedArgument",
"definition": {
"$type": "Group",
"elements": [
{
"$type": "Group",
"elements": [
{
"$type": "Assignment",
"feature": "parameter",
"operator": "=",
"terminal": {
"$type": "CrossReference",
"type": {
"$ref": "#/rules@20"
},
"terminal": {
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@63"
},
"arguments": []
},
"deprecatedSyntax": false
}
},
{
"$type": "Assignment",
"feature": "calledByName",
"operator": "?=",
"terminal": {
"$type": "Keyword",
"value": "="
}
}
],
"cardinality": "?"
},
{
"$type": "Assignment",
"feature": "value",
"operator": "=",
"terminal": {
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@33"
},
"arguments": []
}
}
]
},
"definesHiddenTokens": false,
"entry": false,
"fragment": false,
"hiddenTokens": [],
"parameters": [],
"wildcard": false
},
{
"$type": "ParserRule",
"name": "Disjunction",
"inferredType": {
"$type": "InferredType",
"name": "Condition"
},
"definition": {
"$type": "Group",
"elements": [
{
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@34"
},
"arguments": []
},
{
"$type": "Group",
"elements": [
{
"$type": "Action",
"inferredType": {
"$type": "InferredType",
"name": "Disjunction"
},
"feature": "left",
"operator": "="
},
{
"$type": "Keyword",
"value": "|"
},
{
"$type": "Assignment",
"feature": "right",
"operator": "=",
"terminal": {
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@34"
},
"arguments": []
}
}
],
"cardinality": "*"
}
]
},
"definesHiddenTokens": false,
"entry": false,
"fragment": false,
"hiddenTokens": [],
"parameters": [],
"wildcard": false
},
{
"$type": "ParserRule",
"name": "Conjunction",
"inferredType": {
"$type": "InferredType",
"name": "Condition"
},
"definition": {
"$type": "Group",
"elements": [
{
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@35"
},
"arguments": []
},
{
"$type": "Group",
"elements": [
{
"$type": "Action",
"inferredType": {
"$type": "InferredType",
"name": "Conjunction"
},
"feature": "left",
"operator": "="
},
{
"$type": "Keyword",
"value": "&"
},
{
"$type": "Assignment",
"feature": "right",
"operator": "=",
"terminal": {
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@35"
},
"arguments": []
}
}
],
"cardinality": "*"
}
]
},
"definesHiddenTokens": false,
"entry": false,
"fragment": false,
"hiddenTokens": [],
"parameters": [],
"wildcard": false
},
{
"$type": "ParserRule",
"name": "Negation",
"inferredType": {
"$type": "InferredType",
"name": "Condition"
},
"definition": {
"$type": "Alternatives",
"elements": [
{
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@36"
},
"arguments": []
},
{
"$type": "Group",
"elements": [
{
"$type": "Action",
"inferredType": {
"$type": "InferredType",
"name": "Negation"
}
},
{
"$type": "Keyword",
"value": "!"
},
{
"$type": "Assignment",
"feature": "value",
"operator": "=",
"terminal": {
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@35"
},
"arguments": []
}
}
]
}
]
},
"definesHiddenTokens": false,
"entry": false,
"fragment": false,
"hiddenTokens": [],
"parameters": [],
"wildcard": false
},
{
"$type": "ParserRule",
"name": "Atom",
"inferredType": {
"$type": "InferredType",
"name": "Condition"
},
"definition": {
"$type": "Alternatives",
"elements": [
{
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@38"
},
"arguments": []
},
{
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@37"
},
"arguments": []
},
{
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@6"
},
"arguments": []
}
]
},
"definesHiddenTokens": false,
"entry": false,
"fragment": false,
"hiddenTokens": [],
"parameters": [],
"wildcard": false
},
{
"$type": "ParserRule",
"name": "ParenthesizedCondition",
"inferredType": {
"$type": "InferredType",
"name": "Condition"
},
"definition": {
"$type": "Group",
"elements": [
{
"$type": "Keyword",
"value": "("
},
{
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@33"
},
"arguments": []
},
{
"$type": "Keyword",
"value": ")"
}
]
},
"definesHiddenTokens": false,
"entry": false,
"fragment": false,
"hiddenTokens": [],
"parameters": [],
"wildcard": false
},
{
"$type": "ParserRule",
"name": "ParameterReference",
"definition": {
"$type": "Assignment",
"feature": "parameter",
"operator": "=",
"terminal": {
"$type": "CrossReference",
"type": {
"$ref": "#/rules@20"
},
"terminal": {
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@63"
},
"arguments": []
},
"deprecatedSyntax": false
}
},
"definesHiddenTokens": false,
"entry": false,
"fragment": false,
"hiddenTokens": [],
"parameters": [],
"wildcard": false
},
{
"$type": "ParserRule",
"name": "PredicatedKeyword",
"inferredType": {
"$type": "InferredType",
"name": "Keyword"
},
"definition": {
"$type": "Group",
"elements": [
{
"$type": "Alternatives",
"elements": [
{
"$type": "Keyword",
"value": "=>"
},
{
"$type": "Keyword",
"value": "->"
}
]
},
{
"$type": "Assignment",
"feature": "value",
"operator": "=",
"terminal": {
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@64"
},
"arguments": []
}
}
]
},
"definesHiddenTokens": false,
"entry": false,
"fragment": false,
"hiddenTokens": [],
"parameters": [],
"wildcard": false
},
{
"$type": "ParserRule",
"name": "PredicatedRuleCall",
"inferredType": {
"$type": "InferredType",
"name": "RuleCall"
},
"definition": {
"$type": "Group",
"elements": [
{
"$type": "Alternatives",
"elements": [
{
"$type": "Keyword",
"value": "=>"
},
{
"$type": "Keyword",
"value": "->"
}
]
},
{
"$type": "Assignment",
"feature": "rule",
"operator": "=",
"terminal": {
"$type": "CrossReference",
"type": {
"$ref": "#/rules@15"
},
"terminal": {
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@63"
},
"arguments": []
},
"deprecatedSyntax": false
}
},
{
"$type": "Group",
"elements": [
{
"$type": "Keyword",
"value": "<"
},
{
"$type": "Assignment",
"feature": "arguments",
"operator": "+=",
"terminal": {
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@32"
},
"arguments": []
}
},
{
"$type": "Group",
"elements": [
{
"$type": "Keyword",
"value": ","
},
{
"$type": "Assignment",
"feature": "arguments",
"operator": "+=",
"terminal": {
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@32"
},
"arguments": []
}
}
],
"cardinality": "*"
},
{
"$type": "Keyword",
"value": ">"
}
],
"cardinality": "?"
}
]
},
"definesHiddenTokens": false,
"entry": false,
"fragment": false,
"hiddenTokens": [],
"parameters": [],
"wildcard": false
},
{
"$type": "ParserRule",
"name": "Assignment",
"inferredType": {
"$type": "InferredType",
"name": "AbstractElement"
},
"definition": {
"$type": "Group",
"elements": [
{
"$type": "Action",
"inferredType": {
"$type": "InferredType",
"name": "Assignment"
}
},
{
"$type": "Alternatives",
"elements": [
{
"$type": "Keyword",
"value": "=>"
},
{
"$type": "Keyword",
"value": "->"
}
],
"cardinality": "?"
},
{
"$type": "Assignment",
"feature": "feature",
"operator": "=",
"terminal": {
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@62"
},
"arguments": []
}
},
{
"$type": "Assignment",
"feature": "operator",
"operator": "=",
"terminal": {
"$type": "Alternatives",
"elements": [
{
"$type": "Keyword",
"value": "+="
},
{
"$type": "Keyword",
"value": "="
},
{
"$type": "Keyword",
"value": "?="
}
]
}
},
{
"$type": "Assignment",
"feature": "terminal",
"operator": "=",
"terminal": {
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@42"
},
"arguments": []
}
}
]
},
"definesHiddenTokens": false,
"entry": false,
"fragment": false,
"hiddenTokens": [],
"parameters": [],
"wildcard": false
},
{
"$type": "ParserRule",
"name": "AssignableTerminal",
"inferredType": {
"$type": "InferredType",
"name": "AbstractElement"
},
"definition": {
"$type": "Alternatives",
"elements": [
{
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@30"
},
"arguments": []
},
{
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@31"
},
"arguments": []
},
{
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@43"
},
"arguments": []
},
{
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@45"
},
"arguments": []
}
]
},
"definesHiddenTokens": false,
"entry": false,
"fragment": false,
"hiddenTokens": [],
"parameters": [],
"wildcard": false
},
{
"$type": "ParserRule",
"name": "ParenthesizedAssignableElement",
"inferredType": {
"$type": "InferredType",
"name": "AbstractElement"
},
"definition": {
"$type": "Group",
"elements": [
{
"$type": "Keyword",
"value": "("
},
{
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@44"
},
"arguments": []
},
{
"$type": "Keyword",
"value": ")"
}
]
},
"definesHiddenTokens": false,
"entry": false,
"fragment": false,
"hiddenTokens": [],
"parameters": [],
"wildcard": false
},
{
"$type": "ParserRule",
"name": "AssignableAlternatives",
"inferredType": {
"$type": "InferredType",
"name": "AbstractElement"
},
"definition": {
"$type": "Group",
"elements": [
{
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@42"
},
"arguments": []
},
{
"$type": "Group",
"elements": [
{
"$type": "Action",
"inferredType": {
"$type": "InferredType",
"name": "Alternatives"
},
"feature": "elements",
"operator": "+="
},
{
"$type": "Group",
"elements": [
{
"$type": "Keyword",
"value": "|"
},
{
"$type": "Assignment",
"feature": "elements",
"operator": "+=",
"terminal": {
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@42"
},
"arguments": []
}
}
],
"cardinality": "+"
}
],
"cardinality": "?"
}
]
},
"definesHiddenTokens": false,
"entry": false,
"fragment": false,
"hiddenTokens": [],
"parameters": [],
"wildcard": false
},
{
"$type": "ParserRule",
"name": "CrossReference",
"inferredType": {
"$type": "InferredType",
"name": "AbstractElement"
},
"definition": {
"$type": "Group",
"elements": [
{
"$type": "Action",
"inferredType": {
"$type": "InferredType",
"name": "CrossReference"
}
},
{
"$type": "Keyword",
"value": "["
},
{
"$type": "Assignment",
"feature": "type",
"operator": "=",
"terminal": {
"$type": "CrossReference",
"type": {
"$ref": "#/types@0"
},
"deprecatedSyntax": false
}
},
{
"$type": "Group",
"elements": [
{
"$type": "Alternatives",
"elements": [
{
"$type": "Assignment",
"feature": "deprecatedSyntax",
"operator": "?=",
"terminal": {
"$type": "Keyword",
"value": "|"
}
},
{
"$type": "Keyword",
"value": ":"
}
]
},
{
"$type": "Assignment",
"feature": "terminal",
"operator": "=",
"terminal": {
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@46"
},
"arguments": []
}
}
],
"cardinality": "?"
},
{
"$type": "Keyword",
"value": "]"
}
]
},
"definesHiddenTokens": false,
"entry": false,
"fragment": false,
"hiddenTokens": [],
"parameters": [],
"wildcard": false
},
{
"$type": "ParserRule",
"name": "CrossReferenceableTerminal",
"inferredType": {
"$type": "InferredType",
"name": "AbstractElement"
},
"definition": {
"$type": "Alternatives",
"elements": [
{
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@30"
},
"arguments": []
},
{
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@31"
},
"arguments": []
}
]
},
"definesHiddenTokens": false,
"entry": false,
"fragment": false,
"hiddenTokens": [],
"parameters": [],
"wildcard": false
},
{
"$type": "ParserRule",
"name": "ParenthesizedElement",
"inferredType": {
"$type": "InferredType",
"name": "AbstractElement"
},
"definition": {
"$type": "Group",
"elements": [
{
"$type": "Keyword",
"value": "("
},
{
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@21"
},
"arguments": []
},
{
"$type": "Keyword",
"value": ")"
}
]
},
"definesHiddenTokens": false,
"entry": false,
"fragment": false,
"hiddenTokens": [],
"parameters": [],
"wildcard": false
},
{
"$type": "ParserRule",
"name": "PredicatedGroup",
"inferredType": {
"$type": "InferredType",
"name": "Group"
},
"definition": {
"$type": "Group",
"elements": [
{
"$type": "Alternatives",
"elements": [
{
"$type": "Keyword",
"value": "=>"
},
{
"$type": "Keyword",
"value": "->"
}
]
},
{
"$type": "Keyword",
"value": "("
},
{
"$type": "Assignment",
"feature": "elements",
"operator": "+=",
"terminal": {
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@21"
},
"arguments": []
}
},
{
"$type": "Keyword",
"value": ")"
}
]
},
"definesHiddenTokens": false,
"entry": false,
"fragment": false,
"hiddenTokens": [],
"parameters": [],
"wildcard": false
},
{
"$type": "ParserRule",
"name": "ReturnType",
"definition": {
"$type": "Assignment",
"feature": "name",
"operator": "=",
"terminal": {
"$type": "Alternatives",
"elements": [
{
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@13"
},
"arguments": []
},
{
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@63"
},
"arguments": []
}
]
}
},
"definesHiddenTokens": false,
"entry": false,
"fragment": false,
"hiddenTokens": [],
"parameters": [],
"wildcard": false
},
{
"$type": "ParserRule",
"name": "TerminalRule",
"definition": {
"$type": "Group",
"elements": [
{
"$type": "Assignment",
"feature": "hidden",
"operator": "?=",
"terminal": {
"$type": "Keyword",
"value": "hidden"
},
"cardinality": "?"
},
{
"$type": "Keyword",
"value": "terminal"
},
{
"$type": "Alternatives",
"elements": [
{
"$type": "Group",
"elements": [
{
"$type": "Assignment",
"feature": "fragment",
"operator": "?=",
"terminal": {
"$type": "Keyword",
"value": "fragment"
}
},
{
"$type": "Assignment",
"feature": "name",
"operator": "=",
"terminal": {
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@63"
},
"arguments": []
}
}
]
},
{
"$type": "Group",
"elements": [
{
"$type": "Assignment",
"feature": "name",
"operator": "=",
"terminal": {
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@63"
},
"arguments": []
}
},
{
"$type": "Group",
"elements": [
{
"$type": "Keyword",
"value": "returns"
},
{
"$type": "Assignment",
"feature": "type",
"operator": "=",
"terminal": {
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@49"
},
"arguments": []
}
}
],
"cardinality": "?"
}
]
}
]
},
{
"$type": "Keyword",
"value": ":"
},
{
"$type": "Assignment",
"feature": "definition",
"operator": "=",
"terminal": {
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@51"
},
"arguments": []
}
},
{
"$type": "Keyword",
"value": ";"
}
]
},
"definesHiddenTokens": false,
"entry": false,
"fragment": false,
"hiddenTokens": [],
"parameters": [],
"wildcard": false
},
{
"$type": "ParserRule",
"name": "TerminalAlternatives",
"inferredType": {
"$type": "InferredType",
"name": "AbstractElement"
},
"definition": {
"$type": "Group",
"elements": [
{
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@52"
},
"arguments": []
},
{
"$type": "Group",
"elements": [
{
"$type": "Action",
"inferredType": {
"$type": "InferredType",
"name": "TerminalAlternatives"
},
"feature": "elements",
"operator": "+="
},
{
"$type": "Keyword",
"value": "|"
},
{
"$type": "Assignment",
"feature": "elements",
"operator": "+=",
"terminal": {
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@52"
},
"arguments": []
}
}
],
"cardinality": "*"
}
]
},
"definesHiddenTokens": false,
"entry": false,
"fragment": false,
"hiddenTokens": [],
"parameters": [],
"wildcard": false
},
{
"$type": "ParserRule",
"name": "TerminalGroup",
"inferredType": {
"$type": "InferredType",
"name": "AbstractElement"
},
"definition": {
"$type": "Group",
"elements": [
{
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@53"
},
"arguments": []
},
{
"$type": "Group",
"elements": [
{
"$type": "Action",
"inferredType": {
"$type": "InferredType",
"name": "TerminalGroup"
},
"feature": "elements",
"operator": "+="
},
{
"$type": "Assignment",
"feature": "elements",
"operator": "+=",
"terminal": {
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@53"
},
"arguments": []
},
"cardinality": "+"
}
],
"cardinality": "?"
}
]
},
"definesHiddenTokens": false,
"entry": false,
"fragment": false,
"hiddenTokens": [],
"parameters": [],
"wildcard": false
},
{
"$type": "ParserRule",
"name": "TerminalToken",
"inferredType": {
"$type": "InferredType",
"name": "AbstractElement"
},
"definition": {
"$type": "Group",
"elements": [
{
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@54"
},
"arguments": []
},
{
"$type": "Assignment",
"feature": "cardinality",
"operator": "=",
"terminal": {
"$type": "Alternatives",
"elements": [
{
"$type": "Keyword",
"value": "?"
},
{
"$type": "Keyword",
"value": "*"
},
{
"$type": "Keyword",
"value": "+"
}
]
},
"cardinality": "?"
}
]
},
"definesHiddenTokens": false,
"entry": false,
"fragment": false,
"hiddenTokens": [],
"parameters": [],
"wildcard": false
},
{
"$type": "ParserRule",
"name": "TerminalTokenElement",
"inferredType": {
"$type": "InferredType",
"name": "AbstractElement"
},
"definition": {
"$type": "Alternatives",
"elements": [
{
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@61"
},
"arguments": []
},
{
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@56"
},
"arguments": []
},
{
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@55"
},
"arguments": []
},
{
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@57"
},
"arguments": []
},
{
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@58"
},
"arguments": []
},
{
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@59"
},
"arguments": []
},
{
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@60"
},
"arguments": []
}
]
},
"definesHiddenTokens": false,
"entry": false,
"fragment": false,
"hiddenTokens": [],
"parameters": [],
"wildcard": false
},
{
"$type": "ParserRule",
"name": "ParenthesizedTerminalElement",
"inferredType": {
"$type": "InferredType",
"name": "AbstractElement"
},
"definition": {
"$type": "Group",
"elements": [
{
"$type": "Keyword",
"value": "("
},
{
"$type": "Assignment",
"feature": "lookahead",
"operator": "=",
"terminal": {
"$type": "Alternatives",
"elements": [
{
"$type": "Keyword",
"value": "?="
},
{
"$type": "Keyword",
"value": "?!"
},
{
"$type": "Keyword",
"value": "?<="
},
{
"$type": "Keyword",
"value": "?<!"
}
]
},
"cardinality": "?"
},
{
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@51"
},
"arguments": []
},
{
"$type": "Keyword",
"value": ")"
}
]
},
"definesHiddenTokens": false,
"entry": false,
"fragment": false,
"hiddenTokens": [],
"parameters": [],
"wildcard": false
},
{
"$type": "ParserRule",
"name": "TerminalRuleCall",
"inferredType": {
"$type": "InferredType",
"name": "AbstractElement"
},
"definition": {
"$type": "Group",
"elements": [
{
"$type": "Action",
"inferredType": {
"$type": "InferredType",
"name": "TerminalRuleCall"
}
},
{
"$type": "Assignment",
"feature": "rule",
"operator": "=",
"terminal": {
"$type": "CrossReference",
"type": {
"$ref": "#/rules@50"
},
"terminal": {
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@63"
},
"arguments": []
},
"deprecatedSyntax": false
}
}
]
},
"definesHiddenTokens": false,
"entry": false,
"fragment": false,
"hiddenTokens": [],
"parameters": [],
"wildcard": false
},
{
"$type": "ParserRule",
"name": "NegatedToken",
"inferredType": {
"$type": "InferredType",
"name": "AbstractElement"
},
"definition": {
"$type": "Group",
"elements": [
{
"$type": "Action",
"inferredType": {
"$type": "InferredType",
"name": "NegatedToken"
}
},
{
"$type": "Keyword",
"value": "!"
},
{
"$type": "Assignment",
"feature": "terminal",
"operator": "=",
"terminal": {
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@54"
},
"arguments": []
}
}
]
},
"definesHiddenTokens": false,
"entry": false,
"fragment": false,
"hiddenTokens": [],
"parameters": [],
"wildcard": false
},
{
"$type": "ParserRule",
"name": "UntilToken",
"inferredType": {
"$type": "InferredType",
"name": "AbstractElement"
},
"definition": {
"$type": "Group",
"elements": [
{
"$type": "Action",
"inferredType": {
"$type": "InferredType",
"name": "UntilToken"
}
},
{
"$type": "Keyword",
"value": "->"
},
{
"$type": "Assignment",
"feature": "terminal",
"operator": "=",
"terminal": {
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@54"
},
"arguments": []
}
}
]
},
"definesHiddenTokens": false,
"entry": false,
"fragment": false,
"hiddenTokens": [],
"parameters": [],
"wildcard": false
},
{
"$type": "ParserRule",
"name": "RegexToken",
"inferredType": {
"$type": "InferredType",
"name": "AbstractElement"
},
"definition": {
"$type": "Group",
"elements": [
{
"$type": "Action",
"inferredType": {
"$type": "InferredType",
"name": "RegexToken"
}
},
{
"$type": "Assignment",
"feature": "regex",
"operator": "=",
"terminal": {
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@66"
},
"arguments": []
}
}
]
},
"definesHiddenTokens": false,
"entry": false,
"fragment": false,
"hiddenTokens": [],
"parameters": [],
"wildcard": false
},
{
"$type": "ParserRule",
"name": "Wildcard",
"inferredType": {
"$type": "InferredType",
"name": "AbstractElement"
},
"definition": {
"$type": "Group",
"elements": [
{
"$type": "Action",
"inferredType": {
"$type": "InferredType",
"name": "Wildcard"
}
},
{
"$type": "Keyword",
"value": "."
}
]
},
"definesHiddenTokens": false,
"entry": false,
"fragment": false,
"hiddenTokens": [],
"parameters": [],
"wildcard": false
},
{
"$type": "ParserRule",
"name": "CharacterRange",
"inferredType": {
"$type": "InferredType",
"name": "AbstractElement"
},
"definition": {
"$type": "Group",
"elements": [
{
"$type": "Action",
"inferredType": {
"$type": "InferredType",
"name": "CharacterRange"
}
},
{
"$type": "Assignment",
"feature": "left",
"operator": "=",
"terminal": {
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@30"
},
"arguments": []
}
},
{
"$type": "Group",
"elements": [
{
"$type": "Keyword",
"value": ".."
},
{
"$type": "Assignment",
"feature": "right",
"operator": "=",
"terminal": {
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@30"
},
"arguments": []
}
}
],
"cardinality": "?"
}
]
},
"definesHiddenTokens": false,
"entry": false,
"fragment": false,
"hiddenTokens": [],
"parameters": [],
"wildcard": false
},
{
"$type": "ParserRule",
"name": "FeatureName",
"dataType": "string",
"definition": {
"$type": "Alternatives",
"elements": [
{
"$type": "Keyword",
"value": "current"
},
{
"$type": "Keyword",
"value": "entry"
},
{
"$type": "Keyword",
"value": "extends"
},
{
"$type": "Keyword",
"value": "false"
},
{
"$type": "Keyword",
"value": "fragment"
},
{
"$type": "Keyword",
"value": "grammar"
},
{
"$type": "Keyword",
"value": "hidden"
},
{
"$type": "Keyword",
"value": "import"
},
{
"$type": "Keyword",
"value": "interface"
},
{
"$type": "Keyword",
"value": "returns"
},
{
"$type": "Keyword",
"value": "terminal"
},
{
"$type": "Keyword",
"value": "true"
},
{
"$type": "Keyword",
"value": "type"
},
{
"$type": "Keyword",
"value": "infer"
},
{
"$type": "Keyword",
"value": "infers"
},
{
"$type": "Keyword",
"value": "with"
},
{
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@13"
},
"arguments": []
},
{
"$type": "RuleCall",
"rule": {
"$ref": "#/rules@63"
},
"arguments": []
}
]
},
"definesHiddenTokens": false,
"entry": false,
"fragment": false,
"hiddenTokens": [],
"parameters": [],
"wildcard": false
},
{
"$type": "TerminalRule",
"name": "ID",
"definition": {
"$type": "RegexToken",
"regex": "/\\\\^?[_a-zA-Z][\\\\w_]*/"
},
"fragment": false,
"hidden": false
},
{
"$type": "TerminalRule",
"name": "STRING",
"definition": {
"$type": "RegexToken",
"regex": "/\\"(\\\\\\\\.|[^\\"\\\\\\\\])*\\"|'(\\\\\\\\.|[^'\\\\\\\\])*'/"
},
"fragment": false,
"hidden": false
},
{
"$type": "TerminalRule",
"name": "NUMBER",
"type": {
"$type": "ReturnType",
"name": "number"
},
"definition": {
"$type": "RegexToken",
"regex": "/NaN|-?((\\\\d*\\\\.\\\\d+|\\\\d+)([Ee][+-]?\\\\d+)?|Infinity)/"
},
"fragment": false,
"hidden": false
},
{
"$type": "TerminalRule",
"name": "RegexLiteral",
"type": {
"$type": "ReturnType",
"name": "string"
},
"definition": {
"$type": "RegexToken",
"regex": "/\\\\/(?![*+?])(?:[^\\\\r\\\\n\\\\[/\\\\\\\\]|\\\\\\\\.|\\\\[(?:[^\\\\r\\\\n\\\\]\\\\\\\\]|\\\\\\\\.)*\\\\])+\\\\/[a-z]*/"
},
"fragment": false,
"hidden": false
},
{
"$type": "TerminalRule",
"hidden": true,
"name": "WS",
"definition": {
"$type": "RegexToken",
"regex": "/\\\\s+/"
},
"fragment": false
},
{
"$type": "TerminalRule",
"hidden": true,
"name": "ML_COMMENT",
"definition": {
"$type": "RegexToken",
"regex": "/\\\\/\\\\*[\\\\s\\\\S]*?\\\\*\\\\//"
},
"fragment": false
},
{
"$type": "TerminalRule",
"hidden": true,
"name": "SL_COMMENT",
"definition": {
"$type": "RegexToken",
"regex": "/\\\\/\\\\/[^\\\\n\\\\r]*/"
},
"fragment": false
}
],
"types": [
{
"$type": "Type",
"name": "AbstractType",
"type": {
"$type": "UnionType",
"types": [
{
"$type": "SimpleType",
"typeRef": {
"$ref": "#/rules@1"
}
},
{
"$type": "SimpleType",
"typeRef": {
"$ref": "#/rules@14"
}
},
{
"$type": "SimpleType",
"typeRef": {
"$ref": "#/rules@17"
}
},
{
"$type": "SimpleType",
"typeRef": {
"$ref": "#/rules@18"
}
}
]
}
}
],
"definesHiddenTokens": false,
"hiddenTokens": [],
"imports": [],
"interfaces": [],
"usedGrammars": []
}`));
//# sourceMappingURL=grammar.js.map