/****************************************************************************** * This file was generated by langium-cli 3.3.0. * DO NOT EDIT MANUALLY! ******************************************************************************/ import type { Grammar } from 'langium'; import { loadGrammarFromJson } from 'langium'; let loadedArithmeticsGrammar: Grammar | undefined; export const ArithmeticsGrammar = (): Grammar => loadedArithmeticsGrammar ?? (loadedArithmeticsGrammar = loadGrammarFromJson(`{ "$type": "Grammar", "isDeclared": true, "name": "Arithmetics", "rules": [ { "$type": "ParserRule", "entry": true, "name": "Module", "definition": { "$type": "Group", "elements": [ { "$type": "Keyword", "value": "module" }, { "$type": "Assignment", "feature": "name", "operator": "=", "terminal": { "$type": "RuleCall", "rule": { "$ref": "#/rules@12" }, "arguments": [] } }, { "$type": "Assignment", "feature": "statements", "operator": "+=", "terminal": { "$type": "RuleCall", "rule": { "$ref": "#/rules@1" }, "arguments": [] }, "cardinality": "*" } ] }, "definesHiddenTokens": false, "fragment": false, "hiddenTokens": [], "parameters": [], "wildcard": false }, { "$type": "ParserRule", "name": "Statement", "definition": { "$type": "Alternatives", "elements": [ { "$type": "RuleCall", "rule": { "$ref": "#/rules@2" }, "arguments": [] }, { "$type": "RuleCall", "rule": { "$ref": "#/rules@4" }, "arguments": [] } ] }, "definesHiddenTokens": false, "entry": false, "fragment": false, "hiddenTokens": [], "parameters": [], "wildcard": false }, { "$type": "ParserRule", "name": "Definition", "definition": { "$type": "Group", "elements": [ { "$type": "Keyword", "value": "def" }, { "$type": "Assignment", "feature": "name", "operator": "=", "terminal": { "$type": "RuleCall", "rule": { "$ref": "#/rules@12" }, "arguments": [] } }, { "$type": "Group", "elements": [ { "$type": "Keyword", "value": "(" }, { "$type": "Assignment", "feature": "args", "operator": "+=", "terminal": { "$type": "RuleCall", "rule": { "$ref": "#/rules@3" }, "arguments": [] } }, { "$type": "Group", "elements": [ { "$type": "Keyword", "value": "," }, { "$type": "Assignment", "feature": "args", "operator": "+=", "terminal": { "$type": "RuleCall", "rule": { "$ref": "#/rules@3" }, "arguments": [] } } ], "cardinality": "*" }, { "$type": "Keyword", "value": ")" } ], "cardinality": "?" }, { "$type": "Keyword", "value": ":" }, { "$type": "Assignment", "feature": "expr", "operator": "=", "terminal": { "$type": "RuleCall", "rule": { "$ref": "#/rules@5" }, "arguments": [] } }, { "$type": "Keyword", "value": ";" } ] }, "definesHiddenTokens": false, "entry": false, "fragment": false, "hiddenTokens": [], "parameters": [], "wildcard": false }, { "$type": "ParserRule", "name": "DeclaredParameter", "definition": { "$type": "Assignment", "feature": "name", "operator": "=", "terminal": { "$type": "RuleCall", "rule": { "$ref": "#/rules@12" }, "arguments": [] } }, "definesHiddenTokens": false, "entry": false, "fragment": false, "hiddenTokens": [], "parameters": [], "wildcard": false }, { "$type": "ParserRule", "name": "Evaluation", "definition": { "$type": "Group", "elements": [ { "$type": "Assignment", "feature": "expression", "operator": "=", "terminal": { "$type": "RuleCall", "rule": { "$ref": "#/rules@5" }, "arguments": [] } }, { "$type": "Keyword", "value": ";" } ] }, "definesHiddenTokens": false, "entry": false, "fragment": false, "hiddenTokens": [], "parameters": [], "wildcard": false }, { "$type": "ParserRule", "name": "Expression", "definition": { "$type": "RuleCall", "rule": { "$ref": "#/rules@6" }, "arguments": [] }, "definesHiddenTokens": false, "entry": false, "fragment": false, "hiddenTokens": [], "parameters": [], "wildcard": false }, { "$type": "ParserRule", "name": "Addition", "inferredType": { "$type": "InferredType", "name": "Expression" }, "definition": { "$type": "Group", "elements": [ { "$type": "RuleCall", "rule": { "$ref": "#/rules@7" }, "arguments": [] }, { "$type": "Group", "elements": [ { "$type": "Action", "inferredType": { "$type": "InferredType", "name": "BinaryExpression" }, "feature": "left", "operator": "=" }, { "$type": "Assignment", "feature": "operator", "operator": "=", "terminal": { "$type": "Alternatives", "elements": [ { "$type": "Keyword", "value": "+" }, { "$type": "Keyword", "value": "-" } ] } }, { "$type": "Assignment", "feature": "right", "operator": "=", "terminal": { "$type": "RuleCall", "rule": { "$ref": "#/rules@7" }, "arguments": [] } } ], "cardinality": "*" } ] }, "definesHiddenTokens": false, "entry": false, "fragment": false, "hiddenTokens": [], "parameters": [], "wildcard": false }, { "$type": "ParserRule", "name": "Multiplication", "inferredType": { "$type": "InferredType", "name": "Expression" }, "definition": { "$type": "Group", "elements": [ { "$type": "RuleCall", "rule": { "$ref": "#/rules@8" }, "arguments": [] }, { "$type": "Group", "elements": [ { "$type": "Action", "inferredType": { "$type": "InferredType", "name": "BinaryExpression" }, "feature": "left", "operator": "=" }, { "$type": "Assignment", "feature": "operator", "operator": "=", "terminal": { "$type": "Alternatives", "elements": [ { "$type": "Keyword", "value": "*" }, { "$type": "Keyword", "value": "/" } ] } }, { "$type": "Assignment", "feature": "right", "operator": "=", "terminal": { "$type": "RuleCall", "rule": { "$ref": "#/rules@8" }, "arguments": [] } } ], "cardinality": "*" } ] }, "definesHiddenTokens": false, "entry": false, "fragment": false, "hiddenTokens": [], "parameters": [], "wildcard": false }, { "$type": "ParserRule", "name": "Exponentiation", "inferredType": { "$type": "InferredType", "name": "Expression" }, "definition": { "$type": "Group", "elements": [ { "$type": "RuleCall", "rule": { "$ref": "#/rules@9" }, "arguments": [] }, { "$type": "Group", "elements": [ { "$type": "Action", "inferredType": { "$type": "InferredType", "name": "BinaryExpression" }, "feature": "left", "operator": "=" }, { "$type": "Assignment", "feature": "operator", "operator": "=", "terminal": { "$type": "Keyword", "value": "^" } }, { "$type": "Assignment", "feature": "right", "operator": "=", "terminal": { "$type": "RuleCall", "rule": { "$ref": "#/rules@9" }, "arguments": [] } } ], "cardinality": "*" } ] }, "definesHiddenTokens": false, "entry": false, "fragment": false, "hiddenTokens": [], "parameters": [], "wildcard": false }, { "$type": "ParserRule", "name": "Modulo", "inferredType": { "$type": "InferredType", "name": "Expression" }, "definition": { "$type": "Group", "elements": [ { "$type": "RuleCall", "rule": { "$ref": "#/rules@10" }, "arguments": [] }, { "$type": "Group", "elements": [ { "$type": "Action", "inferredType": { "$type": "InferredType", "name": "BinaryExpression" }, "feature": "left", "operator": "=" }, { "$type": "Assignment", "feature": "operator", "operator": "=", "terminal": { "$type": "Keyword", "value": "%" } }, { "$type": "Assignment", "feature": "right", "operator": "=", "terminal": { "$type": "RuleCall", "rule": { "$ref": "#/rules@10" }, "arguments": [] } } ], "cardinality": "*" } ] }, "definesHiddenTokens": false, "entry": false, "fragment": false, "hiddenTokens": [], "parameters": [], "wildcard": false }, { "$type": "ParserRule", "name": "PrimaryExpression", "inferredType": { "$type": "InferredType", "name": "Expression" }, "definition": { "$type": "Alternatives", "elements": [ { "$type": "Group", "elements": [ { "$type": "Keyword", "value": "(" }, { "$type": "RuleCall", "rule": { "$ref": "#/rules@5" }, "arguments": [] }, { "$type": "Keyword", "value": ")" } ] }, { "$type": "Group", "elements": [ { "$type": "Action", "inferredType": { "$type": "InferredType", "name": "NumberLiteral" } }, { "$type": "Assignment", "feature": "value", "operator": "=", "terminal": { "$type": "RuleCall", "rule": { "$ref": "#/rules@13" }, "arguments": [] } } ] }, { "$type": "Group", "elements": [ { "$type": "Action", "inferredType": { "$type": "InferredType", "name": "FunctionCall" } }, { "$type": "Assignment", "feature": "func", "operator": "=", "terminal": { "$type": "CrossReference", "type": { "$ref": "#/types@0" }, "deprecatedSyntax": false } }, { "$type": "Group", "elements": [ { "$type": "Keyword", "value": "(" }, { "$type": "Assignment", "feature": "args", "operator": "+=", "terminal": { "$type": "RuleCall", "rule": { "$ref": "#/rules@5" }, "arguments": [] } }, { "$type": "Group", "elements": [ { "$type": "Keyword", "value": "," }, { "$type": "Assignment", "feature": "args", "operator": "+=", "terminal": { "$type": "RuleCall", "rule": { "$ref": "#/rules@5" }, "arguments": [] } } ], "cardinality": "*" }, { "$type": "Keyword", "value": ")" } ], "cardinality": "?" } ] } ] }, "definesHiddenTokens": false, "entry": false, "fragment": false, "hiddenTokens": [], "parameters": [], "wildcard": false }, { "$type": "TerminalRule", "hidden": true, "name": "WS", "definition": { "$type": "RegexToken", "regex": "/\\\\s+/" }, "fragment": false }, { "$type": "TerminalRule", "name": "ID", "definition": { "$type": "RegexToken", "regex": "/[_a-zA-Z][\\\\w_]*/" }, "fragment": false, "hidden": false }, { "$type": "TerminalRule", "name": "NUMBER", "type": { "$type": "ReturnType", "name": "number" }, "definition": { "$type": "RegexToken", "regex": "/[0-9]+(\\\\.[0-9]*)?/" }, "fragment": false, "hidden": 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": "AbstractDefinition", "type": { "$type": "UnionType", "types": [ { "$type": "SimpleType", "typeRef": { "$ref": "#/rules@2" } }, { "$type": "SimpleType", "typeRef": { "$ref": "#/rules@3" } } ] } } ], "definesHiddenTokens": false, "hiddenTokens": [], "imports": [], "interfaces": [], "usedGrammars": [] }`));