From 9f44a607f625052eda346c3c8735b663ac4f1767 Mon Sep 17 00:00:00 2001 From: Novus Nota <68142933+novusnota@users.noreply.github.com> Date: Sat, 13 Apr 2024 00:05:18 +0200 Subject: [PATCH 1/5] chore: 7-10s speedup of tests with just 1 change --- jest.config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jest.config.js b/jest.config.js index 2e13cfea9..6e143384e 100644 --- a/jest.config.js +++ b/jest.config.js @@ -2,7 +2,7 @@ module.exports = { preset: "ts-jest", testEnvironment: "node", testPathIgnorePatterns: ["/node_modules/", "/dist/"], - maxWorkers: 1, + maxWorkers: "50%", globalSetup: "./jest.setup.js", globalTeardown: "./jest.teardown.js", snapshotSerializers: ["@tact-lang/ton-jest/serializers"], From 81b8d84ac7db666206560ab2c97e1c0cd764162f Mon Sep 17 00:00:00 2001 From: Novus Nota <68142933+novusnota@users.noreply.github.com> Date: Sat, 13 Apr 2024 00:08:33 +0200 Subject: [PATCH 2/5] feat: Trailing commas for `with ...` and `init()` parameters With updated regular and intentionally failing tests --- .../__snapshots__/grammar.spec.ts.snap | 93 ++++++++++++++++--- src/grammar/grammar.ohm | 6 +- src/grammar/grammar.ohm-bundle.d.ts | 6 +- src/grammar/grammar.ohm-bundle.js | 2 +- src/grammar/grammar.ts | 43 +++++++-- src/grammar/test-failed/case-27.tact | 1 + src/grammar/test-failed/case-28.tact | 1 + src/grammar/test-failed/case-29.tact | 3 + src/grammar/test/case-22.tact | 10 +- src/grammar/test/case-25.tact | 5 +- 10 files changed, 141 insertions(+), 29 deletions(-) create mode 100644 src/grammar/test-failed/case-27.tact create mode 100644 src/grammar/test-failed/case-28.tact create mode 100644 src/grammar/test-failed/case-29.tact diff --git a/src/grammar/__snapshots__/grammar.spec.ts.snap b/src/grammar/__snapshots__/grammar.spec.ts.snap index 8492e3c7c..3691e96d0 100644 --- a/src/grammar/__snapshots__/grammar.spec.ts.snap +++ b/src/grammar/__snapshots__/grammar.spec.ts.snap @@ -254,6 +254,34 @@ Line 2, col 31: " `; +exports[`grammar should fail case-27 1`] = ` +":1:19: Empty inherited traits list should not have a dangling comma. +Line 1, col 19: +> 1 | contract Name with, {} + ^ + 2 | +" +`; + +exports[`grammar should fail case-28 1`] = ` +":1:16: Empty inherited traits list should not have a dangling comma. +Line 1, col 16: +> 1 | trait Name with, {} + ^ + 2 | +" +`; + +exports[`grammar should fail case-29 1`] = ` +":2:10: Empty parameter list should not have a dangling comma. +Line 2, col 10: + 1 | contract Name { +> 2 | init(,) {} + ^ + 3 | } +" +`; + exports[`grammar should parse case-0 1`] = ` { "entries": [ @@ -2727,8 +2755,8 @@ exports[`grammar should parse case-22 1`] = ` "id": 3, "init": null, "kind": "def_field", - "name": "a", - "ref": a: Int;, + "name": "c", + "ref": c: Int;, "type": { "id": 2, "kind": "type_ref_simple", @@ -2740,10 +2768,10 @@ exports[`grammar should parse case-22 1`] = ` ], "id": 4, "kind": "def_trait", - "name": "SomeTrait", + "name": "OtherTrait", "origin": "user", - "ref": trait SomeTrait { - a: Int; + "ref": trait OtherTrait { + c: Int; }, "traits": [], }, @@ -2755,8 +2783,8 @@ exports[`grammar should parse case-22 1`] = ` "id": 6, "init": null, "kind": "def_field", - "name": "b", - "ref": b: Int;, + "name": "a", + "ref": a: Int;, "type": { "id": 5, "kind": "type_ref_simple", @@ -2767,15 +2795,50 @@ exports[`grammar should parse case-22 1`] = ` }, ], "id": 8, + "kind": "def_trait", + "name": "SomeTrait", + "origin": "user", + "ref": trait SomeTrait with OtherTrait, { + a: Int; +}, + "traits": [ + { + "id": 7, + "kind": "id", + "ref": OtherTrait, + "value": "OtherTrait", + }, + ], + }, + { + "attributes": [], + "declarations": [ + { + "as": null, + "id": 10, + "init": null, + "kind": "def_field", + "name": "b", + "ref": b: Int;, + "type": { + "id": 9, + "kind": "type_ref_simple", + "name": "Int", + "optional": false, + "ref": Int, + }, + }, + ], + "id": 12, "kind": "def_contract", "name": "Main", "origin": "user", - "ref": contract Main with SomeTrait { + "ref": contract Main with SomeTrait, { b: Int; }, "traits": [ { - "id": 7, + "id": 11, "kind": "id", "ref": SomeTrait, "value": "SomeTrait", @@ -2783,7 +2846,7 @@ exports[`grammar should parse case-22 1`] = ` ], }, ], - "id": 9, + "id": 13, "kind": "program", } `; @@ -3669,7 +3732,10 @@ exports[`grammar should parse case-25 1`] = ` ], "id": 76, "kind": "def_init_function", - "ref": init(arg1: Int, arg2: Int) {}, + "ref": init( + arg1: Int, + arg2: Int, + ) {}, "statements": [], }, ], @@ -3678,7 +3744,10 @@ exports[`grammar should parse case-25 1`] = ` "name": "TestContract", "origin": "user", "ref": contract TestContract { - init(arg1: Int, arg2: Int) {} + init( + arg1: Int, + arg2: Int, + ) {} }, "traits": [], }, diff --git a/src/grammar/grammar.ohm b/src/grammar/grammar.ohm index b23de569e..bac1738ad 100644 --- a/src/grammar/grammar.ohm +++ b/src/grammar/grammar.ohm @@ -45,8 +45,8 @@ Tact { // Contract Contract = ContractAttribute* contract id "{" ContractBody* "}" --simple - | ContractAttribute* contract id with ListOf "{" ContractBody* "}" --withTraits - ContractInit = "init" "(" ListOf ")" "{" Statement* "}" + | ContractAttribute* contract id with ListOf ","? "{" ContractBody* "}" --withTraits + ContractInit = "init" "(" ListOf ","? ")" "{" Statement* "}" ContractBody = Field | ContractInit | ReceiveFunction @@ -55,7 +55,7 @@ Tact { // Trait Trait = ContractAttribute* trait id "{" TraitBody* "}" --originary - | ContractAttribute* trait id with ListOf "{" TraitBody* "}" --withTraits + | ContractAttribute* trait id with ListOf ","? "{" TraitBody* "}" --withTraits TraitBody = Field | ReceiveFunction | Function diff --git a/src/grammar/grammar.ohm-bundle.d.ts b/src/grammar/grammar.ohm-bundle.d.ts index 88e11d45d..c5e64a8ca 100644 --- a/src/grammar/grammar.ohm-bundle.d.ts +++ b/src/grammar/grammar.ohm-bundle.d.ts @@ -43,12 +43,12 @@ export interface TactActionDict extends ActionDict { Struct?: (this: NonterminalNode, arg0: NonterminalNode) => T; StructBody?: (this: NonterminalNode, arg0: NonterminalNode) => T; Contract_simple?: (this: NonterminalNode, arg0: IterationNode, arg1: NonterminalNode, arg2: NonterminalNode, arg3: TerminalNode, arg4: IterationNode, arg5: TerminalNode) => T; - Contract_withTraits?: (this: NonterminalNode, arg0: IterationNode, arg1: NonterminalNode, arg2: NonterminalNode, arg3: NonterminalNode, arg4: NonterminalNode, arg5: TerminalNode, arg6: IterationNode, arg7: TerminalNode) => T; + Contract_withTraits?: (this: NonterminalNode, arg0: IterationNode, arg1: NonterminalNode, arg2: NonterminalNode, arg3: NonterminalNode, arg4: NonterminalNode, arg5: IterationNode, arg6: TerminalNode, arg7: IterationNode, arg8: TerminalNode) => T; Contract?: (this: NonterminalNode, arg0: NonterminalNode) => T; - ContractInit?: (this: NonterminalNode, arg0: TerminalNode, arg1: TerminalNode, arg2: NonterminalNode, arg3: TerminalNode, arg4: TerminalNode, arg5: IterationNode, arg6: TerminalNode) => T; + ContractInit?: (this: NonterminalNode, arg0: TerminalNode, arg1: TerminalNode, arg2: NonterminalNode, arg3: IterationNode, arg4: TerminalNode, arg5: TerminalNode, arg6: IterationNode, arg7: TerminalNode) => T; ContractBody?: (this: NonterminalNode, arg0: NonterminalNode) => T; Trait_originary?: (this: NonterminalNode, arg0: IterationNode, arg1: NonterminalNode, arg2: NonterminalNode, arg3: TerminalNode, arg4: IterationNode, arg5: TerminalNode) => T; - Trait_withTraits?: (this: NonterminalNode, arg0: IterationNode, arg1: NonterminalNode, arg2: NonterminalNode, arg3: NonterminalNode, arg4: NonterminalNode, arg5: TerminalNode, arg6: IterationNode, arg7: TerminalNode) => T; + Trait_withTraits?: (this: NonterminalNode, arg0: IterationNode, arg1: NonterminalNode, arg2: NonterminalNode, arg3: NonterminalNode, arg4: NonterminalNode, arg5: IterationNode, arg6: TerminalNode, arg7: IterationNode, arg8: TerminalNode) => T; Trait?: (this: NonterminalNode, arg0: NonterminalNode) => T; TraitBody?: (this: NonterminalNode, arg0: NonterminalNode) => T; ContractAttribute_interface?: (this: NonterminalNode, arg0: TerminalNode, arg1: TerminalNode, arg2: NonterminalNode, arg3: TerminalNode) => T; diff --git a/src/grammar/grammar.ohm-bundle.js b/src/grammar/grammar.ohm-bundle.js index 0d8c58e5f..8f11e0a8c 100644 --- a/src/grammar/grammar.ohm-bundle.js +++ b/src/grammar/grammar.ohm-bundle.js @@ -1 +1 @@ -'use strict';const ohm=(require('ohm-js').default || require('ohm-js'));const result=ohm.makeRecipe(["grammar",{"source":"Tact {\n\n // Starting point of the program\n Program = ProgramItem*\n ProgramItem = Struct\n | Contract\n | Primitive\n | StaticFunction\n | NativeFunction\n | ProgramImport\n | Trait\n | Constant\n ProgramImport = import stringLiteral \";\"\n\n // Built-in declarations\n Primitive = \"primitive\" Type \";\"\n\n // Static function\n StaticFunction = Function\n NativeFunction = nameAttribute \"(\" funcId \")\" FunctionAttribute* native id \"(\" ListOf \",\"? \")\" \";\" --withVoid\n | nameAttribute \"(\" funcId \")\" FunctionAttribute* native id \"(\" ListOf \",\"? \")\" \":\" Type \";\" --withType\n \n // Field declarations\n Type = typeLiteral \"?\" --optional\n | typeLiteral --required\n | \"map\" \"<\" typeLiteral (as id)? \",\" typeLiteral (as id)? \">\" --map\n | \"bounced\" \"<\" typeLiteral \">\" --bounced\n Field = id \":\" Type \";\" --default\n | id \":\" Type \"=\" Expression \";\" --defaultWithInit\n | id \":\" Type as id \";\" --withSerialization\n | id \":\" Type as id \"=\" Expression \";\" --withSerializationAndInit\n \n // Constant\n ConstantAttribute = virtual --virtual\n | override --override\n | abstract --abstract\n Constant = ConstantAttribute* ~fun const id \":\" Type \"=\" Expression \";\" --withValue\n | ConstantAttribute* ~fun const id \":\" Type \";\" --withEmpty\n\n // Struct\n Struct = \"struct\" typeLiteral \"{\" StructBody* \"}\" --originary\n | \"message\" typeLiteral \"{\" StructBody* \"}\" --message\n | \"message\" \"(\" integerLiteral \")\" typeLiteral \"{\" StructBody* \"}\" --messageWithId\n StructBody = Field\n\n // Contract\n Contract = ContractAttribute* contract id \"{\" ContractBody* \"}\" --simple\n | ContractAttribute* contract id with ListOf \"{\" ContractBody* \"}\" --withTraits\n ContractInit = \"init\" \"(\" ListOf \")\" \"{\" Statement* \"}\"\n ContractBody = Field\n | ContractInit\n | ReceiveFunction\n | Function\n | Constant\n \n // Trait\n Trait = ContractAttribute* trait id \"{\" TraitBody* \"}\" --originary\n | ContractAttribute* trait id with ListOf \"{\" TraitBody* \"}\" --withTraits\n TraitBody = Field\n | ReceiveFunction\n | Function\n | Constant\n\n // Contract attributes\n ContractAttribute = \"@interface\" \"(\" stringLiteral \")\" --interface\n\n // Function\n FunctionAttribute = \"get\" --getter\n | mutates --mutates\n | extends --extends\n | virtual --virtual\n | override --override\n | inline --inline\n | abstract --abstract\n Function = FunctionAttribute* fun id \"(\" ListOf \",\"? \")\" \"{\" Statement* \"}\" --withVoid\n | FunctionAttribute* fun id \"(\" ListOf \",\"? \")\" \":\" Type \"{\" Statement* \"}\" --withType\n | FunctionAttribute* fun id \"(\" ListOf \",\"? \")\" \";\" --abstractVoid\n | FunctionAttribute* fun id \"(\" ListOf \",\"? \")\" \":\" Type \";\" --abstractType\n FunctionArg = id \":\" Type\n \n ReceiveFunction = \"receive\" \"(\" FunctionArg \")\" \"{\" Statement* \"}\" --simple\n | \"receive\" \"(\" \")\" \"{\" Statement* \"}\" --empty\n | \"receive\" \"(\" stringLiteral \")\" \"{\" Statement* \"}\" --comment\n | \"bounced\" \"(\" FunctionArg \")\" \"{\" Statement* \"}\" --bounced\n | \"external\" \"(\" FunctionArg \")\" \"{\" Statement* \"}\" --externalSimple\n | \"external\" \"(\" stringLiteral \")\" \"{\" Statement* \"}\" --externalComment\n | \"external\" \"(\" \")\" \"{\" Statement* \"}\" --externalEmpty\n\n // Statements\n Statement = StatementLet\n | StatementBlock\n | StatementReturn\n | StatementExpression\n | StatementAssign\n | StatementAugmentedAssign\n | StatementCondition\n | StatementWhile\n | StatementRepeat\n | StatementUntil\n StatementBlock = \"{\" Statement* \"}\"\n StatementLet = let id \":\" Type \"=\" Expression \";\"\n StatementReturn = return Expression \";\" --withExpression\n | return \";\" --withoutExpression \n StatementExpression = Expression \";\"\n StatementAssign = LValue \"=\" Expression \";\"\n StatementAugmentedAssign = StatementAugmentedAssignAdd\n | StatementAugmentedAssignSub\n | StatementAugmentedAssignMul\n | StatementAugmentedAssignDiv\n | StatementAugmentedAssignRem\n StatementAugmentedAssignAdd = LValue \"+=\" Expression \";\"\n StatementAugmentedAssignSub = LValue \"-=\" Expression \";\"\n StatementAugmentedAssignMul = LValue \"*=\" Expression \";\"\n StatementAugmentedAssignDiv = LValue \"/=\" Expression \";\"\n StatementAugmentedAssignRem = LValue \"%=\" Expression \";\"\n StatementCondition = if Expression \"{\" Statement* \"}\" ~else --simple\n | if Expression \"{\" Statement* \"}\" else \"{\" Statement* \"}\" --withElse\n | if Expression \"{\" Statement* \"}\" else StatementCondition --withElseIf\n StatementWhile = while \"(\" Expression \")\" \"{\" Statement* \"}\"\n StatementRepeat = repeat \"(\" Expression \")\" \"{\" Statement* \"}\"\n StatementUntil = do \"{\" Statement* \"}\" until \"(\" Expression \")\" \";\"\n\n // L-value\n LValue = id \".\" LValue --more\n | id --single\n\n // Expressions\n Expression = ExpressionConditional\n ExpressionConditional = ExpressionOr \"?\" ExpressionOr \":\" ExpressionConditional --ternary\n | ExpressionOr\n ExpressionOr = ExpressionOr \"||\" ExpressionAnd --or\n | ExpressionAnd\n ExpressionAnd = ExpressionAnd \"&&\" ExpressionCompare --and\n | ExpressionCompare\n ExpressionCompare = ExpressionCompare \"!=\" ExpressionBinary --not\n | ExpressionCompare \"==\" ExpressionBinary --eq\n | ExpressionCompare \">\" ExpressionBinary --gt\n | ExpressionCompare \">=\" ExpressionBinary --gte\n | ExpressionCompare \"<\" ExpressionBinary --lt\n | ExpressionCompare \"<=\" ExpressionBinary --lte\n | ExpressionBinary\n ExpressionBinary = ExpressionBinary \">>\" ExpressionAdd --shr\n | ExpressionBinary \"<<\" ExpressionAdd --shl\n | ExpressionBinary \"&\" ExpressionAdd --bin_and\n | ExpressionBinary \"|\" ExpressionAdd --bin_or\n | ExpressionAdd\n ExpressionAdd = ExpressionAdd \"+\" ~\"+\" ExpressionMul --add\n | ExpressionAdd \"-\" ~\"-\" ExpressionMul --sub\n | ExpressionMul\n ExpressionMul = ExpressionMul \"*\" ExpressionUnary --mul\n | ExpressionMul \"/\" ExpressionUnary --div\n | ExpressionMul \"%\" ExpressionUnary --rem\n | ExpressionUnary\n ExpressionUnary = \"-\" ExpressionUnarySuffix --neg\n | \"+\" ExpressionUnarySuffix --add\n | \"!\" ExpressionUnarySuffix --not\n | ExpressionUnarySuffix\n ExpressionUnarySuffix = ExpressionValue \"!!\" --notNull\n | ExpressionValue\n ExpressionBracket = \"(\" Expression \")\"\n\n // Order is important\n ExpressionValue = ExpressionCall\n | ExpressionField\n | ExpressionStaticCall\n | ExpressionBracket\n | ExpressionNew\n | integerLiteral\n | boolLiteral\n | id\n | null\n | ExpressionInitOf\n | ExpressionString\n ExpressionString = stringLiteral\n ExpressionField = ExpressionValue \".\" id ~\"(\"\n ExpressionCall = ExpressionValue \".\" id \"(\" ListOf \",\"? \")\"\n ExpressionNew = id \"{\" ListOf \",\"? \"}\"\n NewParameter = id \":\" Expression\n ExpressionStaticCall = id \"(\" ListOf \",\"? \")\"\n ExpressionInitOf = initOf id \"(\" ListOf \",\"? \")\"\n\n // Type Literal\n typeLiteral = letterAsciiUC typeLiteralPart*\n typeLiteralPart = letterAscii | digit | \"_\"\n\n // Integer Literal\n // hexDigit defined in Ohm's built-in rules (otherwise: hexDigit = \"0\"..\"9\" | \"a\"..\"f\" | \"A\"..\"F\")\n // digit defined in Ohm's built-in rules (otherwise: digit = \"0\"..\"9\")\n integerLiteral = integerLiteralHex | integerLiteralBin | integerLiteralOct | integerLiteralDec // Order is important\n integerLiteralDec = nonZeroDigit (\"_\"? digit)* --nonZeroIntegerLiteralDec\n | \"0\" digit* --integerLiteralWithLeadingZero\n integerLiteralHex = (\"0x\" | \"0X\") hexDigit (\"_\"? hexDigit)*\n integerLiteralBin = (\"0b\" | \"0B\") binDigit (\"_\"? binDigit)*\n integerLiteralOct = (\"0o\" | \"0O\") octDigit (\"_\"? octDigit)*\n binDigit = \"0\" | \"1\"\n octDigit = \"0\"..\"7\"\n nonZeroDigit = \"1\"..\"9\"\n\n // Letters\n letterAsciiLC = \"a\"..\"z\"\n letterAsciiUC = \"A\"..\"Z\"\n letterAscii = letterAsciiLC | letterAsciiUC\n letterComment = letterAsciiLC | letterAsciiUC | digit | \"_\"\n\n // ID Literal\n idStart = letterAscii | \"_\"\n idPart = letterAscii | digit | \"_\"\n id = ~reservedWord #idStart #(idPart*)\n\n // FunC id\n funcLetter = letterAscii | \"_\" | \"'\" | \"?\" | \"!\" | \"::\" | \"&\"\n funcId = funcLetter #(funcLetter | digit)*\n\n // Bool Literal\n boolLiteral = (\"true\" | \"false\") ~idPart\n\n // String literal\n stringLiteral = \"\\\"\" (nonQuoteOrBackslashChar | escapeSequence)* \"\\\"\"\n nonQuoteOrBackslashChar = ~(\"\\\"\" | \"\\\\\") any\n escapeSequence = \"\\\\\\\\\" -- backslash\n | \"\\\\\\\"\" -- doubleQuote\n | \"\\\\n\" -- newline\n | \"\\\\r\" -- carriageReturn\n | \"\\\\t\" -- tab\n | \"\\\\v\" -- verticalTab\n | \"\\\\b\" -- backspace\n | \"\\\\f\" -- formFeed\n | \"\\\\u{\" hexDigit hexDigit? hexDigit? hexDigit? hexDigit? hexDigit? \"}\" -- unicodeCodePoint\n | \"\\\\u\" hexDigit hexDigit hexDigit hexDigit -- unicodeEscape\n | \"\\\\x\" hexDigit hexDigit -- hexEscape\n\n // Keywords\n // NOTE Order is important\n keyword = fun \n | let\n | return \n | extend \n | native \n | public \n | null \n | if \n | else \n | while \n | repeat \n | do \n | until \n | as \n | mutates\n | extends\n | import\n | with\n | trait\n | initOf\n | override\n | abstract\n | virtual\n | inline\n | const\n contract = \"contract\" ~idPart\n let = \"let\" ~idPart\n fun = \"fun\" ~idPart\n return = \"return\" ~idPart\n extend = \"extend\" ~idPart\n native = \"native\" ~idPart\n public = \"public\" ~idPart\n null = \"null\" ~idPart\n if = \"if\" ~idPart\n else = \"else\" ~idPart\n while = \"while\" ~idPart\n repeat = \"repeat\" ~idPart\n do = \"do\" ~idPart\n until = \"until\" ~idPart\n as = \"as\" ~idPart\n mutates = \"mutates\" ~idPart\n extends = \"extends\" ~idPart\n import = \"import\" ~idPart\n with = \"with\" ~idPart\n trait = \"trait\" ~idPart\n initOf = \"initOf\" ~idPart\n virtual = \"virtual\" ~idPart\n override = \"override\" ~idPart\n inline = \"inline\" ~idPart\n const = \"const\" ~idPart\n abstract = \"abstract\" ~idPart\n\n // Attributes\n nameAttribute = \"@name\"\n\n // Reserved\n reservedWord = keyword\n\n // Comments\n space += comment | lineTerminator\n comment = multiLineComment | singleLineComment\n lineTerminator = \"\\n\" | \"\\r\" | \"\\u2028\" | \"\\u2029\"\n multiLineComment = \"/*\" (~\"*/\" any)* \"*/\"\n singleLineComment = \"//\" (~lineTerminator any)*\n}"},"Tact",null,"Program",{"Program":["define",{"sourceInterval":[49,71]},null,[],["star",{"sourceInterval":[59,71]},["app",{"sourceInterval":[59,70]},"ProgramItem",[]]]],"ProgramItem":["define",{"sourceInterval":[76,300]},null,[],["alt",{"sourceInterval":[90,300]},["app",{"sourceInterval":[90,96]},"Struct",[]],["app",{"sourceInterval":[115,123]},"Contract",[]],["app",{"sourceInterval":[142,151]},"Primitive",[]],["app",{"sourceInterval":[170,184]},"StaticFunction",[]],["app",{"sourceInterval":[203,217]},"NativeFunction",[]],["app",{"sourceInterval":[236,249]},"ProgramImport",[]],["app",{"sourceInterval":[268,273]},"Trait",[]],["app",{"sourceInterval":[292,300]},"Constant",[]]]],"ProgramImport":["define",{"sourceInterval":[305,345]},null,[],["seq",{"sourceInterval":[321,345]},["app",{"sourceInterval":[321,327]},"import",[]],["app",{"sourceInterval":[328,341]},"stringLiteral",[]],["terminal",{"sourceInterval":[342,345]},";"]]],"Primitive":["define",{"sourceInterval":[380,412]},null,[],["seq",{"sourceInterval":[392,412]},["terminal",{"sourceInterval":[392,403]},"primitive"],["app",{"sourceInterval":[404,408]},"Type",[]],["terminal",{"sourceInterval":[409,412]},";"]]],"StaticFunction":["define",{"sourceInterval":[441,466]},null,[],["app",{"sourceInterval":[458,466]},"Function",[]]],"NativeFunction_withVoid":["define",{"sourceInterval":[488,597]},null,[],["seq",{"sourceInterval":[488,586]},["app",{"sourceInterval":[488,501]},"nameAttribute",[]],["terminal",{"sourceInterval":[502,505]},"("],["app",{"sourceInterval":[506,512]},"funcId",[]],["terminal",{"sourceInterval":[513,516]},")"],["star",{"sourceInterval":[517,535]},["app",{"sourceInterval":[517,534]},"FunctionAttribute",[]]],["app",{"sourceInterval":[536,542]},"native",[]],["app",{"sourceInterval":[543,545]},"id",[]],["terminal",{"sourceInterval":[546,549]},"("],["app",{"sourceInterval":[550,573]},"ListOf",[["app",{"sourceInterval":[557,568]},"FunctionArg",[]],["terminal",{"sourceInterval":[569,572]},","]]],["opt",{"sourceInterval":[574,578]},["terminal",{"sourceInterval":[574,577]},","]],["terminal",{"sourceInterval":[579,582]},")"],["terminal",{"sourceInterval":[583,586]},";"]]],"NativeFunction_withType":["define",{"sourceInterval":[619,737]},null,[],["seq",{"sourceInterval":[619,726]},["app",{"sourceInterval":[619,632]},"nameAttribute",[]],["terminal",{"sourceInterval":[633,636]},"("],["app",{"sourceInterval":[637,643]},"funcId",[]],["terminal",{"sourceInterval":[644,647]},")"],["star",{"sourceInterval":[648,666]},["app",{"sourceInterval":[648,665]},"FunctionAttribute",[]]],["app",{"sourceInterval":[667,673]},"native",[]],["app",{"sourceInterval":[674,676]},"id",[]],["terminal",{"sourceInterval":[677,680]},"("],["app",{"sourceInterval":[681,704]},"ListOf",[["app",{"sourceInterval":[688,699]},"FunctionArg",[]],["terminal",{"sourceInterval":[700,703]},","]]],["opt",{"sourceInterval":[705,709]},["terminal",{"sourceInterval":[705,708]},","]],["terminal",{"sourceInterval":[710,713]},")"],["terminal",{"sourceInterval":[714,717]},":"],["app",{"sourceInterval":[718,722]},"Type",[]],["terminal",{"sourceInterval":[723,726]},";"]]],"NativeFunction":["define",{"sourceInterval":[471,737]},null,[],["alt",{"sourceInterval":[488,737]},["app",{"sourceInterval":[488,586]},"NativeFunction_withVoid",[]],["app",{"sourceInterval":[619,726]},"NativeFunction_withType",[]]]],"Type_optional":["define",{"sourceInterval":[780,806]},null,[],["seq",{"sourceInterval":[780,795]},["app",{"sourceInterval":[780,791]},"typeLiteral",[]],["terminal",{"sourceInterval":[792,795]},"?"]]],"Type_required":["define",{"sourceInterval":[818,840]},null,[],["app",{"sourceInterval":[818,829]},"typeLiteral",[]]],"Type_map":["define",{"sourceInterval":[852,917]},null,[],["seq",{"sourceInterval":[852,911]},["terminal",{"sourceInterval":[852,857]},"map"],["terminal",{"sourceInterval":[858,861]},"<"],["app",{"sourceInterval":[862,873]},"typeLiteral",[]],["opt",{"sourceInterval":[874,882]},["seq",{"sourceInterval":[875,880]},["app",{"sourceInterval":[875,877]},"as",[]],["app",{"sourceInterval":[878,880]},"id",[]]]],["terminal",{"sourceInterval":[883,886]},","],["app",{"sourceInterval":[887,898]},"typeLiteral",[]],["opt",{"sourceInterval":[899,907]},["seq",{"sourceInterval":[900,905]},["app",{"sourceInterval":[900,902]},"as",[]],["app",{"sourceInterval":[903,905]},"id",[]]]],["terminal",{"sourceInterval":[908,911]},">"]]],"Type_bounced":["define",{"sourceInterval":[929,968]},null,[],["seq",{"sourceInterval":[929,958]},["terminal",{"sourceInterval":[929,938]},"bounced"],["terminal",{"sourceInterval":[939,942]},"<"],["app",{"sourceInterval":[943,954]},"typeLiteral",[]],["terminal",{"sourceInterval":[955,958]},">"]]],"Type":["define",{"sourceInterval":[773,968]},null,[],["alt",{"sourceInterval":[780,968]},["app",{"sourceInterval":[780,795]},"Type_optional",[]],["app",{"sourceInterval":[818,829]},"Type_required",[]],["app",{"sourceInterval":[852,911]},"Type_map",[]],["app",{"sourceInterval":[929,958]},"Type_bounced",[]]]],"Field_default":["define",{"sourceInterval":[981,1006]},null,[],["seq",{"sourceInterval":[981,996]},["app",{"sourceInterval":[981,983]},"id",[]],["terminal",{"sourceInterval":[984,987]},":"],["app",{"sourceInterval":[988,992]},"Type",[]],["terminal",{"sourceInterval":[993,996]},";"]]],"Field_defaultWithInit":["define",{"sourceInterval":[1019,1067]},null,[],["seq",{"sourceInterval":[1019,1049]},["app",{"sourceInterval":[1019,1021]},"id",[]],["terminal",{"sourceInterval":[1022,1025]},":"],["app",{"sourceInterval":[1026,1030]},"Type",[]],["terminal",{"sourceInterval":[1031,1034]},"="],["app",{"sourceInterval":[1035,1045]},"Expression",[]],["terminal",{"sourceInterval":[1046,1049]},";"]]],"Field_withSerialization":["define",{"sourceInterval":[1080,1121]},null,[],["seq",{"sourceInterval":[1080,1101]},["app",{"sourceInterval":[1080,1082]},"id",[]],["terminal",{"sourceInterval":[1083,1086]},":"],["app",{"sourceInterval":[1087,1091]},"Type",[]],["app",{"sourceInterval":[1092,1094]},"as",[]],["app",{"sourceInterval":[1095,1097]},"id",[]],["terminal",{"sourceInterval":[1098,1101]},";"]]],"Field_withSerializationAndInit":["define",{"sourceInterval":[1134,1197]},null,[],["seq",{"sourceInterval":[1134,1170]},["app",{"sourceInterval":[1134,1136]},"id",[]],["terminal",{"sourceInterval":[1137,1140]},":"],["app",{"sourceInterval":[1141,1145]},"Type",[]],["app",{"sourceInterval":[1146,1148]},"as",[]],["app",{"sourceInterval":[1149,1151]},"id",[]],["terminal",{"sourceInterval":[1152,1155]},"="],["app",{"sourceInterval":[1156,1166]},"Expression",[]],["terminal",{"sourceInterval":[1167,1170]},";"]]],"Field":["define",{"sourceInterval":[973,1197]},null,[],["alt",{"sourceInterval":[981,1197]},["app",{"sourceInterval":[981,996]},"Field_default",[]],["app",{"sourceInterval":[1019,1049]},"Field_defaultWithInit",[]],["app",{"sourceInterval":[1080,1101]},"Field_withSerialization",[]],["app",{"sourceInterval":[1134,1170]},"Field_withSerializationAndInit",[]]]],"ConstantAttribute_virtual":["define",{"sourceInterval":[1243,1263]},null,[],["app",{"sourceInterval":[1243,1250]},"virtual",[]]],"ConstantAttribute_override":["define",{"sourceInterval":[1288,1309]},null,[],["app",{"sourceInterval":[1288,1296]},"override",[]]],"ConstantAttribute_abstract":["define",{"sourceInterval":[1334,1355]},null,[],["app",{"sourceInterval":[1334,1342]},"abstract",[]]],"ConstantAttribute":["define",{"sourceInterval":[1223,1355]},null,[],["alt",{"sourceInterval":[1243,1355]},["app",{"sourceInterval":[1243,1250]},"ConstantAttribute_virtual",[]],["app",{"sourceInterval":[1288,1296]},"ConstantAttribute_override",[]],["app",{"sourceInterval":[1334,1342]},"ConstantAttribute_abstract",[]]]],"Constant_withValue":["define",{"sourceInterval":[1371,1443]},null,[],["seq",{"sourceInterval":[1371,1431]},["star",{"sourceInterval":[1371,1389]},["app",{"sourceInterval":[1371,1388]},"ConstantAttribute",[]]],["not",{"sourceInterval":[1390,1394]},["app",{"sourceInterval":[1391,1394]},"fun",[]]],["app",{"sourceInterval":[1395,1400]},"const",[]],["app",{"sourceInterval":[1401,1403]},"id",[]],["terminal",{"sourceInterval":[1404,1407]},":"],["app",{"sourceInterval":[1408,1412]},"Type",[]],["terminal",{"sourceInterval":[1413,1416]},"="],["app",{"sourceInterval":[1417,1427]},"Expression",[]],["terminal",{"sourceInterval":[1428,1431]},";"]]],"Constant_withEmpty":["define",{"sourceInterval":[1459,1531]},null,[],["seq",{"sourceInterval":[1459,1504]},["star",{"sourceInterval":[1459,1477]},["app",{"sourceInterval":[1459,1476]},"ConstantAttribute",[]]],["not",{"sourceInterval":[1478,1482]},["app",{"sourceInterval":[1479,1482]},"fun",[]]],["app",{"sourceInterval":[1483,1488]},"const",[]],["app",{"sourceInterval":[1489,1491]},"id",[]],["terminal",{"sourceInterval":[1492,1495]},":"],["app",{"sourceInterval":[1496,1500]},"Type",[]],["terminal",{"sourceInterval":[1501,1504]},";"]]],"Constant":["define",{"sourceInterval":[1360,1531]},null,[],["alt",{"sourceInterval":[1371,1531]},["app",{"sourceInterval":[1371,1431]},"Constant_withValue",[]],["app",{"sourceInterval":[1459,1504]},"Constant_withEmpty",[]]]],"Struct_originary":["define",{"sourceInterval":[1560,1612]},null,[],["seq",{"sourceInterval":[1560,1600]},["terminal",{"sourceInterval":[1560,1568]},"struct"],["app",{"sourceInterval":[1569,1580]},"typeLiteral",[]],["terminal",{"sourceInterval":[1581,1584]},"{"],["star",{"sourceInterval":[1585,1596]},["app",{"sourceInterval":[1585,1595]},"StructBody",[]]],["terminal",{"sourceInterval":[1597,1600]},"}"]]],"Struct_message":["define",{"sourceInterval":[1626,1677]},null,[],["seq",{"sourceInterval":[1626,1667]},["terminal",{"sourceInterval":[1626,1635]},"message"],["app",{"sourceInterval":[1636,1647]},"typeLiteral",[]],["terminal",{"sourceInterval":[1648,1651]},"{"],["star",{"sourceInterval":[1652,1663]},["app",{"sourceInterval":[1652,1662]},"StructBody",[]]],["terminal",{"sourceInterval":[1664,1667]},"}"]]],"Struct_messageWithId":["define",{"sourceInterval":[1691,1771]},null,[],["seq",{"sourceInterval":[1691,1755]},["terminal",{"sourceInterval":[1691,1700]},"message"],["terminal",{"sourceInterval":[1701,1704]},"("],["app",{"sourceInterval":[1705,1719]},"integerLiteral",[]],["terminal",{"sourceInterval":[1720,1723]},")"],["app",{"sourceInterval":[1724,1735]},"typeLiteral",[]],["terminal",{"sourceInterval":[1736,1739]},"{"],["star",{"sourceInterval":[1740,1751]},["app",{"sourceInterval":[1740,1750]},"StructBody",[]]],["terminal",{"sourceInterval":[1752,1755]},"}"]]],"Struct":["define",{"sourceInterval":[1551,1771]},null,[],["alt",{"sourceInterval":[1560,1771]},["app",{"sourceInterval":[1560,1600]},"Struct_originary",[]],["app",{"sourceInterval":[1626,1667]},"Struct_message",[]],["app",{"sourceInterval":[1691,1755]},"Struct_messageWithId",[]]]],"StructBody":["define",{"sourceInterval":[1776,1794]},null,[],["app",{"sourceInterval":[1789,1794]},"Field",[]]],"Contract_simple":["define",{"sourceInterval":[1827,1888]},null,[],["seq",{"sourceInterval":[1827,1879]},["star",{"sourceInterval":[1827,1845]},["app",{"sourceInterval":[1827,1844]},"ContractAttribute",[]]],["app",{"sourceInterval":[1846,1854]},"contract",[]],["app",{"sourceInterval":[1855,1857]},"id",[]],["terminal",{"sourceInterval":[1858,1861]},"{"],["star",{"sourceInterval":[1862,1875]},["app",{"sourceInterval":[1862,1874]},"ContractBody",[]]],["terminal",{"sourceInterval":[1876,1879]},"}"]]],"Contract_withTraits":["define",{"sourceInterval":[1904,1989]},null,[],["seq",{"sourceInterval":[1904,1976]},["star",{"sourceInterval":[1904,1922]},["app",{"sourceInterval":[1904,1921]},"ContractAttribute",[]]],["app",{"sourceInterval":[1923,1931]},"contract",[]],["app",{"sourceInterval":[1932,1934]},"id",[]],["app",{"sourceInterval":[1935,1939]},"with",[]],["app",{"sourceInterval":[1940,1954]},"ListOf",[["app",{"sourceInterval":[1947,1949]},"id",[]],["terminal",{"sourceInterval":[1950,1953]},","]]],["terminal",{"sourceInterval":[1955,1958]},"{"],["star",{"sourceInterval":[1959,1972]},["app",{"sourceInterval":[1959,1971]},"ContractBody",[]]],["terminal",{"sourceInterval":[1973,1976]},"}"]]],"Contract":["define",{"sourceInterval":[1816,1989]},null,[],["alt",{"sourceInterval":[1827,1989]},["app",{"sourceInterval":[1827,1879]},"Contract_simple",[]],["app",{"sourceInterval":[1904,1976]},"Contract_withTraits",[]]]],"ContractInit":["define",{"sourceInterval":[1994,2066]},null,[],["seq",{"sourceInterval":[2009,2066]},["terminal",{"sourceInterval":[2009,2015]},"init"],["terminal",{"sourceInterval":[2016,2019]},"("],["app",{"sourceInterval":[2020,2043]},"ListOf",[["app",{"sourceInterval":[2027,2038]},"FunctionArg",[]],["terminal",{"sourceInterval":[2039,2042]},","]]],["terminal",{"sourceInterval":[2044,2047]},")"],["terminal",{"sourceInterval":[2048,2051]},"{"],["star",{"sourceInterval":[2052,2062]},["app",{"sourceInterval":[2052,2061]},"Statement",[]]],["terminal",{"sourceInterval":[2063,2066]},"}"]]],"ContractBody":["define",{"sourceInterval":[2071,2214]},null,[],["alt",{"sourceInterval":[2086,2214]},["app",{"sourceInterval":[2086,2091]},"Field",[]],["app",{"sourceInterval":[2111,2123]},"ContractInit",[]],["app",{"sourceInterval":[2143,2158]},"ReceiveFunction",[]],["app",{"sourceInterval":[2178,2186]},"Function",[]],["app",{"sourceInterval":[2206,2214]},"Constant",[]]]],"Trait_originary":["define",{"sourceInterval":[2245,2303]},null,[],["seq",{"sourceInterval":[2245,2291]},["star",{"sourceInterval":[2245,2263]},["app",{"sourceInterval":[2245,2262]},"ContractAttribute",[]]],["app",{"sourceInterval":[2264,2269]},"trait",[]],["app",{"sourceInterval":[2270,2272]},"id",[]],["terminal",{"sourceInterval":[2273,2276]},"{"],["star",{"sourceInterval":[2277,2287]},["app",{"sourceInterval":[2277,2286]},"TraitBody",[]]],["terminal",{"sourceInterval":[2288,2291]},"}"]]],"Trait_withTraits":["define",{"sourceInterval":[2316,2395]},null,[],["seq",{"sourceInterval":[2316,2382]},["star",{"sourceInterval":[2316,2334]},["app",{"sourceInterval":[2316,2333]},"ContractAttribute",[]]],["app",{"sourceInterval":[2335,2340]},"trait",[]],["app",{"sourceInterval":[2341,2343]},"id",[]],["app",{"sourceInterval":[2344,2348]},"with",[]],["app",{"sourceInterval":[2349,2363]},"ListOf",[["app",{"sourceInterval":[2356,2358]},"id",[]],["terminal",{"sourceInterval":[2359,2362]},","]]],["terminal",{"sourceInterval":[2364,2367]},"{"],["star",{"sourceInterval":[2368,2378]},["app",{"sourceInterval":[2368,2377]},"TraitBody",[]]],["terminal",{"sourceInterval":[2379,2382]},"}"]]],"Trait":["define",{"sourceInterval":[2237,2395]},null,[],["alt",{"sourceInterval":[2245,2395]},["app",{"sourceInterval":[2245,2291]},"Trait_originary",[]],["app",{"sourceInterval":[2316,2382]},"Trait_withTraits",[]]]],"TraitBody":["define",{"sourceInterval":[2400,2499]},null,[],["alt",{"sourceInterval":[2412,2499]},["app",{"sourceInterval":[2412,2417]},"Field",[]],["app",{"sourceInterval":[2434,2449]},"ReceiveFunction",[]],["app",{"sourceInterval":[2466,2474]},"Function",[]],["app",{"sourceInterval":[2491,2499]},"Constant",[]]]],"ContractAttribute_interface":["define",{"sourceInterval":[2552,2598]},null,[],["seq",{"sourceInterval":[2552,2586]},["terminal",{"sourceInterval":[2552,2564]},"@interface"],["terminal",{"sourceInterval":[2565,2568]},"("],["app",{"sourceInterval":[2569,2582]},"stringLiteral",[]],["terminal",{"sourceInterval":[2583,2586]},")"]]],"ContractAttribute":["define",{"sourceInterval":[2532,2598]},null,[],["app",{"sourceInterval":[2552,2598]},"ContractAttribute_interface",[]]],"FunctionAttribute_getter":["define",{"sourceInterval":[2640,2658]},null,[],["terminal",{"sourceInterval":[2640,2645]},"get"]],"FunctionAttribute_mutates":["define",{"sourceInterval":[2683,2702]},null,[],["app",{"sourceInterval":[2683,2690]},"mutates",[]]],"FunctionAttribute_extends":["define",{"sourceInterval":[2727,2746]},null,[],["app",{"sourceInterval":[2727,2734]},"extends",[]]],"FunctionAttribute_virtual":["define",{"sourceInterval":[2771,2790]},null,[],["app",{"sourceInterval":[2771,2778]},"virtual",[]]],"FunctionAttribute_override":["define",{"sourceInterval":[2815,2835]},null,[],["app",{"sourceInterval":[2815,2823]},"override",[]]],"FunctionAttribute_inline":["define",{"sourceInterval":[2860,2878]},null,[],["app",{"sourceInterval":[2860,2866]},"inline",[]]],"FunctionAttribute_abstract":["define",{"sourceInterval":[2903,2923]},null,[],["app",{"sourceInterval":[2903,2911]},"abstract",[]]],"FunctionAttribute":["define",{"sourceInterval":[2620,2923]},null,[],["alt",{"sourceInterval":[2640,2923]},["app",{"sourceInterval":[2640,2645]},"FunctionAttribute_getter",[]],["app",{"sourceInterval":[2683,2690]},"FunctionAttribute_mutates",[]],["app",{"sourceInterval":[2727,2734]},"FunctionAttribute_extends",[]],["app",{"sourceInterval":[2771,2778]},"FunctionAttribute_virtual",[]],["app",{"sourceInterval":[2815,2823]},"FunctionAttribute_override",[]],["app",{"sourceInterval":[2860,2866]},"FunctionAttribute_inline",[]],["app",{"sourceInterval":[2903,2911]},"FunctionAttribute_abstract",[]]]],"Function_withVoid":["define",{"sourceInterval":[2939,3031]},null,[],["seq",{"sourceInterval":[2939,3020]},["star",{"sourceInterval":[2939,2957]},["app",{"sourceInterval":[2939,2956]},"FunctionAttribute",[]]],["app",{"sourceInterval":[2958,2961]},"fun",[]],["app",{"sourceInterval":[2962,2964]},"id",[]],["terminal",{"sourceInterval":[2965,2968]},"("],["app",{"sourceInterval":[2969,2992]},"ListOf",[["app",{"sourceInterval":[2976,2987]},"FunctionArg",[]],["terminal",{"sourceInterval":[2988,2991]},","]]],["opt",{"sourceInterval":[2993,2997]},["terminal",{"sourceInterval":[2993,2996]},","]],["terminal",{"sourceInterval":[2998,3001]},")"],["terminal",{"sourceInterval":[3002,3005]},"{"],["star",{"sourceInterval":[3006,3016]},["app",{"sourceInterval":[3006,3015]},"Statement",[]]],["terminal",{"sourceInterval":[3017,3020]},"}"]]],"Function_withType":["define",{"sourceInterval":[3047,3148]},null,[],["seq",{"sourceInterval":[3047,3137]},["star",{"sourceInterval":[3047,3065]},["app",{"sourceInterval":[3047,3064]},"FunctionAttribute",[]]],["app",{"sourceInterval":[3066,3069]},"fun",[]],["app",{"sourceInterval":[3070,3072]},"id",[]],["terminal",{"sourceInterval":[3073,3076]},"("],["app",{"sourceInterval":[3077,3100]},"ListOf",[["app",{"sourceInterval":[3084,3095]},"FunctionArg",[]],["terminal",{"sourceInterval":[3096,3099]},","]]],["opt",{"sourceInterval":[3101,3105]},["terminal",{"sourceInterval":[3101,3104]},","]],["terminal",{"sourceInterval":[3106,3109]},")"],["terminal",{"sourceInterval":[3110,3113]},":"],["app",{"sourceInterval":[3114,3118]},"Type",[]],["terminal",{"sourceInterval":[3119,3122]},"{"],["star",{"sourceInterval":[3123,3133]},["app",{"sourceInterval":[3123,3132]},"Statement",[]]],["terminal",{"sourceInterval":[3134,3137]},"}"]]],"Function_abstractVoid":["define",{"sourceInterval":[3164,3245]},null,[],["seq",{"sourceInterval":[3164,3230]},["star",{"sourceInterval":[3164,3182]},["app",{"sourceInterval":[3164,3181]},"FunctionAttribute",[]]],["app",{"sourceInterval":[3183,3186]},"fun",[]],["app",{"sourceInterval":[3187,3189]},"id",[]],["terminal",{"sourceInterval":[3190,3193]},"("],["app",{"sourceInterval":[3194,3217]},"ListOf",[["app",{"sourceInterval":[3201,3212]},"FunctionArg",[]],["terminal",{"sourceInterval":[3213,3216]},","]]],["opt",{"sourceInterval":[3218,3222]},["terminal",{"sourceInterval":[3218,3221]},","]],["terminal",{"sourceInterval":[3223,3226]},")"],["terminal",{"sourceInterval":[3227,3230]},";"]]],"Function_abstractType":["define",{"sourceInterval":[3261,3351]},null,[],["seq",{"sourceInterval":[3261,3336]},["star",{"sourceInterval":[3261,3279]},["app",{"sourceInterval":[3261,3278]},"FunctionAttribute",[]]],["app",{"sourceInterval":[3280,3283]},"fun",[]],["app",{"sourceInterval":[3284,3286]},"id",[]],["terminal",{"sourceInterval":[3287,3290]},"("],["app",{"sourceInterval":[3291,3314]},"ListOf",[["app",{"sourceInterval":[3298,3309]},"FunctionArg",[]],["terminal",{"sourceInterval":[3310,3313]},","]]],["opt",{"sourceInterval":[3315,3319]},["terminal",{"sourceInterval":[3315,3318]},","]],["terminal",{"sourceInterval":[3320,3323]},")"],["terminal",{"sourceInterval":[3324,3327]},":"],["app",{"sourceInterval":[3328,3332]},"Type",[]],["terminal",{"sourceInterval":[3333,3336]},";"]]],"Function":["define",{"sourceInterval":[2928,3351]},null,[],["alt",{"sourceInterval":[2939,3351]},["app",{"sourceInterval":[2939,3020]},"Function_withVoid",[]],["app",{"sourceInterval":[3047,3137]},"Function_withType",[]],["app",{"sourceInterval":[3164,3230]},"Function_abstractVoid",[]],["app",{"sourceInterval":[3261,3336]},"Function_abstractType",[]]]],"FunctionArg":["define",{"sourceInterval":[3356,3381]},null,[],["seq",{"sourceInterval":[3370,3381]},["app",{"sourceInterval":[3370,3372]},"id",[]],["terminal",{"sourceInterval":[3373,3376]},":"],["app",{"sourceInterval":[3377,3381]},"Type",[]]]],"ReceiveFunction_simple":["define",{"sourceInterval":[3409,3466]},null,[],["seq",{"sourceInterval":[3409,3457]},["terminal",{"sourceInterval":[3409,3418]},"receive"],["terminal",{"sourceInterval":[3419,3422]},"("],["app",{"sourceInterval":[3423,3434]},"FunctionArg",[]],["terminal",{"sourceInterval":[3435,3438]},")"],["terminal",{"sourceInterval":[3439,3442]},"{"],["star",{"sourceInterval":[3443,3453]},["app",{"sourceInterval":[3443,3452]},"Statement",[]]],["terminal",{"sourceInterval":[3454,3457]},"}"]]],"ReceiveFunction_empty":["define",{"sourceInterval":[3489,3533]},null,[],["seq",{"sourceInterval":[3489,3525]},["terminal",{"sourceInterval":[3489,3498]},"receive"],["terminal",{"sourceInterval":[3499,3502]},"("],["terminal",{"sourceInterval":[3503,3506]},")"],["terminal",{"sourceInterval":[3507,3510]},"{"],["star",{"sourceInterval":[3511,3521]},["app",{"sourceInterval":[3511,3520]},"Statement",[]]],["terminal",{"sourceInterval":[3522,3525]},"}"]]],"ReceiveFunction_comment":["define",{"sourceInterval":[3556,3616]},null,[],["seq",{"sourceInterval":[3556,3606]},["terminal",{"sourceInterval":[3556,3565]},"receive"],["terminal",{"sourceInterval":[3566,3569]},"("],["app",{"sourceInterval":[3570,3583]},"stringLiteral",[]],["terminal",{"sourceInterval":[3584,3587]},")"],["terminal",{"sourceInterval":[3588,3591]},"{"],["star",{"sourceInterval":[3592,3602]},["app",{"sourceInterval":[3592,3601]},"Statement",[]]],["terminal",{"sourceInterval":[3603,3606]},"}"]]],"ReceiveFunction_bounced":["define",{"sourceInterval":[3639,3697]},null,[],["seq",{"sourceInterval":[3639,3687]},["terminal",{"sourceInterval":[3639,3648]},"bounced"],["terminal",{"sourceInterval":[3649,3652]},"("],["app",{"sourceInterval":[3653,3664]},"FunctionArg",[]],["terminal",{"sourceInterval":[3665,3668]},")"],["terminal",{"sourceInterval":[3669,3672]},"{"],["star",{"sourceInterval":[3673,3683]},["app",{"sourceInterval":[3673,3682]},"Statement",[]]],["terminal",{"sourceInterval":[3684,3687]},"}"]]],"ReceiveFunction_externalSimple":["define",{"sourceInterval":[3720,3786]},null,[],["seq",{"sourceInterval":[3720,3769]},["terminal",{"sourceInterval":[3720,3730]},"external"],["terminal",{"sourceInterval":[3731,3734]},"("],["app",{"sourceInterval":[3735,3746]},"FunctionArg",[]],["terminal",{"sourceInterval":[3747,3750]},")"],["terminal",{"sourceInterval":[3751,3754]},"{"],["star",{"sourceInterval":[3755,3765]},["app",{"sourceInterval":[3755,3764]},"Statement",[]]],["terminal",{"sourceInterval":[3766,3769]},"}"]]],"ReceiveFunction_externalComment":["define",{"sourceInterval":[3809,3878]},null,[],["seq",{"sourceInterval":[3809,3860]},["terminal",{"sourceInterval":[3809,3819]},"external"],["terminal",{"sourceInterval":[3820,3823]},"("],["app",{"sourceInterval":[3824,3837]},"stringLiteral",[]],["terminal",{"sourceInterval":[3838,3841]},")"],["terminal",{"sourceInterval":[3842,3845]},"{"],["star",{"sourceInterval":[3846,3856]},["app",{"sourceInterval":[3846,3855]},"Statement",[]]],["terminal",{"sourceInterval":[3857,3860]},"}"]]],"ReceiveFunction_externalEmpty":["define",{"sourceInterval":[3901,3954]},null,[],["seq",{"sourceInterval":[3901,3938]},["terminal",{"sourceInterval":[3901,3911]},"external"],["terminal",{"sourceInterval":[3912,3915]},"("],["terminal",{"sourceInterval":[3916,3919]},")"],["terminal",{"sourceInterval":[3920,3923]},"{"],["star",{"sourceInterval":[3924,3934]},["app",{"sourceInterval":[3924,3933]},"Statement",[]]],["terminal",{"sourceInterval":[3935,3938]},"}"]]],"ReceiveFunction":["define",{"sourceInterval":[3391,3954]},null,[],["alt",{"sourceInterval":[3409,3954]},["app",{"sourceInterval":[3409,3457]},"ReceiveFunction_simple",[]],["app",{"sourceInterval":[3489,3525]},"ReceiveFunction_empty",[]],["app",{"sourceInterval":[3556,3606]},"ReceiveFunction_comment",[]],["app",{"sourceInterval":[3639,3687]},"ReceiveFunction_bounced",[]],["app",{"sourceInterval":[3720,3769]},"ReceiveFunction_externalSimple",[]],["app",{"sourceInterval":[3809,3860]},"ReceiveFunction_externalComment",[]],["app",{"sourceInterval":[3901,3938]},"ReceiveFunction_externalEmpty",[]]]],"Statement":["define",{"sourceInterval":[3978,4303]},null,[],["alt",{"sourceInterval":[3990,4303]},["app",{"sourceInterval":[3990,4002]},"StatementLet",[]],["app",{"sourceInterval":[4019,4033]},"StatementBlock",[]],["app",{"sourceInterval":[4050,4065]},"StatementReturn",[]],["app",{"sourceInterval":[4082,4101]},"StatementExpression",[]],["app",{"sourceInterval":[4118,4133]},"StatementAssign",[]],["app",{"sourceInterval":[4150,4174]},"StatementAugmentedAssign",[]],["app",{"sourceInterval":[4191,4209]},"StatementCondition",[]],["app",{"sourceInterval":[4226,4240]},"StatementWhile",[]],["app",{"sourceInterval":[4257,4272]},"StatementRepeat",[]],["app",{"sourceInterval":[4289,4303]},"StatementUntil",[]]]],"StatementBlock":["define",{"sourceInterval":[4308,4343]},null,[],["seq",{"sourceInterval":[4325,4343]},["terminal",{"sourceInterval":[4325,4328]},"{"],["star",{"sourceInterval":[4329,4339]},["app",{"sourceInterval":[4329,4338]},"Statement",[]]],["terminal",{"sourceInterval":[4340,4343]},"}"]]],"StatementLet":["define",{"sourceInterval":[4348,4397]},null,[],["seq",{"sourceInterval":[4363,4397]},["app",{"sourceInterval":[4363,4366]},"let",[]],["app",{"sourceInterval":[4367,4369]},"id",[]],["terminal",{"sourceInterval":[4370,4373]},":"],["app",{"sourceInterval":[4374,4378]},"Type",[]],["terminal",{"sourceInterval":[4379,4382]},"="],["app",{"sourceInterval":[4383,4393]},"Expression",[]],["terminal",{"sourceInterval":[4394,4397]},";"]]],"StatementReturn_withExpression":["define",{"sourceInterval":[4420,4458]},null,[],["seq",{"sourceInterval":[4420,4441]},["app",{"sourceInterval":[4420,4426]},"return",[]],["app",{"sourceInterval":[4427,4437]},"Expression",[]],["terminal",{"sourceInterval":[4438,4441]},";"]]],"StatementReturn_withoutExpression":["define",{"sourceInterval":[4481,4511]},null,[],["seq",{"sourceInterval":[4481,4491]},["app",{"sourceInterval":[4481,4487]},"return",[]],["terminal",{"sourceInterval":[4488,4491]},";"]]],"StatementReturn":["define",{"sourceInterval":[4402,4511]},null,[],["alt",{"sourceInterval":[4420,4511]},["app",{"sourceInterval":[4420,4441]},"StatementReturn_withExpression",[]],["app",{"sourceInterval":[4481,4491]},"StatementReturn_withoutExpression",[]]]],"StatementExpression":["define",{"sourceInterval":[4520,4556]},null,[],["seq",{"sourceInterval":[4542,4556]},["app",{"sourceInterval":[4542,4552]},"Expression",[]],["terminal",{"sourceInterval":[4553,4556]},";"]]],"StatementAssign":["define",{"sourceInterval":[4561,4604]},null,[],["seq",{"sourceInterval":[4579,4604]},["app",{"sourceInterval":[4579,4585]},"LValue",[]],["terminal",{"sourceInterval":[4586,4589]},"="],["app",{"sourceInterval":[4590,4600]},"Expression",[]],["terminal",{"sourceInterval":[4601,4604]},";"]]],"StatementAugmentedAssign":["define",{"sourceInterval":[4609,4899]},null,[],["alt",{"sourceInterval":[4636,4899]},["app",{"sourceInterval":[4636,4663]},"StatementAugmentedAssignAdd",[]],["app",{"sourceInterval":[4695,4722]},"StatementAugmentedAssignSub",[]],["app",{"sourceInterval":[4754,4781]},"StatementAugmentedAssignMul",[]],["app",{"sourceInterval":[4813,4840]},"StatementAugmentedAssignDiv",[]],["app",{"sourceInterval":[4872,4899]},"StatementAugmentedAssignRem",[]]]],"StatementAugmentedAssignAdd":["define",{"sourceInterval":[4904,4960]},null,[],["seq",{"sourceInterval":[4934,4960]},["app",{"sourceInterval":[4934,4940]},"LValue",[]],["terminal",{"sourceInterval":[4941,4945]},"+="],["app",{"sourceInterval":[4946,4956]},"Expression",[]],["terminal",{"sourceInterval":[4957,4960]},";"]]],"StatementAugmentedAssignSub":["define",{"sourceInterval":[4965,5021]},null,[],["seq",{"sourceInterval":[4995,5021]},["app",{"sourceInterval":[4995,5001]},"LValue",[]],["terminal",{"sourceInterval":[5002,5006]},"-="],["app",{"sourceInterval":[5007,5017]},"Expression",[]],["terminal",{"sourceInterval":[5018,5021]},";"]]],"StatementAugmentedAssignMul":["define",{"sourceInterval":[5026,5082]},null,[],["seq",{"sourceInterval":[5056,5082]},["app",{"sourceInterval":[5056,5062]},"LValue",[]],["terminal",{"sourceInterval":[5063,5067]},"*="],["app",{"sourceInterval":[5068,5078]},"Expression",[]],["terminal",{"sourceInterval":[5079,5082]},";"]]],"StatementAugmentedAssignDiv":["define",{"sourceInterval":[5087,5143]},null,[],["seq",{"sourceInterval":[5117,5143]},["app",{"sourceInterval":[5117,5123]},"LValue",[]],["terminal",{"sourceInterval":[5124,5128]},"/="],["app",{"sourceInterval":[5129,5139]},"Expression",[]],["terminal",{"sourceInterval":[5140,5143]},";"]]],"StatementAugmentedAssignRem":["define",{"sourceInterval":[5148,5204]},null,[],["seq",{"sourceInterval":[5178,5204]},["app",{"sourceInterval":[5178,5184]},"LValue",[]],["terminal",{"sourceInterval":[5185,5189]},"%="],["app",{"sourceInterval":[5190,5200]},"Expression",[]],["terminal",{"sourceInterval":[5201,5204]},";"]]],"StatementCondition_simple":["define",{"sourceInterval":[5230,5277]},null,[],["seq",{"sourceInterval":[5230,5268]},["app",{"sourceInterval":[5230,5232]},"if",[]],["app",{"sourceInterval":[5233,5243]},"Expression",[]],["terminal",{"sourceInterval":[5244,5247]},"{"],["star",{"sourceInterval":[5248,5258]},["app",{"sourceInterval":[5248,5257]},"Statement",[]]],["terminal",{"sourceInterval":[5259,5262]},"}"],["not",{"sourceInterval":[5263,5268]},["app",{"sourceInterval":[5264,5268]},"else",[]]]]],"StatementCondition_withElse":["define",{"sourceInterval":[5303,5370]},null,[],["seq",{"sourceInterval":[5303,5359]},["app",{"sourceInterval":[5303,5305]},"if",[]],["app",{"sourceInterval":[5306,5316]},"Expression",[]],["terminal",{"sourceInterval":[5317,5320]},"{"],["star",{"sourceInterval":[5321,5331]},["app",{"sourceInterval":[5321,5330]},"Statement",[]]],["terminal",{"sourceInterval":[5332,5335]},"}"],["app",{"sourceInterval":[5336,5340]},"else",[]],["terminal",{"sourceInterval":[5341,5344]},"{"],["star",{"sourceInterval":[5345,5355]},["app",{"sourceInterval":[5345,5354]},"Statement",[]]],["terminal",{"sourceInterval":[5356,5359]},"}"]]],"StatementCondition_withElseIf":["define",{"sourceInterval":[5396,5465]},null,[],["seq",{"sourceInterval":[5396,5452]},["app",{"sourceInterval":[5396,5398]},"if",[]],["app",{"sourceInterval":[5399,5409]},"Expression",[]],["terminal",{"sourceInterval":[5410,5413]},"{"],["star",{"sourceInterval":[5414,5424]},["app",{"sourceInterval":[5414,5423]},"Statement",[]]],["terminal",{"sourceInterval":[5425,5428]},"}"],["app",{"sourceInterval":[5429,5433]},"else",[]],["app",{"sourceInterval":[5434,5452]},"StatementCondition",[]]]],"StatementCondition":["define",{"sourceInterval":[5209,5465]},null,[],["alt",{"sourceInterval":[5230,5465]},["app",{"sourceInterval":[5230,5268]},"StatementCondition_simple",[]],["app",{"sourceInterval":[5303,5359]},"StatementCondition_withElse",[]],["app",{"sourceInterval":[5396,5452]},"StatementCondition_withElseIf",[]]]],"StatementWhile":["define",{"sourceInterval":[5470,5530]},null,[],["seq",{"sourceInterval":[5487,5530]},["app",{"sourceInterval":[5487,5492]},"while",[]],["terminal",{"sourceInterval":[5493,5496]},"("],["app",{"sourceInterval":[5497,5507]},"Expression",[]],["terminal",{"sourceInterval":[5508,5511]},")"],["terminal",{"sourceInterval":[5512,5515]},"{"],["star",{"sourceInterval":[5516,5526]},["app",{"sourceInterval":[5516,5525]},"Statement",[]]],["terminal",{"sourceInterval":[5527,5530]},"}"]]],"StatementRepeat":["define",{"sourceInterval":[5535,5597]},null,[],["seq",{"sourceInterval":[5553,5597]},["app",{"sourceInterval":[5553,5559]},"repeat",[]],["terminal",{"sourceInterval":[5560,5563]},"("],["app",{"sourceInterval":[5564,5574]},"Expression",[]],["terminal",{"sourceInterval":[5575,5578]},")"],["terminal",{"sourceInterval":[5579,5582]},"{"],["star",{"sourceInterval":[5583,5593]},["app",{"sourceInterval":[5583,5592]},"Statement",[]]],["terminal",{"sourceInterval":[5594,5597]},"}"]]],"StatementUntil":["define",{"sourceInterval":[5602,5669]},null,[],["seq",{"sourceInterval":[5619,5669]},["app",{"sourceInterval":[5619,5621]},"do",[]],["terminal",{"sourceInterval":[5622,5625]},"{"],["star",{"sourceInterval":[5626,5636]},["app",{"sourceInterval":[5626,5635]},"Statement",[]]],["terminal",{"sourceInterval":[5637,5640]},"}"],["app",{"sourceInterval":[5641,5646]},"until",[]],["terminal",{"sourceInterval":[5647,5650]},"("],["app",{"sourceInterval":[5651,5661]},"Expression",[]],["terminal",{"sourceInterval":[5662,5665]},")"],["terminal",{"sourceInterval":[5666,5669]},";"]]],"LValue_more":["define",{"sourceInterval":[5699,5719]},null,[],["seq",{"sourceInterval":[5699,5712]},["app",{"sourceInterval":[5699,5701]},"id",[]],["terminal",{"sourceInterval":[5702,5705]},"."],["app",{"sourceInterval":[5706,5712]},"LValue",[]]]],"LValue_single":["define",{"sourceInterval":[5733,5744]},null,[],["app",{"sourceInterval":[5733,5735]},"id",[]]],"LValue":["define",{"sourceInterval":[5690,5744]},null,[],["alt",{"sourceInterval":[5699,5744]},["app",{"sourceInterval":[5699,5712]},"LValue_more",[]],["app",{"sourceInterval":[5733,5735]},"LValue_single",[]]]],"Expression":["define",{"sourceInterval":[5769,5803]},null,[],["app",{"sourceInterval":[5782,5803]},"ExpressionConditional",[]]],"ExpressionConditional_ternary":["define",{"sourceInterval":[5832,5897]},null,[],["seq",{"sourceInterval":[5832,5887]},["app",{"sourceInterval":[5832,5844]},"ExpressionOr",[]],["terminal",{"sourceInterval":[5845,5848]},"?"],["app",{"sourceInterval":[5849,5861]},"ExpressionOr",[]],["terminal",{"sourceInterval":[5862,5865]},":"],["app",{"sourceInterval":[5866,5887]},"ExpressionConditional",[]]]],"ExpressionConditional":["define",{"sourceInterval":[5808,5938]},null,[],["alt",{"sourceInterval":[5832,5938]},["app",{"sourceInterval":[5832,5887]},"ExpressionConditional_ternary",[]],["app",{"sourceInterval":[5926,5938]},"ExpressionOr",[]]]],"ExpressionOr_or":["define",{"sourceInterval":[5958,5994]},null,[],["seq",{"sourceInterval":[5958,5989]},["app",{"sourceInterval":[5958,5970]},"ExpressionOr",[]],["terminal",{"sourceInterval":[5971,5975]},"||"],["app",{"sourceInterval":[5976,5989]},"ExpressionAnd",[]]]],"ExpressionOr":["define",{"sourceInterval":[5943,6027]},null,[],["alt",{"sourceInterval":[5958,6027]},["app",{"sourceInterval":[5958,5989]},"ExpressionOr_or",[]],["app",{"sourceInterval":[6014,6027]},"ExpressionAnd",[]]]],"ExpressionAnd_and":["define",{"sourceInterval":[6048,6090]},null,[],["seq",{"sourceInterval":[6048,6084]},["app",{"sourceInterval":[6048,6061]},"ExpressionAnd",[]],["terminal",{"sourceInterval":[6062,6066]},"&&"],["app",{"sourceInterval":[6067,6084]},"ExpressionCompare",[]]]],"ExpressionAnd":["define",{"sourceInterval":[6032,6128]},null,[],["alt",{"sourceInterval":[6048,6128]},["app",{"sourceInterval":[6048,6084]},"ExpressionAnd_and",[]],["app",{"sourceInterval":[6111,6128]},"ExpressionCompare",[]]]],"ExpressionCompare_not":["define",{"sourceInterval":[6153,6198]},null,[],["seq",{"sourceInterval":[6153,6192]},["app",{"sourceInterval":[6153,6170]},"ExpressionCompare",[]],["terminal",{"sourceInterval":[6171,6175]},"!="],["app",{"sourceInterval":[6176,6192]},"ExpressionBinary",[]]]],"ExpressionCompare_eq":["define",{"sourceInterval":[6223,6267]},null,[],["seq",{"sourceInterval":[6223,6262]},["app",{"sourceInterval":[6223,6240]},"ExpressionCompare",[]],["terminal",{"sourceInterval":[6241,6245]},"=="],["app",{"sourceInterval":[6246,6262]},"ExpressionBinary",[]]]],"ExpressionCompare_gt":["define",{"sourceInterval":[6292,6335]},null,[],["seq",{"sourceInterval":[6292,6330]},["app",{"sourceInterval":[6292,6309]},"ExpressionCompare",[]],["terminal",{"sourceInterval":[6310,6313]},">"],["app",{"sourceInterval":[6314,6330]},"ExpressionBinary",[]]]],"ExpressionCompare_gte":["define",{"sourceInterval":[6360,6405]},null,[],["seq",{"sourceInterval":[6360,6399]},["app",{"sourceInterval":[6360,6377]},"ExpressionCompare",[]],["terminal",{"sourceInterval":[6378,6382]},">="],["app",{"sourceInterval":[6383,6399]},"ExpressionBinary",[]]]],"ExpressionCompare_lt":["define",{"sourceInterval":[6430,6473]},null,[],["seq",{"sourceInterval":[6430,6468]},["app",{"sourceInterval":[6430,6447]},"ExpressionCompare",[]],["terminal",{"sourceInterval":[6448,6451]},"<"],["app",{"sourceInterval":[6452,6468]},"ExpressionBinary",[]]]],"ExpressionCompare_lte":["define",{"sourceInterval":[6498,6543]},null,[],["seq",{"sourceInterval":[6498,6537]},["app",{"sourceInterval":[6498,6515]},"ExpressionCompare",[]],["terminal",{"sourceInterval":[6516,6520]},"<="],["app",{"sourceInterval":[6521,6537]},"ExpressionBinary",[]]]],"ExpressionCompare":["define",{"sourceInterval":[6133,6584]},null,[],["alt",{"sourceInterval":[6153,6584]},["app",{"sourceInterval":[6153,6192]},"ExpressionCompare_not",[]],["app",{"sourceInterval":[6223,6262]},"ExpressionCompare_eq",[]],["app",{"sourceInterval":[6292,6330]},"ExpressionCompare_gt",[]],["app",{"sourceInterval":[6360,6399]},"ExpressionCompare_gte",[]],["app",{"sourceInterval":[6430,6468]},"ExpressionCompare_lt",[]],["app",{"sourceInterval":[6498,6537]},"ExpressionCompare_lte",[]],["app",{"sourceInterval":[6568,6584]},"ExpressionBinary",[]]]],"ExpressionBinary_shr":["define",{"sourceInterval":[6608,6649]},null,[],["seq",{"sourceInterval":[6608,6643]},["app",{"sourceInterval":[6608,6624]},"ExpressionBinary",[]],["terminal",{"sourceInterval":[6625,6629]},">>"],["app",{"sourceInterval":[6630,6643]},"ExpressionAdd",[]]]],"ExpressionBinary_shl":["define",{"sourceInterval":[6672,6713]},null,[],["seq",{"sourceInterval":[6672,6707]},["app",{"sourceInterval":[6672,6688]},"ExpressionBinary",[]],["terminal",{"sourceInterval":[6689,6693]},"<<"],["app",{"sourceInterval":[6694,6707]},"ExpressionAdd",[]]]],"ExpressionBinary_bin_and":["define",{"sourceInterval":[6736,6780]},null,[],["seq",{"sourceInterval":[6736,6770]},["app",{"sourceInterval":[6736,6752]},"ExpressionBinary",[]],["terminal",{"sourceInterval":[6753,6756]},"&"],["app",{"sourceInterval":[6757,6770]},"ExpressionAdd",[]]]],"ExpressionBinary_bin_or":["define",{"sourceInterval":[6803,6846]},null,[],["seq",{"sourceInterval":[6803,6837]},["app",{"sourceInterval":[6803,6819]},"ExpressionBinary",[]],["terminal",{"sourceInterval":[6820,6823]},"|"],["app",{"sourceInterval":[6824,6837]},"ExpressionAdd",[]]]],"ExpressionBinary":["define",{"sourceInterval":[6589,6882]},null,[],["alt",{"sourceInterval":[6608,6882]},["app",{"sourceInterval":[6608,6643]},"ExpressionBinary_shr",[]],["app",{"sourceInterval":[6672,6707]},"ExpressionBinary_shl",[]],["app",{"sourceInterval":[6736,6770]},"ExpressionBinary_bin_and",[]],["app",{"sourceInterval":[6803,6837]},"ExpressionBinary_bin_or",[]],["app",{"sourceInterval":[6869,6882]},"ExpressionAdd",[]]]],"ExpressionAdd_add":["define",{"sourceInterval":[6903,6945]},null,[],["seq",{"sourceInterval":[6903,6939]},["app",{"sourceInterval":[6903,6916]},"ExpressionAdd",[]],["terminal",{"sourceInterval":[6917,6920]},"+"],["not",{"sourceInterval":[6921,6925]},["terminal",{"sourceInterval":[6922,6925]},"+"]],["app",{"sourceInterval":[6926,6939]},"ExpressionMul",[]]]],"ExpressionAdd_sub":["define",{"sourceInterval":[6966,7008]},null,[],["seq",{"sourceInterval":[6966,7002]},["app",{"sourceInterval":[6966,6979]},"ExpressionAdd",[]],["terminal",{"sourceInterval":[6980,6983]},"-"],["not",{"sourceInterval":[6984,6988]},["terminal",{"sourceInterval":[6985,6988]},"-"]],["app",{"sourceInterval":[6989,7002]},"ExpressionMul",[]]]],"ExpressionAdd":["define",{"sourceInterval":[6887,7042]},null,[],["alt",{"sourceInterval":[6903,7042]},["app",{"sourceInterval":[6903,6939]},"ExpressionAdd_add",[]],["app",{"sourceInterval":[6966,7002]},"ExpressionAdd_sub",[]],["app",{"sourceInterval":[7029,7042]},"ExpressionMul",[]]]],"ExpressionMul_mul":["define",{"sourceInterval":[7063,7102]},null,[],["seq",{"sourceInterval":[7063,7096]},["app",{"sourceInterval":[7063,7076]},"ExpressionMul",[]],["terminal",{"sourceInterval":[7077,7080]},"*"],["app",{"sourceInterval":[7081,7096]},"ExpressionUnary",[]]]],"ExpressionMul_div":["define",{"sourceInterval":[7123,7162]},null,[],["seq",{"sourceInterval":[7123,7156]},["app",{"sourceInterval":[7123,7136]},"ExpressionMul",[]],["terminal",{"sourceInterval":[7137,7140]},"/"],["app",{"sourceInterval":[7141,7156]},"ExpressionUnary",[]]]],"ExpressionMul_rem":["define",{"sourceInterval":[7183,7222]},null,[],["seq",{"sourceInterval":[7183,7216]},["app",{"sourceInterval":[7183,7196]},"ExpressionMul",[]],["terminal",{"sourceInterval":[7197,7200]},"%"],["app",{"sourceInterval":[7201,7216]},"ExpressionUnary",[]]]],"ExpressionMul":["define",{"sourceInterval":[7047,7258]},null,[],["alt",{"sourceInterval":[7063,7258]},["app",{"sourceInterval":[7063,7096]},"ExpressionMul_mul",[]],["app",{"sourceInterval":[7123,7156]},"ExpressionMul_div",[]],["app",{"sourceInterval":[7183,7216]},"ExpressionMul_rem",[]],["app",{"sourceInterval":[7243,7258]},"ExpressionUnary",[]]]],"ExpressionUnary_neg":["define",{"sourceInterval":[7281,7312]},null,[],["seq",{"sourceInterval":[7281,7306]},["terminal",{"sourceInterval":[7281,7284]},"-"],["app",{"sourceInterval":[7285,7306]},"ExpressionUnarySuffix",[]]]],"ExpressionUnary_add":["define",{"sourceInterval":[7335,7366]},null,[],["seq",{"sourceInterval":[7335,7360]},["terminal",{"sourceInterval":[7335,7338]},"+"],["app",{"sourceInterval":[7339,7360]},"ExpressionUnarySuffix",[]]]],"ExpressionUnary_not":["define",{"sourceInterval":[7389,7420]},null,[],["seq",{"sourceInterval":[7389,7414]},["terminal",{"sourceInterval":[7389,7392]},"!"],["app",{"sourceInterval":[7393,7414]},"ExpressionUnarySuffix",[]]]],"ExpressionUnary":["define",{"sourceInterval":[7263,7464]},null,[],["alt",{"sourceInterval":[7281,7464]},["app",{"sourceInterval":[7281,7306]},"ExpressionUnary_neg",[]],["app",{"sourceInterval":[7335,7360]},"ExpressionUnary_add",[]],["app",{"sourceInterval":[7389,7414]},"ExpressionUnary_not",[]],["app",{"sourceInterval":[7443,7464]},"ExpressionUnarySuffix",[]]]],"ExpressionUnarySuffix_notNull":["define",{"sourceInterval":[7493,7523]},null,[],["seq",{"sourceInterval":[7493,7513]},["app",{"sourceInterval":[7493,7508]},"ExpressionValue",[]],["terminal",{"sourceInterval":[7509,7513]},"!!"]]],"ExpressionUnarySuffix":["define",{"sourceInterval":[7469,7567]},null,[],["alt",{"sourceInterval":[7493,7567]},["app",{"sourceInterval":[7493,7513]},"ExpressionUnarySuffix_notNull",[]],["app",{"sourceInterval":[7552,7567]},"ExpressionValue",[]]]],"ExpressionBracket":["define",{"sourceInterval":[7572,7610]},null,[],["seq",{"sourceInterval":[7592,7610]},["terminal",{"sourceInterval":[7592,7595]},"("],["app",{"sourceInterval":[7596,7606]},"Expression",[]],["terminal",{"sourceInterval":[7607,7610]},")"]]],"ExpressionValue":["define",{"sourceInterval":[7642,8032]},null,[],["alt",{"sourceInterval":[7660,8032]},["app",{"sourceInterval":[7660,7674]},"ExpressionCall",[]],["app",{"sourceInterval":[7697,7712]},"ExpressionField",[]],["app",{"sourceInterval":[7735,7755]},"ExpressionStaticCall",[]],["app",{"sourceInterval":[7778,7795]},"ExpressionBracket",[]],["app",{"sourceInterval":[7818,7831]},"ExpressionNew",[]],["app",{"sourceInterval":[7854,7868]},"integerLiteral",[]],["app",{"sourceInterval":[7891,7902]},"boolLiteral",[]],["app",{"sourceInterval":[7925,7927]},"id",[]],["app",{"sourceInterval":[7950,7954]},"null",[]],["app",{"sourceInterval":[7977,7993]},"ExpressionInitOf",[]],["app",{"sourceInterval":[8016,8032]},"ExpressionString",[]]]],"ExpressionString":["define",{"sourceInterval":[8037,8069]},null,[],["app",{"sourceInterval":[8056,8069]},"stringLiteral",[]]],"ExpressionField":["define",{"sourceInterval":[8074,8119]},null,[],["seq",{"sourceInterval":[8092,8119]},["app",{"sourceInterval":[8092,8107]},"ExpressionValue",[]],["terminal",{"sourceInterval":[8108,8111]},"."],["app",{"sourceInterval":[8112,8114]},"id",[]],["not",{"sourceInterval":[8115,8119]},["terminal",{"sourceInterval":[8116,8119]},"("]]]],"ExpressionCall":["define",{"sourceInterval":[8124,8200]},null,[],["seq",{"sourceInterval":[8141,8200]},["app",{"sourceInterval":[8141,8156]},"ExpressionValue",[]],["terminal",{"sourceInterval":[8157,8160]},"."],["app",{"sourceInterval":[8161,8163]},"id",[]],["terminal",{"sourceInterval":[8164,8167]},"("],["app",{"sourceInterval":[8168,8191]},"ListOf",[["app",{"sourceInterval":[8175,8185]},"Expression",[]],["terminal",{"sourceInterval":[8187,8190]},","]]],["opt",{"sourceInterval":[8192,8196]},["terminal",{"sourceInterval":[8192,8195]},","]],["terminal",{"sourceInterval":[8197,8200]},")"]]],"ExpressionNew":["define",{"sourceInterval":[8205,8262]},null,[],["seq",{"sourceInterval":[8221,8262]},["app",{"sourceInterval":[8221,8223]},"id",[]],["terminal",{"sourceInterval":[8224,8227]},"{"],["app",{"sourceInterval":[8228,8253]},"ListOf",[["app",{"sourceInterval":[8235,8247]},"NewParameter",[]],["terminal",{"sourceInterval":[8249,8252]},","]]],["opt",{"sourceInterval":[8254,8258]},["terminal",{"sourceInterval":[8254,8257]},","]],["terminal",{"sourceInterval":[8259,8262]},"}"]]],"NewParameter":["define",{"sourceInterval":[8267,8299]},null,[],["seq",{"sourceInterval":[8282,8299]},["app",{"sourceInterval":[8282,8284]},"id",[]],["terminal",{"sourceInterval":[8285,8288]},":"],["app",{"sourceInterval":[8289,8299]},"Expression",[]]]],"ExpressionStaticCall":["define",{"sourceInterval":[8304,8366]},null,[],["seq",{"sourceInterval":[8327,8366]},["app",{"sourceInterval":[8327,8329]},"id",[]],["terminal",{"sourceInterval":[8330,8333]},"("],["app",{"sourceInterval":[8334,8357]},"ListOf",[["app",{"sourceInterval":[8341,8351]},"Expression",[]],["terminal",{"sourceInterval":[8353,8356]},","]]],["opt",{"sourceInterval":[8358,8362]},["terminal",{"sourceInterval":[8358,8361]},","]],["terminal",{"sourceInterval":[8363,8366]},")"]]],"ExpressionInitOf":["define",{"sourceInterval":[8371,8436]},null,[],["seq",{"sourceInterval":[8390,8436]},["app",{"sourceInterval":[8390,8396]},"initOf",[]],["app",{"sourceInterval":[8397,8399]},"id",[]],["terminal",{"sourceInterval":[8400,8403]},"("],["app",{"sourceInterval":[8404,8427]},"ListOf",[["app",{"sourceInterval":[8411,8421]},"Expression",[]],["terminal",{"sourceInterval":[8423,8426]},","]]],["opt",{"sourceInterval":[8428,8432]},["terminal",{"sourceInterval":[8428,8431]},","]],["terminal",{"sourceInterval":[8433,8436]},")"]]],"typeLiteral":["define",{"sourceInterval":[8462,8506]},null,[],["seq",{"sourceInterval":[8476,8506]},["app",{"sourceInterval":[8476,8489]},"letterAsciiUC",[]],["star",{"sourceInterval":[8490,8506]},["app",{"sourceInterval":[8490,8505]},"typeLiteralPart",[]]]]],"typeLiteralPart":["define",{"sourceInterval":[8511,8554]},null,[],["alt",{"sourceInterval":[8529,8554]},["app",{"sourceInterval":[8529,8540]},"letterAscii",[]],["app",{"sourceInterval":[8543,8548]},"digit",[]],["terminal",{"sourceInterval":[8551,8554]},"_"]]],"integerLiteral":["define",{"sourceInterval":[8761,8855]},null,[],["alt",{"sourceInterval":[8778,8855]},["app",{"sourceInterval":[8778,8795]},"integerLiteralHex",[]],["app",{"sourceInterval":[8798,8815]},"integerLiteralBin",[]],["app",{"sourceInterval":[8818,8835]},"integerLiteralOct",[]],["app",{"sourceInterval":[8838,8855]},"integerLiteralDec",[]]]],"integerLiteralDec_nonZeroIntegerLiteralDec":["define",{"sourceInterval":[8902,8956]},null,[],["seq",{"sourceInterval":[8902,8928]},["app",{"sourceInterval":[8902,8914]},"nonZeroDigit",[]],["star",{"sourceInterval":[8915,8928]},["seq",{"sourceInterval":[8916,8926]},["opt",{"sourceInterval":[8916,8920]},["terminal",{"sourceInterval":[8916,8919]},"_"]],["app",{"sourceInterval":[8921,8926]},"digit",[]]]]]],"integerLiteralDec_integerLiteralWithLeadingZero":["define",{"sourceInterval":[8981,9040]},null,[],["seq",{"sourceInterval":[8981,8991]},["terminal",{"sourceInterval":[8981,8984]},"0"],["star",{"sourceInterval":[8985,8991]},["app",{"sourceInterval":[8985,8990]},"digit",[]]]]],"integerLiteralDec":["define",{"sourceInterval":[8882,9040]},null,[],["alt",{"sourceInterval":[8902,9040]},["app",{"sourceInterval":[8902,8928]},"integerLiteralDec_nonZeroIntegerLiteralDec",[]],["app",{"sourceInterval":[8981,8991]},"integerLiteralDec_integerLiteralWithLeadingZero",[]]]],"integerLiteralHex":["define",{"sourceInterval":[9045,9104]},null,[],["seq",{"sourceInterval":[9065,9104]},["alt",{"sourceInterval":[9066,9077]},["terminal",{"sourceInterval":[9066,9070]},"0x"],["terminal",{"sourceInterval":[9073,9077]},"0X"]],["app",{"sourceInterval":[9079,9087]},"hexDigit",[]],["star",{"sourceInterval":[9088,9104]},["seq",{"sourceInterval":[9089,9102]},["opt",{"sourceInterval":[9089,9093]},["terminal",{"sourceInterval":[9089,9092]},"_"]],["app",{"sourceInterval":[9094,9102]},"hexDigit",[]]]]]],"integerLiteralBin":["define",{"sourceInterval":[9109,9168]},null,[],["seq",{"sourceInterval":[9129,9168]},["alt",{"sourceInterval":[9130,9141]},["terminal",{"sourceInterval":[9130,9134]},"0b"],["terminal",{"sourceInterval":[9137,9141]},"0B"]],["app",{"sourceInterval":[9143,9151]},"binDigit",[]],["star",{"sourceInterval":[9152,9168]},["seq",{"sourceInterval":[9153,9166]},["opt",{"sourceInterval":[9153,9157]},["terminal",{"sourceInterval":[9153,9156]},"_"]],["app",{"sourceInterval":[9158,9166]},"binDigit",[]]]]]],"integerLiteralOct":["define",{"sourceInterval":[9173,9232]},null,[],["seq",{"sourceInterval":[9193,9232]},["alt",{"sourceInterval":[9194,9205]},["terminal",{"sourceInterval":[9194,9198]},"0o"],["terminal",{"sourceInterval":[9201,9205]},"0O"]],["app",{"sourceInterval":[9207,9215]},"octDigit",[]],["star",{"sourceInterval":[9216,9232]},["seq",{"sourceInterval":[9217,9230]},["opt",{"sourceInterval":[9217,9221]},["terminal",{"sourceInterval":[9217,9220]},"_"]],["app",{"sourceInterval":[9222,9230]},"octDigit",[]]]]]],"binDigit":["define",{"sourceInterval":[9237,9257]},null,[],["alt",{"sourceInterval":[9248,9257]},["terminal",{"sourceInterval":[9248,9251]},"0"],["terminal",{"sourceInterval":[9254,9257]},"1"]]],"octDigit":["define",{"sourceInterval":[9262,9281]},null,[],["range",{"sourceInterval":[9273,9281]},"0","7"]],"nonZeroDigit":["define",{"sourceInterval":[9286,9309]},null,[],["range",{"sourceInterval":[9301,9309]},"1","9"]],"letterAsciiLC":["define",{"sourceInterval":[9330,9354]},null,[],["range",{"sourceInterval":[9346,9354]},"a","z"]],"letterAsciiUC":["define",{"sourceInterval":[9359,9383]},null,[],["range",{"sourceInterval":[9375,9383]},"A","Z"]],"letterAscii":["define",{"sourceInterval":[9388,9431]},null,[],["alt",{"sourceInterval":[9402,9431]},["app",{"sourceInterval":[9402,9415]},"letterAsciiLC",[]],["app",{"sourceInterval":[9418,9431]},"letterAsciiUC",[]]]],"letterComment":["define",{"sourceInterval":[9436,9495]},null,[],["alt",{"sourceInterval":[9452,9495]},["app",{"sourceInterval":[9452,9465]},"letterAsciiLC",[]],["app",{"sourceInterval":[9468,9481]},"letterAsciiUC",[]],["app",{"sourceInterval":[9484,9489]},"digit",[]],["terminal",{"sourceInterval":[9492,9495]},"_"]]],"idStart":["define",{"sourceInterval":[9519,9546]},null,[],["alt",{"sourceInterval":[9529,9546]},["app",{"sourceInterval":[9529,9540]},"letterAscii",[]],["terminal",{"sourceInterval":[9543,9546]},"_"]]],"idPart":["define",{"sourceInterval":[9551,9585]},null,[],["alt",{"sourceInterval":[9560,9585]},["app",{"sourceInterval":[9560,9571]},"letterAscii",[]],["app",{"sourceInterval":[9574,9579]},"digit",[]],["terminal",{"sourceInterval":[9582,9585]},"_"]]],"id":["define",{"sourceInterval":[9590,9628]},null,[],["seq",{"sourceInterval":[9595,9628]},["not",{"sourceInterval":[9595,9608]},["app",{"sourceInterval":[9596,9608]},"reservedWord",[]]],["lex",{"sourceInterval":[9609,9617]},["app",{"sourceInterval":[9610,9617]},"idStart",[]]],["lex",{"sourceInterval":[9618,9628]},["star",{"sourceInterval":[9620,9627]},["app",{"sourceInterval":[9620,9626]},"idPart",[]]]]]],"funcLetter":["define",{"sourceInterval":[9649,9710]},null,[],["alt",{"sourceInterval":[9662,9710]},["app",{"sourceInterval":[9662,9673]},"letterAscii",[]],["terminal",{"sourceInterval":[9676,9679]},"_"],["terminal",{"sourceInterval":[9682,9685]},"'"],["terminal",{"sourceInterval":[9688,9691]},"?"],["terminal",{"sourceInterval":[9694,9697]},"!"],["terminal",{"sourceInterval":[9700,9704]},"::"],["terminal",{"sourceInterval":[9707,9710]},"&"]]],"funcId":["define",{"sourceInterval":[9715,9757]},null,[],["seq",{"sourceInterval":[9724,9757]},["app",{"sourceInterval":[9724,9734]},"funcLetter",[]],["star",{"sourceInterval":[9735,9757]},["lex",{"sourceInterval":[9735,9756]},["alt",{"sourceInterval":[9737,9755]},["app",{"sourceInterval":[9737,9747]},"funcLetter",[]],["app",{"sourceInterval":[9750,9755]},"digit",[]]]]]]],"boolLiteral":["define",{"sourceInterval":[9783,9823]},null,[],["seq",{"sourceInterval":[9797,9823]},["alt",{"sourceInterval":[9798,9814]},["terminal",{"sourceInterval":[9798,9804]},"true"],["terminal",{"sourceInterval":[9807,9814]},"false"]],["not",{"sourceInterval":[9816,9823]},["app",{"sourceInterval":[9817,9823]},"idPart",[]]]]],"stringLiteral":["define",{"sourceInterval":[9851,9920]},null,[],["seq",{"sourceInterval":[9867,9920]},["terminal",{"sourceInterval":[9867,9871]},"\""],["star",{"sourceInterval":[9872,9915]},["alt",{"sourceInterval":[9873,9913]},["app",{"sourceInterval":[9873,9896]},"nonQuoteOrBackslashChar",[]],["app",{"sourceInterval":[9899,9913]},"escapeSequence",[]]]],["terminal",{"sourceInterval":[9916,9920]},"\""]]],"nonQuoteOrBackslashChar":["define",{"sourceInterval":[9925,9969]},null,[],["seq",{"sourceInterval":[9951,9969]},["not",{"sourceInterval":[9951,9965]},["alt",{"sourceInterval":[9953,9964]},["terminal",{"sourceInterval":[9953,9957]},"\""],["terminal",{"sourceInterval":[9960,9964]},"\\"]]],["app",{"sourceInterval":[9966,9969]},"any",[]]]],"escapeSequence_backslash":["define",{"sourceInterval":[9991,10010]},null,[],["terminal",{"sourceInterval":[9991,9997]},"\\\\"]],"escapeSequence_doubleQuote":["define",{"sourceInterval":[10032,10053]},null,[],["terminal",{"sourceInterval":[10032,10038]},"\\\""]],"escapeSequence_newline":["define",{"sourceInterval":[10075,10091]},null,[],["terminal",{"sourceInterval":[10075,10080]},"\\n"]],"escapeSequence_carriageReturn":["define",{"sourceInterval":[10113,10136]},null,[],["terminal",{"sourceInterval":[10113,10118]},"\\r"]],"escapeSequence_tab":["define",{"sourceInterval":[10158,10170]},null,[],["terminal",{"sourceInterval":[10158,10163]},"\\t"]],"escapeSequence_verticalTab":["define",{"sourceInterval":[10192,10212]},null,[],["terminal",{"sourceInterval":[10192,10197]},"\\v"]],"escapeSequence_backspace":["define",{"sourceInterval":[10234,10252]},null,[],["terminal",{"sourceInterval":[10234,10239]},"\\b"]],"escapeSequence_formFeed":["define",{"sourceInterval":[10274,10291]},null,[],["terminal",{"sourceInterval":[10274,10279]},"\\f"]],"escapeSequence_unicodeCodePoint":["define",{"sourceInterval":[10313,10402]},null,[],["seq",{"sourceInterval":[10313,10382]},["terminal",{"sourceInterval":[10313,10319]},"\\u{"],["app",{"sourceInterval":[10320,10328]},"hexDigit",[]],["opt",{"sourceInterval":[10329,10338]},["app",{"sourceInterval":[10329,10337]},"hexDigit",[]]],["opt",{"sourceInterval":[10339,10348]},["app",{"sourceInterval":[10339,10347]},"hexDigit",[]]],["opt",{"sourceInterval":[10349,10358]},["app",{"sourceInterval":[10349,10357]},"hexDigit",[]]],["opt",{"sourceInterval":[10359,10368]},["app",{"sourceInterval":[10359,10367]},"hexDigit",[]]],["opt",{"sourceInterval":[10369,10378]},["app",{"sourceInterval":[10369,10377]},"hexDigit",[]]],["terminal",{"sourceInterval":[10379,10382]},"}"]]],"escapeSequence_unicodeEscape":["define",{"sourceInterval":[10424,10482]},null,[],["seq",{"sourceInterval":[10424,10465]},["terminal",{"sourceInterval":[10424,10429]},"\\u"],["app",{"sourceInterval":[10430,10438]},"hexDigit",[]],["app",{"sourceInterval":[10439,10447]},"hexDigit",[]],["app",{"sourceInterval":[10448,10456]},"hexDigit",[]],["app",{"sourceInterval":[10457,10465]},"hexDigit",[]]]],"escapeSequence_hexEscape":["define",{"sourceInterval":[10504,10540]},null,[],["seq",{"sourceInterval":[10504,10527]},["terminal",{"sourceInterval":[10504,10509]},"\\x"],["app",{"sourceInterval":[10510,10518]},"hexDigit",[]],["app",{"sourceInterval":[10519,10527]},"hexDigit",[]]]],"escapeSequence":["define",{"sourceInterval":[9974,10540]},null,[],["alt",{"sourceInterval":[9991,10540]},["app",{"sourceInterval":[9991,9997]},"escapeSequence_backslash",[]],["app",{"sourceInterval":[10032,10038]},"escapeSequence_doubleQuote",[]],["app",{"sourceInterval":[10075,10080]},"escapeSequence_newline",[]],["app",{"sourceInterval":[10113,10118]},"escapeSequence_carriageReturn",[]],["app",{"sourceInterval":[10158,10163]},"escapeSequence_tab",[]],["app",{"sourceInterval":[10192,10197]},"escapeSequence_verticalTab",[]],["app",{"sourceInterval":[10234,10239]},"escapeSequence_backspace",[]],["app",{"sourceInterval":[10274,10279]},"escapeSequence_formFeed",[]],["app",{"sourceInterval":[10313,10382]},"escapeSequence_unicodeCodePoint",[]],["app",{"sourceInterval":[10424,10465]},"escapeSequence_unicodeEscape",[]],["app",{"sourceInterval":[10504,10527]},"escapeSequence_hexEscape",[]]]],"keyword":["define",{"sourceInterval":[10593,11106]},null,[],["alt",{"sourceInterval":[10603,11106]},["app",{"sourceInterval":[10603,10606]},"fun",[]],["app",{"sourceInterval":[10622,10625]},"let",[]],["app",{"sourceInterval":[10640,10646]},"return",[]],["app",{"sourceInterval":[10662,10668]},"extend",[]],["app",{"sourceInterval":[10684,10690]},"native",[]],["app",{"sourceInterval":[10706,10712]},"public",[]],["app",{"sourceInterval":[10728,10732]},"null",[]],["app",{"sourceInterval":[10748,10750]},"if",[]],["app",{"sourceInterval":[10766,10770]},"else",[]],["app",{"sourceInterval":[10786,10791]},"while",[]],["app",{"sourceInterval":[10807,10813]},"repeat",[]],["app",{"sourceInterval":[10829,10831]},"do",[]],["app",{"sourceInterval":[10847,10852]},"until",[]],["app",{"sourceInterval":[10868,10870]},"as",[]],["app",{"sourceInterval":[10887,10894]},"mutates",[]],["app",{"sourceInterval":[10909,10916]},"extends",[]],["app",{"sourceInterval":[10931,10937]},"import",[]],["app",{"sourceInterval":[10952,10956]},"with",[]],["app",{"sourceInterval":[10971,10976]},"trait",[]],["app",{"sourceInterval":[10991,10997]},"initOf",[]],["app",{"sourceInterval":[11012,11020]},"override",[]],["app",{"sourceInterval":[11035,11043]},"abstract",[]],["app",{"sourceInterval":[11058,11065]},"virtual",[]],["app",{"sourceInterval":[11080,11086]},"inline",[]],["app",{"sourceInterval":[11101,11106]},"const",[]]]],"contract":["define",{"sourceInterval":[11111,11140]},null,[],["seq",{"sourceInterval":[11122,11140]},["terminal",{"sourceInterval":[11122,11132]},"contract"],["not",{"sourceInterval":[11133,11140]},["app",{"sourceInterval":[11134,11140]},"idPart",[]]]]],"let":["define",{"sourceInterval":[11145,11164]},null,[],["seq",{"sourceInterval":[11151,11164]},["terminal",{"sourceInterval":[11151,11156]},"let"],["not",{"sourceInterval":[11157,11164]},["app",{"sourceInterval":[11158,11164]},"idPart",[]]]]],"fun":["define",{"sourceInterval":[11169,11188]},null,[],["seq",{"sourceInterval":[11175,11188]},["terminal",{"sourceInterval":[11175,11180]},"fun"],["not",{"sourceInterval":[11181,11188]},["app",{"sourceInterval":[11182,11188]},"idPart",[]]]]],"return":["define",{"sourceInterval":[11193,11218]},null,[],["seq",{"sourceInterval":[11202,11218]},["terminal",{"sourceInterval":[11202,11210]},"return"],["not",{"sourceInterval":[11211,11218]},["app",{"sourceInterval":[11212,11218]},"idPart",[]]]]],"extend":["define",{"sourceInterval":[11223,11248]},null,[],["seq",{"sourceInterval":[11232,11248]},["terminal",{"sourceInterval":[11232,11240]},"extend"],["not",{"sourceInterval":[11241,11248]},["app",{"sourceInterval":[11242,11248]},"idPart",[]]]]],"native":["define",{"sourceInterval":[11253,11278]},null,[],["seq",{"sourceInterval":[11262,11278]},["terminal",{"sourceInterval":[11262,11270]},"native"],["not",{"sourceInterval":[11271,11278]},["app",{"sourceInterval":[11272,11278]},"idPart",[]]]]],"public":["define",{"sourceInterval":[11283,11308]},null,[],["seq",{"sourceInterval":[11292,11308]},["terminal",{"sourceInterval":[11292,11300]},"public"],["not",{"sourceInterval":[11301,11308]},["app",{"sourceInterval":[11302,11308]},"idPart",[]]]]],"null":["define",{"sourceInterval":[11313,11334]},null,[],["seq",{"sourceInterval":[11320,11334]},["terminal",{"sourceInterval":[11320,11326]},"null"],["not",{"sourceInterval":[11327,11334]},["app",{"sourceInterval":[11328,11334]},"idPart",[]]]]],"if":["define",{"sourceInterval":[11339,11356]},null,[],["seq",{"sourceInterval":[11344,11356]},["terminal",{"sourceInterval":[11344,11348]},"if"],["not",{"sourceInterval":[11349,11356]},["app",{"sourceInterval":[11350,11356]},"idPart",[]]]]],"else":["define",{"sourceInterval":[11361,11382]},null,[],["seq",{"sourceInterval":[11368,11382]},["terminal",{"sourceInterval":[11368,11374]},"else"],["not",{"sourceInterval":[11375,11382]},["app",{"sourceInterval":[11376,11382]},"idPart",[]]]]],"while":["define",{"sourceInterval":[11387,11410]},null,[],["seq",{"sourceInterval":[11395,11410]},["terminal",{"sourceInterval":[11395,11402]},"while"],["not",{"sourceInterval":[11403,11410]},["app",{"sourceInterval":[11404,11410]},"idPart",[]]]]],"repeat":["define",{"sourceInterval":[11415,11440]},null,[],["seq",{"sourceInterval":[11424,11440]},["terminal",{"sourceInterval":[11424,11432]},"repeat"],["not",{"sourceInterval":[11433,11440]},["app",{"sourceInterval":[11434,11440]},"idPart",[]]]]],"do":["define",{"sourceInterval":[11445,11462]},null,[],["seq",{"sourceInterval":[11450,11462]},["terminal",{"sourceInterval":[11450,11454]},"do"],["not",{"sourceInterval":[11455,11462]},["app",{"sourceInterval":[11456,11462]},"idPart",[]]]]],"until":["define",{"sourceInterval":[11467,11490]},null,[],["seq",{"sourceInterval":[11475,11490]},["terminal",{"sourceInterval":[11475,11482]},"until"],["not",{"sourceInterval":[11483,11490]},["app",{"sourceInterval":[11484,11490]},"idPart",[]]]]],"as":["define",{"sourceInterval":[11495,11512]},null,[],["seq",{"sourceInterval":[11500,11512]},["terminal",{"sourceInterval":[11500,11504]},"as"],["not",{"sourceInterval":[11505,11512]},["app",{"sourceInterval":[11506,11512]},"idPart",[]]]]],"mutates":["define",{"sourceInterval":[11517,11544]},null,[],["seq",{"sourceInterval":[11527,11544]},["terminal",{"sourceInterval":[11527,11536]},"mutates"],["not",{"sourceInterval":[11537,11544]},["app",{"sourceInterval":[11538,11544]},"idPart",[]]]]],"extends":["define",{"sourceInterval":[11549,11576]},null,[],["seq",{"sourceInterval":[11559,11576]},["terminal",{"sourceInterval":[11559,11568]},"extends"],["not",{"sourceInterval":[11569,11576]},["app",{"sourceInterval":[11570,11576]},"idPart",[]]]]],"import":["define",{"sourceInterval":[11581,11606]},null,[],["seq",{"sourceInterval":[11590,11606]},["terminal",{"sourceInterval":[11590,11598]},"import"],["not",{"sourceInterval":[11599,11606]},["app",{"sourceInterval":[11600,11606]},"idPart",[]]]]],"with":["define",{"sourceInterval":[11611,11632]},null,[],["seq",{"sourceInterval":[11618,11632]},["terminal",{"sourceInterval":[11618,11624]},"with"],["not",{"sourceInterval":[11625,11632]},["app",{"sourceInterval":[11626,11632]},"idPart",[]]]]],"trait":["define",{"sourceInterval":[11637,11660]},null,[],["seq",{"sourceInterval":[11645,11660]},["terminal",{"sourceInterval":[11645,11652]},"trait"],["not",{"sourceInterval":[11653,11660]},["app",{"sourceInterval":[11654,11660]},"idPart",[]]]]],"initOf":["define",{"sourceInterval":[11665,11690]},null,[],["seq",{"sourceInterval":[11674,11690]},["terminal",{"sourceInterval":[11674,11682]},"initOf"],["not",{"sourceInterval":[11683,11690]},["app",{"sourceInterval":[11684,11690]},"idPart",[]]]]],"virtual":["define",{"sourceInterval":[11695,11722]},null,[],["seq",{"sourceInterval":[11705,11722]},["terminal",{"sourceInterval":[11705,11714]},"virtual"],["not",{"sourceInterval":[11715,11722]},["app",{"sourceInterval":[11716,11722]},"idPart",[]]]]],"override":["define",{"sourceInterval":[11727,11756]},null,[],["seq",{"sourceInterval":[11738,11756]},["terminal",{"sourceInterval":[11738,11748]},"override"],["not",{"sourceInterval":[11749,11756]},["app",{"sourceInterval":[11750,11756]},"idPart",[]]]]],"inline":["define",{"sourceInterval":[11761,11786]},null,[],["seq",{"sourceInterval":[11770,11786]},["terminal",{"sourceInterval":[11770,11778]},"inline"],["not",{"sourceInterval":[11779,11786]},["app",{"sourceInterval":[11780,11786]},"idPart",[]]]]],"const":["define",{"sourceInterval":[11791,11814]},null,[],["seq",{"sourceInterval":[11799,11814]},["terminal",{"sourceInterval":[11799,11806]},"const"],["not",{"sourceInterval":[11807,11814]},["app",{"sourceInterval":[11808,11814]},"idPart",[]]]]],"abstract":["define",{"sourceInterval":[11819,11848]},null,[],["seq",{"sourceInterval":[11830,11848]},["terminal",{"sourceInterval":[11830,11840]},"abstract"],["not",{"sourceInterval":[11841,11848]},["app",{"sourceInterval":[11842,11848]},"idPart",[]]]]],"nameAttribute":["define",{"sourceInterval":[11872,11895]},null,[],["terminal",{"sourceInterval":[11888,11895]},"@name"]],"reservedWord":["define",{"sourceInterval":[11917,11939]},null,[],["app",{"sourceInterval":[11932,11939]},"keyword",[]]],"space":["extend",{"sourceInterval":[11961,11994]},null,[],["alt",{"sourceInterval":[11970,11994]},["app",{"sourceInterval":[11970,11977]},"comment",[]],["app",{"sourceInterval":[11980,11994]},"lineTerminator",[]]]],"comment":["define",{"sourceInterval":[11999,12045]},null,[],["alt",{"sourceInterval":[12009,12045]},["app",{"sourceInterval":[12009,12025]},"multiLineComment",[]],["app",{"sourceInterval":[12028,12045]},"singleLineComment",[]]]],"lineTerminator":["define",{"sourceInterval":[12050,12100]},null,[],["alt",{"sourceInterval":[12067,12100]},["terminal",{"sourceInterval":[12067,12071]},"\n"],["terminal",{"sourceInterval":[12074,12078]},"\r"],["terminal",{"sourceInterval":[12081,12089]},"\u2028"],["terminal",{"sourceInterval":[12092,12100]},"\u2029"]]],"multiLineComment":["define",{"sourceInterval":[12105,12146]},null,[],["seq",{"sourceInterval":[12124,12146]},["terminal",{"sourceInterval":[12124,12128]},"/*"],["star",{"sourceInterval":[12129,12141]},["seq",{"sourceInterval":[12130,12139]},["not",{"sourceInterval":[12130,12135]},["terminal",{"sourceInterval":[12131,12135]},"*/"]],["app",{"sourceInterval":[12136,12139]},"any",[]]]],["terminal",{"sourceInterval":[12142,12146]},"*/"]]],"singleLineComment":["define",{"sourceInterval":[12151,12198]},null,[],["seq",{"sourceInterval":[12171,12198]},["terminal",{"sourceInterval":[12171,12175]},"//"],["star",{"sourceInterval":[12176,12198]},["seq",{"sourceInterval":[12177,12196]},["not",{"sourceInterval":[12177,12192]},["app",{"sourceInterval":[12178,12192]},"lineTerminator",[]]],["app",{"sourceInterval":[12193,12196]},"any",[]]]]]]}]);module.exports=result; \ No newline at end of file +'use strict';const ohm=(require('ohm-js').default || require('ohm-js'));const result=ohm.makeRecipe(["grammar",{"source":"Tact {\n\n // Starting point of the program\n Program = ProgramItem*\n ProgramItem = Struct\n | Contract\n | Primitive\n | StaticFunction\n | NativeFunction\n | ProgramImport\n | Trait\n | Constant\n ProgramImport = import stringLiteral \";\"\n\n // Built-in declarations\n Primitive = \"primitive\" Type \";\"\n\n // Static function\n StaticFunction = Function\n NativeFunction = nameAttribute \"(\" funcId \")\" FunctionAttribute* native id \"(\" ListOf \",\"? \")\" \";\" --withVoid\n | nameAttribute \"(\" funcId \")\" FunctionAttribute* native id \"(\" ListOf \",\"? \")\" \":\" Type \";\" --withType\n \n // Field declarations\n Type = typeLiteral \"?\" --optional\n | typeLiteral --required\n | \"map\" \"<\" typeLiteral (as id)? \",\" typeLiteral (as id)? \">\" --map\n | \"bounced\" \"<\" typeLiteral \">\" --bounced\n Field = id \":\" Type \";\" --default\n | id \":\" Type \"=\" Expression \";\" --defaultWithInit\n | id \":\" Type as id \";\" --withSerialization\n | id \":\" Type as id \"=\" Expression \";\" --withSerializationAndInit\n \n // Constant\n ConstantAttribute = virtual --virtual\n | override --override\n | abstract --abstract\n Constant = ConstantAttribute* ~fun const id \":\" Type \"=\" Expression \";\" --withValue\n | ConstantAttribute* ~fun const id \":\" Type \";\" --withEmpty\n\n // Struct\n Struct = \"struct\" typeLiteral \"{\" StructBody* \"}\" --originary\n | \"message\" typeLiteral \"{\" StructBody* \"}\" --message\n | \"message\" \"(\" integerLiteral \")\" typeLiteral \"{\" StructBody* \"}\" --messageWithId\n StructBody = Field\n\n // Contract\n Contract = ContractAttribute* contract id \"{\" ContractBody* \"}\" --simple\n | ContractAttribute* contract id with ListOf \",\"? \"{\" ContractBody* \"}\" --withTraits\n ContractInit = \"init\" \"(\" ListOf \",\"? \")\" \"{\" Statement* \"}\"\n ContractBody = Field\n | ContractInit\n | ReceiveFunction\n | Function\n | Constant\n \n // Trait\n Trait = ContractAttribute* trait id \"{\" TraitBody* \"}\" --originary\n | ContractAttribute* trait id with ListOf \",\"? \"{\" TraitBody* \"}\" --withTraits\n TraitBody = Field\n | ReceiveFunction\n | Function\n | Constant\n\n // Contract attributes\n ContractAttribute = \"@interface\" \"(\" stringLiteral \")\" --interface\n\n // Function\n FunctionAttribute = \"get\" --getter\n | mutates --mutates\n | extends --extends\n | virtual --virtual\n | override --override\n | inline --inline\n | abstract --abstract\n Function = FunctionAttribute* fun id \"(\" ListOf \",\"? \")\" \"{\" Statement* \"}\" --withVoid\n | FunctionAttribute* fun id \"(\" ListOf \",\"? \")\" \":\" Type \"{\" Statement* \"}\" --withType\n | FunctionAttribute* fun id \"(\" ListOf \",\"? \")\" \";\" --abstractVoid\n | FunctionAttribute* fun id \"(\" ListOf \",\"? \")\" \":\" Type \";\" --abstractType\n FunctionArg = id \":\" Type\n \n ReceiveFunction = \"receive\" \"(\" FunctionArg \")\" \"{\" Statement* \"}\" --simple\n | \"receive\" \"(\" \")\" \"{\" Statement* \"}\" --empty\n | \"receive\" \"(\" stringLiteral \")\" \"{\" Statement* \"}\" --comment\n | \"bounced\" \"(\" FunctionArg \")\" \"{\" Statement* \"}\" --bounced\n | \"external\" \"(\" FunctionArg \")\" \"{\" Statement* \"}\" --externalSimple\n | \"external\" \"(\" stringLiteral \")\" \"{\" Statement* \"}\" --externalComment\n | \"external\" \"(\" \")\" \"{\" Statement* \"}\" --externalEmpty\n\n // Statements\n Statement = StatementLet\n | StatementBlock\n | StatementReturn\n | StatementExpression\n | StatementAssign\n | StatementAugmentedAssign\n | StatementCondition\n | StatementWhile\n | StatementRepeat\n | StatementUntil\n StatementBlock = \"{\" Statement* \"}\"\n StatementLet = let id \":\" Type \"=\" Expression \";\"\n StatementReturn = return Expression \";\" --withExpression\n | return \";\" --withoutExpression \n StatementExpression = Expression \";\"\n StatementAssign = LValue \"=\" Expression \";\"\n StatementAugmentedAssign = StatementAugmentedAssignAdd\n | StatementAugmentedAssignSub\n | StatementAugmentedAssignMul\n | StatementAugmentedAssignDiv\n | StatementAugmentedAssignRem\n StatementAugmentedAssignAdd = LValue \"+=\" Expression \";\"\n StatementAugmentedAssignSub = LValue \"-=\" Expression \";\"\n StatementAugmentedAssignMul = LValue \"*=\" Expression \";\"\n StatementAugmentedAssignDiv = LValue \"/=\" Expression \";\"\n StatementAugmentedAssignRem = LValue \"%=\" Expression \";\"\n StatementCondition = if Expression \"{\" Statement* \"}\" ~else --simple\n | if Expression \"{\" Statement* \"}\" else \"{\" Statement* \"}\" --withElse\n | if Expression \"{\" Statement* \"}\" else StatementCondition --withElseIf\n StatementWhile = while \"(\" Expression \")\" \"{\" Statement* \"}\"\n StatementRepeat = repeat \"(\" Expression \")\" \"{\" Statement* \"}\"\n StatementUntil = do \"{\" Statement* \"}\" until \"(\" Expression \")\" \";\"\n\n // L-value\n LValue = id \".\" LValue --more\n | id --single\n\n // Expressions\n Expression = ExpressionConditional\n ExpressionConditional = ExpressionOr \"?\" ExpressionOr \":\" ExpressionConditional --ternary\n | ExpressionOr\n ExpressionOr = ExpressionOr \"||\" ExpressionAnd --or\n | ExpressionAnd\n ExpressionAnd = ExpressionAnd \"&&\" ExpressionCompare --and\n | ExpressionCompare\n ExpressionCompare = ExpressionCompare \"!=\" ExpressionBinary --not\n | ExpressionCompare \"==\" ExpressionBinary --eq\n | ExpressionCompare \">\" ExpressionBinary --gt\n | ExpressionCompare \">=\" ExpressionBinary --gte\n | ExpressionCompare \"<\" ExpressionBinary --lt\n | ExpressionCompare \"<=\" ExpressionBinary --lte\n | ExpressionBinary\n ExpressionBinary = ExpressionBinary \">>\" ExpressionAdd --shr\n | ExpressionBinary \"<<\" ExpressionAdd --shl\n | ExpressionBinary \"&\" ExpressionAdd --bin_and\n | ExpressionBinary \"|\" ExpressionAdd --bin_or\n | ExpressionAdd\n ExpressionAdd = ExpressionAdd \"+\" ~\"+\" ExpressionMul --add\n | ExpressionAdd \"-\" ~\"-\" ExpressionMul --sub\n | ExpressionMul\n ExpressionMul = ExpressionMul \"*\" ExpressionUnary --mul\n | ExpressionMul \"/\" ExpressionUnary --div\n | ExpressionMul \"%\" ExpressionUnary --rem\n | ExpressionUnary\n ExpressionUnary = \"-\" ExpressionUnarySuffix --neg\n | \"+\" ExpressionUnarySuffix --add\n | \"!\" ExpressionUnarySuffix --not\n | ExpressionUnarySuffix\n ExpressionUnarySuffix = ExpressionValue \"!!\" --notNull\n | ExpressionValue\n ExpressionBracket = \"(\" Expression \")\"\n\n // Order is important\n ExpressionValue = ExpressionCall\n | ExpressionField\n | ExpressionStaticCall\n | ExpressionBracket\n | ExpressionNew\n | integerLiteral\n | boolLiteral\n | id\n | null\n | ExpressionInitOf\n | ExpressionString\n ExpressionString = stringLiteral\n ExpressionField = ExpressionValue \".\" id ~\"(\"\n ExpressionCall = ExpressionValue \".\" id \"(\" ListOf \",\"? \")\"\n ExpressionNew = id \"{\" ListOf \",\"? \"}\"\n NewParameter = id \":\" Expression\n ExpressionStaticCall = id \"(\" ListOf \",\"? \")\"\n ExpressionInitOf = initOf id \"(\" ListOf \",\"? \")\"\n\n // Type Literal\n typeLiteral = letterAsciiUC typeLiteralPart*\n typeLiteralPart = letterAscii | digit | \"_\"\n\n // Integer Literal\n // hexDigit defined in Ohm's built-in rules (otherwise: hexDigit = \"0\"..\"9\" | \"a\"..\"f\" | \"A\"..\"F\")\n // digit defined in Ohm's built-in rules (otherwise: digit = \"0\"..\"9\")\n integerLiteral = integerLiteralHex | integerLiteralBin | integerLiteralOct | integerLiteralDec // Order is important\n integerLiteralDec = nonZeroDigit (\"_\"? digit)* --nonZeroIntegerLiteralDec\n | \"0\" digit* --integerLiteralWithLeadingZero\n integerLiteralHex = (\"0x\" | \"0X\") hexDigit (\"_\"? hexDigit)*\n integerLiteralBin = (\"0b\" | \"0B\") binDigit (\"_\"? binDigit)*\n integerLiteralOct = (\"0o\" | \"0O\") octDigit (\"_\"? octDigit)*\n binDigit = \"0\" | \"1\"\n octDigit = \"0\"..\"7\"\n nonZeroDigit = \"1\"..\"9\"\n\n // Letters\n letterAsciiLC = \"a\"..\"z\"\n letterAsciiUC = \"A\"..\"Z\"\n letterAscii = letterAsciiLC | letterAsciiUC\n letterComment = letterAsciiLC | letterAsciiUC | digit | \"_\"\n\n // ID Literal\n idStart = letterAscii | \"_\"\n idPart = letterAscii | digit | \"_\"\n id = ~reservedWord #idStart #(idPart*)\n\n // FunC id\n funcLetter = letterAscii | \"_\" | \"'\" | \"?\" | \"!\" | \"::\" | \"&\"\n funcId = funcLetter #(funcLetter | digit)*\n\n // Bool Literal\n boolLiteral = (\"true\" | \"false\") ~idPart\n\n // String literal\n stringLiteral = \"\\\"\" (nonQuoteOrBackslashChar | escapeSequence)* \"\\\"\"\n nonQuoteOrBackslashChar = ~(\"\\\"\" | \"\\\\\") any\n escapeSequence = \"\\\\\\\\\" -- backslash\n | \"\\\\\\\"\" -- doubleQuote\n | \"\\\\n\" -- newline\n | \"\\\\r\" -- carriageReturn\n | \"\\\\t\" -- tab\n | \"\\\\v\" -- verticalTab\n | \"\\\\b\" -- backspace\n | \"\\\\f\" -- formFeed\n | \"\\\\u{\" hexDigit hexDigit? hexDigit? hexDigit? hexDigit? hexDigit? \"}\" -- unicodeCodePoint\n | \"\\\\u\" hexDigit hexDigit hexDigit hexDigit -- unicodeEscape\n | \"\\\\x\" hexDigit hexDigit -- hexEscape\n\n // Keywords\n // NOTE Order is important\n keyword = fun \n | let\n | return \n | extend \n | native \n | public \n | null \n | if \n | else \n | while \n | repeat \n | do \n | until \n | as \n | mutates\n | extends\n | import\n | with\n | trait\n | initOf\n | override\n | abstract\n | virtual\n | inline\n | const\n contract = \"contract\" ~idPart\n let = \"let\" ~idPart\n fun = \"fun\" ~idPart\n return = \"return\" ~idPart\n extend = \"extend\" ~idPart\n native = \"native\" ~idPart\n public = \"public\" ~idPart\n null = \"null\" ~idPart\n if = \"if\" ~idPart\n else = \"else\" ~idPart\n while = \"while\" ~idPart\n repeat = \"repeat\" ~idPart\n do = \"do\" ~idPart\n until = \"until\" ~idPart\n as = \"as\" ~idPart\n mutates = \"mutates\" ~idPart\n extends = \"extends\" ~idPart\n import = \"import\" ~idPart\n with = \"with\" ~idPart\n trait = \"trait\" ~idPart\n initOf = \"initOf\" ~idPart\n virtual = \"virtual\" ~idPart\n override = \"override\" ~idPart\n inline = \"inline\" ~idPart\n const = \"const\" ~idPart\n abstract = \"abstract\" ~idPart\n\n // Attributes\n nameAttribute = \"@name\"\n\n // Reserved\n reservedWord = keyword\n\n // Comments\n space += comment | lineTerminator\n comment = multiLineComment | singleLineComment\n lineTerminator = \"\\n\" | \"\\r\" | \"\\u2028\" | \"\\u2029\"\n multiLineComment = \"/*\" (~\"*/\" any)* \"*/\"\n singleLineComment = \"//\" (~lineTerminator any)*\n}"},"Tact",null,"Program",{"Program":["define",{"sourceInterval":[49,71]},null,[],["star",{"sourceInterval":[59,71]},["app",{"sourceInterval":[59,70]},"ProgramItem",[]]]],"ProgramItem":["define",{"sourceInterval":[76,300]},null,[],["alt",{"sourceInterval":[90,300]},["app",{"sourceInterval":[90,96]},"Struct",[]],["app",{"sourceInterval":[115,123]},"Contract",[]],["app",{"sourceInterval":[142,151]},"Primitive",[]],["app",{"sourceInterval":[170,184]},"StaticFunction",[]],["app",{"sourceInterval":[203,217]},"NativeFunction",[]],["app",{"sourceInterval":[236,249]},"ProgramImport",[]],["app",{"sourceInterval":[268,273]},"Trait",[]],["app",{"sourceInterval":[292,300]},"Constant",[]]]],"ProgramImport":["define",{"sourceInterval":[305,345]},null,[],["seq",{"sourceInterval":[321,345]},["app",{"sourceInterval":[321,327]},"import",[]],["app",{"sourceInterval":[328,341]},"stringLiteral",[]],["terminal",{"sourceInterval":[342,345]},";"]]],"Primitive":["define",{"sourceInterval":[380,412]},null,[],["seq",{"sourceInterval":[392,412]},["terminal",{"sourceInterval":[392,403]},"primitive"],["app",{"sourceInterval":[404,408]},"Type",[]],["terminal",{"sourceInterval":[409,412]},";"]]],"StaticFunction":["define",{"sourceInterval":[441,466]},null,[],["app",{"sourceInterval":[458,466]},"Function",[]]],"NativeFunction_withVoid":["define",{"sourceInterval":[488,597]},null,[],["seq",{"sourceInterval":[488,586]},["app",{"sourceInterval":[488,501]},"nameAttribute",[]],["terminal",{"sourceInterval":[502,505]},"("],["app",{"sourceInterval":[506,512]},"funcId",[]],["terminal",{"sourceInterval":[513,516]},")"],["star",{"sourceInterval":[517,535]},["app",{"sourceInterval":[517,534]},"FunctionAttribute",[]]],["app",{"sourceInterval":[536,542]},"native",[]],["app",{"sourceInterval":[543,545]},"id",[]],["terminal",{"sourceInterval":[546,549]},"("],["app",{"sourceInterval":[550,573]},"ListOf",[["app",{"sourceInterval":[557,568]},"FunctionArg",[]],["terminal",{"sourceInterval":[569,572]},","]]],["opt",{"sourceInterval":[574,578]},["terminal",{"sourceInterval":[574,577]},","]],["terminal",{"sourceInterval":[579,582]},")"],["terminal",{"sourceInterval":[583,586]},";"]]],"NativeFunction_withType":["define",{"sourceInterval":[619,737]},null,[],["seq",{"sourceInterval":[619,726]},["app",{"sourceInterval":[619,632]},"nameAttribute",[]],["terminal",{"sourceInterval":[633,636]},"("],["app",{"sourceInterval":[637,643]},"funcId",[]],["terminal",{"sourceInterval":[644,647]},")"],["star",{"sourceInterval":[648,666]},["app",{"sourceInterval":[648,665]},"FunctionAttribute",[]]],["app",{"sourceInterval":[667,673]},"native",[]],["app",{"sourceInterval":[674,676]},"id",[]],["terminal",{"sourceInterval":[677,680]},"("],["app",{"sourceInterval":[681,704]},"ListOf",[["app",{"sourceInterval":[688,699]},"FunctionArg",[]],["terminal",{"sourceInterval":[700,703]},","]]],["opt",{"sourceInterval":[705,709]},["terminal",{"sourceInterval":[705,708]},","]],["terminal",{"sourceInterval":[710,713]},")"],["terminal",{"sourceInterval":[714,717]},":"],["app",{"sourceInterval":[718,722]},"Type",[]],["terminal",{"sourceInterval":[723,726]},";"]]],"NativeFunction":["define",{"sourceInterval":[471,737]},null,[],["alt",{"sourceInterval":[488,737]},["app",{"sourceInterval":[488,586]},"NativeFunction_withVoid",[]],["app",{"sourceInterval":[619,726]},"NativeFunction_withType",[]]]],"Type_optional":["define",{"sourceInterval":[780,806]},null,[],["seq",{"sourceInterval":[780,795]},["app",{"sourceInterval":[780,791]},"typeLiteral",[]],["terminal",{"sourceInterval":[792,795]},"?"]]],"Type_required":["define",{"sourceInterval":[818,840]},null,[],["app",{"sourceInterval":[818,829]},"typeLiteral",[]]],"Type_map":["define",{"sourceInterval":[852,917]},null,[],["seq",{"sourceInterval":[852,911]},["terminal",{"sourceInterval":[852,857]},"map"],["terminal",{"sourceInterval":[858,861]},"<"],["app",{"sourceInterval":[862,873]},"typeLiteral",[]],["opt",{"sourceInterval":[874,882]},["seq",{"sourceInterval":[875,880]},["app",{"sourceInterval":[875,877]},"as",[]],["app",{"sourceInterval":[878,880]},"id",[]]]],["terminal",{"sourceInterval":[883,886]},","],["app",{"sourceInterval":[887,898]},"typeLiteral",[]],["opt",{"sourceInterval":[899,907]},["seq",{"sourceInterval":[900,905]},["app",{"sourceInterval":[900,902]},"as",[]],["app",{"sourceInterval":[903,905]},"id",[]]]],["terminal",{"sourceInterval":[908,911]},">"]]],"Type_bounced":["define",{"sourceInterval":[929,968]},null,[],["seq",{"sourceInterval":[929,958]},["terminal",{"sourceInterval":[929,938]},"bounced"],["terminal",{"sourceInterval":[939,942]},"<"],["app",{"sourceInterval":[943,954]},"typeLiteral",[]],["terminal",{"sourceInterval":[955,958]},">"]]],"Type":["define",{"sourceInterval":[773,968]},null,[],["alt",{"sourceInterval":[780,968]},["app",{"sourceInterval":[780,795]},"Type_optional",[]],["app",{"sourceInterval":[818,829]},"Type_required",[]],["app",{"sourceInterval":[852,911]},"Type_map",[]],["app",{"sourceInterval":[929,958]},"Type_bounced",[]]]],"Field_default":["define",{"sourceInterval":[981,1006]},null,[],["seq",{"sourceInterval":[981,996]},["app",{"sourceInterval":[981,983]},"id",[]],["terminal",{"sourceInterval":[984,987]},":"],["app",{"sourceInterval":[988,992]},"Type",[]],["terminal",{"sourceInterval":[993,996]},";"]]],"Field_defaultWithInit":["define",{"sourceInterval":[1019,1067]},null,[],["seq",{"sourceInterval":[1019,1049]},["app",{"sourceInterval":[1019,1021]},"id",[]],["terminal",{"sourceInterval":[1022,1025]},":"],["app",{"sourceInterval":[1026,1030]},"Type",[]],["terminal",{"sourceInterval":[1031,1034]},"="],["app",{"sourceInterval":[1035,1045]},"Expression",[]],["terminal",{"sourceInterval":[1046,1049]},";"]]],"Field_withSerialization":["define",{"sourceInterval":[1080,1121]},null,[],["seq",{"sourceInterval":[1080,1101]},["app",{"sourceInterval":[1080,1082]},"id",[]],["terminal",{"sourceInterval":[1083,1086]},":"],["app",{"sourceInterval":[1087,1091]},"Type",[]],["app",{"sourceInterval":[1092,1094]},"as",[]],["app",{"sourceInterval":[1095,1097]},"id",[]],["terminal",{"sourceInterval":[1098,1101]},";"]]],"Field_withSerializationAndInit":["define",{"sourceInterval":[1134,1197]},null,[],["seq",{"sourceInterval":[1134,1170]},["app",{"sourceInterval":[1134,1136]},"id",[]],["terminal",{"sourceInterval":[1137,1140]},":"],["app",{"sourceInterval":[1141,1145]},"Type",[]],["app",{"sourceInterval":[1146,1148]},"as",[]],["app",{"sourceInterval":[1149,1151]},"id",[]],["terminal",{"sourceInterval":[1152,1155]},"="],["app",{"sourceInterval":[1156,1166]},"Expression",[]],["terminal",{"sourceInterval":[1167,1170]},";"]]],"Field":["define",{"sourceInterval":[973,1197]},null,[],["alt",{"sourceInterval":[981,1197]},["app",{"sourceInterval":[981,996]},"Field_default",[]],["app",{"sourceInterval":[1019,1049]},"Field_defaultWithInit",[]],["app",{"sourceInterval":[1080,1101]},"Field_withSerialization",[]],["app",{"sourceInterval":[1134,1170]},"Field_withSerializationAndInit",[]]]],"ConstantAttribute_virtual":["define",{"sourceInterval":[1243,1263]},null,[],["app",{"sourceInterval":[1243,1250]},"virtual",[]]],"ConstantAttribute_override":["define",{"sourceInterval":[1288,1309]},null,[],["app",{"sourceInterval":[1288,1296]},"override",[]]],"ConstantAttribute_abstract":["define",{"sourceInterval":[1334,1355]},null,[],["app",{"sourceInterval":[1334,1342]},"abstract",[]]],"ConstantAttribute":["define",{"sourceInterval":[1223,1355]},null,[],["alt",{"sourceInterval":[1243,1355]},["app",{"sourceInterval":[1243,1250]},"ConstantAttribute_virtual",[]],["app",{"sourceInterval":[1288,1296]},"ConstantAttribute_override",[]],["app",{"sourceInterval":[1334,1342]},"ConstantAttribute_abstract",[]]]],"Constant_withValue":["define",{"sourceInterval":[1371,1443]},null,[],["seq",{"sourceInterval":[1371,1431]},["star",{"sourceInterval":[1371,1389]},["app",{"sourceInterval":[1371,1388]},"ConstantAttribute",[]]],["not",{"sourceInterval":[1390,1394]},["app",{"sourceInterval":[1391,1394]},"fun",[]]],["app",{"sourceInterval":[1395,1400]},"const",[]],["app",{"sourceInterval":[1401,1403]},"id",[]],["terminal",{"sourceInterval":[1404,1407]},":"],["app",{"sourceInterval":[1408,1412]},"Type",[]],["terminal",{"sourceInterval":[1413,1416]},"="],["app",{"sourceInterval":[1417,1427]},"Expression",[]],["terminal",{"sourceInterval":[1428,1431]},";"]]],"Constant_withEmpty":["define",{"sourceInterval":[1459,1531]},null,[],["seq",{"sourceInterval":[1459,1504]},["star",{"sourceInterval":[1459,1477]},["app",{"sourceInterval":[1459,1476]},"ConstantAttribute",[]]],["not",{"sourceInterval":[1478,1482]},["app",{"sourceInterval":[1479,1482]},"fun",[]]],["app",{"sourceInterval":[1483,1488]},"const",[]],["app",{"sourceInterval":[1489,1491]},"id",[]],["terminal",{"sourceInterval":[1492,1495]},":"],["app",{"sourceInterval":[1496,1500]},"Type",[]],["terminal",{"sourceInterval":[1501,1504]},";"]]],"Constant":["define",{"sourceInterval":[1360,1531]},null,[],["alt",{"sourceInterval":[1371,1531]},["app",{"sourceInterval":[1371,1431]},"Constant_withValue",[]],["app",{"sourceInterval":[1459,1504]},"Constant_withEmpty",[]]]],"Struct_originary":["define",{"sourceInterval":[1560,1612]},null,[],["seq",{"sourceInterval":[1560,1600]},["terminal",{"sourceInterval":[1560,1568]},"struct"],["app",{"sourceInterval":[1569,1580]},"typeLiteral",[]],["terminal",{"sourceInterval":[1581,1584]},"{"],["star",{"sourceInterval":[1585,1596]},["app",{"sourceInterval":[1585,1595]},"StructBody",[]]],["terminal",{"sourceInterval":[1597,1600]},"}"]]],"Struct_message":["define",{"sourceInterval":[1626,1677]},null,[],["seq",{"sourceInterval":[1626,1667]},["terminal",{"sourceInterval":[1626,1635]},"message"],["app",{"sourceInterval":[1636,1647]},"typeLiteral",[]],["terminal",{"sourceInterval":[1648,1651]},"{"],["star",{"sourceInterval":[1652,1663]},["app",{"sourceInterval":[1652,1662]},"StructBody",[]]],["terminal",{"sourceInterval":[1664,1667]},"}"]]],"Struct_messageWithId":["define",{"sourceInterval":[1691,1771]},null,[],["seq",{"sourceInterval":[1691,1755]},["terminal",{"sourceInterval":[1691,1700]},"message"],["terminal",{"sourceInterval":[1701,1704]},"("],["app",{"sourceInterval":[1705,1719]},"integerLiteral",[]],["terminal",{"sourceInterval":[1720,1723]},")"],["app",{"sourceInterval":[1724,1735]},"typeLiteral",[]],["terminal",{"sourceInterval":[1736,1739]},"{"],["star",{"sourceInterval":[1740,1751]},["app",{"sourceInterval":[1740,1750]},"StructBody",[]]],["terminal",{"sourceInterval":[1752,1755]},"}"]]],"Struct":["define",{"sourceInterval":[1551,1771]},null,[],["alt",{"sourceInterval":[1560,1771]},["app",{"sourceInterval":[1560,1600]},"Struct_originary",[]],["app",{"sourceInterval":[1626,1667]},"Struct_message",[]],["app",{"sourceInterval":[1691,1755]},"Struct_messageWithId",[]]]],"StructBody":["define",{"sourceInterval":[1776,1794]},null,[],["app",{"sourceInterval":[1789,1794]},"Field",[]]],"Contract_simple":["define",{"sourceInterval":[1827,1888]},null,[],["seq",{"sourceInterval":[1827,1879]},["star",{"sourceInterval":[1827,1845]},["app",{"sourceInterval":[1827,1844]},"ContractAttribute",[]]],["app",{"sourceInterval":[1846,1854]},"contract",[]],["app",{"sourceInterval":[1855,1857]},"id",[]],["terminal",{"sourceInterval":[1858,1861]},"{"],["star",{"sourceInterval":[1862,1875]},["app",{"sourceInterval":[1862,1874]},"ContractBody",[]]],["terminal",{"sourceInterval":[1876,1879]},"}"]]],"Contract_withTraits":["define",{"sourceInterval":[1904,1994]},null,[],["seq",{"sourceInterval":[1904,1981]},["star",{"sourceInterval":[1904,1922]},["app",{"sourceInterval":[1904,1921]},"ContractAttribute",[]]],["app",{"sourceInterval":[1923,1931]},"contract",[]],["app",{"sourceInterval":[1932,1934]},"id",[]],["app",{"sourceInterval":[1935,1939]},"with",[]],["app",{"sourceInterval":[1940,1954]},"ListOf",[["app",{"sourceInterval":[1947,1949]},"id",[]],["terminal",{"sourceInterval":[1950,1953]},","]]],["opt",{"sourceInterval":[1955,1959]},["terminal",{"sourceInterval":[1955,1958]},","]],["terminal",{"sourceInterval":[1960,1963]},"{"],["star",{"sourceInterval":[1964,1977]},["app",{"sourceInterval":[1964,1976]},"ContractBody",[]]],["terminal",{"sourceInterval":[1978,1981]},"}"]]],"Contract":["define",{"sourceInterval":[1816,1994]},null,[],["alt",{"sourceInterval":[1827,1994]},["app",{"sourceInterval":[1827,1879]},"Contract_simple",[]],["app",{"sourceInterval":[1904,1981]},"Contract_withTraits",[]]]],"ContractInit":["define",{"sourceInterval":[1999,2076]},null,[],["seq",{"sourceInterval":[2014,2076]},["terminal",{"sourceInterval":[2014,2020]},"init"],["terminal",{"sourceInterval":[2021,2024]},"("],["app",{"sourceInterval":[2025,2048]},"ListOf",[["app",{"sourceInterval":[2032,2043]},"FunctionArg",[]],["terminal",{"sourceInterval":[2044,2047]},","]]],["opt",{"sourceInterval":[2049,2053]},["terminal",{"sourceInterval":[2049,2052]},","]],["terminal",{"sourceInterval":[2054,2057]},")"],["terminal",{"sourceInterval":[2058,2061]},"{"],["star",{"sourceInterval":[2062,2072]},["app",{"sourceInterval":[2062,2071]},"Statement",[]]],["terminal",{"sourceInterval":[2073,2076]},"}"]]],"ContractBody":["define",{"sourceInterval":[2081,2224]},null,[],["alt",{"sourceInterval":[2096,2224]},["app",{"sourceInterval":[2096,2101]},"Field",[]],["app",{"sourceInterval":[2121,2133]},"ContractInit",[]],["app",{"sourceInterval":[2153,2168]},"ReceiveFunction",[]],["app",{"sourceInterval":[2188,2196]},"Function",[]],["app",{"sourceInterval":[2216,2224]},"Constant",[]]]],"Trait_originary":["define",{"sourceInterval":[2255,2313]},null,[],["seq",{"sourceInterval":[2255,2301]},["star",{"sourceInterval":[2255,2273]},["app",{"sourceInterval":[2255,2272]},"ContractAttribute",[]]],["app",{"sourceInterval":[2274,2279]},"trait",[]],["app",{"sourceInterval":[2280,2282]},"id",[]],["terminal",{"sourceInterval":[2283,2286]},"{"],["star",{"sourceInterval":[2287,2297]},["app",{"sourceInterval":[2287,2296]},"TraitBody",[]]],["terminal",{"sourceInterval":[2298,2301]},"}"]]],"Trait_withTraits":["define",{"sourceInterval":[2326,2410]},null,[],["seq",{"sourceInterval":[2326,2397]},["star",{"sourceInterval":[2326,2344]},["app",{"sourceInterval":[2326,2343]},"ContractAttribute",[]]],["app",{"sourceInterval":[2345,2350]},"trait",[]],["app",{"sourceInterval":[2351,2353]},"id",[]],["app",{"sourceInterval":[2354,2358]},"with",[]],["app",{"sourceInterval":[2359,2373]},"ListOf",[["app",{"sourceInterval":[2366,2368]},"id",[]],["terminal",{"sourceInterval":[2369,2372]},","]]],["opt",{"sourceInterval":[2374,2378]},["terminal",{"sourceInterval":[2374,2377]},","]],["terminal",{"sourceInterval":[2379,2382]},"{"],["star",{"sourceInterval":[2383,2393]},["app",{"sourceInterval":[2383,2392]},"TraitBody",[]]],["terminal",{"sourceInterval":[2394,2397]},"}"]]],"Trait":["define",{"sourceInterval":[2247,2410]},null,[],["alt",{"sourceInterval":[2255,2410]},["app",{"sourceInterval":[2255,2301]},"Trait_originary",[]],["app",{"sourceInterval":[2326,2397]},"Trait_withTraits",[]]]],"TraitBody":["define",{"sourceInterval":[2415,2514]},null,[],["alt",{"sourceInterval":[2427,2514]},["app",{"sourceInterval":[2427,2432]},"Field",[]],["app",{"sourceInterval":[2449,2464]},"ReceiveFunction",[]],["app",{"sourceInterval":[2481,2489]},"Function",[]],["app",{"sourceInterval":[2506,2514]},"Constant",[]]]],"ContractAttribute_interface":["define",{"sourceInterval":[2567,2613]},null,[],["seq",{"sourceInterval":[2567,2601]},["terminal",{"sourceInterval":[2567,2579]},"@interface"],["terminal",{"sourceInterval":[2580,2583]},"("],["app",{"sourceInterval":[2584,2597]},"stringLiteral",[]],["terminal",{"sourceInterval":[2598,2601]},")"]]],"ContractAttribute":["define",{"sourceInterval":[2547,2613]},null,[],["app",{"sourceInterval":[2567,2613]},"ContractAttribute_interface",[]]],"FunctionAttribute_getter":["define",{"sourceInterval":[2655,2673]},null,[],["terminal",{"sourceInterval":[2655,2660]},"get"]],"FunctionAttribute_mutates":["define",{"sourceInterval":[2698,2717]},null,[],["app",{"sourceInterval":[2698,2705]},"mutates",[]]],"FunctionAttribute_extends":["define",{"sourceInterval":[2742,2761]},null,[],["app",{"sourceInterval":[2742,2749]},"extends",[]]],"FunctionAttribute_virtual":["define",{"sourceInterval":[2786,2805]},null,[],["app",{"sourceInterval":[2786,2793]},"virtual",[]]],"FunctionAttribute_override":["define",{"sourceInterval":[2830,2850]},null,[],["app",{"sourceInterval":[2830,2838]},"override",[]]],"FunctionAttribute_inline":["define",{"sourceInterval":[2875,2893]},null,[],["app",{"sourceInterval":[2875,2881]},"inline",[]]],"FunctionAttribute_abstract":["define",{"sourceInterval":[2918,2938]},null,[],["app",{"sourceInterval":[2918,2926]},"abstract",[]]],"FunctionAttribute":["define",{"sourceInterval":[2635,2938]},null,[],["alt",{"sourceInterval":[2655,2938]},["app",{"sourceInterval":[2655,2660]},"FunctionAttribute_getter",[]],["app",{"sourceInterval":[2698,2705]},"FunctionAttribute_mutates",[]],["app",{"sourceInterval":[2742,2749]},"FunctionAttribute_extends",[]],["app",{"sourceInterval":[2786,2793]},"FunctionAttribute_virtual",[]],["app",{"sourceInterval":[2830,2838]},"FunctionAttribute_override",[]],["app",{"sourceInterval":[2875,2881]},"FunctionAttribute_inline",[]],["app",{"sourceInterval":[2918,2926]},"FunctionAttribute_abstract",[]]]],"Function_withVoid":["define",{"sourceInterval":[2954,3046]},null,[],["seq",{"sourceInterval":[2954,3035]},["star",{"sourceInterval":[2954,2972]},["app",{"sourceInterval":[2954,2971]},"FunctionAttribute",[]]],["app",{"sourceInterval":[2973,2976]},"fun",[]],["app",{"sourceInterval":[2977,2979]},"id",[]],["terminal",{"sourceInterval":[2980,2983]},"("],["app",{"sourceInterval":[2984,3007]},"ListOf",[["app",{"sourceInterval":[2991,3002]},"FunctionArg",[]],["terminal",{"sourceInterval":[3003,3006]},","]]],["opt",{"sourceInterval":[3008,3012]},["terminal",{"sourceInterval":[3008,3011]},","]],["terminal",{"sourceInterval":[3013,3016]},")"],["terminal",{"sourceInterval":[3017,3020]},"{"],["star",{"sourceInterval":[3021,3031]},["app",{"sourceInterval":[3021,3030]},"Statement",[]]],["terminal",{"sourceInterval":[3032,3035]},"}"]]],"Function_withType":["define",{"sourceInterval":[3062,3163]},null,[],["seq",{"sourceInterval":[3062,3152]},["star",{"sourceInterval":[3062,3080]},["app",{"sourceInterval":[3062,3079]},"FunctionAttribute",[]]],["app",{"sourceInterval":[3081,3084]},"fun",[]],["app",{"sourceInterval":[3085,3087]},"id",[]],["terminal",{"sourceInterval":[3088,3091]},"("],["app",{"sourceInterval":[3092,3115]},"ListOf",[["app",{"sourceInterval":[3099,3110]},"FunctionArg",[]],["terminal",{"sourceInterval":[3111,3114]},","]]],["opt",{"sourceInterval":[3116,3120]},["terminal",{"sourceInterval":[3116,3119]},","]],["terminal",{"sourceInterval":[3121,3124]},")"],["terminal",{"sourceInterval":[3125,3128]},":"],["app",{"sourceInterval":[3129,3133]},"Type",[]],["terminal",{"sourceInterval":[3134,3137]},"{"],["star",{"sourceInterval":[3138,3148]},["app",{"sourceInterval":[3138,3147]},"Statement",[]]],["terminal",{"sourceInterval":[3149,3152]},"}"]]],"Function_abstractVoid":["define",{"sourceInterval":[3179,3260]},null,[],["seq",{"sourceInterval":[3179,3245]},["star",{"sourceInterval":[3179,3197]},["app",{"sourceInterval":[3179,3196]},"FunctionAttribute",[]]],["app",{"sourceInterval":[3198,3201]},"fun",[]],["app",{"sourceInterval":[3202,3204]},"id",[]],["terminal",{"sourceInterval":[3205,3208]},"("],["app",{"sourceInterval":[3209,3232]},"ListOf",[["app",{"sourceInterval":[3216,3227]},"FunctionArg",[]],["terminal",{"sourceInterval":[3228,3231]},","]]],["opt",{"sourceInterval":[3233,3237]},["terminal",{"sourceInterval":[3233,3236]},","]],["terminal",{"sourceInterval":[3238,3241]},")"],["terminal",{"sourceInterval":[3242,3245]},";"]]],"Function_abstractType":["define",{"sourceInterval":[3276,3366]},null,[],["seq",{"sourceInterval":[3276,3351]},["star",{"sourceInterval":[3276,3294]},["app",{"sourceInterval":[3276,3293]},"FunctionAttribute",[]]],["app",{"sourceInterval":[3295,3298]},"fun",[]],["app",{"sourceInterval":[3299,3301]},"id",[]],["terminal",{"sourceInterval":[3302,3305]},"("],["app",{"sourceInterval":[3306,3329]},"ListOf",[["app",{"sourceInterval":[3313,3324]},"FunctionArg",[]],["terminal",{"sourceInterval":[3325,3328]},","]]],["opt",{"sourceInterval":[3330,3334]},["terminal",{"sourceInterval":[3330,3333]},","]],["terminal",{"sourceInterval":[3335,3338]},")"],["terminal",{"sourceInterval":[3339,3342]},":"],["app",{"sourceInterval":[3343,3347]},"Type",[]],["terminal",{"sourceInterval":[3348,3351]},";"]]],"Function":["define",{"sourceInterval":[2943,3366]},null,[],["alt",{"sourceInterval":[2954,3366]},["app",{"sourceInterval":[2954,3035]},"Function_withVoid",[]],["app",{"sourceInterval":[3062,3152]},"Function_withType",[]],["app",{"sourceInterval":[3179,3245]},"Function_abstractVoid",[]],["app",{"sourceInterval":[3276,3351]},"Function_abstractType",[]]]],"FunctionArg":["define",{"sourceInterval":[3371,3396]},null,[],["seq",{"sourceInterval":[3385,3396]},["app",{"sourceInterval":[3385,3387]},"id",[]],["terminal",{"sourceInterval":[3388,3391]},":"],["app",{"sourceInterval":[3392,3396]},"Type",[]]]],"ReceiveFunction_simple":["define",{"sourceInterval":[3424,3481]},null,[],["seq",{"sourceInterval":[3424,3472]},["terminal",{"sourceInterval":[3424,3433]},"receive"],["terminal",{"sourceInterval":[3434,3437]},"("],["app",{"sourceInterval":[3438,3449]},"FunctionArg",[]],["terminal",{"sourceInterval":[3450,3453]},")"],["terminal",{"sourceInterval":[3454,3457]},"{"],["star",{"sourceInterval":[3458,3468]},["app",{"sourceInterval":[3458,3467]},"Statement",[]]],["terminal",{"sourceInterval":[3469,3472]},"}"]]],"ReceiveFunction_empty":["define",{"sourceInterval":[3504,3548]},null,[],["seq",{"sourceInterval":[3504,3540]},["terminal",{"sourceInterval":[3504,3513]},"receive"],["terminal",{"sourceInterval":[3514,3517]},"("],["terminal",{"sourceInterval":[3518,3521]},")"],["terminal",{"sourceInterval":[3522,3525]},"{"],["star",{"sourceInterval":[3526,3536]},["app",{"sourceInterval":[3526,3535]},"Statement",[]]],["terminal",{"sourceInterval":[3537,3540]},"}"]]],"ReceiveFunction_comment":["define",{"sourceInterval":[3571,3631]},null,[],["seq",{"sourceInterval":[3571,3621]},["terminal",{"sourceInterval":[3571,3580]},"receive"],["terminal",{"sourceInterval":[3581,3584]},"("],["app",{"sourceInterval":[3585,3598]},"stringLiteral",[]],["terminal",{"sourceInterval":[3599,3602]},")"],["terminal",{"sourceInterval":[3603,3606]},"{"],["star",{"sourceInterval":[3607,3617]},["app",{"sourceInterval":[3607,3616]},"Statement",[]]],["terminal",{"sourceInterval":[3618,3621]},"}"]]],"ReceiveFunction_bounced":["define",{"sourceInterval":[3654,3712]},null,[],["seq",{"sourceInterval":[3654,3702]},["terminal",{"sourceInterval":[3654,3663]},"bounced"],["terminal",{"sourceInterval":[3664,3667]},"("],["app",{"sourceInterval":[3668,3679]},"FunctionArg",[]],["terminal",{"sourceInterval":[3680,3683]},")"],["terminal",{"sourceInterval":[3684,3687]},"{"],["star",{"sourceInterval":[3688,3698]},["app",{"sourceInterval":[3688,3697]},"Statement",[]]],["terminal",{"sourceInterval":[3699,3702]},"}"]]],"ReceiveFunction_externalSimple":["define",{"sourceInterval":[3735,3801]},null,[],["seq",{"sourceInterval":[3735,3784]},["terminal",{"sourceInterval":[3735,3745]},"external"],["terminal",{"sourceInterval":[3746,3749]},"("],["app",{"sourceInterval":[3750,3761]},"FunctionArg",[]],["terminal",{"sourceInterval":[3762,3765]},")"],["terminal",{"sourceInterval":[3766,3769]},"{"],["star",{"sourceInterval":[3770,3780]},["app",{"sourceInterval":[3770,3779]},"Statement",[]]],["terminal",{"sourceInterval":[3781,3784]},"}"]]],"ReceiveFunction_externalComment":["define",{"sourceInterval":[3824,3893]},null,[],["seq",{"sourceInterval":[3824,3875]},["terminal",{"sourceInterval":[3824,3834]},"external"],["terminal",{"sourceInterval":[3835,3838]},"("],["app",{"sourceInterval":[3839,3852]},"stringLiteral",[]],["terminal",{"sourceInterval":[3853,3856]},")"],["terminal",{"sourceInterval":[3857,3860]},"{"],["star",{"sourceInterval":[3861,3871]},["app",{"sourceInterval":[3861,3870]},"Statement",[]]],["terminal",{"sourceInterval":[3872,3875]},"}"]]],"ReceiveFunction_externalEmpty":["define",{"sourceInterval":[3916,3969]},null,[],["seq",{"sourceInterval":[3916,3953]},["terminal",{"sourceInterval":[3916,3926]},"external"],["terminal",{"sourceInterval":[3927,3930]},"("],["terminal",{"sourceInterval":[3931,3934]},")"],["terminal",{"sourceInterval":[3935,3938]},"{"],["star",{"sourceInterval":[3939,3949]},["app",{"sourceInterval":[3939,3948]},"Statement",[]]],["terminal",{"sourceInterval":[3950,3953]},"}"]]],"ReceiveFunction":["define",{"sourceInterval":[3406,3969]},null,[],["alt",{"sourceInterval":[3424,3969]},["app",{"sourceInterval":[3424,3472]},"ReceiveFunction_simple",[]],["app",{"sourceInterval":[3504,3540]},"ReceiveFunction_empty",[]],["app",{"sourceInterval":[3571,3621]},"ReceiveFunction_comment",[]],["app",{"sourceInterval":[3654,3702]},"ReceiveFunction_bounced",[]],["app",{"sourceInterval":[3735,3784]},"ReceiveFunction_externalSimple",[]],["app",{"sourceInterval":[3824,3875]},"ReceiveFunction_externalComment",[]],["app",{"sourceInterval":[3916,3953]},"ReceiveFunction_externalEmpty",[]]]],"Statement":["define",{"sourceInterval":[3993,4318]},null,[],["alt",{"sourceInterval":[4005,4318]},["app",{"sourceInterval":[4005,4017]},"StatementLet",[]],["app",{"sourceInterval":[4034,4048]},"StatementBlock",[]],["app",{"sourceInterval":[4065,4080]},"StatementReturn",[]],["app",{"sourceInterval":[4097,4116]},"StatementExpression",[]],["app",{"sourceInterval":[4133,4148]},"StatementAssign",[]],["app",{"sourceInterval":[4165,4189]},"StatementAugmentedAssign",[]],["app",{"sourceInterval":[4206,4224]},"StatementCondition",[]],["app",{"sourceInterval":[4241,4255]},"StatementWhile",[]],["app",{"sourceInterval":[4272,4287]},"StatementRepeat",[]],["app",{"sourceInterval":[4304,4318]},"StatementUntil",[]]]],"StatementBlock":["define",{"sourceInterval":[4323,4358]},null,[],["seq",{"sourceInterval":[4340,4358]},["terminal",{"sourceInterval":[4340,4343]},"{"],["star",{"sourceInterval":[4344,4354]},["app",{"sourceInterval":[4344,4353]},"Statement",[]]],["terminal",{"sourceInterval":[4355,4358]},"}"]]],"StatementLet":["define",{"sourceInterval":[4363,4412]},null,[],["seq",{"sourceInterval":[4378,4412]},["app",{"sourceInterval":[4378,4381]},"let",[]],["app",{"sourceInterval":[4382,4384]},"id",[]],["terminal",{"sourceInterval":[4385,4388]},":"],["app",{"sourceInterval":[4389,4393]},"Type",[]],["terminal",{"sourceInterval":[4394,4397]},"="],["app",{"sourceInterval":[4398,4408]},"Expression",[]],["terminal",{"sourceInterval":[4409,4412]},";"]]],"StatementReturn_withExpression":["define",{"sourceInterval":[4435,4473]},null,[],["seq",{"sourceInterval":[4435,4456]},["app",{"sourceInterval":[4435,4441]},"return",[]],["app",{"sourceInterval":[4442,4452]},"Expression",[]],["terminal",{"sourceInterval":[4453,4456]},";"]]],"StatementReturn_withoutExpression":["define",{"sourceInterval":[4496,4526]},null,[],["seq",{"sourceInterval":[4496,4506]},["app",{"sourceInterval":[4496,4502]},"return",[]],["terminal",{"sourceInterval":[4503,4506]},";"]]],"StatementReturn":["define",{"sourceInterval":[4417,4526]},null,[],["alt",{"sourceInterval":[4435,4526]},["app",{"sourceInterval":[4435,4456]},"StatementReturn_withExpression",[]],["app",{"sourceInterval":[4496,4506]},"StatementReturn_withoutExpression",[]]]],"StatementExpression":["define",{"sourceInterval":[4535,4571]},null,[],["seq",{"sourceInterval":[4557,4571]},["app",{"sourceInterval":[4557,4567]},"Expression",[]],["terminal",{"sourceInterval":[4568,4571]},";"]]],"StatementAssign":["define",{"sourceInterval":[4576,4619]},null,[],["seq",{"sourceInterval":[4594,4619]},["app",{"sourceInterval":[4594,4600]},"LValue",[]],["terminal",{"sourceInterval":[4601,4604]},"="],["app",{"sourceInterval":[4605,4615]},"Expression",[]],["terminal",{"sourceInterval":[4616,4619]},";"]]],"StatementAugmentedAssign":["define",{"sourceInterval":[4624,4914]},null,[],["alt",{"sourceInterval":[4651,4914]},["app",{"sourceInterval":[4651,4678]},"StatementAugmentedAssignAdd",[]],["app",{"sourceInterval":[4710,4737]},"StatementAugmentedAssignSub",[]],["app",{"sourceInterval":[4769,4796]},"StatementAugmentedAssignMul",[]],["app",{"sourceInterval":[4828,4855]},"StatementAugmentedAssignDiv",[]],["app",{"sourceInterval":[4887,4914]},"StatementAugmentedAssignRem",[]]]],"StatementAugmentedAssignAdd":["define",{"sourceInterval":[4919,4975]},null,[],["seq",{"sourceInterval":[4949,4975]},["app",{"sourceInterval":[4949,4955]},"LValue",[]],["terminal",{"sourceInterval":[4956,4960]},"+="],["app",{"sourceInterval":[4961,4971]},"Expression",[]],["terminal",{"sourceInterval":[4972,4975]},";"]]],"StatementAugmentedAssignSub":["define",{"sourceInterval":[4980,5036]},null,[],["seq",{"sourceInterval":[5010,5036]},["app",{"sourceInterval":[5010,5016]},"LValue",[]],["terminal",{"sourceInterval":[5017,5021]},"-="],["app",{"sourceInterval":[5022,5032]},"Expression",[]],["terminal",{"sourceInterval":[5033,5036]},";"]]],"StatementAugmentedAssignMul":["define",{"sourceInterval":[5041,5097]},null,[],["seq",{"sourceInterval":[5071,5097]},["app",{"sourceInterval":[5071,5077]},"LValue",[]],["terminal",{"sourceInterval":[5078,5082]},"*="],["app",{"sourceInterval":[5083,5093]},"Expression",[]],["terminal",{"sourceInterval":[5094,5097]},";"]]],"StatementAugmentedAssignDiv":["define",{"sourceInterval":[5102,5158]},null,[],["seq",{"sourceInterval":[5132,5158]},["app",{"sourceInterval":[5132,5138]},"LValue",[]],["terminal",{"sourceInterval":[5139,5143]},"/="],["app",{"sourceInterval":[5144,5154]},"Expression",[]],["terminal",{"sourceInterval":[5155,5158]},";"]]],"StatementAugmentedAssignRem":["define",{"sourceInterval":[5163,5219]},null,[],["seq",{"sourceInterval":[5193,5219]},["app",{"sourceInterval":[5193,5199]},"LValue",[]],["terminal",{"sourceInterval":[5200,5204]},"%="],["app",{"sourceInterval":[5205,5215]},"Expression",[]],["terminal",{"sourceInterval":[5216,5219]},";"]]],"StatementCondition_simple":["define",{"sourceInterval":[5245,5292]},null,[],["seq",{"sourceInterval":[5245,5283]},["app",{"sourceInterval":[5245,5247]},"if",[]],["app",{"sourceInterval":[5248,5258]},"Expression",[]],["terminal",{"sourceInterval":[5259,5262]},"{"],["star",{"sourceInterval":[5263,5273]},["app",{"sourceInterval":[5263,5272]},"Statement",[]]],["terminal",{"sourceInterval":[5274,5277]},"}"],["not",{"sourceInterval":[5278,5283]},["app",{"sourceInterval":[5279,5283]},"else",[]]]]],"StatementCondition_withElse":["define",{"sourceInterval":[5318,5385]},null,[],["seq",{"sourceInterval":[5318,5374]},["app",{"sourceInterval":[5318,5320]},"if",[]],["app",{"sourceInterval":[5321,5331]},"Expression",[]],["terminal",{"sourceInterval":[5332,5335]},"{"],["star",{"sourceInterval":[5336,5346]},["app",{"sourceInterval":[5336,5345]},"Statement",[]]],["terminal",{"sourceInterval":[5347,5350]},"}"],["app",{"sourceInterval":[5351,5355]},"else",[]],["terminal",{"sourceInterval":[5356,5359]},"{"],["star",{"sourceInterval":[5360,5370]},["app",{"sourceInterval":[5360,5369]},"Statement",[]]],["terminal",{"sourceInterval":[5371,5374]},"}"]]],"StatementCondition_withElseIf":["define",{"sourceInterval":[5411,5480]},null,[],["seq",{"sourceInterval":[5411,5467]},["app",{"sourceInterval":[5411,5413]},"if",[]],["app",{"sourceInterval":[5414,5424]},"Expression",[]],["terminal",{"sourceInterval":[5425,5428]},"{"],["star",{"sourceInterval":[5429,5439]},["app",{"sourceInterval":[5429,5438]},"Statement",[]]],["terminal",{"sourceInterval":[5440,5443]},"}"],["app",{"sourceInterval":[5444,5448]},"else",[]],["app",{"sourceInterval":[5449,5467]},"StatementCondition",[]]]],"StatementCondition":["define",{"sourceInterval":[5224,5480]},null,[],["alt",{"sourceInterval":[5245,5480]},["app",{"sourceInterval":[5245,5283]},"StatementCondition_simple",[]],["app",{"sourceInterval":[5318,5374]},"StatementCondition_withElse",[]],["app",{"sourceInterval":[5411,5467]},"StatementCondition_withElseIf",[]]]],"StatementWhile":["define",{"sourceInterval":[5485,5545]},null,[],["seq",{"sourceInterval":[5502,5545]},["app",{"sourceInterval":[5502,5507]},"while",[]],["terminal",{"sourceInterval":[5508,5511]},"("],["app",{"sourceInterval":[5512,5522]},"Expression",[]],["terminal",{"sourceInterval":[5523,5526]},")"],["terminal",{"sourceInterval":[5527,5530]},"{"],["star",{"sourceInterval":[5531,5541]},["app",{"sourceInterval":[5531,5540]},"Statement",[]]],["terminal",{"sourceInterval":[5542,5545]},"}"]]],"StatementRepeat":["define",{"sourceInterval":[5550,5612]},null,[],["seq",{"sourceInterval":[5568,5612]},["app",{"sourceInterval":[5568,5574]},"repeat",[]],["terminal",{"sourceInterval":[5575,5578]},"("],["app",{"sourceInterval":[5579,5589]},"Expression",[]],["terminal",{"sourceInterval":[5590,5593]},")"],["terminal",{"sourceInterval":[5594,5597]},"{"],["star",{"sourceInterval":[5598,5608]},["app",{"sourceInterval":[5598,5607]},"Statement",[]]],["terminal",{"sourceInterval":[5609,5612]},"}"]]],"StatementUntil":["define",{"sourceInterval":[5617,5684]},null,[],["seq",{"sourceInterval":[5634,5684]},["app",{"sourceInterval":[5634,5636]},"do",[]],["terminal",{"sourceInterval":[5637,5640]},"{"],["star",{"sourceInterval":[5641,5651]},["app",{"sourceInterval":[5641,5650]},"Statement",[]]],["terminal",{"sourceInterval":[5652,5655]},"}"],["app",{"sourceInterval":[5656,5661]},"until",[]],["terminal",{"sourceInterval":[5662,5665]},"("],["app",{"sourceInterval":[5666,5676]},"Expression",[]],["terminal",{"sourceInterval":[5677,5680]},")"],["terminal",{"sourceInterval":[5681,5684]},";"]]],"LValue_more":["define",{"sourceInterval":[5714,5734]},null,[],["seq",{"sourceInterval":[5714,5727]},["app",{"sourceInterval":[5714,5716]},"id",[]],["terminal",{"sourceInterval":[5717,5720]},"."],["app",{"sourceInterval":[5721,5727]},"LValue",[]]]],"LValue_single":["define",{"sourceInterval":[5748,5759]},null,[],["app",{"sourceInterval":[5748,5750]},"id",[]]],"LValue":["define",{"sourceInterval":[5705,5759]},null,[],["alt",{"sourceInterval":[5714,5759]},["app",{"sourceInterval":[5714,5727]},"LValue_more",[]],["app",{"sourceInterval":[5748,5750]},"LValue_single",[]]]],"Expression":["define",{"sourceInterval":[5784,5818]},null,[],["app",{"sourceInterval":[5797,5818]},"ExpressionConditional",[]]],"ExpressionConditional_ternary":["define",{"sourceInterval":[5847,5912]},null,[],["seq",{"sourceInterval":[5847,5902]},["app",{"sourceInterval":[5847,5859]},"ExpressionOr",[]],["terminal",{"sourceInterval":[5860,5863]},"?"],["app",{"sourceInterval":[5864,5876]},"ExpressionOr",[]],["terminal",{"sourceInterval":[5877,5880]},":"],["app",{"sourceInterval":[5881,5902]},"ExpressionConditional",[]]]],"ExpressionConditional":["define",{"sourceInterval":[5823,5953]},null,[],["alt",{"sourceInterval":[5847,5953]},["app",{"sourceInterval":[5847,5902]},"ExpressionConditional_ternary",[]],["app",{"sourceInterval":[5941,5953]},"ExpressionOr",[]]]],"ExpressionOr_or":["define",{"sourceInterval":[5973,6009]},null,[],["seq",{"sourceInterval":[5973,6004]},["app",{"sourceInterval":[5973,5985]},"ExpressionOr",[]],["terminal",{"sourceInterval":[5986,5990]},"||"],["app",{"sourceInterval":[5991,6004]},"ExpressionAnd",[]]]],"ExpressionOr":["define",{"sourceInterval":[5958,6042]},null,[],["alt",{"sourceInterval":[5973,6042]},["app",{"sourceInterval":[5973,6004]},"ExpressionOr_or",[]],["app",{"sourceInterval":[6029,6042]},"ExpressionAnd",[]]]],"ExpressionAnd_and":["define",{"sourceInterval":[6063,6105]},null,[],["seq",{"sourceInterval":[6063,6099]},["app",{"sourceInterval":[6063,6076]},"ExpressionAnd",[]],["terminal",{"sourceInterval":[6077,6081]},"&&"],["app",{"sourceInterval":[6082,6099]},"ExpressionCompare",[]]]],"ExpressionAnd":["define",{"sourceInterval":[6047,6143]},null,[],["alt",{"sourceInterval":[6063,6143]},["app",{"sourceInterval":[6063,6099]},"ExpressionAnd_and",[]],["app",{"sourceInterval":[6126,6143]},"ExpressionCompare",[]]]],"ExpressionCompare_not":["define",{"sourceInterval":[6168,6213]},null,[],["seq",{"sourceInterval":[6168,6207]},["app",{"sourceInterval":[6168,6185]},"ExpressionCompare",[]],["terminal",{"sourceInterval":[6186,6190]},"!="],["app",{"sourceInterval":[6191,6207]},"ExpressionBinary",[]]]],"ExpressionCompare_eq":["define",{"sourceInterval":[6238,6282]},null,[],["seq",{"sourceInterval":[6238,6277]},["app",{"sourceInterval":[6238,6255]},"ExpressionCompare",[]],["terminal",{"sourceInterval":[6256,6260]},"=="],["app",{"sourceInterval":[6261,6277]},"ExpressionBinary",[]]]],"ExpressionCompare_gt":["define",{"sourceInterval":[6307,6350]},null,[],["seq",{"sourceInterval":[6307,6345]},["app",{"sourceInterval":[6307,6324]},"ExpressionCompare",[]],["terminal",{"sourceInterval":[6325,6328]},">"],["app",{"sourceInterval":[6329,6345]},"ExpressionBinary",[]]]],"ExpressionCompare_gte":["define",{"sourceInterval":[6375,6420]},null,[],["seq",{"sourceInterval":[6375,6414]},["app",{"sourceInterval":[6375,6392]},"ExpressionCompare",[]],["terminal",{"sourceInterval":[6393,6397]},">="],["app",{"sourceInterval":[6398,6414]},"ExpressionBinary",[]]]],"ExpressionCompare_lt":["define",{"sourceInterval":[6445,6488]},null,[],["seq",{"sourceInterval":[6445,6483]},["app",{"sourceInterval":[6445,6462]},"ExpressionCompare",[]],["terminal",{"sourceInterval":[6463,6466]},"<"],["app",{"sourceInterval":[6467,6483]},"ExpressionBinary",[]]]],"ExpressionCompare_lte":["define",{"sourceInterval":[6513,6558]},null,[],["seq",{"sourceInterval":[6513,6552]},["app",{"sourceInterval":[6513,6530]},"ExpressionCompare",[]],["terminal",{"sourceInterval":[6531,6535]},"<="],["app",{"sourceInterval":[6536,6552]},"ExpressionBinary",[]]]],"ExpressionCompare":["define",{"sourceInterval":[6148,6599]},null,[],["alt",{"sourceInterval":[6168,6599]},["app",{"sourceInterval":[6168,6207]},"ExpressionCompare_not",[]],["app",{"sourceInterval":[6238,6277]},"ExpressionCompare_eq",[]],["app",{"sourceInterval":[6307,6345]},"ExpressionCompare_gt",[]],["app",{"sourceInterval":[6375,6414]},"ExpressionCompare_gte",[]],["app",{"sourceInterval":[6445,6483]},"ExpressionCompare_lt",[]],["app",{"sourceInterval":[6513,6552]},"ExpressionCompare_lte",[]],["app",{"sourceInterval":[6583,6599]},"ExpressionBinary",[]]]],"ExpressionBinary_shr":["define",{"sourceInterval":[6623,6664]},null,[],["seq",{"sourceInterval":[6623,6658]},["app",{"sourceInterval":[6623,6639]},"ExpressionBinary",[]],["terminal",{"sourceInterval":[6640,6644]},">>"],["app",{"sourceInterval":[6645,6658]},"ExpressionAdd",[]]]],"ExpressionBinary_shl":["define",{"sourceInterval":[6687,6728]},null,[],["seq",{"sourceInterval":[6687,6722]},["app",{"sourceInterval":[6687,6703]},"ExpressionBinary",[]],["terminal",{"sourceInterval":[6704,6708]},"<<"],["app",{"sourceInterval":[6709,6722]},"ExpressionAdd",[]]]],"ExpressionBinary_bin_and":["define",{"sourceInterval":[6751,6795]},null,[],["seq",{"sourceInterval":[6751,6785]},["app",{"sourceInterval":[6751,6767]},"ExpressionBinary",[]],["terminal",{"sourceInterval":[6768,6771]},"&"],["app",{"sourceInterval":[6772,6785]},"ExpressionAdd",[]]]],"ExpressionBinary_bin_or":["define",{"sourceInterval":[6818,6861]},null,[],["seq",{"sourceInterval":[6818,6852]},["app",{"sourceInterval":[6818,6834]},"ExpressionBinary",[]],["terminal",{"sourceInterval":[6835,6838]},"|"],["app",{"sourceInterval":[6839,6852]},"ExpressionAdd",[]]]],"ExpressionBinary":["define",{"sourceInterval":[6604,6897]},null,[],["alt",{"sourceInterval":[6623,6897]},["app",{"sourceInterval":[6623,6658]},"ExpressionBinary_shr",[]],["app",{"sourceInterval":[6687,6722]},"ExpressionBinary_shl",[]],["app",{"sourceInterval":[6751,6785]},"ExpressionBinary_bin_and",[]],["app",{"sourceInterval":[6818,6852]},"ExpressionBinary_bin_or",[]],["app",{"sourceInterval":[6884,6897]},"ExpressionAdd",[]]]],"ExpressionAdd_add":["define",{"sourceInterval":[6918,6960]},null,[],["seq",{"sourceInterval":[6918,6954]},["app",{"sourceInterval":[6918,6931]},"ExpressionAdd",[]],["terminal",{"sourceInterval":[6932,6935]},"+"],["not",{"sourceInterval":[6936,6940]},["terminal",{"sourceInterval":[6937,6940]},"+"]],["app",{"sourceInterval":[6941,6954]},"ExpressionMul",[]]]],"ExpressionAdd_sub":["define",{"sourceInterval":[6981,7023]},null,[],["seq",{"sourceInterval":[6981,7017]},["app",{"sourceInterval":[6981,6994]},"ExpressionAdd",[]],["terminal",{"sourceInterval":[6995,6998]},"-"],["not",{"sourceInterval":[6999,7003]},["terminal",{"sourceInterval":[7000,7003]},"-"]],["app",{"sourceInterval":[7004,7017]},"ExpressionMul",[]]]],"ExpressionAdd":["define",{"sourceInterval":[6902,7057]},null,[],["alt",{"sourceInterval":[6918,7057]},["app",{"sourceInterval":[6918,6954]},"ExpressionAdd_add",[]],["app",{"sourceInterval":[6981,7017]},"ExpressionAdd_sub",[]],["app",{"sourceInterval":[7044,7057]},"ExpressionMul",[]]]],"ExpressionMul_mul":["define",{"sourceInterval":[7078,7117]},null,[],["seq",{"sourceInterval":[7078,7111]},["app",{"sourceInterval":[7078,7091]},"ExpressionMul",[]],["terminal",{"sourceInterval":[7092,7095]},"*"],["app",{"sourceInterval":[7096,7111]},"ExpressionUnary",[]]]],"ExpressionMul_div":["define",{"sourceInterval":[7138,7177]},null,[],["seq",{"sourceInterval":[7138,7171]},["app",{"sourceInterval":[7138,7151]},"ExpressionMul",[]],["terminal",{"sourceInterval":[7152,7155]},"/"],["app",{"sourceInterval":[7156,7171]},"ExpressionUnary",[]]]],"ExpressionMul_rem":["define",{"sourceInterval":[7198,7237]},null,[],["seq",{"sourceInterval":[7198,7231]},["app",{"sourceInterval":[7198,7211]},"ExpressionMul",[]],["terminal",{"sourceInterval":[7212,7215]},"%"],["app",{"sourceInterval":[7216,7231]},"ExpressionUnary",[]]]],"ExpressionMul":["define",{"sourceInterval":[7062,7273]},null,[],["alt",{"sourceInterval":[7078,7273]},["app",{"sourceInterval":[7078,7111]},"ExpressionMul_mul",[]],["app",{"sourceInterval":[7138,7171]},"ExpressionMul_div",[]],["app",{"sourceInterval":[7198,7231]},"ExpressionMul_rem",[]],["app",{"sourceInterval":[7258,7273]},"ExpressionUnary",[]]]],"ExpressionUnary_neg":["define",{"sourceInterval":[7296,7327]},null,[],["seq",{"sourceInterval":[7296,7321]},["terminal",{"sourceInterval":[7296,7299]},"-"],["app",{"sourceInterval":[7300,7321]},"ExpressionUnarySuffix",[]]]],"ExpressionUnary_add":["define",{"sourceInterval":[7350,7381]},null,[],["seq",{"sourceInterval":[7350,7375]},["terminal",{"sourceInterval":[7350,7353]},"+"],["app",{"sourceInterval":[7354,7375]},"ExpressionUnarySuffix",[]]]],"ExpressionUnary_not":["define",{"sourceInterval":[7404,7435]},null,[],["seq",{"sourceInterval":[7404,7429]},["terminal",{"sourceInterval":[7404,7407]},"!"],["app",{"sourceInterval":[7408,7429]},"ExpressionUnarySuffix",[]]]],"ExpressionUnary":["define",{"sourceInterval":[7278,7479]},null,[],["alt",{"sourceInterval":[7296,7479]},["app",{"sourceInterval":[7296,7321]},"ExpressionUnary_neg",[]],["app",{"sourceInterval":[7350,7375]},"ExpressionUnary_add",[]],["app",{"sourceInterval":[7404,7429]},"ExpressionUnary_not",[]],["app",{"sourceInterval":[7458,7479]},"ExpressionUnarySuffix",[]]]],"ExpressionUnarySuffix_notNull":["define",{"sourceInterval":[7508,7538]},null,[],["seq",{"sourceInterval":[7508,7528]},["app",{"sourceInterval":[7508,7523]},"ExpressionValue",[]],["terminal",{"sourceInterval":[7524,7528]},"!!"]]],"ExpressionUnarySuffix":["define",{"sourceInterval":[7484,7582]},null,[],["alt",{"sourceInterval":[7508,7582]},["app",{"sourceInterval":[7508,7528]},"ExpressionUnarySuffix_notNull",[]],["app",{"sourceInterval":[7567,7582]},"ExpressionValue",[]]]],"ExpressionBracket":["define",{"sourceInterval":[7587,7625]},null,[],["seq",{"sourceInterval":[7607,7625]},["terminal",{"sourceInterval":[7607,7610]},"("],["app",{"sourceInterval":[7611,7621]},"Expression",[]],["terminal",{"sourceInterval":[7622,7625]},")"]]],"ExpressionValue":["define",{"sourceInterval":[7657,8047]},null,[],["alt",{"sourceInterval":[7675,8047]},["app",{"sourceInterval":[7675,7689]},"ExpressionCall",[]],["app",{"sourceInterval":[7712,7727]},"ExpressionField",[]],["app",{"sourceInterval":[7750,7770]},"ExpressionStaticCall",[]],["app",{"sourceInterval":[7793,7810]},"ExpressionBracket",[]],["app",{"sourceInterval":[7833,7846]},"ExpressionNew",[]],["app",{"sourceInterval":[7869,7883]},"integerLiteral",[]],["app",{"sourceInterval":[7906,7917]},"boolLiteral",[]],["app",{"sourceInterval":[7940,7942]},"id",[]],["app",{"sourceInterval":[7965,7969]},"null",[]],["app",{"sourceInterval":[7992,8008]},"ExpressionInitOf",[]],["app",{"sourceInterval":[8031,8047]},"ExpressionString",[]]]],"ExpressionString":["define",{"sourceInterval":[8052,8084]},null,[],["app",{"sourceInterval":[8071,8084]},"stringLiteral",[]]],"ExpressionField":["define",{"sourceInterval":[8089,8134]},null,[],["seq",{"sourceInterval":[8107,8134]},["app",{"sourceInterval":[8107,8122]},"ExpressionValue",[]],["terminal",{"sourceInterval":[8123,8126]},"."],["app",{"sourceInterval":[8127,8129]},"id",[]],["not",{"sourceInterval":[8130,8134]},["terminal",{"sourceInterval":[8131,8134]},"("]]]],"ExpressionCall":["define",{"sourceInterval":[8139,8215]},null,[],["seq",{"sourceInterval":[8156,8215]},["app",{"sourceInterval":[8156,8171]},"ExpressionValue",[]],["terminal",{"sourceInterval":[8172,8175]},"."],["app",{"sourceInterval":[8176,8178]},"id",[]],["terminal",{"sourceInterval":[8179,8182]},"("],["app",{"sourceInterval":[8183,8206]},"ListOf",[["app",{"sourceInterval":[8190,8200]},"Expression",[]],["terminal",{"sourceInterval":[8202,8205]},","]]],["opt",{"sourceInterval":[8207,8211]},["terminal",{"sourceInterval":[8207,8210]},","]],["terminal",{"sourceInterval":[8212,8215]},")"]]],"ExpressionNew":["define",{"sourceInterval":[8220,8277]},null,[],["seq",{"sourceInterval":[8236,8277]},["app",{"sourceInterval":[8236,8238]},"id",[]],["terminal",{"sourceInterval":[8239,8242]},"{"],["app",{"sourceInterval":[8243,8268]},"ListOf",[["app",{"sourceInterval":[8250,8262]},"NewParameter",[]],["terminal",{"sourceInterval":[8264,8267]},","]]],["opt",{"sourceInterval":[8269,8273]},["terminal",{"sourceInterval":[8269,8272]},","]],["terminal",{"sourceInterval":[8274,8277]},"}"]]],"NewParameter":["define",{"sourceInterval":[8282,8314]},null,[],["seq",{"sourceInterval":[8297,8314]},["app",{"sourceInterval":[8297,8299]},"id",[]],["terminal",{"sourceInterval":[8300,8303]},":"],["app",{"sourceInterval":[8304,8314]},"Expression",[]]]],"ExpressionStaticCall":["define",{"sourceInterval":[8319,8381]},null,[],["seq",{"sourceInterval":[8342,8381]},["app",{"sourceInterval":[8342,8344]},"id",[]],["terminal",{"sourceInterval":[8345,8348]},"("],["app",{"sourceInterval":[8349,8372]},"ListOf",[["app",{"sourceInterval":[8356,8366]},"Expression",[]],["terminal",{"sourceInterval":[8368,8371]},","]]],["opt",{"sourceInterval":[8373,8377]},["terminal",{"sourceInterval":[8373,8376]},","]],["terminal",{"sourceInterval":[8378,8381]},")"]]],"ExpressionInitOf":["define",{"sourceInterval":[8386,8451]},null,[],["seq",{"sourceInterval":[8405,8451]},["app",{"sourceInterval":[8405,8411]},"initOf",[]],["app",{"sourceInterval":[8412,8414]},"id",[]],["terminal",{"sourceInterval":[8415,8418]},"("],["app",{"sourceInterval":[8419,8442]},"ListOf",[["app",{"sourceInterval":[8426,8436]},"Expression",[]],["terminal",{"sourceInterval":[8438,8441]},","]]],["opt",{"sourceInterval":[8443,8447]},["terminal",{"sourceInterval":[8443,8446]},","]],["terminal",{"sourceInterval":[8448,8451]},")"]]],"typeLiteral":["define",{"sourceInterval":[8477,8521]},null,[],["seq",{"sourceInterval":[8491,8521]},["app",{"sourceInterval":[8491,8504]},"letterAsciiUC",[]],["star",{"sourceInterval":[8505,8521]},["app",{"sourceInterval":[8505,8520]},"typeLiteralPart",[]]]]],"typeLiteralPart":["define",{"sourceInterval":[8526,8569]},null,[],["alt",{"sourceInterval":[8544,8569]},["app",{"sourceInterval":[8544,8555]},"letterAscii",[]],["app",{"sourceInterval":[8558,8563]},"digit",[]],["terminal",{"sourceInterval":[8566,8569]},"_"]]],"integerLiteral":["define",{"sourceInterval":[8776,8870]},null,[],["alt",{"sourceInterval":[8793,8870]},["app",{"sourceInterval":[8793,8810]},"integerLiteralHex",[]],["app",{"sourceInterval":[8813,8830]},"integerLiteralBin",[]],["app",{"sourceInterval":[8833,8850]},"integerLiteralOct",[]],["app",{"sourceInterval":[8853,8870]},"integerLiteralDec",[]]]],"integerLiteralDec_nonZeroIntegerLiteralDec":["define",{"sourceInterval":[8917,8971]},null,[],["seq",{"sourceInterval":[8917,8943]},["app",{"sourceInterval":[8917,8929]},"nonZeroDigit",[]],["star",{"sourceInterval":[8930,8943]},["seq",{"sourceInterval":[8931,8941]},["opt",{"sourceInterval":[8931,8935]},["terminal",{"sourceInterval":[8931,8934]},"_"]],["app",{"sourceInterval":[8936,8941]},"digit",[]]]]]],"integerLiteralDec_integerLiteralWithLeadingZero":["define",{"sourceInterval":[8996,9055]},null,[],["seq",{"sourceInterval":[8996,9006]},["terminal",{"sourceInterval":[8996,8999]},"0"],["star",{"sourceInterval":[9000,9006]},["app",{"sourceInterval":[9000,9005]},"digit",[]]]]],"integerLiteralDec":["define",{"sourceInterval":[8897,9055]},null,[],["alt",{"sourceInterval":[8917,9055]},["app",{"sourceInterval":[8917,8943]},"integerLiteralDec_nonZeroIntegerLiteralDec",[]],["app",{"sourceInterval":[8996,9006]},"integerLiteralDec_integerLiteralWithLeadingZero",[]]]],"integerLiteralHex":["define",{"sourceInterval":[9060,9119]},null,[],["seq",{"sourceInterval":[9080,9119]},["alt",{"sourceInterval":[9081,9092]},["terminal",{"sourceInterval":[9081,9085]},"0x"],["terminal",{"sourceInterval":[9088,9092]},"0X"]],["app",{"sourceInterval":[9094,9102]},"hexDigit",[]],["star",{"sourceInterval":[9103,9119]},["seq",{"sourceInterval":[9104,9117]},["opt",{"sourceInterval":[9104,9108]},["terminal",{"sourceInterval":[9104,9107]},"_"]],["app",{"sourceInterval":[9109,9117]},"hexDigit",[]]]]]],"integerLiteralBin":["define",{"sourceInterval":[9124,9183]},null,[],["seq",{"sourceInterval":[9144,9183]},["alt",{"sourceInterval":[9145,9156]},["terminal",{"sourceInterval":[9145,9149]},"0b"],["terminal",{"sourceInterval":[9152,9156]},"0B"]],["app",{"sourceInterval":[9158,9166]},"binDigit",[]],["star",{"sourceInterval":[9167,9183]},["seq",{"sourceInterval":[9168,9181]},["opt",{"sourceInterval":[9168,9172]},["terminal",{"sourceInterval":[9168,9171]},"_"]],["app",{"sourceInterval":[9173,9181]},"binDigit",[]]]]]],"integerLiteralOct":["define",{"sourceInterval":[9188,9247]},null,[],["seq",{"sourceInterval":[9208,9247]},["alt",{"sourceInterval":[9209,9220]},["terminal",{"sourceInterval":[9209,9213]},"0o"],["terminal",{"sourceInterval":[9216,9220]},"0O"]],["app",{"sourceInterval":[9222,9230]},"octDigit",[]],["star",{"sourceInterval":[9231,9247]},["seq",{"sourceInterval":[9232,9245]},["opt",{"sourceInterval":[9232,9236]},["terminal",{"sourceInterval":[9232,9235]},"_"]],["app",{"sourceInterval":[9237,9245]},"octDigit",[]]]]]],"binDigit":["define",{"sourceInterval":[9252,9272]},null,[],["alt",{"sourceInterval":[9263,9272]},["terminal",{"sourceInterval":[9263,9266]},"0"],["terminal",{"sourceInterval":[9269,9272]},"1"]]],"octDigit":["define",{"sourceInterval":[9277,9296]},null,[],["range",{"sourceInterval":[9288,9296]},"0","7"]],"nonZeroDigit":["define",{"sourceInterval":[9301,9324]},null,[],["range",{"sourceInterval":[9316,9324]},"1","9"]],"letterAsciiLC":["define",{"sourceInterval":[9345,9369]},null,[],["range",{"sourceInterval":[9361,9369]},"a","z"]],"letterAsciiUC":["define",{"sourceInterval":[9374,9398]},null,[],["range",{"sourceInterval":[9390,9398]},"A","Z"]],"letterAscii":["define",{"sourceInterval":[9403,9446]},null,[],["alt",{"sourceInterval":[9417,9446]},["app",{"sourceInterval":[9417,9430]},"letterAsciiLC",[]],["app",{"sourceInterval":[9433,9446]},"letterAsciiUC",[]]]],"letterComment":["define",{"sourceInterval":[9451,9510]},null,[],["alt",{"sourceInterval":[9467,9510]},["app",{"sourceInterval":[9467,9480]},"letterAsciiLC",[]],["app",{"sourceInterval":[9483,9496]},"letterAsciiUC",[]],["app",{"sourceInterval":[9499,9504]},"digit",[]],["terminal",{"sourceInterval":[9507,9510]},"_"]]],"idStart":["define",{"sourceInterval":[9534,9561]},null,[],["alt",{"sourceInterval":[9544,9561]},["app",{"sourceInterval":[9544,9555]},"letterAscii",[]],["terminal",{"sourceInterval":[9558,9561]},"_"]]],"idPart":["define",{"sourceInterval":[9566,9600]},null,[],["alt",{"sourceInterval":[9575,9600]},["app",{"sourceInterval":[9575,9586]},"letterAscii",[]],["app",{"sourceInterval":[9589,9594]},"digit",[]],["terminal",{"sourceInterval":[9597,9600]},"_"]]],"id":["define",{"sourceInterval":[9605,9643]},null,[],["seq",{"sourceInterval":[9610,9643]},["not",{"sourceInterval":[9610,9623]},["app",{"sourceInterval":[9611,9623]},"reservedWord",[]]],["lex",{"sourceInterval":[9624,9632]},["app",{"sourceInterval":[9625,9632]},"idStart",[]]],["lex",{"sourceInterval":[9633,9643]},["star",{"sourceInterval":[9635,9642]},["app",{"sourceInterval":[9635,9641]},"idPart",[]]]]]],"funcLetter":["define",{"sourceInterval":[9664,9725]},null,[],["alt",{"sourceInterval":[9677,9725]},["app",{"sourceInterval":[9677,9688]},"letterAscii",[]],["terminal",{"sourceInterval":[9691,9694]},"_"],["terminal",{"sourceInterval":[9697,9700]},"'"],["terminal",{"sourceInterval":[9703,9706]},"?"],["terminal",{"sourceInterval":[9709,9712]},"!"],["terminal",{"sourceInterval":[9715,9719]},"::"],["terminal",{"sourceInterval":[9722,9725]},"&"]]],"funcId":["define",{"sourceInterval":[9730,9772]},null,[],["seq",{"sourceInterval":[9739,9772]},["app",{"sourceInterval":[9739,9749]},"funcLetter",[]],["star",{"sourceInterval":[9750,9772]},["lex",{"sourceInterval":[9750,9771]},["alt",{"sourceInterval":[9752,9770]},["app",{"sourceInterval":[9752,9762]},"funcLetter",[]],["app",{"sourceInterval":[9765,9770]},"digit",[]]]]]]],"boolLiteral":["define",{"sourceInterval":[9798,9838]},null,[],["seq",{"sourceInterval":[9812,9838]},["alt",{"sourceInterval":[9813,9829]},["terminal",{"sourceInterval":[9813,9819]},"true"],["terminal",{"sourceInterval":[9822,9829]},"false"]],["not",{"sourceInterval":[9831,9838]},["app",{"sourceInterval":[9832,9838]},"idPart",[]]]]],"stringLiteral":["define",{"sourceInterval":[9866,9935]},null,[],["seq",{"sourceInterval":[9882,9935]},["terminal",{"sourceInterval":[9882,9886]},"\""],["star",{"sourceInterval":[9887,9930]},["alt",{"sourceInterval":[9888,9928]},["app",{"sourceInterval":[9888,9911]},"nonQuoteOrBackslashChar",[]],["app",{"sourceInterval":[9914,9928]},"escapeSequence",[]]]],["terminal",{"sourceInterval":[9931,9935]},"\""]]],"nonQuoteOrBackslashChar":["define",{"sourceInterval":[9940,9984]},null,[],["seq",{"sourceInterval":[9966,9984]},["not",{"sourceInterval":[9966,9980]},["alt",{"sourceInterval":[9968,9979]},["terminal",{"sourceInterval":[9968,9972]},"\""],["terminal",{"sourceInterval":[9975,9979]},"\\"]]],["app",{"sourceInterval":[9981,9984]},"any",[]]]],"escapeSequence_backslash":["define",{"sourceInterval":[10006,10025]},null,[],["terminal",{"sourceInterval":[10006,10012]},"\\\\"]],"escapeSequence_doubleQuote":["define",{"sourceInterval":[10047,10068]},null,[],["terminal",{"sourceInterval":[10047,10053]},"\\\""]],"escapeSequence_newline":["define",{"sourceInterval":[10090,10106]},null,[],["terminal",{"sourceInterval":[10090,10095]},"\\n"]],"escapeSequence_carriageReturn":["define",{"sourceInterval":[10128,10151]},null,[],["terminal",{"sourceInterval":[10128,10133]},"\\r"]],"escapeSequence_tab":["define",{"sourceInterval":[10173,10185]},null,[],["terminal",{"sourceInterval":[10173,10178]},"\\t"]],"escapeSequence_verticalTab":["define",{"sourceInterval":[10207,10227]},null,[],["terminal",{"sourceInterval":[10207,10212]},"\\v"]],"escapeSequence_backspace":["define",{"sourceInterval":[10249,10267]},null,[],["terminal",{"sourceInterval":[10249,10254]},"\\b"]],"escapeSequence_formFeed":["define",{"sourceInterval":[10289,10306]},null,[],["terminal",{"sourceInterval":[10289,10294]},"\\f"]],"escapeSequence_unicodeCodePoint":["define",{"sourceInterval":[10328,10417]},null,[],["seq",{"sourceInterval":[10328,10397]},["terminal",{"sourceInterval":[10328,10334]},"\\u{"],["app",{"sourceInterval":[10335,10343]},"hexDigit",[]],["opt",{"sourceInterval":[10344,10353]},["app",{"sourceInterval":[10344,10352]},"hexDigit",[]]],["opt",{"sourceInterval":[10354,10363]},["app",{"sourceInterval":[10354,10362]},"hexDigit",[]]],["opt",{"sourceInterval":[10364,10373]},["app",{"sourceInterval":[10364,10372]},"hexDigit",[]]],["opt",{"sourceInterval":[10374,10383]},["app",{"sourceInterval":[10374,10382]},"hexDigit",[]]],["opt",{"sourceInterval":[10384,10393]},["app",{"sourceInterval":[10384,10392]},"hexDigit",[]]],["terminal",{"sourceInterval":[10394,10397]},"}"]]],"escapeSequence_unicodeEscape":["define",{"sourceInterval":[10439,10497]},null,[],["seq",{"sourceInterval":[10439,10480]},["terminal",{"sourceInterval":[10439,10444]},"\\u"],["app",{"sourceInterval":[10445,10453]},"hexDigit",[]],["app",{"sourceInterval":[10454,10462]},"hexDigit",[]],["app",{"sourceInterval":[10463,10471]},"hexDigit",[]],["app",{"sourceInterval":[10472,10480]},"hexDigit",[]]]],"escapeSequence_hexEscape":["define",{"sourceInterval":[10519,10555]},null,[],["seq",{"sourceInterval":[10519,10542]},["terminal",{"sourceInterval":[10519,10524]},"\\x"],["app",{"sourceInterval":[10525,10533]},"hexDigit",[]],["app",{"sourceInterval":[10534,10542]},"hexDigit",[]]]],"escapeSequence":["define",{"sourceInterval":[9989,10555]},null,[],["alt",{"sourceInterval":[10006,10555]},["app",{"sourceInterval":[10006,10012]},"escapeSequence_backslash",[]],["app",{"sourceInterval":[10047,10053]},"escapeSequence_doubleQuote",[]],["app",{"sourceInterval":[10090,10095]},"escapeSequence_newline",[]],["app",{"sourceInterval":[10128,10133]},"escapeSequence_carriageReturn",[]],["app",{"sourceInterval":[10173,10178]},"escapeSequence_tab",[]],["app",{"sourceInterval":[10207,10212]},"escapeSequence_verticalTab",[]],["app",{"sourceInterval":[10249,10254]},"escapeSequence_backspace",[]],["app",{"sourceInterval":[10289,10294]},"escapeSequence_formFeed",[]],["app",{"sourceInterval":[10328,10397]},"escapeSequence_unicodeCodePoint",[]],["app",{"sourceInterval":[10439,10480]},"escapeSequence_unicodeEscape",[]],["app",{"sourceInterval":[10519,10542]},"escapeSequence_hexEscape",[]]]],"keyword":["define",{"sourceInterval":[10608,11121]},null,[],["alt",{"sourceInterval":[10618,11121]},["app",{"sourceInterval":[10618,10621]},"fun",[]],["app",{"sourceInterval":[10637,10640]},"let",[]],["app",{"sourceInterval":[10655,10661]},"return",[]],["app",{"sourceInterval":[10677,10683]},"extend",[]],["app",{"sourceInterval":[10699,10705]},"native",[]],["app",{"sourceInterval":[10721,10727]},"public",[]],["app",{"sourceInterval":[10743,10747]},"null",[]],["app",{"sourceInterval":[10763,10765]},"if",[]],["app",{"sourceInterval":[10781,10785]},"else",[]],["app",{"sourceInterval":[10801,10806]},"while",[]],["app",{"sourceInterval":[10822,10828]},"repeat",[]],["app",{"sourceInterval":[10844,10846]},"do",[]],["app",{"sourceInterval":[10862,10867]},"until",[]],["app",{"sourceInterval":[10883,10885]},"as",[]],["app",{"sourceInterval":[10902,10909]},"mutates",[]],["app",{"sourceInterval":[10924,10931]},"extends",[]],["app",{"sourceInterval":[10946,10952]},"import",[]],["app",{"sourceInterval":[10967,10971]},"with",[]],["app",{"sourceInterval":[10986,10991]},"trait",[]],["app",{"sourceInterval":[11006,11012]},"initOf",[]],["app",{"sourceInterval":[11027,11035]},"override",[]],["app",{"sourceInterval":[11050,11058]},"abstract",[]],["app",{"sourceInterval":[11073,11080]},"virtual",[]],["app",{"sourceInterval":[11095,11101]},"inline",[]],["app",{"sourceInterval":[11116,11121]},"const",[]]]],"contract":["define",{"sourceInterval":[11126,11155]},null,[],["seq",{"sourceInterval":[11137,11155]},["terminal",{"sourceInterval":[11137,11147]},"contract"],["not",{"sourceInterval":[11148,11155]},["app",{"sourceInterval":[11149,11155]},"idPart",[]]]]],"let":["define",{"sourceInterval":[11160,11179]},null,[],["seq",{"sourceInterval":[11166,11179]},["terminal",{"sourceInterval":[11166,11171]},"let"],["not",{"sourceInterval":[11172,11179]},["app",{"sourceInterval":[11173,11179]},"idPart",[]]]]],"fun":["define",{"sourceInterval":[11184,11203]},null,[],["seq",{"sourceInterval":[11190,11203]},["terminal",{"sourceInterval":[11190,11195]},"fun"],["not",{"sourceInterval":[11196,11203]},["app",{"sourceInterval":[11197,11203]},"idPart",[]]]]],"return":["define",{"sourceInterval":[11208,11233]},null,[],["seq",{"sourceInterval":[11217,11233]},["terminal",{"sourceInterval":[11217,11225]},"return"],["not",{"sourceInterval":[11226,11233]},["app",{"sourceInterval":[11227,11233]},"idPart",[]]]]],"extend":["define",{"sourceInterval":[11238,11263]},null,[],["seq",{"sourceInterval":[11247,11263]},["terminal",{"sourceInterval":[11247,11255]},"extend"],["not",{"sourceInterval":[11256,11263]},["app",{"sourceInterval":[11257,11263]},"idPart",[]]]]],"native":["define",{"sourceInterval":[11268,11293]},null,[],["seq",{"sourceInterval":[11277,11293]},["terminal",{"sourceInterval":[11277,11285]},"native"],["not",{"sourceInterval":[11286,11293]},["app",{"sourceInterval":[11287,11293]},"idPart",[]]]]],"public":["define",{"sourceInterval":[11298,11323]},null,[],["seq",{"sourceInterval":[11307,11323]},["terminal",{"sourceInterval":[11307,11315]},"public"],["not",{"sourceInterval":[11316,11323]},["app",{"sourceInterval":[11317,11323]},"idPart",[]]]]],"null":["define",{"sourceInterval":[11328,11349]},null,[],["seq",{"sourceInterval":[11335,11349]},["terminal",{"sourceInterval":[11335,11341]},"null"],["not",{"sourceInterval":[11342,11349]},["app",{"sourceInterval":[11343,11349]},"idPart",[]]]]],"if":["define",{"sourceInterval":[11354,11371]},null,[],["seq",{"sourceInterval":[11359,11371]},["terminal",{"sourceInterval":[11359,11363]},"if"],["not",{"sourceInterval":[11364,11371]},["app",{"sourceInterval":[11365,11371]},"idPart",[]]]]],"else":["define",{"sourceInterval":[11376,11397]},null,[],["seq",{"sourceInterval":[11383,11397]},["terminal",{"sourceInterval":[11383,11389]},"else"],["not",{"sourceInterval":[11390,11397]},["app",{"sourceInterval":[11391,11397]},"idPart",[]]]]],"while":["define",{"sourceInterval":[11402,11425]},null,[],["seq",{"sourceInterval":[11410,11425]},["terminal",{"sourceInterval":[11410,11417]},"while"],["not",{"sourceInterval":[11418,11425]},["app",{"sourceInterval":[11419,11425]},"idPart",[]]]]],"repeat":["define",{"sourceInterval":[11430,11455]},null,[],["seq",{"sourceInterval":[11439,11455]},["terminal",{"sourceInterval":[11439,11447]},"repeat"],["not",{"sourceInterval":[11448,11455]},["app",{"sourceInterval":[11449,11455]},"idPart",[]]]]],"do":["define",{"sourceInterval":[11460,11477]},null,[],["seq",{"sourceInterval":[11465,11477]},["terminal",{"sourceInterval":[11465,11469]},"do"],["not",{"sourceInterval":[11470,11477]},["app",{"sourceInterval":[11471,11477]},"idPart",[]]]]],"until":["define",{"sourceInterval":[11482,11505]},null,[],["seq",{"sourceInterval":[11490,11505]},["terminal",{"sourceInterval":[11490,11497]},"until"],["not",{"sourceInterval":[11498,11505]},["app",{"sourceInterval":[11499,11505]},"idPart",[]]]]],"as":["define",{"sourceInterval":[11510,11527]},null,[],["seq",{"sourceInterval":[11515,11527]},["terminal",{"sourceInterval":[11515,11519]},"as"],["not",{"sourceInterval":[11520,11527]},["app",{"sourceInterval":[11521,11527]},"idPart",[]]]]],"mutates":["define",{"sourceInterval":[11532,11559]},null,[],["seq",{"sourceInterval":[11542,11559]},["terminal",{"sourceInterval":[11542,11551]},"mutates"],["not",{"sourceInterval":[11552,11559]},["app",{"sourceInterval":[11553,11559]},"idPart",[]]]]],"extends":["define",{"sourceInterval":[11564,11591]},null,[],["seq",{"sourceInterval":[11574,11591]},["terminal",{"sourceInterval":[11574,11583]},"extends"],["not",{"sourceInterval":[11584,11591]},["app",{"sourceInterval":[11585,11591]},"idPart",[]]]]],"import":["define",{"sourceInterval":[11596,11621]},null,[],["seq",{"sourceInterval":[11605,11621]},["terminal",{"sourceInterval":[11605,11613]},"import"],["not",{"sourceInterval":[11614,11621]},["app",{"sourceInterval":[11615,11621]},"idPart",[]]]]],"with":["define",{"sourceInterval":[11626,11647]},null,[],["seq",{"sourceInterval":[11633,11647]},["terminal",{"sourceInterval":[11633,11639]},"with"],["not",{"sourceInterval":[11640,11647]},["app",{"sourceInterval":[11641,11647]},"idPart",[]]]]],"trait":["define",{"sourceInterval":[11652,11675]},null,[],["seq",{"sourceInterval":[11660,11675]},["terminal",{"sourceInterval":[11660,11667]},"trait"],["not",{"sourceInterval":[11668,11675]},["app",{"sourceInterval":[11669,11675]},"idPart",[]]]]],"initOf":["define",{"sourceInterval":[11680,11705]},null,[],["seq",{"sourceInterval":[11689,11705]},["terminal",{"sourceInterval":[11689,11697]},"initOf"],["not",{"sourceInterval":[11698,11705]},["app",{"sourceInterval":[11699,11705]},"idPart",[]]]]],"virtual":["define",{"sourceInterval":[11710,11737]},null,[],["seq",{"sourceInterval":[11720,11737]},["terminal",{"sourceInterval":[11720,11729]},"virtual"],["not",{"sourceInterval":[11730,11737]},["app",{"sourceInterval":[11731,11737]},"idPart",[]]]]],"override":["define",{"sourceInterval":[11742,11771]},null,[],["seq",{"sourceInterval":[11753,11771]},["terminal",{"sourceInterval":[11753,11763]},"override"],["not",{"sourceInterval":[11764,11771]},["app",{"sourceInterval":[11765,11771]},"idPart",[]]]]],"inline":["define",{"sourceInterval":[11776,11801]},null,[],["seq",{"sourceInterval":[11785,11801]},["terminal",{"sourceInterval":[11785,11793]},"inline"],["not",{"sourceInterval":[11794,11801]},["app",{"sourceInterval":[11795,11801]},"idPart",[]]]]],"const":["define",{"sourceInterval":[11806,11829]},null,[],["seq",{"sourceInterval":[11814,11829]},["terminal",{"sourceInterval":[11814,11821]},"const"],["not",{"sourceInterval":[11822,11829]},["app",{"sourceInterval":[11823,11829]},"idPart",[]]]]],"abstract":["define",{"sourceInterval":[11834,11863]},null,[],["seq",{"sourceInterval":[11845,11863]},["terminal",{"sourceInterval":[11845,11855]},"abstract"],["not",{"sourceInterval":[11856,11863]},["app",{"sourceInterval":[11857,11863]},"idPart",[]]]]],"nameAttribute":["define",{"sourceInterval":[11887,11910]},null,[],["terminal",{"sourceInterval":[11903,11910]},"@name"]],"reservedWord":["define",{"sourceInterval":[11932,11954]},null,[],["app",{"sourceInterval":[11947,11954]},"keyword",[]]],"space":["extend",{"sourceInterval":[11976,12009]},null,[],["alt",{"sourceInterval":[11985,12009]},["app",{"sourceInterval":[11985,11992]},"comment",[]],["app",{"sourceInterval":[11995,12009]},"lineTerminator",[]]]],"comment":["define",{"sourceInterval":[12014,12060]},null,[],["alt",{"sourceInterval":[12024,12060]},["app",{"sourceInterval":[12024,12040]},"multiLineComment",[]],["app",{"sourceInterval":[12043,12060]},"singleLineComment",[]]]],"lineTerminator":["define",{"sourceInterval":[12065,12115]},null,[],["alt",{"sourceInterval":[12082,12115]},["terminal",{"sourceInterval":[12082,12086]},"\n"],["terminal",{"sourceInterval":[12089,12093]},"\r"],["terminal",{"sourceInterval":[12096,12104]},"\u2028"],["terminal",{"sourceInterval":[12107,12115]},"\u2029"]]],"multiLineComment":["define",{"sourceInterval":[12120,12161]},null,[],["seq",{"sourceInterval":[12139,12161]},["terminal",{"sourceInterval":[12139,12143]},"/*"],["star",{"sourceInterval":[12144,12156]},["seq",{"sourceInterval":[12145,12154]},["not",{"sourceInterval":[12145,12150]},["terminal",{"sourceInterval":[12146,12150]},"*/"]],["app",{"sourceInterval":[12151,12154]},"any",[]]]],["terminal",{"sourceInterval":[12157,12161]},"*/"]]],"singleLineComment":["define",{"sourceInterval":[12166,12213]},null,[],["seq",{"sourceInterval":[12186,12213]},["terminal",{"sourceInterval":[12186,12190]},"//"],["star",{"sourceInterval":[12191,12213]},["seq",{"sourceInterval":[12192,12211]},["not",{"sourceInterval":[12192,12207]},["app",{"sourceInterval":[12193,12207]},"lineTerminator",[]]],["app",{"sourceInterval":[12208,12211]},"any",[]]]]]]}]);module.exports=result; \ No newline at end of file diff --git a/src/grammar/grammar.ts b/src/grammar/grammar.ts index 543e98310..364db994f 100644 --- a/src/grammar/grammar.ts +++ b/src/grammar/grammar.ts @@ -107,7 +107,24 @@ semantics.addOperation("resolve_program_item", { ref: createRef(this), }); }, - Contract_withTraits(arg0, _arg1, arg2, _arg3, arg4, _arg5, arg6, _arg7) { + Contract_withTraits( + arg0, + _arg1, + arg2, + _arg3, + arg4, + arg5, + _arg6, + arg7, + _arg8, + ) { + if (arg4.source.contents === "" && arg5.sourceString === ",") { + throwError( + "Empty inherited traits list should not have a dangling comma.", + createRef(arg5), + ); + } + checkVariableName(arg2.sourceString, createRef(arg2)); return createNode({ kind: "def_contract", @@ -116,7 +133,7 @@ semantics.addOperation("resolve_program_item", { attributes: arg0.children.map((v) => v.resolve_contract_attributes(), ), - declarations: arg6.children.map((v) => v.resolve_declaration()), + declarations: arg7.children.map((v) => v.resolve_declaration()), traits: arg4 .asIteration() .children.map((v) => v.resolve_expression()), @@ -137,7 +154,14 @@ semantics.addOperation("resolve_program_item", { ref: createRef(this), }); }, - Trait_withTraits(arg0, _arg1, arg2, _arg3, arg4, _arg5, arg6, _arg7) { + Trait_withTraits(arg0, _arg1, arg2, _arg3, arg4, arg5, _arg6, arg7, _arg8) { + if (arg4.source.contents === "" && arg5.sourceString === ",") { + throwError( + "Empty inherited traits list should not have a dangling comma.", + createRef(arg5), + ); + } + checkVariableName(arg2.sourceString, createRef(arg2)); return createNode({ kind: "def_trait", @@ -146,7 +170,7 @@ semantics.addOperation("resolve_program_item", { attributes: arg0.children.map((v) => v.resolve_contract_attributes(), ), - declarations: arg6.children.map((v) => v.resolve_declaration()), + declarations: arg7.children.map((v) => v.resolve_declaration()), traits: arg4 .asIteration() .children.map((v) => v.resolve_expression()), @@ -539,13 +563,20 @@ semantics.addOperation("resolve_declaration", { ref: createRef(this), }); }, - ContractInit(_arg0, _arg1, arg2, _arg3, _arg4, arg5, _arg6) { + ContractInit(_arg0, _arg1, arg2, arg3, _arg4, _arg5, arg6, _arg7) { + if (arg2.source.contents === "" && arg3.sourceString === ",") { + throwError( + "Empty parameter list should not have a dangling comma.", + createRef(arg3), + ); + } + return createNode({ kind: "def_init_function", args: arg2 .asIteration() .children.map((v) => v.resolve_declaration()), - statements: arg5.children.map((v) => v.resolve_statement()), + statements: arg6.children.map((v) => v.resolve_statement()), ref: createRef(this), }); }, diff --git a/src/grammar/test-failed/case-27.tact b/src/grammar/test-failed/case-27.tact new file mode 100644 index 000000000..517b4425a --- /dev/null +++ b/src/grammar/test-failed/case-27.tact @@ -0,0 +1 @@ +contract Name with, {} diff --git a/src/grammar/test-failed/case-28.tact b/src/grammar/test-failed/case-28.tact new file mode 100644 index 000000000..2335e156f --- /dev/null +++ b/src/grammar/test-failed/case-28.tact @@ -0,0 +1 @@ +trait Name with, {} diff --git a/src/grammar/test-failed/case-29.tact b/src/grammar/test-failed/case-29.tact new file mode 100644 index 000000000..4c4589a84 --- /dev/null +++ b/src/grammar/test-failed/case-29.tact @@ -0,0 +1,3 @@ +contract Name { + init(,) {} +} diff --git a/src/grammar/test/case-22.tact b/src/grammar/test/case-22.tact index 085d0810b..e5f6f9a0c 100644 --- a/src/grammar/test/case-22.tact +++ b/src/grammar/test/case-22.tact @@ -1,9 +1,13 @@ primitive Int; -trait SomeTrait { +trait OtherTrait { + c: Int; +} + +trait SomeTrait with OtherTrait, { a: Int; } -contract Main with SomeTrait { +contract Main with SomeTrait, { b: Int; -} \ No newline at end of file +} diff --git a/src/grammar/test/case-25.tact b/src/grammar/test/case-25.tact index dd2bfcd1e..ed53cd191 100644 --- a/src/grammar/test/case-25.tact +++ b/src/grammar/test/case-25.tact @@ -36,7 +36,10 @@ fun oneMoreFunction( } contract TestContract { - init(arg1: Int, arg2: Int) {} + init( + arg1: Int, + arg2: Int, + ) {} } fun test() { From 60bc5c610a440101d1a699e95c137bcb92556036 Mon Sep 17 00:00:00 2001 From: Novus Nota <68142933+novusnota@users.noreply.github.com> Date: Sat, 13 Apr 2024 00:13:46 +0200 Subject: [PATCH 3/5] chore: Update CHANGELOG --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8c1968d25..a4f859743 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,7 +19,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed - Update the `dump` function to handle addresses: PR [#175](https://github.com/tact-lang/tact/pull/175) -- Support trailing commas for struct fields and function arguments: PR [#179](https://github.com/tact-lang/tact/pull/179) +- Support trailing commas in all comma-separated lists (struct instance fields, `initOf` arguments, `init()` parameters, inherited traits via `with`, function arguments and parameters): PR [#179](https://github.com/tact-lang/tact/pull/179) and PR [#246](https://github.com/tact-lang/tact/pull/246) - The implicit empty `init` function is now present by default in the contract if not declared: PR [#167](https://github.com/tact-lang/tact/pull/167) - `@stdlib/stoppable` now imports `@stdlib/ownable` so the programmer does not have to do it separately: PR [#193](https://github.com/tact-lang/tact/pull/193) - Support escape sequences for strings (`\\`, `\"`, `\n`, `\r`, `\t`, `\v`, `\b`, `\f`, `\u{0}` through `\u{FFFFFF}`, `\u0000` through `\uFFFF`, `\x00` through `\xFF`): PR [#192](https://github.com/tact-lang/tact/pull/192) From 7145b5dfd3b0e4a2c8546056ea49d19c479545fc Mon Sep 17 00:00:00 2001 From: Novus Nota <68142933+novusnota@users.noreply.github.com> Date: Sat, 13 Apr 2024 15:21:56 +0200 Subject: [PATCH 4/5] chore: `yarn all` for running everything besides installing dependencies --- package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 0cd3ebbaa..8e971d184 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,8 @@ "release": "yarn clean && yarn build && yarn coverage && yarn release-it --npm.yarn1", "lint": "yarn eslint .", "lint:schema": "ajv validate -s grammar/configSchema.json -d tact.config.json", - "fmt:check": "yarn prettier --check ." + "fmt:check": "yarn prettier --check .", + "all": "yarn clean && yarn gen && yarn build && yarn coverage && yarn lint && yarn fmt:check" }, "files": [ "dist/**/*", From 1e6e0a1ca123ac9f73274d89933d6d9333998407 Mon Sep 17 00:00:00 2001 From: Novus Nota <68142933+novusnota@users.noreply.github.com> Date: Sat, 13 Apr 2024 15:25:26 +0200 Subject: [PATCH 5/5] fix: Prohibited empty inherited trait lists See: #247 --- CHANGELOG.md | 3 +- .../__snapshots__/grammar.spec.ts.snap | 22 +++++++++++++-- src/grammar/grammar.ohm | 4 +-- src/grammar/grammar.ohm-bundle.js | 2 +- src/grammar/grammar.ts | 28 ++++++++----------- src/grammar/test-failed/case-30.tact | 1 + src/grammar/test-failed/case-31.tact | 1 + 7 files changed, 39 insertions(+), 22 deletions(-) create mode 100644 src/grammar/test-failed/case-30.tact create mode 100644 src/grammar/test-failed/case-31.tact diff --git a/CHANGELOG.md b/CHANGELOG.md index a4f859743..cc1190fd1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,7 +19,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed - Update the `dump` function to handle addresses: PR [#175](https://github.com/tact-lang/tact/pull/175) -- Support trailing commas in all comma-separated lists (struct instance fields, `initOf` arguments, `init()` parameters, inherited traits via `with`, function arguments and parameters): PR [#179](https://github.com/tact-lang/tact/pull/179) and PR [#246](https://github.com/tact-lang/tact/pull/246) +- Support trailing commas in all comma-separated lists (struct instantiations, `initOf` arguments, `init()` parameters, inherited traits via `with`, function arguments and parameters): PR [#179](https://github.com/tact-lang/tact/pull/179) and PR [#246](https://github.com/tact-lang/tact/pull/246) - The implicit empty `init` function is now present by default in the contract if not declared: PR [#167](https://github.com/tact-lang/tact/pull/167) - `@stdlib/stoppable` now imports `@stdlib/ownable` so the programmer does not have to do it separately: PR [#193](https://github.com/tact-lang/tact/pull/193) - Support escape sequences for strings (`\\`, `\"`, `\n`, `\r`, `\t`, `\v`, `\b`, `\f`, `\u{0}` through `\u{FFFFFF}`, `\u0000` through `\uFFFF`, `\x00` through `\xFF`): PR [#192](https://github.com/tact-lang/tact/pull/192) @@ -28,6 +28,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Incorrect "already exists" errors when using names such as `toString` or `valueOf`: PR [#208](https://github.com/tact-lang/tact/pull/208) - Escape backticks in error messages for generated TypeScript code: PR [#192](https://github.com/tact-lang/tact/pull/192) +- Empty inherited trait lists after `with` keyword are now disallowed: PR [#246](https://github.com/tact-lang/tact/pull/246) ## [1.2.0] - 2024-02-29 diff --git a/src/grammar/__snapshots__/grammar.spec.ts.snap b/src/grammar/__snapshots__/grammar.spec.ts.snap index 3691e96d0..ae2527b8f 100644 --- a/src/grammar/__snapshots__/grammar.spec.ts.snap +++ b/src/grammar/__snapshots__/grammar.spec.ts.snap @@ -255,7 +255,7 @@ Line 2, col 31: `; exports[`grammar should fail case-27 1`] = ` -":1:19: Empty inherited traits list should not have a dangling comma. +":1:19: Syntax error: expected "_", "A".."Z", or "a".."z" Line 1, col 19: > 1 | contract Name with, {} ^ @@ -264,7 +264,7 @@ Line 1, col 19: `; exports[`grammar should fail case-28 1`] = ` -":1:16: Empty inherited traits list should not have a dangling comma. +":1:16: Syntax error: expected "_", "A".."Z", or "a".."z" Line 1, col 16: > 1 | trait Name with, {} ^ @@ -282,6 +282,24 @@ Line 2, col 10: " `; +exports[`grammar should fail case-30 1`] = ` +":1:20: Syntax error: expected "_", "A".."Z", or "a".."z" +Line 1, col 20: +> 1 | contract Name with {} + ^ + 2 | +" +`; + +exports[`grammar should fail case-31 1`] = ` +":1:17: Syntax error: expected "_", "A".."Z", or "a".."z" +Line 1, col 17: +> 1 | trait Name with {} + ^ + 2 | +" +`; + exports[`grammar should parse case-0 1`] = ` { "entries": [ diff --git a/src/grammar/grammar.ohm b/src/grammar/grammar.ohm index bac1738ad..2465b7f87 100644 --- a/src/grammar/grammar.ohm +++ b/src/grammar/grammar.ohm @@ -45,7 +45,7 @@ Tact { // Contract Contract = ContractAttribute* contract id "{" ContractBody* "}" --simple - | ContractAttribute* contract id with ListOf ","? "{" ContractBody* "}" --withTraits + | ContractAttribute* contract id with NonemptyListOf ","? "{" ContractBody* "}" --withTraits ContractInit = "init" "(" ListOf ","? ")" "{" Statement* "}" ContractBody = Field | ContractInit @@ -55,7 +55,7 @@ Tact { // Trait Trait = ContractAttribute* trait id "{" TraitBody* "}" --originary - | ContractAttribute* trait id with ListOf ","? "{" TraitBody* "}" --withTraits + | ContractAttribute* trait id with NonemptyListOf ","? "{" TraitBody* "}" --withTraits TraitBody = Field | ReceiveFunction | Function diff --git a/src/grammar/grammar.ohm-bundle.js b/src/grammar/grammar.ohm-bundle.js index 8f11e0a8c..78e908a7c 100644 --- a/src/grammar/grammar.ohm-bundle.js +++ b/src/grammar/grammar.ohm-bundle.js @@ -1 +1 @@ -'use strict';const ohm=(require('ohm-js').default || require('ohm-js'));const result=ohm.makeRecipe(["grammar",{"source":"Tact {\n\n // Starting point of the program\n Program = ProgramItem*\n ProgramItem = Struct\n | Contract\n | Primitive\n | StaticFunction\n | NativeFunction\n | ProgramImport\n | Trait\n | Constant\n ProgramImport = import stringLiteral \";\"\n\n // Built-in declarations\n Primitive = \"primitive\" Type \";\"\n\n // Static function\n StaticFunction = Function\n NativeFunction = nameAttribute \"(\" funcId \")\" FunctionAttribute* native id \"(\" ListOf \",\"? \")\" \";\" --withVoid\n | nameAttribute \"(\" funcId \")\" FunctionAttribute* native id \"(\" ListOf \",\"? \")\" \":\" Type \";\" --withType\n \n // Field declarations\n Type = typeLiteral \"?\" --optional\n | typeLiteral --required\n | \"map\" \"<\" typeLiteral (as id)? \",\" typeLiteral (as id)? \">\" --map\n | \"bounced\" \"<\" typeLiteral \">\" --bounced\n Field = id \":\" Type \";\" --default\n | id \":\" Type \"=\" Expression \";\" --defaultWithInit\n | id \":\" Type as id \";\" --withSerialization\n | id \":\" Type as id \"=\" Expression \";\" --withSerializationAndInit\n \n // Constant\n ConstantAttribute = virtual --virtual\n | override --override\n | abstract --abstract\n Constant = ConstantAttribute* ~fun const id \":\" Type \"=\" Expression \";\" --withValue\n | ConstantAttribute* ~fun const id \":\" Type \";\" --withEmpty\n\n // Struct\n Struct = \"struct\" typeLiteral \"{\" StructBody* \"}\" --originary\n | \"message\" typeLiteral \"{\" StructBody* \"}\" --message\n | \"message\" \"(\" integerLiteral \")\" typeLiteral \"{\" StructBody* \"}\" --messageWithId\n StructBody = Field\n\n // Contract\n Contract = ContractAttribute* contract id \"{\" ContractBody* \"}\" --simple\n | ContractAttribute* contract id with ListOf \",\"? \"{\" ContractBody* \"}\" --withTraits\n ContractInit = \"init\" \"(\" ListOf \",\"? \")\" \"{\" Statement* \"}\"\n ContractBody = Field\n | ContractInit\n | ReceiveFunction\n | Function\n | Constant\n \n // Trait\n Trait = ContractAttribute* trait id \"{\" TraitBody* \"}\" --originary\n | ContractAttribute* trait id with ListOf \",\"? \"{\" TraitBody* \"}\" --withTraits\n TraitBody = Field\n | ReceiveFunction\n | Function\n | Constant\n\n // Contract attributes\n ContractAttribute = \"@interface\" \"(\" stringLiteral \")\" --interface\n\n // Function\n FunctionAttribute = \"get\" --getter\n | mutates --mutates\n | extends --extends\n | virtual --virtual\n | override --override\n | inline --inline\n | abstract --abstract\n Function = FunctionAttribute* fun id \"(\" ListOf \",\"? \")\" \"{\" Statement* \"}\" --withVoid\n | FunctionAttribute* fun id \"(\" ListOf \",\"? \")\" \":\" Type \"{\" Statement* \"}\" --withType\n | FunctionAttribute* fun id \"(\" ListOf \",\"? \")\" \";\" --abstractVoid\n | FunctionAttribute* fun id \"(\" ListOf \",\"? \")\" \":\" Type \";\" --abstractType\n FunctionArg = id \":\" Type\n \n ReceiveFunction = \"receive\" \"(\" FunctionArg \")\" \"{\" Statement* \"}\" --simple\n | \"receive\" \"(\" \")\" \"{\" Statement* \"}\" --empty\n | \"receive\" \"(\" stringLiteral \")\" \"{\" Statement* \"}\" --comment\n | \"bounced\" \"(\" FunctionArg \")\" \"{\" Statement* \"}\" --bounced\n | \"external\" \"(\" FunctionArg \")\" \"{\" Statement* \"}\" --externalSimple\n | \"external\" \"(\" stringLiteral \")\" \"{\" Statement* \"}\" --externalComment\n | \"external\" \"(\" \")\" \"{\" Statement* \"}\" --externalEmpty\n\n // Statements\n Statement = StatementLet\n | StatementBlock\n | StatementReturn\n | StatementExpression\n | StatementAssign\n | StatementAugmentedAssign\n | StatementCondition\n | StatementWhile\n | StatementRepeat\n | StatementUntil\n StatementBlock = \"{\" Statement* \"}\"\n StatementLet = let id \":\" Type \"=\" Expression \";\"\n StatementReturn = return Expression \";\" --withExpression\n | return \";\" --withoutExpression \n StatementExpression = Expression \";\"\n StatementAssign = LValue \"=\" Expression \";\"\n StatementAugmentedAssign = StatementAugmentedAssignAdd\n | StatementAugmentedAssignSub\n | StatementAugmentedAssignMul\n | StatementAugmentedAssignDiv\n | StatementAugmentedAssignRem\n StatementAugmentedAssignAdd = LValue \"+=\" Expression \";\"\n StatementAugmentedAssignSub = LValue \"-=\" Expression \";\"\n StatementAugmentedAssignMul = LValue \"*=\" Expression \";\"\n StatementAugmentedAssignDiv = LValue \"/=\" Expression \";\"\n StatementAugmentedAssignRem = LValue \"%=\" Expression \";\"\n StatementCondition = if Expression \"{\" Statement* \"}\" ~else --simple\n | if Expression \"{\" Statement* \"}\" else \"{\" Statement* \"}\" --withElse\n | if Expression \"{\" Statement* \"}\" else StatementCondition --withElseIf\n StatementWhile = while \"(\" Expression \")\" \"{\" Statement* \"}\"\n StatementRepeat = repeat \"(\" Expression \")\" \"{\" Statement* \"}\"\n StatementUntil = do \"{\" Statement* \"}\" until \"(\" Expression \")\" \";\"\n\n // L-value\n LValue = id \".\" LValue --more\n | id --single\n\n // Expressions\n Expression = ExpressionConditional\n ExpressionConditional = ExpressionOr \"?\" ExpressionOr \":\" ExpressionConditional --ternary\n | ExpressionOr\n ExpressionOr = ExpressionOr \"||\" ExpressionAnd --or\n | ExpressionAnd\n ExpressionAnd = ExpressionAnd \"&&\" ExpressionCompare --and\n | ExpressionCompare\n ExpressionCompare = ExpressionCompare \"!=\" ExpressionBinary --not\n | ExpressionCompare \"==\" ExpressionBinary --eq\n | ExpressionCompare \">\" ExpressionBinary --gt\n | ExpressionCompare \">=\" ExpressionBinary --gte\n | ExpressionCompare \"<\" ExpressionBinary --lt\n | ExpressionCompare \"<=\" ExpressionBinary --lte\n | ExpressionBinary\n ExpressionBinary = ExpressionBinary \">>\" ExpressionAdd --shr\n | ExpressionBinary \"<<\" ExpressionAdd --shl\n | ExpressionBinary \"&\" ExpressionAdd --bin_and\n | ExpressionBinary \"|\" ExpressionAdd --bin_or\n | ExpressionAdd\n ExpressionAdd = ExpressionAdd \"+\" ~\"+\" ExpressionMul --add\n | ExpressionAdd \"-\" ~\"-\" ExpressionMul --sub\n | ExpressionMul\n ExpressionMul = ExpressionMul \"*\" ExpressionUnary --mul\n | ExpressionMul \"/\" ExpressionUnary --div\n | ExpressionMul \"%\" ExpressionUnary --rem\n | ExpressionUnary\n ExpressionUnary = \"-\" ExpressionUnarySuffix --neg\n | \"+\" ExpressionUnarySuffix --add\n | \"!\" ExpressionUnarySuffix --not\n | ExpressionUnarySuffix\n ExpressionUnarySuffix = ExpressionValue \"!!\" --notNull\n | ExpressionValue\n ExpressionBracket = \"(\" Expression \")\"\n\n // Order is important\n ExpressionValue = ExpressionCall\n | ExpressionField\n | ExpressionStaticCall\n | ExpressionBracket\n | ExpressionNew\n | integerLiteral\n | boolLiteral\n | id\n | null\n | ExpressionInitOf\n | ExpressionString\n ExpressionString = stringLiteral\n ExpressionField = ExpressionValue \".\" id ~\"(\"\n ExpressionCall = ExpressionValue \".\" id \"(\" ListOf \",\"? \")\"\n ExpressionNew = id \"{\" ListOf \",\"? \"}\"\n NewParameter = id \":\" Expression\n ExpressionStaticCall = id \"(\" ListOf \",\"? \")\"\n ExpressionInitOf = initOf id \"(\" ListOf \",\"? \")\"\n\n // Type Literal\n typeLiteral = letterAsciiUC typeLiteralPart*\n typeLiteralPart = letterAscii | digit | \"_\"\n\n // Integer Literal\n // hexDigit defined in Ohm's built-in rules (otherwise: hexDigit = \"0\"..\"9\" | \"a\"..\"f\" | \"A\"..\"F\")\n // digit defined in Ohm's built-in rules (otherwise: digit = \"0\"..\"9\")\n integerLiteral = integerLiteralHex | integerLiteralBin | integerLiteralOct | integerLiteralDec // Order is important\n integerLiteralDec = nonZeroDigit (\"_\"? digit)* --nonZeroIntegerLiteralDec\n | \"0\" digit* --integerLiteralWithLeadingZero\n integerLiteralHex = (\"0x\" | \"0X\") hexDigit (\"_\"? hexDigit)*\n integerLiteralBin = (\"0b\" | \"0B\") binDigit (\"_\"? binDigit)*\n integerLiteralOct = (\"0o\" | \"0O\") octDigit (\"_\"? octDigit)*\n binDigit = \"0\" | \"1\"\n octDigit = \"0\"..\"7\"\n nonZeroDigit = \"1\"..\"9\"\n\n // Letters\n letterAsciiLC = \"a\"..\"z\"\n letterAsciiUC = \"A\"..\"Z\"\n letterAscii = letterAsciiLC | letterAsciiUC\n letterComment = letterAsciiLC | letterAsciiUC | digit | \"_\"\n\n // ID Literal\n idStart = letterAscii | \"_\"\n idPart = letterAscii | digit | \"_\"\n id = ~reservedWord #idStart #(idPart*)\n\n // FunC id\n funcLetter = letterAscii | \"_\" | \"'\" | \"?\" | \"!\" | \"::\" | \"&\"\n funcId = funcLetter #(funcLetter | digit)*\n\n // Bool Literal\n boolLiteral = (\"true\" | \"false\") ~idPart\n\n // String literal\n stringLiteral = \"\\\"\" (nonQuoteOrBackslashChar | escapeSequence)* \"\\\"\"\n nonQuoteOrBackslashChar = ~(\"\\\"\" | \"\\\\\") any\n escapeSequence = \"\\\\\\\\\" -- backslash\n | \"\\\\\\\"\" -- doubleQuote\n | \"\\\\n\" -- newline\n | \"\\\\r\" -- carriageReturn\n | \"\\\\t\" -- tab\n | \"\\\\v\" -- verticalTab\n | \"\\\\b\" -- backspace\n | \"\\\\f\" -- formFeed\n | \"\\\\u{\" hexDigit hexDigit? hexDigit? hexDigit? hexDigit? hexDigit? \"}\" -- unicodeCodePoint\n | \"\\\\u\" hexDigit hexDigit hexDigit hexDigit -- unicodeEscape\n | \"\\\\x\" hexDigit hexDigit -- hexEscape\n\n // Keywords\n // NOTE Order is important\n keyword = fun \n | let\n | return \n | extend \n | native \n | public \n | null \n | if \n | else \n | while \n | repeat \n | do \n | until \n | as \n | mutates\n | extends\n | import\n | with\n | trait\n | initOf\n | override\n | abstract\n | virtual\n | inline\n | const\n contract = \"contract\" ~idPart\n let = \"let\" ~idPart\n fun = \"fun\" ~idPart\n return = \"return\" ~idPart\n extend = \"extend\" ~idPart\n native = \"native\" ~idPart\n public = \"public\" ~idPart\n null = \"null\" ~idPart\n if = \"if\" ~idPart\n else = \"else\" ~idPart\n while = \"while\" ~idPart\n repeat = \"repeat\" ~idPart\n do = \"do\" ~idPart\n until = \"until\" ~idPart\n as = \"as\" ~idPart\n mutates = \"mutates\" ~idPart\n extends = \"extends\" ~idPart\n import = \"import\" ~idPart\n with = \"with\" ~idPart\n trait = \"trait\" ~idPart\n initOf = \"initOf\" ~idPart\n virtual = \"virtual\" ~idPart\n override = \"override\" ~idPart\n inline = \"inline\" ~idPart\n const = \"const\" ~idPart\n abstract = \"abstract\" ~idPart\n\n // Attributes\n nameAttribute = \"@name\"\n\n // Reserved\n reservedWord = keyword\n\n // Comments\n space += comment | lineTerminator\n comment = multiLineComment | singleLineComment\n lineTerminator = \"\\n\" | \"\\r\" | \"\\u2028\" | \"\\u2029\"\n multiLineComment = \"/*\" (~\"*/\" any)* \"*/\"\n singleLineComment = \"//\" (~lineTerminator any)*\n}"},"Tact",null,"Program",{"Program":["define",{"sourceInterval":[49,71]},null,[],["star",{"sourceInterval":[59,71]},["app",{"sourceInterval":[59,70]},"ProgramItem",[]]]],"ProgramItem":["define",{"sourceInterval":[76,300]},null,[],["alt",{"sourceInterval":[90,300]},["app",{"sourceInterval":[90,96]},"Struct",[]],["app",{"sourceInterval":[115,123]},"Contract",[]],["app",{"sourceInterval":[142,151]},"Primitive",[]],["app",{"sourceInterval":[170,184]},"StaticFunction",[]],["app",{"sourceInterval":[203,217]},"NativeFunction",[]],["app",{"sourceInterval":[236,249]},"ProgramImport",[]],["app",{"sourceInterval":[268,273]},"Trait",[]],["app",{"sourceInterval":[292,300]},"Constant",[]]]],"ProgramImport":["define",{"sourceInterval":[305,345]},null,[],["seq",{"sourceInterval":[321,345]},["app",{"sourceInterval":[321,327]},"import",[]],["app",{"sourceInterval":[328,341]},"stringLiteral",[]],["terminal",{"sourceInterval":[342,345]},";"]]],"Primitive":["define",{"sourceInterval":[380,412]},null,[],["seq",{"sourceInterval":[392,412]},["terminal",{"sourceInterval":[392,403]},"primitive"],["app",{"sourceInterval":[404,408]},"Type",[]],["terminal",{"sourceInterval":[409,412]},";"]]],"StaticFunction":["define",{"sourceInterval":[441,466]},null,[],["app",{"sourceInterval":[458,466]},"Function",[]]],"NativeFunction_withVoid":["define",{"sourceInterval":[488,597]},null,[],["seq",{"sourceInterval":[488,586]},["app",{"sourceInterval":[488,501]},"nameAttribute",[]],["terminal",{"sourceInterval":[502,505]},"("],["app",{"sourceInterval":[506,512]},"funcId",[]],["terminal",{"sourceInterval":[513,516]},")"],["star",{"sourceInterval":[517,535]},["app",{"sourceInterval":[517,534]},"FunctionAttribute",[]]],["app",{"sourceInterval":[536,542]},"native",[]],["app",{"sourceInterval":[543,545]},"id",[]],["terminal",{"sourceInterval":[546,549]},"("],["app",{"sourceInterval":[550,573]},"ListOf",[["app",{"sourceInterval":[557,568]},"FunctionArg",[]],["terminal",{"sourceInterval":[569,572]},","]]],["opt",{"sourceInterval":[574,578]},["terminal",{"sourceInterval":[574,577]},","]],["terminal",{"sourceInterval":[579,582]},")"],["terminal",{"sourceInterval":[583,586]},";"]]],"NativeFunction_withType":["define",{"sourceInterval":[619,737]},null,[],["seq",{"sourceInterval":[619,726]},["app",{"sourceInterval":[619,632]},"nameAttribute",[]],["terminal",{"sourceInterval":[633,636]},"("],["app",{"sourceInterval":[637,643]},"funcId",[]],["terminal",{"sourceInterval":[644,647]},")"],["star",{"sourceInterval":[648,666]},["app",{"sourceInterval":[648,665]},"FunctionAttribute",[]]],["app",{"sourceInterval":[667,673]},"native",[]],["app",{"sourceInterval":[674,676]},"id",[]],["terminal",{"sourceInterval":[677,680]},"("],["app",{"sourceInterval":[681,704]},"ListOf",[["app",{"sourceInterval":[688,699]},"FunctionArg",[]],["terminal",{"sourceInterval":[700,703]},","]]],["opt",{"sourceInterval":[705,709]},["terminal",{"sourceInterval":[705,708]},","]],["terminal",{"sourceInterval":[710,713]},")"],["terminal",{"sourceInterval":[714,717]},":"],["app",{"sourceInterval":[718,722]},"Type",[]],["terminal",{"sourceInterval":[723,726]},";"]]],"NativeFunction":["define",{"sourceInterval":[471,737]},null,[],["alt",{"sourceInterval":[488,737]},["app",{"sourceInterval":[488,586]},"NativeFunction_withVoid",[]],["app",{"sourceInterval":[619,726]},"NativeFunction_withType",[]]]],"Type_optional":["define",{"sourceInterval":[780,806]},null,[],["seq",{"sourceInterval":[780,795]},["app",{"sourceInterval":[780,791]},"typeLiteral",[]],["terminal",{"sourceInterval":[792,795]},"?"]]],"Type_required":["define",{"sourceInterval":[818,840]},null,[],["app",{"sourceInterval":[818,829]},"typeLiteral",[]]],"Type_map":["define",{"sourceInterval":[852,917]},null,[],["seq",{"sourceInterval":[852,911]},["terminal",{"sourceInterval":[852,857]},"map"],["terminal",{"sourceInterval":[858,861]},"<"],["app",{"sourceInterval":[862,873]},"typeLiteral",[]],["opt",{"sourceInterval":[874,882]},["seq",{"sourceInterval":[875,880]},["app",{"sourceInterval":[875,877]},"as",[]],["app",{"sourceInterval":[878,880]},"id",[]]]],["terminal",{"sourceInterval":[883,886]},","],["app",{"sourceInterval":[887,898]},"typeLiteral",[]],["opt",{"sourceInterval":[899,907]},["seq",{"sourceInterval":[900,905]},["app",{"sourceInterval":[900,902]},"as",[]],["app",{"sourceInterval":[903,905]},"id",[]]]],["terminal",{"sourceInterval":[908,911]},">"]]],"Type_bounced":["define",{"sourceInterval":[929,968]},null,[],["seq",{"sourceInterval":[929,958]},["terminal",{"sourceInterval":[929,938]},"bounced"],["terminal",{"sourceInterval":[939,942]},"<"],["app",{"sourceInterval":[943,954]},"typeLiteral",[]],["terminal",{"sourceInterval":[955,958]},">"]]],"Type":["define",{"sourceInterval":[773,968]},null,[],["alt",{"sourceInterval":[780,968]},["app",{"sourceInterval":[780,795]},"Type_optional",[]],["app",{"sourceInterval":[818,829]},"Type_required",[]],["app",{"sourceInterval":[852,911]},"Type_map",[]],["app",{"sourceInterval":[929,958]},"Type_bounced",[]]]],"Field_default":["define",{"sourceInterval":[981,1006]},null,[],["seq",{"sourceInterval":[981,996]},["app",{"sourceInterval":[981,983]},"id",[]],["terminal",{"sourceInterval":[984,987]},":"],["app",{"sourceInterval":[988,992]},"Type",[]],["terminal",{"sourceInterval":[993,996]},";"]]],"Field_defaultWithInit":["define",{"sourceInterval":[1019,1067]},null,[],["seq",{"sourceInterval":[1019,1049]},["app",{"sourceInterval":[1019,1021]},"id",[]],["terminal",{"sourceInterval":[1022,1025]},":"],["app",{"sourceInterval":[1026,1030]},"Type",[]],["terminal",{"sourceInterval":[1031,1034]},"="],["app",{"sourceInterval":[1035,1045]},"Expression",[]],["terminal",{"sourceInterval":[1046,1049]},";"]]],"Field_withSerialization":["define",{"sourceInterval":[1080,1121]},null,[],["seq",{"sourceInterval":[1080,1101]},["app",{"sourceInterval":[1080,1082]},"id",[]],["terminal",{"sourceInterval":[1083,1086]},":"],["app",{"sourceInterval":[1087,1091]},"Type",[]],["app",{"sourceInterval":[1092,1094]},"as",[]],["app",{"sourceInterval":[1095,1097]},"id",[]],["terminal",{"sourceInterval":[1098,1101]},";"]]],"Field_withSerializationAndInit":["define",{"sourceInterval":[1134,1197]},null,[],["seq",{"sourceInterval":[1134,1170]},["app",{"sourceInterval":[1134,1136]},"id",[]],["terminal",{"sourceInterval":[1137,1140]},":"],["app",{"sourceInterval":[1141,1145]},"Type",[]],["app",{"sourceInterval":[1146,1148]},"as",[]],["app",{"sourceInterval":[1149,1151]},"id",[]],["terminal",{"sourceInterval":[1152,1155]},"="],["app",{"sourceInterval":[1156,1166]},"Expression",[]],["terminal",{"sourceInterval":[1167,1170]},";"]]],"Field":["define",{"sourceInterval":[973,1197]},null,[],["alt",{"sourceInterval":[981,1197]},["app",{"sourceInterval":[981,996]},"Field_default",[]],["app",{"sourceInterval":[1019,1049]},"Field_defaultWithInit",[]],["app",{"sourceInterval":[1080,1101]},"Field_withSerialization",[]],["app",{"sourceInterval":[1134,1170]},"Field_withSerializationAndInit",[]]]],"ConstantAttribute_virtual":["define",{"sourceInterval":[1243,1263]},null,[],["app",{"sourceInterval":[1243,1250]},"virtual",[]]],"ConstantAttribute_override":["define",{"sourceInterval":[1288,1309]},null,[],["app",{"sourceInterval":[1288,1296]},"override",[]]],"ConstantAttribute_abstract":["define",{"sourceInterval":[1334,1355]},null,[],["app",{"sourceInterval":[1334,1342]},"abstract",[]]],"ConstantAttribute":["define",{"sourceInterval":[1223,1355]},null,[],["alt",{"sourceInterval":[1243,1355]},["app",{"sourceInterval":[1243,1250]},"ConstantAttribute_virtual",[]],["app",{"sourceInterval":[1288,1296]},"ConstantAttribute_override",[]],["app",{"sourceInterval":[1334,1342]},"ConstantAttribute_abstract",[]]]],"Constant_withValue":["define",{"sourceInterval":[1371,1443]},null,[],["seq",{"sourceInterval":[1371,1431]},["star",{"sourceInterval":[1371,1389]},["app",{"sourceInterval":[1371,1388]},"ConstantAttribute",[]]],["not",{"sourceInterval":[1390,1394]},["app",{"sourceInterval":[1391,1394]},"fun",[]]],["app",{"sourceInterval":[1395,1400]},"const",[]],["app",{"sourceInterval":[1401,1403]},"id",[]],["terminal",{"sourceInterval":[1404,1407]},":"],["app",{"sourceInterval":[1408,1412]},"Type",[]],["terminal",{"sourceInterval":[1413,1416]},"="],["app",{"sourceInterval":[1417,1427]},"Expression",[]],["terminal",{"sourceInterval":[1428,1431]},";"]]],"Constant_withEmpty":["define",{"sourceInterval":[1459,1531]},null,[],["seq",{"sourceInterval":[1459,1504]},["star",{"sourceInterval":[1459,1477]},["app",{"sourceInterval":[1459,1476]},"ConstantAttribute",[]]],["not",{"sourceInterval":[1478,1482]},["app",{"sourceInterval":[1479,1482]},"fun",[]]],["app",{"sourceInterval":[1483,1488]},"const",[]],["app",{"sourceInterval":[1489,1491]},"id",[]],["terminal",{"sourceInterval":[1492,1495]},":"],["app",{"sourceInterval":[1496,1500]},"Type",[]],["terminal",{"sourceInterval":[1501,1504]},";"]]],"Constant":["define",{"sourceInterval":[1360,1531]},null,[],["alt",{"sourceInterval":[1371,1531]},["app",{"sourceInterval":[1371,1431]},"Constant_withValue",[]],["app",{"sourceInterval":[1459,1504]},"Constant_withEmpty",[]]]],"Struct_originary":["define",{"sourceInterval":[1560,1612]},null,[],["seq",{"sourceInterval":[1560,1600]},["terminal",{"sourceInterval":[1560,1568]},"struct"],["app",{"sourceInterval":[1569,1580]},"typeLiteral",[]],["terminal",{"sourceInterval":[1581,1584]},"{"],["star",{"sourceInterval":[1585,1596]},["app",{"sourceInterval":[1585,1595]},"StructBody",[]]],["terminal",{"sourceInterval":[1597,1600]},"}"]]],"Struct_message":["define",{"sourceInterval":[1626,1677]},null,[],["seq",{"sourceInterval":[1626,1667]},["terminal",{"sourceInterval":[1626,1635]},"message"],["app",{"sourceInterval":[1636,1647]},"typeLiteral",[]],["terminal",{"sourceInterval":[1648,1651]},"{"],["star",{"sourceInterval":[1652,1663]},["app",{"sourceInterval":[1652,1662]},"StructBody",[]]],["terminal",{"sourceInterval":[1664,1667]},"}"]]],"Struct_messageWithId":["define",{"sourceInterval":[1691,1771]},null,[],["seq",{"sourceInterval":[1691,1755]},["terminal",{"sourceInterval":[1691,1700]},"message"],["terminal",{"sourceInterval":[1701,1704]},"("],["app",{"sourceInterval":[1705,1719]},"integerLiteral",[]],["terminal",{"sourceInterval":[1720,1723]},")"],["app",{"sourceInterval":[1724,1735]},"typeLiteral",[]],["terminal",{"sourceInterval":[1736,1739]},"{"],["star",{"sourceInterval":[1740,1751]},["app",{"sourceInterval":[1740,1750]},"StructBody",[]]],["terminal",{"sourceInterval":[1752,1755]},"}"]]],"Struct":["define",{"sourceInterval":[1551,1771]},null,[],["alt",{"sourceInterval":[1560,1771]},["app",{"sourceInterval":[1560,1600]},"Struct_originary",[]],["app",{"sourceInterval":[1626,1667]},"Struct_message",[]],["app",{"sourceInterval":[1691,1755]},"Struct_messageWithId",[]]]],"StructBody":["define",{"sourceInterval":[1776,1794]},null,[],["app",{"sourceInterval":[1789,1794]},"Field",[]]],"Contract_simple":["define",{"sourceInterval":[1827,1888]},null,[],["seq",{"sourceInterval":[1827,1879]},["star",{"sourceInterval":[1827,1845]},["app",{"sourceInterval":[1827,1844]},"ContractAttribute",[]]],["app",{"sourceInterval":[1846,1854]},"contract",[]],["app",{"sourceInterval":[1855,1857]},"id",[]],["terminal",{"sourceInterval":[1858,1861]},"{"],["star",{"sourceInterval":[1862,1875]},["app",{"sourceInterval":[1862,1874]},"ContractBody",[]]],["terminal",{"sourceInterval":[1876,1879]},"}"]]],"Contract_withTraits":["define",{"sourceInterval":[1904,1994]},null,[],["seq",{"sourceInterval":[1904,1981]},["star",{"sourceInterval":[1904,1922]},["app",{"sourceInterval":[1904,1921]},"ContractAttribute",[]]],["app",{"sourceInterval":[1923,1931]},"contract",[]],["app",{"sourceInterval":[1932,1934]},"id",[]],["app",{"sourceInterval":[1935,1939]},"with",[]],["app",{"sourceInterval":[1940,1954]},"ListOf",[["app",{"sourceInterval":[1947,1949]},"id",[]],["terminal",{"sourceInterval":[1950,1953]},","]]],["opt",{"sourceInterval":[1955,1959]},["terminal",{"sourceInterval":[1955,1958]},","]],["terminal",{"sourceInterval":[1960,1963]},"{"],["star",{"sourceInterval":[1964,1977]},["app",{"sourceInterval":[1964,1976]},"ContractBody",[]]],["terminal",{"sourceInterval":[1978,1981]},"}"]]],"Contract":["define",{"sourceInterval":[1816,1994]},null,[],["alt",{"sourceInterval":[1827,1994]},["app",{"sourceInterval":[1827,1879]},"Contract_simple",[]],["app",{"sourceInterval":[1904,1981]},"Contract_withTraits",[]]]],"ContractInit":["define",{"sourceInterval":[1999,2076]},null,[],["seq",{"sourceInterval":[2014,2076]},["terminal",{"sourceInterval":[2014,2020]},"init"],["terminal",{"sourceInterval":[2021,2024]},"("],["app",{"sourceInterval":[2025,2048]},"ListOf",[["app",{"sourceInterval":[2032,2043]},"FunctionArg",[]],["terminal",{"sourceInterval":[2044,2047]},","]]],["opt",{"sourceInterval":[2049,2053]},["terminal",{"sourceInterval":[2049,2052]},","]],["terminal",{"sourceInterval":[2054,2057]},")"],["terminal",{"sourceInterval":[2058,2061]},"{"],["star",{"sourceInterval":[2062,2072]},["app",{"sourceInterval":[2062,2071]},"Statement",[]]],["terminal",{"sourceInterval":[2073,2076]},"}"]]],"ContractBody":["define",{"sourceInterval":[2081,2224]},null,[],["alt",{"sourceInterval":[2096,2224]},["app",{"sourceInterval":[2096,2101]},"Field",[]],["app",{"sourceInterval":[2121,2133]},"ContractInit",[]],["app",{"sourceInterval":[2153,2168]},"ReceiveFunction",[]],["app",{"sourceInterval":[2188,2196]},"Function",[]],["app",{"sourceInterval":[2216,2224]},"Constant",[]]]],"Trait_originary":["define",{"sourceInterval":[2255,2313]},null,[],["seq",{"sourceInterval":[2255,2301]},["star",{"sourceInterval":[2255,2273]},["app",{"sourceInterval":[2255,2272]},"ContractAttribute",[]]],["app",{"sourceInterval":[2274,2279]},"trait",[]],["app",{"sourceInterval":[2280,2282]},"id",[]],["terminal",{"sourceInterval":[2283,2286]},"{"],["star",{"sourceInterval":[2287,2297]},["app",{"sourceInterval":[2287,2296]},"TraitBody",[]]],["terminal",{"sourceInterval":[2298,2301]},"}"]]],"Trait_withTraits":["define",{"sourceInterval":[2326,2410]},null,[],["seq",{"sourceInterval":[2326,2397]},["star",{"sourceInterval":[2326,2344]},["app",{"sourceInterval":[2326,2343]},"ContractAttribute",[]]],["app",{"sourceInterval":[2345,2350]},"trait",[]],["app",{"sourceInterval":[2351,2353]},"id",[]],["app",{"sourceInterval":[2354,2358]},"with",[]],["app",{"sourceInterval":[2359,2373]},"ListOf",[["app",{"sourceInterval":[2366,2368]},"id",[]],["terminal",{"sourceInterval":[2369,2372]},","]]],["opt",{"sourceInterval":[2374,2378]},["terminal",{"sourceInterval":[2374,2377]},","]],["terminal",{"sourceInterval":[2379,2382]},"{"],["star",{"sourceInterval":[2383,2393]},["app",{"sourceInterval":[2383,2392]},"TraitBody",[]]],["terminal",{"sourceInterval":[2394,2397]},"}"]]],"Trait":["define",{"sourceInterval":[2247,2410]},null,[],["alt",{"sourceInterval":[2255,2410]},["app",{"sourceInterval":[2255,2301]},"Trait_originary",[]],["app",{"sourceInterval":[2326,2397]},"Trait_withTraits",[]]]],"TraitBody":["define",{"sourceInterval":[2415,2514]},null,[],["alt",{"sourceInterval":[2427,2514]},["app",{"sourceInterval":[2427,2432]},"Field",[]],["app",{"sourceInterval":[2449,2464]},"ReceiveFunction",[]],["app",{"sourceInterval":[2481,2489]},"Function",[]],["app",{"sourceInterval":[2506,2514]},"Constant",[]]]],"ContractAttribute_interface":["define",{"sourceInterval":[2567,2613]},null,[],["seq",{"sourceInterval":[2567,2601]},["terminal",{"sourceInterval":[2567,2579]},"@interface"],["terminal",{"sourceInterval":[2580,2583]},"("],["app",{"sourceInterval":[2584,2597]},"stringLiteral",[]],["terminal",{"sourceInterval":[2598,2601]},")"]]],"ContractAttribute":["define",{"sourceInterval":[2547,2613]},null,[],["app",{"sourceInterval":[2567,2613]},"ContractAttribute_interface",[]]],"FunctionAttribute_getter":["define",{"sourceInterval":[2655,2673]},null,[],["terminal",{"sourceInterval":[2655,2660]},"get"]],"FunctionAttribute_mutates":["define",{"sourceInterval":[2698,2717]},null,[],["app",{"sourceInterval":[2698,2705]},"mutates",[]]],"FunctionAttribute_extends":["define",{"sourceInterval":[2742,2761]},null,[],["app",{"sourceInterval":[2742,2749]},"extends",[]]],"FunctionAttribute_virtual":["define",{"sourceInterval":[2786,2805]},null,[],["app",{"sourceInterval":[2786,2793]},"virtual",[]]],"FunctionAttribute_override":["define",{"sourceInterval":[2830,2850]},null,[],["app",{"sourceInterval":[2830,2838]},"override",[]]],"FunctionAttribute_inline":["define",{"sourceInterval":[2875,2893]},null,[],["app",{"sourceInterval":[2875,2881]},"inline",[]]],"FunctionAttribute_abstract":["define",{"sourceInterval":[2918,2938]},null,[],["app",{"sourceInterval":[2918,2926]},"abstract",[]]],"FunctionAttribute":["define",{"sourceInterval":[2635,2938]},null,[],["alt",{"sourceInterval":[2655,2938]},["app",{"sourceInterval":[2655,2660]},"FunctionAttribute_getter",[]],["app",{"sourceInterval":[2698,2705]},"FunctionAttribute_mutates",[]],["app",{"sourceInterval":[2742,2749]},"FunctionAttribute_extends",[]],["app",{"sourceInterval":[2786,2793]},"FunctionAttribute_virtual",[]],["app",{"sourceInterval":[2830,2838]},"FunctionAttribute_override",[]],["app",{"sourceInterval":[2875,2881]},"FunctionAttribute_inline",[]],["app",{"sourceInterval":[2918,2926]},"FunctionAttribute_abstract",[]]]],"Function_withVoid":["define",{"sourceInterval":[2954,3046]},null,[],["seq",{"sourceInterval":[2954,3035]},["star",{"sourceInterval":[2954,2972]},["app",{"sourceInterval":[2954,2971]},"FunctionAttribute",[]]],["app",{"sourceInterval":[2973,2976]},"fun",[]],["app",{"sourceInterval":[2977,2979]},"id",[]],["terminal",{"sourceInterval":[2980,2983]},"("],["app",{"sourceInterval":[2984,3007]},"ListOf",[["app",{"sourceInterval":[2991,3002]},"FunctionArg",[]],["terminal",{"sourceInterval":[3003,3006]},","]]],["opt",{"sourceInterval":[3008,3012]},["terminal",{"sourceInterval":[3008,3011]},","]],["terminal",{"sourceInterval":[3013,3016]},")"],["terminal",{"sourceInterval":[3017,3020]},"{"],["star",{"sourceInterval":[3021,3031]},["app",{"sourceInterval":[3021,3030]},"Statement",[]]],["terminal",{"sourceInterval":[3032,3035]},"}"]]],"Function_withType":["define",{"sourceInterval":[3062,3163]},null,[],["seq",{"sourceInterval":[3062,3152]},["star",{"sourceInterval":[3062,3080]},["app",{"sourceInterval":[3062,3079]},"FunctionAttribute",[]]],["app",{"sourceInterval":[3081,3084]},"fun",[]],["app",{"sourceInterval":[3085,3087]},"id",[]],["terminal",{"sourceInterval":[3088,3091]},"("],["app",{"sourceInterval":[3092,3115]},"ListOf",[["app",{"sourceInterval":[3099,3110]},"FunctionArg",[]],["terminal",{"sourceInterval":[3111,3114]},","]]],["opt",{"sourceInterval":[3116,3120]},["terminal",{"sourceInterval":[3116,3119]},","]],["terminal",{"sourceInterval":[3121,3124]},")"],["terminal",{"sourceInterval":[3125,3128]},":"],["app",{"sourceInterval":[3129,3133]},"Type",[]],["terminal",{"sourceInterval":[3134,3137]},"{"],["star",{"sourceInterval":[3138,3148]},["app",{"sourceInterval":[3138,3147]},"Statement",[]]],["terminal",{"sourceInterval":[3149,3152]},"}"]]],"Function_abstractVoid":["define",{"sourceInterval":[3179,3260]},null,[],["seq",{"sourceInterval":[3179,3245]},["star",{"sourceInterval":[3179,3197]},["app",{"sourceInterval":[3179,3196]},"FunctionAttribute",[]]],["app",{"sourceInterval":[3198,3201]},"fun",[]],["app",{"sourceInterval":[3202,3204]},"id",[]],["terminal",{"sourceInterval":[3205,3208]},"("],["app",{"sourceInterval":[3209,3232]},"ListOf",[["app",{"sourceInterval":[3216,3227]},"FunctionArg",[]],["terminal",{"sourceInterval":[3228,3231]},","]]],["opt",{"sourceInterval":[3233,3237]},["terminal",{"sourceInterval":[3233,3236]},","]],["terminal",{"sourceInterval":[3238,3241]},")"],["terminal",{"sourceInterval":[3242,3245]},";"]]],"Function_abstractType":["define",{"sourceInterval":[3276,3366]},null,[],["seq",{"sourceInterval":[3276,3351]},["star",{"sourceInterval":[3276,3294]},["app",{"sourceInterval":[3276,3293]},"FunctionAttribute",[]]],["app",{"sourceInterval":[3295,3298]},"fun",[]],["app",{"sourceInterval":[3299,3301]},"id",[]],["terminal",{"sourceInterval":[3302,3305]},"("],["app",{"sourceInterval":[3306,3329]},"ListOf",[["app",{"sourceInterval":[3313,3324]},"FunctionArg",[]],["terminal",{"sourceInterval":[3325,3328]},","]]],["opt",{"sourceInterval":[3330,3334]},["terminal",{"sourceInterval":[3330,3333]},","]],["terminal",{"sourceInterval":[3335,3338]},")"],["terminal",{"sourceInterval":[3339,3342]},":"],["app",{"sourceInterval":[3343,3347]},"Type",[]],["terminal",{"sourceInterval":[3348,3351]},";"]]],"Function":["define",{"sourceInterval":[2943,3366]},null,[],["alt",{"sourceInterval":[2954,3366]},["app",{"sourceInterval":[2954,3035]},"Function_withVoid",[]],["app",{"sourceInterval":[3062,3152]},"Function_withType",[]],["app",{"sourceInterval":[3179,3245]},"Function_abstractVoid",[]],["app",{"sourceInterval":[3276,3351]},"Function_abstractType",[]]]],"FunctionArg":["define",{"sourceInterval":[3371,3396]},null,[],["seq",{"sourceInterval":[3385,3396]},["app",{"sourceInterval":[3385,3387]},"id",[]],["terminal",{"sourceInterval":[3388,3391]},":"],["app",{"sourceInterval":[3392,3396]},"Type",[]]]],"ReceiveFunction_simple":["define",{"sourceInterval":[3424,3481]},null,[],["seq",{"sourceInterval":[3424,3472]},["terminal",{"sourceInterval":[3424,3433]},"receive"],["terminal",{"sourceInterval":[3434,3437]},"("],["app",{"sourceInterval":[3438,3449]},"FunctionArg",[]],["terminal",{"sourceInterval":[3450,3453]},")"],["terminal",{"sourceInterval":[3454,3457]},"{"],["star",{"sourceInterval":[3458,3468]},["app",{"sourceInterval":[3458,3467]},"Statement",[]]],["terminal",{"sourceInterval":[3469,3472]},"}"]]],"ReceiveFunction_empty":["define",{"sourceInterval":[3504,3548]},null,[],["seq",{"sourceInterval":[3504,3540]},["terminal",{"sourceInterval":[3504,3513]},"receive"],["terminal",{"sourceInterval":[3514,3517]},"("],["terminal",{"sourceInterval":[3518,3521]},")"],["terminal",{"sourceInterval":[3522,3525]},"{"],["star",{"sourceInterval":[3526,3536]},["app",{"sourceInterval":[3526,3535]},"Statement",[]]],["terminal",{"sourceInterval":[3537,3540]},"}"]]],"ReceiveFunction_comment":["define",{"sourceInterval":[3571,3631]},null,[],["seq",{"sourceInterval":[3571,3621]},["terminal",{"sourceInterval":[3571,3580]},"receive"],["terminal",{"sourceInterval":[3581,3584]},"("],["app",{"sourceInterval":[3585,3598]},"stringLiteral",[]],["terminal",{"sourceInterval":[3599,3602]},")"],["terminal",{"sourceInterval":[3603,3606]},"{"],["star",{"sourceInterval":[3607,3617]},["app",{"sourceInterval":[3607,3616]},"Statement",[]]],["terminal",{"sourceInterval":[3618,3621]},"}"]]],"ReceiveFunction_bounced":["define",{"sourceInterval":[3654,3712]},null,[],["seq",{"sourceInterval":[3654,3702]},["terminal",{"sourceInterval":[3654,3663]},"bounced"],["terminal",{"sourceInterval":[3664,3667]},"("],["app",{"sourceInterval":[3668,3679]},"FunctionArg",[]],["terminal",{"sourceInterval":[3680,3683]},")"],["terminal",{"sourceInterval":[3684,3687]},"{"],["star",{"sourceInterval":[3688,3698]},["app",{"sourceInterval":[3688,3697]},"Statement",[]]],["terminal",{"sourceInterval":[3699,3702]},"}"]]],"ReceiveFunction_externalSimple":["define",{"sourceInterval":[3735,3801]},null,[],["seq",{"sourceInterval":[3735,3784]},["terminal",{"sourceInterval":[3735,3745]},"external"],["terminal",{"sourceInterval":[3746,3749]},"("],["app",{"sourceInterval":[3750,3761]},"FunctionArg",[]],["terminal",{"sourceInterval":[3762,3765]},")"],["terminal",{"sourceInterval":[3766,3769]},"{"],["star",{"sourceInterval":[3770,3780]},["app",{"sourceInterval":[3770,3779]},"Statement",[]]],["terminal",{"sourceInterval":[3781,3784]},"}"]]],"ReceiveFunction_externalComment":["define",{"sourceInterval":[3824,3893]},null,[],["seq",{"sourceInterval":[3824,3875]},["terminal",{"sourceInterval":[3824,3834]},"external"],["terminal",{"sourceInterval":[3835,3838]},"("],["app",{"sourceInterval":[3839,3852]},"stringLiteral",[]],["terminal",{"sourceInterval":[3853,3856]},")"],["terminal",{"sourceInterval":[3857,3860]},"{"],["star",{"sourceInterval":[3861,3871]},["app",{"sourceInterval":[3861,3870]},"Statement",[]]],["terminal",{"sourceInterval":[3872,3875]},"}"]]],"ReceiveFunction_externalEmpty":["define",{"sourceInterval":[3916,3969]},null,[],["seq",{"sourceInterval":[3916,3953]},["terminal",{"sourceInterval":[3916,3926]},"external"],["terminal",{"sourceInterval":[3927,3930]},"("],["terminal",{"sourceInterval":[3931,3934]},")"],["terminal",{"sourceInterval":[3935,3938]},"{"],["star",{"sourceInterval":[3939,3949]},["app",{"sourceInterval":[3939,3948]},"Statement",[]]],["terminal",{"sourceInterval":[3950,3953]},"}"]]],"ReceiveFunction":["define",{"sourceInterval":[3406,3969]},null,[],["alt",{"sourceInterval":[3424,3969]},["app",{"sourceInterval":[3424,3472]},"ReceiveFunction_simple",[]],["app",{"sourceInterval":[3504,3540]},"ReceiveFunction_empty",[]],["app",{"sourceInterval":[3571,3621]},"ReceiveFunction_comment",[]],["app",{"sourceInterval":[3654,3702]},"ReceiveFunction_bounced",[]],["app",{"sourceInterval":[3735,3784]},"ReceiveFunction_externalSimple",[]],["app",{"sourceInterval":[3824,3875]},"ReceiveFunction_externalComment",[]],["app",{"sourceInterval":[3916,3953]},"ReceiveFunction_externalEmpty",[]]]],"Statement":["define",{"sourceInterval":[3993,4318]},null,[],["alt",{"sourceInterval":[4005,4318]},["app",{"sourceInterval":[4005,4017]},"StatementLet",[]],["app",{"sourceInterval":[4034,4048]},"StatementBlock",[]],["app",{"sourceInterval":[4065,4080]},"StatementReturn",[]],["app",{"sourceInterval":[4097,4116]},"StatementExpression",[]],["app",{"sourceInterval":[4133,4148]},"StatementAssign",[]],["app",{"sourceInterval":[4165,4189]},"StatementAugmentedAssign",[]],["app",{"sourceInterval":[4206,4224]},"StatementCondition",[]],["app",{"sourceInterval":[4241,4255]},"StatementWhile",[]],["app",{"sourceInterval":[4272,4287]},"StatementRepeat",[]],["app",{"sourceInterval":[4304,4318]},"StatementUntil",[]]]],"StatementBlock":["define",{"sourceInterval":[4323,4358]},null,[],["seq",{"sourceInterval":[4340,4358]},["terminal",{"sourceInterval":[4340,4343]},"{"],["star",{"sourceInterval":[4344,4354]},["app",{"sourceInterval":[4344,4353]},"Statement",[]]],["terminal",{"sourceInterval":[4355,4358]},"}"]]],"StatementLet":["define",{"sourceInterval":[4363,4412]},null,[],["seq",{"sourceInterval":[4378,4412]},["app",{"sourceInterval":[4378,4381]},"let",[]],["app",{"sourceInterval":[4382,4384]},"id",[]],["terminal",{"sourceInterval":[4385,4388]},":"],["app",{"sourceInterval":[4389,4393]},"Type",[]],["terminal",{"sourceInterval":[4394,4397]},"="],["app",{"sourceInterval":[4398,4408]},"Expression",[]],["terminal",{"sourceInterval":[4409,4412]},";"]]],"StatementReturn_withExpression":["define",{"sourceInterval":[4435,4473]},null,[],["seq",{"sourceInterval":[4435,4456]},["app",{"sourceInterval":[4435,4441]},"return",[]],["app",{"sourceInterval":[4442,4452]},"Expression",[]],["terminal",{"sourceInterval":[4453,4456]},";"]]],"StatementReturn_withoutExpression":["define",{"sourceInterval":[4496,4526]},null,[],["seq",{"sourceInterval":[4496,4506]},["app",{"sourceInterval":[4496,4502]},"return",[]],["terminal",{"sourceInterval":[4503,4506]},";"]]],"StatementReturn":["define",{"sourceInterval":[4417,4526]},null,[],["alt",{"sourceInterval":[4435,4526]},["app",{"sourceInterval":[4435,4456]},"StatementReturn_withExpression",[]],["app",{"sourceInterval":[4496,4506]},"StatementReturn_withoutExpression",[]]]],"StatementExpression":["define",{"sourceInterval":[4535,4571]},null,[],["seq",{"sourceInterval":[4557,4571]},["app",{"sourceInterval":[4557,4567]},"Expression",[]],["terminal",{"sourceInterval":[4568,4571]},";"]]],"StatementAssign":["define",{"sourceInterval":[4576,4619]},null,[],["seq",{"sourceInterval":[4594,4619]},["app",{"sourceInterval":[4594,4600]},"LValue",[]],["terminal",{"sourceInterval":[4601,4604]},"="],["app",{"sourceInterval":[4605,4615]},"Expression",[]],["terminal",{"sourceInterval":[4616,4619]},";"]]],"StatementAugmentedAssign":["define",{"sourceInterval":[4624,4914]},null,[],["alt",{"sourceInterval":[4651,4914]},["app",{"sourceInterval":[4651,4678]},"StatementAugmentedAssignAdd",[]],["app",{"sourceInterval":[4710,4737]},"StatementAugmentedAssignSub",[]],["app",{"sourceInterval":[4769,4796]},"StatementAugmentedAssignMul",[]],["app",{"sourceInterval":[4828,4855]},"StatementAugmentedAssignDiv",[]],["app",{"sourceInterval":[4887,4914]},"StatementAugmentedAssignRem",[]]]],"StatementAugmentedAssignAdd":["define",{"sourceInterval":[4919,4975]},null,[],["seq",{"sourceInterval":[4949,4975]},["app",{"sourceInterval":[4949,4955]},"LValue",[]],["terminal",{"sourceInterval":[4956,4960]},"+="],["app",{"sourceInterval":[4961,4971]},"Expression",[]],["terminal",{"sourceInterval":[4972,4975]},";"]]],"StatementAugmentedAssignSub":["define",{"sourceInterval":[4980,5036]},null,[],["seq",{"sourceInterval":[5010,5036]},["app",{"sourceInterval":[5010,5016]},"LValue",[]],["terminal",{"sourceInterval":[5017,5021]},"-="],["app",{"sourceInterval":[5022,5032]},"Expression",[]],["terminal",{"sourceInterval":[5033,5036]},";"]]],"StatementAugmentedAssignMul":["define",{"sourceInterval":[5041,5097]},null,[],["seq",{"sourceInterval":[5071,5097]},["app",{"sourceInterval":[5071,5077]},"LValue",[]],["terminal",{"sourceInterval":[5078,5082]},"*="],["app",{"sourceInterval":[5083,5093]},"Expression",[]],["terminal",{"sourceInterval":[5094,5097]},";"]]],"StatementAugmentedAssignDiv":["define",{"sourceInterval":[5102,5158]},null,[],["seq",{"sourceInterval":[5132,5158]},["app",{"sourceInterval":[5132,5138]},"LValue",[]],["terminal",{"sourceInterval":[5139,5143]},"/="],["app",{"sourceInterval":[5144,5154]},"Expression",[]],["terminal",{"sourceInterval":[5155,5158]},";"]]],"StatementAugmentedAssignRem":["define",{"sourceInterval":[5163,5219]},null,[],["seq",{"sourceInterval":[5193,5219]},["app",{"sourceInterval":[5193,5199]},"LValue",[]],["terminal",{"sourceInterval":[5200,5204]},"%="],["app",{"sourceInterval":[5205,5215]},"Expression",[]],["terminal",{"sourceInterval":[5216,5219]},";"]]],"StatementCondition_simple":["define",{"sourceInterval":[5245,5292]},null,[],["seq",{"sourceInterval":[5245,5283]},["app",{"sourceInterval":[5245,5247]},"if",[]],["app",{"sourceInterval":[5248,5258]},"Expression",[]],["terminal",{"sourceInterval":[5259,5262]},"{"],["star",{"sourceInterval":[5263,5273]},["app",{"sourceInterval":[5263,5272]},"Statement",[]]],["terminal",{"sourceInterval":[5274,5277]},"}"],["not",{"sourceInterval":[5278,5283]},["app",{"sourceInterval":[5279,5283]},"else",[]]]]],"StatementCondition_withElse":["define",{"sourceInterval":[5318,5385]},null,[],["seq",{"sourceInterval":[5318,5374]},["app",{"sourceInterval":[5318,5320]},"if",[]],["app",{"sourceInterval":[5321,5331]},"Expression",[]],["terminal",{"sourceInterval":[5332,5335]},"{"],["star",{"sourceInterval":[5336,5346]},["app",{"sourceInterval":[5336,5345]},"Statement",[]]],["terminal",{"sourceInterval":[5347,5350]},"}"],["app",{"sourceInterval":[5351,5355]},"else",[]],["terminal",{"sourceInterval":[5356,5359]},"{"],["star",{"sourceInterval":[5360,5370]},["app",{"sourceInterval":[5360,5369]},"Statement",[]]],["terminal",{"sourceInterval":[5371,5374]},"}"]]],"StatementCondition_withElseIf":["define",{"sourceInterval":[5411,5480]},null,[],["seq",{"sourceInterval":[5411,5467]},["app",{"sourceInterval":[5411,5413]},"if",[]],["app",{"sourceInterval":[5414,5424]},"Expression",[]],["terminal",{"sourceInterval":[5425,5428]},"{"],["star",{"sourceInterval":[5429,5439]},["app",{"sourceInterval":[5429,5438]},"Statement",[]]],["terminal",{"sourceInterval":[5440,5443]},"}"],["app",{"sourceInterval":[5444,5448]},"else",[]],["app",{"sourceInterval":[5449,5467]},"StatementCondition",[]]]],"StatementCondition":["define",{"sourceInterval":[5224,5480]},null,[],["alt",{"sourceInterval":[5245,5480]},["app",{"sourceInterval":[5245,5283]},"StatementCondition_simple",[]],["app",{"sourceInterval":[5318,5374]},"StatementCondition_withElse",[]],["app",{"sourceInterval":[5411,5467]},"StatementCondition_withElseIf",[]]]],"StatementWhile":["define",{"sourceInterval":[5485,5545]},null,[],["seq",{"sourceInterval":[5502,5545]},["app",{"sourceInterval":[5502,5507]},"while",[]],["terminal",{"sourceInterval":[5508,5511]},"("],["app",{"sourceInterval":[5512,5522]},"Expression",[]],["terminal",{"sourceInterval":[5523,5526]},")"],["terminal",{"sourceInterval":[5527,5530]},"{"],["star",{"sourceInterval":[5531,5541]},["app",{"sourceInterval":[5531,5540]},"Statement",[]]],["terminal",{"sourceInterval":[5542,5545]},"}"]]],"StatementRepeat":["define",{"sourceInterval":[5550,5612]},null,[],["seq",{"sourceInterval":[5568,5612]},["app",{"sourceInterval":[5568,5574]},"repeat",[]],["terminal",{"sourceInterval":[5575,5578]},"("],["app",{"sourceInterval":[5579,5589]},"Expression",[]],["terminal",{"sourceInterval":[5590,5593]},")"],["terminal",{"sourceInterval":[5594,5597]},"{"],["star",{"sourceInterval":[5598,5608]},["app",{"sourceInterval":[5598,5607]},"Statement",[]]],["terminal",{"sourceInterval":[5609,5612]},"}"]]],"StatementUntil":["define",{"sourceInterval":[5617,5684]},null,[],["seq",{"sourceInterval":[5634,5684]},["app",{"sourceInterval":[5634,5636]},"do",[]],["terminal",{"sourceInterval":[5637,5640]},"{"],["star",{"sourceInterval":[5641,5651]},["app",{"sourceInterval":[5641,5650]},"Statement",[]]],["terminal",{"sourceInterval":[5652,5655]},"}"],["app",{"sourceInterval":[5656,5661]},"until",[]],["terminal",{"sourceInterval":[5662,5665]},"("],["app",{"sourceInterval":[5666,5676]},"Expression",[]],["terminal",{"sourceInterval":[5677,5680]},")"],["terminal",{"sourceInterval":[5681,5684]},";"]]],"LValue_more":["define",{"sourceInterval":[5714,5734]},null,[],["seq",{"sourceInterval":[5714,5727]},["app",{"sourceInterval":[5714,5716]},"id",[]],["terminal",{"sourceInterval":[5717,5720]},"."],["app",{"sourceInterval":[5721,5727]},"LValue",[]]]],"LValue_single":["define",{"sourceInterval":[5748,5759]},null,[],["app",{"sourceInterval":[5748,5750]},"id",[]]],"LValue":["define",{"sourceInterval":[5705,5759]},null,[],["alt",{"sourceInterval":[5714,5759]},["app",{"sourceInterval":[5714,5727]},"LValue_more",[]],["app",{"sourceInterval":[5748,5750]},"LValue_single",[]]]],"Expression":["define",{"sourceInterval":[5784,5818]},null,[],["app",{"sourceInterval":[5797,5818]},"ExpressionConditional",[]]],"ExpressionConditional_ternary":["define",{"sourceInterval":[5847,5912]},null,[],["seq",{"sourceInterval":[5847,5902]},["app",{"sourceInterval":[5847,5859]},"ExpressionOr",[]],["terminal",{"sourceInterval":[5860,5863]},"?"],["app",{"sourceInterval":[5864,5876]},"ExpressionOr",[]],["terminal",{"sourceInterval":[5877,5880]},":"],["app",{"sourceInterval":[5881,5902]},"ExpressionConditional",[]]]],"ExpressionConditional":["define",{"sourceInterval":[5823,5953]},null,[],["alt",{"sourceInterval":[5847,5953]},["app",{"sourceInterval":[5847,5902]},"ExpressionConditional_ternary",[]],["app",{"sourceInterval":[5941,5953]},"ExpressionOr",[]]]],"ExpressionOr_or":["define",{"sourceInterval":[5973,6009]},null,[],["seq",{"sourceInterval":[5973,6004]},["app",{"sourceInterval":[5973,5985]},"ExpressionOr",[]],["terminal",{"sourceInterval":[5986,5990]},"||"],["app",{"sourceInterval":[5991,6004]},"ExpressionAnd",[]]]],"ExpressionOr":["define",{"sourceInterval":[5958,6042]},null,[],["alt",{"sourceInterval":[5973,6042]},["app",{"sourceInterval":[5973,6004]},"ExpressionOr_or",[]],["app",{"sourceInterval":[6029,6042]},"ExpressionAnd",[]]]],"ExpressionAnd_and":["define",{"sourceInterval":[6063,6105]},null,[],["seq",{"sourceInterval":[6063,6099]},["app",{"sourceInterval":[6063,6076]},"ExpressionAnd",[]],["terminal",{"sourceInterval":[6077,6081]},"&&"],["app",{"sourceInterval":[6082,6099]},"ExpressionCompare",[]]]],"ExpressionAnd":["define",{"sourceInterval":[6047,6143]},null,[],["alt",{"sourceInterval":[6063,6143]},["app",{"sourceInterval":[6063,6099]},"ExpressionAnd_and",[]],["app",{"sourceInterval":[6126,6143]},"ExpressionCompare",[]]]],"ExpressionCompare_not":["define",{"sourceInterval":[6168,6213]},null,[],["seq",{"sourceInterval":[6168,6207]},["app",{"sourceInterval":[6168,6185]},"ExpressionCompare",[]],["terminal",{"sourceInterval":[6186,6190]},"!="],["app",{"sourceInterval":[6191,6207]},"ExpressionBinary",[]]]],"ExpressionCompare_eq":["define",{"sourceInterval":[6238,6282]},null,[],["seq",{"sourceInterval":[6238,6277]},["app",{"sourceInterval":[6238,6255]},"ExpressionCompare",[]],["terminal",{"sourceInterval":[6256,6260]},"=="],["app",{"sourceInterval":[6261,6277]},"ExpressionBinary",[]]]],"ExpressionCompare_gt":["define",{"sourceInterval":[6307,6350]},null,[],["seq",{"sourceInterval":[6307,6345]},["app",{"sourceInterval":[6307,6324]},"ExpressionCompare",[]],["terminal",{"sourceInterval":[6325,6328]},">"],["app",{"sourceInterval":[6329,6345]},"ExpressionBinary",[]]]],"ExpressionCompare_gte":["define",{"sourceInterval":[6375,6420]},null,[],["seq",{"sourceInterval":[6375,6414]},["app",{"sourceInterval":[6375,6392]},"ExpressionCompare",[]],["terminal",{"sourceInterval":[6393,6397]},">="],["app",{"sourceInterval":[6398,6414]},"ExpressionBinary",[]]]],"ExpressionCompare_lt":["define",{"sourceInterval":[6445,6488]},null,[],["seq",{"sourceInterval":[6445,6483]},["app",{"sourceInterval":[6445,6462]},"ExpressionCompare",[]],["terminal",{"sourceInterval":[6463,6466]},"<"],["app",{"sourceInterval":[6467,6483]},"ExpressionBinary",[]]]],"ExpressionCompare_lte":["define",{"sourceInterval":[6513,6558]},null,[],["seq",{"sourceInterval":[6513,6552]},["app",{"sourceInterval":[6513,6530]},"ExpressionCompare",[]],["terminal",{"sourceInterval":[6531,6535]},"<="],["app",{"sourceInterval":[6536,6552]},"ExpressionBinary",[]]]],"ExpressionCompare":["define",{"sourceInterval":[6148,6599]},null,[],["alt",{"sourceInterval":[6168,6599]},["app",{"sourceInterval":[6168,6207]},"ExpressionCompare_not",[]],["app",{"sourceInterval":[6238,6277]},"ExpressionCompare_eq",[]],["app",{"sourceInterval":[6307,6345]},"ExpressionCompare_gt",[]],["app",{"sourceInterval":[6375,6414]},"ExpressionCompare_gte",[]],["app",{"sourceInterval":[6445,6483]},"ExpressionCompare_lt",[]],["app",{"sourceInterval":[6513,6552]},"ExpressionCompare_lte",[]],["app",{"sourceInterval":[6583,6599]},"ExpressionBinary",[]]]],"ExpressionBinary_shr":["define",{"sourceInterval":[6623,6664]},null,[],["seq",{"sourceInterval":[6623,6658]},["app",{"sourceInterval":[6623,6639]},"ExpressionBinary",[]],["terminal",{"sourceInterval":[6640,6644]},">>"],["app",{"sourceInterval":[6645,6658]},"ExpressionAdd",[]]]],"ExpressionBinary_shl":["define",{"sourceInterval":[6687,6728]},null,[],["seq",{"sourceInterval":[6687,6722]},["app",{"sourceInterval":[6687,6703]},"ExpressionBinary",[]],["terminal",{"sourceInterval":[6704,6708]},"<<"],["app",{"sourceInterval":[6709,6722]},"ExpressionAdd",[]]]],"ExpressionBinary_bin_and":["define",{"sourceInterval":[6751,6795]},null,[],["seq",{"sourceInterval":[6751,6785]},["app",{"sourceInterval":[6751,6767]},"ExpressionBinary",[]],["terminal",{"sourceInterval":[6768,6771]},"&"],["app",{"sourceInterval":[6772,6785]},"ExpressionAdd",[]]]],"ExpressionBinary_bin_or":["define",{"sourceInterval":[6818,6861]},null,[],["seq",{"sourceInterval":[6818,6852]},["app",{"sourceInterval":[6818,6834]},"ExpressionBinary",[]],["terminal",{"sourceInterval":[6835,6838]},"|"],["app",{"sourceInterval":[6839,6852]},"ExpressionAdd",[]]]],"ExpressionBinary":["define",{"sourceInterval":[6604,6897]},null,[],["alt",{"sourceInterval":[6623,6897]},["app",{"sourceInterval":[6623,6658]},"ExpressionBinary_shr",[]],["app",{"sourceInterval":[6687,6722]},"ExpressionBinary_shl",[]],["app",{"sourceInterval":[6751,6785]},"ExpressionBinary_bin_and",[]],["app",{"sourceInterval":[6818,6852]},"ExpressionBinary_bin_or",[]],["app",{"sourceInterval":[6884,6897]},"ExpressionAdd",[]]]],"ExpressionAdd_add":["define",{"sourceInterval":[6918,6960]},null,[],["seq",{"sourceInterval":[6918,6954]},["app",{"sourceInterval":[6918,6931]},"ExpressionAdd",[]],["terminal",{"sourceInterval":[6932,6935]},"+"],["not",{"sourceInterval":[6936,6940]},["terminal",{"sourceInterval":[6937,6940]},"+"]],["app",{"sourceInterval":[6941,6954]},"ExpressionMul",[]]]],"ExpressionAdd_sub":["define",{"sourceInterval":[6981,7023]},null,[],["seq",{"sourceInterval":[6981,7017]},["app",{"sourceInterval":[6981,6994]},"ExpressionAdd",[]],["terminal",{"sourceInterval":[6995,6998]},"-"],["not",{"sourceInterval":[6999,7003]},["terminal",{"sourceInterval":[7000,7003]},"-"]],["app",{"sourceInterval":[7004,7017]},"ExpressionMul",[]]]],"ExpressionAdd":["define",{"sourceInterval":[6902,7057]},null,[],["alt",{"sourceInterval":[6918,7057]},["app",{"sourceInterval":[6918,6954]},"ExpressionAdd_add",[]],["app",{"sourceInterval":[6981,7017]},"ExpressionAdd_sub",[]],["app",{"sourceInterval":[7044,7057]},"ExpressionMul",[]]]],"ExpressionMul_mul":["define",{"sourceInterval":[7078,7117]},null,[],["seq",{"sourceInterval":[7078,7111]},["app",{"sourceInterval":[7078,7091]},"ExpressionMul",[]],["terminal",{"sourceInterval":[7092,7095]},"*"],["app",{"sourceInterval":[7096,7111]},"ExpressionUnary",[]]]],"ExpressionMul_div":["define",{"sourceInterval":[7138,7177]},null,[],["seq",{"sourceInterval":[7138,7171]},["app",{"sourceInterval":[7138,7151]},"ExpressionMul",[]],["terminal",{"sourceInterval":[7152,7155]},"/"],["app",{"sourceInterval":[7156,7171]},"ExpressionUnary",[]]]],"ExpressionMul_rem":["define",{"sourceInterval":[7198,7237]},null,[],["seq",{"sourceInterval":[7198,7231]},["app",{"sourceInterval":[7198,7211]},"ExpressionMul",[]],["terminal",{"sourceInterval":[7212,7215]},"%"],["app",{"sourceInterval":[7216,7231]},"ExpressionUnary",[]]]],"ExpressionMul":["define",{"sourceInterval":[7062,7273]},null,[],["alt",{"sourceInterval":[7078,7273]},["app",{"sourceInterval":[7078,7111]},"ExpressionMul_mul",[]],["app",{"sourceInterval":[7138,7171]},"ExpressionMul_div",[]],["app",{"sourceInterval":[7198,7231]},"ExpressionMul_rem",[]],["app",{"sourceInterval":[7258,7273]},"ExpressionUnary",[]]]],"ExpressionUnary_neg":["define",{"sourceInterval":[7296,7327]},null,[],["seq",{"sourceInterval":[7296,7321]},["terminal",{"sourceInterval":[7296,7299]},"-"],["app",{"sourceInterval":[7300,7321]},"ExpressionUnarySuffix",[]]]],"ExpressionUnary_add":["define",{"sourceInterval":[7350,7381]},null,[],["seq",{"sourceInterval":[7350,7375]},["terminal",{"sourceInterval":[7350,7353]},"+"],["app",{"sourceInterval":[7354,7375]},"ExpressionUnarySuffix",[]]]],"ExpressionUnary_not":["define",{"sourceInterval":[7404,7435]},null,[],["seq",{"sourceInterval":[7404,7429]},["terminal",{"sourceInterval":[7404,7407]},"!"],["app",{"sourceInterval":[7408,7429]},"ExpressionUnarySuffix",[]]]],"ExpressionUnary":["define",{"sourceInterval":[7278,7479]},null,[],["alt",{"sourceInterval":[7296,7479]},["app",{"sourceInterval":[7296,7321]},"ExpressionUnary_neg",[]],["app",{"sourceInterval":[7350,7375]},"ExpressionUnary_add",[]],["app",{"sourceInterval":[7404,7429]},"ExpressionUnary_not",[]],["app",{"sourceInterval":[7458,7479]},"ExpressionUnarySuffix",[]]]],"ExpressionUnarySuffix_notNull":["define",{"sourceInterval":[7508,7538]},null,[],["seq",{"sourceInterval":[7508,7528]},["app",{"sourceInterval":[7508,7523]},"ExpressionValue",[]],["terminal",{"sourceInterval":[7524,7528]},"!!"]]],"ExpressionUnarySuffix":["define",{"sourceInterval":[7484,7582]},null,[],["alt",{"sourceInterval":[7508,7582]},["app",{"sourceInterval":[7508,7528]},"ExpressionUnarySuffix_notNull",[]],["app",{"sourceInterval":[7567,7582]},"ExpressionValue",[]]]],"ExpressionBracket":["define",{"sourceInterval":[7587,7625]},null,[],["seq",{"sourceInterval":[7607,7625]},["terminal",{"sourceInterval":[7607,7610]},"("],["app",{"sourceInterval":[7611,7621]},"Expression",[]],["terminal",{"sourceInterval":[7622,7625]},")"]]],"ExpressionValue":["define",{"sourceInterval":[7657,8047]},null,[],["alt",{"sourceInterval":[7675,8047]},["app",{"sourceInterval":[7675,7689]},"ExpressionCall",[]],["app",{"sourceInterval":[7712,7727]},"ExpressionField",[]],["app",{"sourceInterval":[7750,7770]},"ExpressionStaticCall",[]],["app",{"sourceInterval":[7793,7810]},"ExpressionBracket",[]],["app",{"sourceInterval":[7833,7846]},"ExpressionNew",[]],["app",{"sourceInterval":[7869,7883]},"integerLiteral",[]],["app",{"sourceInterval":[7906,7917]},"boolLiteral",[]],["app",{"sourceInterval":[7940,7942]},"id",[]],["app",{"sourceInterval":[7965,7969]},"null",[]],["app",{"sourceInterval":[7992,8008]},"ExpressionInitOf",[]],["app",{"sourceInterval":[8031,8047]},"ExpressionString",[]]]],"ExpressionString":["define",{"sourceInterval":[8052,8084]},null,[],["app",{"sourceInterval":[8071,8084]},"stringLiteral",[]]],"ExpressionField":["define",{"sourceInterval":[8089,8134]},null,[],["seq",{"sourceInterval":[8107,8134]},["app",{"sourceInterval":[8107,8122]},"ExpressionValue",[]],["terminal",{"sourceInterval":[8123,8126]},"."],["app",{"sourceInterval":[8127,8129]},"id",[]],["not",{"sourceInterval":[8130,8134]},["terminal",{"sourceInterval":[8131,8134]},"("]]]],"ExpressionCall":["define",{"sourceInterval":[8139,8215]},null,[],["seq",{"sourceInterval":[8156,8215]},["app",{"sourceInterval":[8156,8171]},"ExpressionValue",[]],["terminal",{"sourceInterval":[8172,8175]},"."],["app",{"sourceInterval":[8176,8178]},"id",[]],["terminal",{"sourceInterval":[8179,8182]},"("],["app",{"sourceInterval":[8183,8206]},"ListOf",[["app",{"sourceInterval":[8190,8200]},"Expression",[]],["terminal",{"sourceInterval":[8202,8205]},","]]],["opt",{"sourceInterval":[8207,8211]},["terminal",{"sourceInterval":[8207,8210]},","]],["terminal",{"sourceInterval":[8212,8215]},")"]]],"ExpressionNew":["define",{"sourceInterval":[8220,8277]},null,[],["seq",{"sourceInterval":[8236,8277]},["app",{"sourceInterval":[8236,8238]},"id",[]],["terminal",{"sourceInterval":[8239,8242]},"{"],["app",{"sourceInterval":[8243,8268]},"ListOf",[["app",{"sourceInterval":[8250,8262]},"NewParameter",[]],["terminal",{"sourceInterval":[8264,8267]},","]]],["opt",{"sourceInterval":[8269,8273]},["terminal",{"sourceInterval":[8269,8272]},","]],["terminal",{"sourceInterval":[8274,8277]},"}"]]],"NewParameter":["define",{"sourceInterval":[8282,8314]},null,[],["seq",{"sourceInterval":[8297,8314]},["app",{"sourceInterval":[8297,8299]},"id",[]],["terminal",{"sourceInterval":[8300,8303]},":"],["app",{"sourceInterval":[8304,8314]},"Expression",[]]]],"ExpressionStaticCall":["define",{"sourceInterval":[8319,8381]},null,[],["seq",{"sourceInterval":[8342,8381]},["app",{"sourceInterval":[8342,8344]},"id",[]],["terminal",{"sourceInterval":[8345,8348]},"("],["app",{"sourceInterval":[8349,8372]},"ListOf",[["app",{"sourceInterval":[8356,8366]},"Expression",[]],["terminal",{"sourceInterval":[8368,8371]},","]]],["opt",{"sourceInterval":[8373,8377]},["terminal",{"sourceInterval":[8373,8376]},","]],["terminal",{"sourceInterval":[8378,8381]},")"]]],"ExpressionInitOf":["define",{"sourceInterval":[8386,8451]},null,[],["seq",{"sourceInterval":[8405,8451]},["app",{"sourceInterval":[8405,8411]},"initOf",[]],["app",{"sourceInterval":[8412,8414]},"id",[]],["terminal",{"sourceInterval":[8415,8418]},"("],["app",{"sourceInterval":[8419,8442]},"ListOf",[["app",{"sourceInterval":[8426,8436]},"Expression",[]],["terminal",{"sourceInterval":[8438,8441]},","]]],["opt",{"sourceInterval":[8443,8447]},["terminal",{"sourceInterval":[8443,8446]},","]],["terminal",{"sourceInterval":[8448,8451]},")"]]],"typeLiteral":["define",{"sourceInterval":[8477,8521]},null,[],["seq",{"sourceInterval":[8491,8521]},["app",{"sourceInterval":[8491,8504]},"letterAsciiUC",[]],["star",{"sourceInterval":[8505,8521]},["app",{"sourceInterval":[8505,8520]},"typeLiteralPart",[]]]]],"typeLiteralPart":["define",{"sourceInterval":[8526,8569]},null,[],["alt",{"sourceInterval":[8544,8569]},["app",{"sourceInterval":[8544,8555]},"letterAscii",[]],["app",{"sourceInterval":[8558,8563]},"digit",[]],["terminal",{"sourceInterval":[8566,8569]},"_"]]],"integerLiteral":["define",{"sourceInterval":[8776,8870]},null,[],["alt",{"sourceInterval":[8793,8870]},["app",{"sourceInterval":[8793,8810]},"integerLiteralHex",[]],["app",{"sourceInterval":[8813,8830]},"integerLiteralBin",[]],["app",{"sourceInterval":[8833,8850]},"integerLiteralOct",[]],["app",{"sourceInterval":[8853,8870]},"integerLiteralDec",[]]]],"integerLiteralDec_nonZeroIntegerLiteralDec":["define",{"sourceInterval":[8917,8971]},null,[],["seq",{"sourceInterval":[8917,8943]},["app",{"sourceInterval":[8917,8929]},"nonZeroDigit",[]],["star",{"sourceInterval":[8930,8943]},["seq",{"sourceInterval":[8931,8941]},["opt",{"sourceInterval":[8931,8935]},["terminal",{"sourceInterval":[8931,8934]},"_"]],["app",{"sourceInterval":[8936,8941]},"digit",[]]]]]],"integerLiteralDec_integerLiteralWithLeadingZero":["define",{"sourceInterval":[8996,9055]},null,[],["seq",{"sourceInterval":[8996,9006]},["terminal",{"sourceInterval":[8996,8999]},"0"],["star",{"sourceInterval":[9000,9006]},["app",{"sourceInterval":[9000,9005]},"digit",[]]]]],"integerLiteralDec":["define",{"sourceInterval":[8897,9055]},null,[],["alt",{"sourceInterval":[8917,9055]},["app",{"sourceInterval":[8917,8943]},"integerLiteralDec_nonZeroIntegerLiteralDec",[]],["app",{"sourceInterval":[8996,9006]},"integerLiteralDec_integerLiteralWithLeadingZero",[]]]],"integerLiteralHex":["define",{"sourceInterval":[9060,9119]},null,[],["seq",{"sourceInterval":[9080,9119]},["alt",{"sourceInterval":[9081,9092]},["terminal",{"sourceInterval":[9081,9085]},"0x"],["terminal",{"sourceInterval":[9088,9092]},"0X"]],["app",{"sourceInterval":[9094,9102]},"hexDigit",[]],["star",{"sourceInterval":[9103,9119]},["seq",{"sourceInterval":[9104,9117]},["opt",{"sourceInterval":[9104,9108]},["terminal",{"sourceInterval":[9104,9107]},"_"]],["app",{"sourceInterval":[9109,9117]},"hexDigit",[]]]]]],"integerLiteralBin":["define",{"sourceInterval":[9124,9183]},null,[],["seq",{"sourceInterval":[9144,9183]},["alt",{"sourceInterval":[9145,9156]},["terminal",{"sourceInterval":[9145,9149]},"0b"],["terminal",{"sourceInterval":[9152,9156]},"0B"]],["app",{"sourceInterval":[9158,9166]},"binDigit",[]],["star",{"sourceInterval":[9167,9183]},["seq",{"sourceInterval":[9168,9181]},["opt",{"sourceInterval":[9168,9172]},["terminal",{"sourceInterval":[9168,9171]},"_"]],["app",{"sourceInterval":[9173,9181]},"binDigit",[]]]]]],"integerLiteralOct":["define",{"sourceInterval":[9188,9247]},null,[],["seq",{"sourceInterval":[9208,9247]},["alt",{"sourceInterval":[9209,9220]},["terminal",{"sourceInterval":[9209,9213]},"0o"],["terminal",{"sourceInterval":[9216,9220]},"0O"]],["app",{"sourceInterval":[9222,9230]},"octDigit",[]],["star",{"sourceInterval":[9231,9247]},["seq",{"sourceInterval":[9232,9245]},["opt",{"sourceInterval":[9232,9236]},["terminal",{"sourceInterval":[9232,9235]},"_"]],["app",{"sourceInterval":[9237,9245]},"octDigit",[]]]]]],"binDigit":["define",{"sourceInterval":[9252,9272]},null,[],["alt",{"sourceInterval":[9263,9272]},["terminal",{"sourceInterval":[9263,9266]},"0"],["terminal",{"sourceInterval":[9269,9272]},"1"]]],"octDigit":["define",{"sourceInterval":[9277,9296]},null,[],["range",{"sourceInterval":[9288,9296]},"0","7"]],"nonZeroDigit":["define",{"sourceInterval":[9301,9324]},null,[],["range",{"sourceInterval":[9316,9324]},"1","9"]],"letterAsciiLC":["define",{"sourceInterval":[9345,9369]},null,[],["range",{"sourceInterval":[9361,9369]},"a","z"]],"letterAsciiUC":["define",{"sourceInterval":[9374,9398]},null,[],["range",{"sourceInterval":[9390,9398]},"A","Z"]],"letterAscii":["define",{"sourceInterval":[9403,9446]},null,[],["alt",{"sourceInterval":[9417,9446]},["app",{"sourceInterval":[9417,9430]},"letterAsciiLC",[]],["app",{"sourceInterval":[9433,9446]},"letterAsciiUC",[]]]],"letterComment":["define",{"sourceInterval":[9451,9510]},null,[],["alt",{"sourceInterval":[9467,9510]},["app",{"sourceInterval":[9467,9480]},"letterAsciiLC",[]],["app",{"sourceInterval":[9483,9496]},"letterAsciiUC",[]],["app",{"sourceInterval":[9499,9504]},"digit",[]],["terminal",{"sourceInterval":[9507,9510]},"_"]]],"idStart":["define",{"sourceInterval":[9534,9561]},null,[],["alt",{"sourceInterval":[9544,9561]},["app",{"sourceInterval":[9544,9555]},"letterAscii",[]],["terminal",{"sourceInterval":[9558,9561]},"_"]]],"idPart":["define",{"sourceInterval":[9566,9600]},null,[],["alt",{"sourceInterval":[9575,9600]},["app",{"sourceInterval":[9575,9586]},"letterAscii",[]],["app",{"sourceInterval":[9589,9594]},"digit",[]],["terminal",{"sourceInterval":[9597,9600]},"_"]]],"id":["define",{"sourceInterval":[9605,9643]},null,[],["seq",{"sourceInterval":[9610,9643]},["not",{"sourceInterval":[9610,9623]},["app",{"sourceInterval":[9611,9623]},"reservedWord",[]]],["lex",{"sourceInterval":[9624,9632]},["app",{"sourceInterval":[9625,9632]},"idStart",[]]],["lex",{"sourceInterval":[9633,9643]},["star",{"sourceInterval":[9635,9642]},["app",{"sourceInterval":[9635,9641]},"idPart",[]]]]]],"funcLetter":["define",{"sourceInterval":[9664,9725]},null,[],["alt",{"sourceInterval":[9677,9725]},["app",{"sourceInterval":[9677,9688]},"letterAscii",[]],["terminal",{"sourceInterval":[9691,9694]},"_"],["terminal",{"sourceInterval":[9697,9700]},"'"],["terminal",{"sourceInterval":[9703,9706]},"?"],["terminal",{"sourceInterval":[9709,9712]},"!"],["terminal",{"sourceInterval":[9715,9719]},"::"],["terminal",{"sourceInterval":[9722,9725]},"&"]]],"funcId":["define",{"sourceInterval":[9730,9772]},null,[],["seq",{"sourceInterval":[9739,9772]},["app",{"sourceInterval":[9739,9749]},"funcLetter",[]],["star",{"sourceInterval":[9750,9772]},["lex",{"sourceInterval":[9750,9771]},["alt",{"sourceInterval":[9752,9770]},["app",{"sourceInterval":[9752,9762]},"funcLetter",[]],["app",{"sourceInterval":[9765,9770]},"digit",[]]]]]]],"boolLiteral":["define",{"sourceInterval":[9798,9838]},null,[],["seq",{"sourceInterval":[9812,9838]},["alt",{"sourceInterval":[9813,9829]},["terminal",{"sourceInterval":[9813,9819]},"true"],["terminal",{"sourceInterval":[9822,9829]},"false"]],["not",{"sourceInterval":[9831,9838]},["app",{"sourceInterval":[9832,9838]},"idPart",[]]]]],"stringLiteral":["define",{"sourceInterval":[9866,9935]},null,[],["seq",{"sourceInterval":[9882,9935]},["terminal",{"sourceInterval":[9882,9886]},"\""],["star",{"sourceInterval":[9887,9930]},["alt",{"sourceInterval":[9888,9928]},["app",{"sourceInterval":[9888,9911]},"nonQuoteOrBackslashChar",[]],["app",{"sourceInterval":[9914,9928]},"escapeSequence",[]]]],["terminal",{"sourceInterval":[9931,9935]},"\""]]],"nonQuoteOrBackslashChar":["define",{"sourceInterval":[9940,9984]},null,[],["seq",{"sourceInterval":[9966,9984]},["not",{"sourceInterval":[9966,9980]},["alt",{"sourceInterval":[9968,9979]},["terminal",{"sourceInterval":[9968,9972]},"\""],["terminal",{"sourceInterval":[9975,9979]},"\\"]]],["app",{"sourceInterval":[9981,9984]},"any",[]]]],"escapeSequence_backslash":["define",{"sourceInterval":[10006,10025]},null,[],["terminal",{"sourceInterval":[10006,10012]},"\\\\"]],"escapeSequence_doubleQuote":["define",{"sourceInterval":[10047,10068]},null,[],["terminal",{"sourceInterval":[10047,10053]},"\\\""]],"escapeSequence_newline":["define",{"sourceInterval":[10090,10106]},null,[],["terminal",{"sourceInterval":[10090,10095]},"\\n"]],"escapeSequence_carriageReturn":["define",{"sourceInterval":[10128,10151]},null,[],["terminal",{"sourceInterval":[10128,10133]},"\\r"]],"escapeSequence_tab":["define",{"sourceInterval":[10173,10185]},null,[],["terminal",{"sourceInterval":[10173,10178]},"\\t"]],"escapeSequence_verticalTab":["define",{"sourceInterval":[10207,10227]},null,[],["terminal",{"sourceInterval":[10207,10212]},"\\v"]],"escapeSequence_backspace":["define",{"sourceInterval":[10249,10267]},null,[],["terminal",{"sourceInterval":[10249,10254]},"\\b"]],"escapeSequence_formFeed":["define",{"sourceInterval":[10289,10306]},null,[],["terminal",{"sourceInterval":[10289,10294]},"\\f"]],"escapeSequence_unicodeCodePoint":["define",{"sourceInterval":[10328,10417]},null,[],["seq",{"sourceInterval":[10328,10397]},["terminal",{"sourceInterval":[10328,10334]},"\\u{"],["app",{"sourceInterval":[10335,10343]},"hexDigit",[]],["opt",{"sourceInterval":[10344,10353]},["app",{"sourceInterval":[10344,10352]},"hexDigit",[]]],["opt",{"sourceInterval":[10354,10363]},["app",{"sourceInterval":[10354,10362]},"hexDigit",[]]],["opt",{"sourceInterval":[10364,10373]},["app",{"sourceInterval":[10364,10372]},"hexDigit",[]]],["opt",{"sourceInterval":[10374,10383]},["app",{"sourceInterval":[10374,10382]},"hexDigit",[]]],["opt",{"sourceInterval":[10384,10393]},["app",{"sourceInterval":[10384,10392]},"hexDigit",[]]],["terminal",{"sourceInterval":[10394,10397]},"}"]]],"escapeSequence_unicodeEscape":["define",{"sourceInterval":[10439,10497]},null,[],["seq",{"sourceInterval":[10439,10480]},["terminal",{"sourceInterval":[10439,10444]},"\\u"],["app",{"sourceInterval":[10445,10453]},"hexDigit",[]],["app",{"sourceInterval":[10454,10462]},"hexDigit",[]],["app",{"sourceInterval":[10463,10471]},"hexDigit",[]],["app",{"sourceInterval":[10472,10480]},"hexDigit",[]]]],"escapeSequence_hexEscape":["define",{"sourceInterval":[10519,10555]},null,[],["seq",{"sourceInterval":[10519,10542]},["terminal",{"sourceInterval":[10519,10524]},"\\x"],["app",{"sourceInterval":[10525,10533]},"hexDigit",[]],["app",{"sourceInterval":[10534,10542]},"hexDigit",[]]]],"escapeSequence":["define",{"sourceInterval":[9989,10555]},null,[],["alt",{"sourceInterval":[10006,10555]},["app",{"sourceInterval":[10006,10012]},"escapeSequence_backslash",[]],["app",{"sourceInterval":[10047,10053]},"escapeSequence_doubleQuote",[]],["app",{"sourceInterval":[10090,10095]},"escapeSequence_newline",[]],["app",{"sourceInterval":[10128,10133]},"escapeSequence_carriageReturn",[]],["app",{"sourceInterval":[10173,10178]},"escapeSequence_tab",[]],["app",{"sourceInterval":[10207,10212]},"escapeSequence_verticalTab",[]],["app",{"sourceInterval":[10249,10254]},"escapeSequence_backspace",[]],["app",{"sourceInterval":[10289,10294]},"escapeSequence_formFeed",[]],["app",{"sourceInterval":[10328,10397]},"escapeSequence_unicodeCodePoint",[]],["app",{"sourceInterval":[10439,10480]},"escapeSequence_unicodeEscape",[]],["app",{"sourceInterval":[10519,10542]},"escapeSequence_hexEscape",[]]]],"keyword":["define",{"sourceInterval":[10608,11121]},null,[],["alt",{"sourceInterval":[10618,11121]},["app",{"sourceInterval":[10618,10621]},"fun",[]],["app",{"sourceInterval":[10637,10640]},"let",[]],["app",{"sourceInterval":[10655,10661]},"return",[]],["app",{"sourceInterval":[10677,10683]},"extend",[]],["app",{"sourceInterval":[10699,10705]},"native",[]],["app",{"sourceInterval":[10721,10727]},"public",[]],["app",{"sourceInterval":[10743,10747]},"null",[]],["app",{"sourceInterval":[10763,10765]},"if",[]],["app",{"sourceInterval":[10781,10785]},"else",[]],["app",{"sourceInterval":[10801,10806]},"while",[]],["app",{"sourceInterval":[10822,10828]},"repeat",[]],["app",{"sourceInterval":[10844,10846]},"do",[]],["app",{"sourceInterval":[10862,10867]},"until",[]],["app",{"sourceInterval":[10883,10885]},"as",[]],["app",{"sourceInterval":[10902,10909]},"mutates",[]],["app",{"sourceInterval":[10924,10931]},"extends",[]],["app",{"sourceInterval":[10946,10952]},"import",[]],["app",{"sourceInterval":[10967,10971]},"with",[]],["app",{"sourceInterval":[10986,10991]},"trait",[]],["app",{"sourceInterval":[11006,11012]},"initOf",[]],["app",{"sourceInterval":[11027,11035]},"override",[]],["app",{"sourceInterval":[11050,11058]},"abstract",[]],["app",{"sourceInterval":[11073,11080]},"virtual",[]],["app",{"sourceInterval":[11095,11101]},"inline",[]],["app",{"sourceInterval":[11116,11121]},"const",[]]]],"contract":["define",{"sourceInterval":[11126,11155]},null,[],["seq",{"sourceInterval":[11137,11155]},["terminal",{"sourceInterval":[11137,11147]},"contract"],["not",{"sourceInterval":[11148,11155]},["app",{"sourceInterval":[11149,11155]},"idPart",[]]]]],"let":["define",{"sourceInterval":[11160,11179]},null,[],["seq",{"sourceInterval":[11166,11179]},["terminal",{"sourceInterval":[11166,11171]},"let"],["not",{"sourceInterval":[11172,11179]},["app",{"sourceInterval":[11173,11179]},"idPart",[]]]]],"fun":["define",{"sourceInterval":[11184,11203]},null,[],["seq",{"sourceInterval":[11190,11203]},["terminal",{"sourceInterval":[11190,11195]},"fun"],["not",{"sourceInterval":[11196,11203]},["app",{"sourceInterval":[11197,11203]},"idPart",[]]]]],"return":["define",{"sourceInterval":[11208,11233]},null,[],["seq",{"sourceInterval":[11217,11233]},["terminal",{"sourceInterval":[11217,11225]},"return"],["not",{"sourceInterval":[11226,11233]},["app",{"sourceInterval":[11227,11233]},"idPart",[]]]]],"extend":["define",{"sourceInterval":[11238,11263]},null,[],["seq",{"sourceInterval":[11247,11263]},["terminal",{"sourceInterval":[11247,11255]},"extend"],["not",{"sourceInterval":[11256,11263]},["app",{"sourceInterval":[11257,11263]},"idPart",[]]]]],"native":["define",{"sourceInterval":[11268,11293]},null,[],["seq",{"sourceInterval":[11277,11293]},["terminal",{"sourceInterval":[11277,11285]},"native"],["not",{"sourceInterval":[11286,11293]},["app",{"sourceInterval":[11287,11293]},"idPart",[]]]]],"public":["define",{"sourceInterval":[11298,11323]},null,[],["seq",{"sourceInterval":[11307,11323]},["terminal",{"sourceInterval":[11307,11315]},"public"],["not",{"sourceInterval":[11316,11323]},["app",{"sourceInterval":[11317,11323]},"idPart",[]]]]],"null":["define",{"sourceInterval":[11328,11349]},null,[],["seq",{"sourceInterval":[11335,11349]},["terminal",{"sourceInterval":[11335,11341]},"null"],["not",{"sourceInterval":[11342,11349]},["app",{"sourceInterval":[11343,11349]},"idPart",[]]]]],"if":["define",{"sourceInterval":[11354,11371]},null,[],["seq",{"sourceInterval":[11359,11371]},["terminal",{"sourceInterval":[11359,11363]},"if"],["not",{"sourceInterval":[11364,11371]},["app",{"sourceInterval":[11365,11371]},"idPart",[]]]]],"else":["define",{"sourceInterval":[11376,11397]},null,[],["seq",{"sourceInterval":[11383,11397]},["terminal",{"sourceInterval":[11383,11389]},"else"],["not",{"sourceInterval":[11390,11397]},["app",{"sourceInterval":[11391,11397]},"idPart",[]]]]],"while":["define",{"sourceInterval":[11402,11425]},null,[],["seq",{"sourceInterval":[11410,11425]},["terminal",{"sourceInterval":[11410,11417]},"while"],["not",{"sourceInterval":[11418,11425]},["app",{"sourceInterval":[11419,11425]},"idPart",[]]]]],"repeat":["define",{"sourceInterval":[11430,11455]},null,[],["seq",{"sourceInterval":[11439,11455]},["terminal",{"sourceInterval":[11439,11447]},"repeat"],["not",{"sourceInterval":[11448,11455]},["app",{"sourceInterval":[11449,11455]},"idPart",[]]]]],"do":["define",{"sourceInterval":[11460,11477]},null,[],["seq",{"sourceInterval":[11465,11477]},["terminal",{"sourceInterval":[11465,11469]},"do"],["not",{"sourceInterval":[11470,11477]},["app",{"sourceInterval":[11471,11477]},"idPart",[]]]]],"until":["define",{"sourceInterval":[11482,11505]},null,[],["seq",{"sourceInterval":[11490,11505]},["terminal",{"sourceInterval":[11490,11497]},"until"],["not",{"sourceInterval":[11498,11505]},["app",{"sourceInterval":[11499,11505]},"idPart",[]]]]],"as":["define",{"sourceInterval":[11510,11527]},null,[],["seq",{"sourceInterval":[11515,11527]},["terminal",{"sourceInterval":[11515,11519]},"as"],["not",{"sourceInterval":[11520,11527]},["app",{"sourceInterval":[11521,11527]},"idPart",[]]]]],"mutates":["define",{"sourceInterval":[11532,11559]},null,[],["seq",{"sourceInterval":[11542,11559]},["terminal",{"sourceInterval":[11542,11551]},"mutates"],["not",{"sourceInterval":[11552,11559]},["app",{"sourceInterval":[11553,11559]},"idPart",[]]]]],"extends":["define",{"sourceInterval":[11564,11591]},null,[],["seq",{"sourceInterval":[11574,11591]},["terminal",{"sourceInterval":[11574,11583]},"extends"],["not",{"sourceInterval":[11584,11591]},["app",{"sourceInterval":[11585,11591]},"idPart",[]]]]],"import":["define",{"sourceInterval":[11596,11621]},null,[],["seq",{"sourceInterval":[11605,11621]},["terminal",{"sourceInterval":[11605,11613]},"import"],["not",{"sourceInterval":[11614,11621]},["app",{"sourceInterval":[11615,11621]},"idPart",[]]]]],"with":["define",{"sourceInterval":[11626,11647]},null,[],["seq",{"sourceInterval":[11633,11647]},["terminal",{"sourceInterval":[11633,11639]},"with"],["not",{"sourceInterval":[11640,11647]},["app",{"sourceInterval":[11641,11647]},"idPart",[]]]]],"trait":["define",{"sourceInterval":[11652,11675]},null,[],["seq",{"sourceInterval":[11660,11675]},["terminal",{"sourceInterval":[11660,11667]},"trait"],["not",{"sourceInterval":[11668,11675]},["app",{"sourceInterval":[11669,11675]},"idPart",[]]]]],"initOf":["define",{"sourceInterval":[11680,11705]},null,[],["seq",{"sourceInterval":[11689,11705]},["terminal",{"sourceInterval":[11689,11697]},"initOf"],["not",{"sourceInterval":[11698,11705]},["app",{"sourceInterval":[11699,11705]},"idPart",[]]]]],"virtual":["define",{"sourceInterval":[11710,11737]},null,[],["seq",{"sourceInterval":[11720,11737]},["terminal",{"sourceInterval":[11720,11729]},"virtual"],["not",{"sourceInterval":[11730,11737]},["app",{"sourceInterval":[11731,11737]},"idPart",[]]]]],"override":["define",{"sourceInterval":[11742,11771]},null,[],["seq",{"sourceInterval":[11753,11771]},["terminal",{"sourceInterval":[11753,11763]},"override"],["not",{"sourceInterval":[11764,11771]},["app",{"sourceInterval":[11765,11771]},"idPart",[]]]]],"inline":["define",{"sourceInterval":[11776,11801]},null,[],["seq",{"sourceInterval":[11785,11801]},["terminal",{"sourceInterval":[11785,11793]},"inline"],["not",{"sourceInterval":[11794,11801]},["app",{"sourceInterval":[11795,11801]},"idPart",[]]]]],"const":["define",{"sourceInterval":[11806,11829]},null,[],["seq",{"sourceInterval":[11814,11829]},["terminal",{"sourceInterval":[11814,11821]},"const"],["not",{"sourceInterval":[11822,11829]},["app",{"sourceInterval":[11823,11829]},"idPart",[]]]]],"abstract":["define",{"sourceInterval":[11834,11863]},null,[],["seq",{"sourceInterval":[11845,11863]},["terminal",{"sourceInterval":[11845,11855]},"abstract"],["not",{"sourceInterval":[11856,11863]},["app",{"sourceInterval":[11857,11863]},"idPart",[]]]]],"nameAttribute":["define",{"sourceInterval":[11887,11910]},null,[],["terminal",{"sourceInterval":[11903,11910]},"@name"]],"reservedWord":["define",{"sourceInterval":[11932,11954]},null,[],["app",{"sourceInterval":[11947,11954]},"keyword",[]]],"space":["extend",{"sourceInterval":[11976,12009]},null,[],["alt",{"sourceInterval":[11985,12009]},["app",{"sourceInterval":[11985,11992]},"comment",[]],["app",{"sourceInterval":[11995,12009]},"lineTerminator",[]]]],"comment":["define",{"sourceInterval":[12014,12060]},null,[],["alt",{"sourceInterval":[12024,12060]},["app",{"sourceInterval":[12024,12040]},"multiLineComment",[]],["app",{"sourceInterval":[12043,12060]},"singleLineComment",[]]]],"lineTerminator":["define",{"sourceInterval":[12065,12115]},null,[],["alt",{"sourceInterval":[12082,12115]},["terminal",{"sourceInterval":[12082,12086]},"\n"],["terminal",{"sourceInterval":[12089,12093]},"\r"],["terminal",{"sourceInterval":[12096,12104]},"\u2028"],["terminal",{"sourceInterval":[12107,12115]},"\u2029"]]],"multiLineComment":["define",{"sourceInterval":[12120,12161]},null,[],["seq",{"sourceInterval":[12139,12161]},["terminal",{"sourceInterval":[12139,12143]},"/*"],["star",{"sourceInterval":[12144,12156]},["seq",{"sourceInterval":[12145,12154]},["not",{"sourceInterval":[12145,12150]},["terminal",{"sourceInterval":[12146,12150]},"*/"]],["app",{"sourceInterval":[12151,12154]},"any",[]]]],["terminal",{"sourceInterval":[12157,12161]},"*/"]]],"singleLineComment":["define",{"sourceInterval":[12166,12213]},null,[],["seq",{"sourceInterval":[12186,12213]},["terminal",{"sourceInterval":[12186,12190]},"//"],["star",{"sourceInterval":[12191,12213]},["seq",{"sourceInterval":[12192,12211]},["not",{"sourceInterval":[12192,12207]},["app",{"sourceInterval":[12193,12207]},"lineTerminator",[]]],["app",{"sourceInterval":[12208,12211]},"any",[]]]]]]}]);module.exports=result; \ No newline at end of file +'use strict';const ohm=(require('ohm-js').default || require('ohm-js'));const result=ohm.makeRecipe(["grammar",{"source":"Tact {\n\n // Starting point of the program\n Program = ProgramItem*\n ProgramItem = Struct\n | Contract\n | Primitive\n | StaticFunction\n | NativeFunction\n | ProgramImport\n | Trait\n | Constant\n ProgramImport = import stringLiteral \";\"\n\n // Built-in declarations\n Primitive = \"primitive\" Type \";\"\n\n // Static function\n StaticFunction = Function\n NativeFunction = nameAttribute \"(\" funcId \")\" FunctionAttribute* native id \"(\" ListOf \",\"? \")\" \";\" --withVoid\n | nameAttribute \"(\" funcId \")\" FunctionAttribute* native id \"(\" ListOf \",\"? \")\" \":\" Type \";\" --withType\n \n // Field declarations\n Type = typeLiteral \"?\" --optional\n | typeLiteral --required\n | \"map\" \"<\" typeLiteral (as id)? \",\" typeLiteral (as id)? \">\" --map\n | \"bounced\" \"<\" typeLiteral \">\" --bounced\n Field = id \":\" Type \";\" --default\n | id \":\" Type \"=\" Expression \";\" --defaultWithInit\n | id \":\" Type as id \";\" --withSerialization\n | id \":\" Type as id \"=\" Expression \";\" --withSerializationAndInit\n \n // Constant\n ConstantAttribute = virtual --virtual\n | override --override\n | abstract --abstract\n Constant = ConstantAttribute* ~fun const id \":\" Type \"=\" Expression \";\" --withValue\n | ConstantAttribute* ~fun const id \":\" Type \";\" --withEmpty\n\n // Struct\n Struct = \"struct\" typeLiteral \"{\" StructBody* \"}\" --originary\n | \"message\" typeLiteral \"{\" StructBody* \"}\" --message\n | \"message\" \"(\" integerLiteral \")\" typeLiteral \"{\" StructBody* \"}\" --messageWithId\n StructBody = Field\n\n // Contract\n Contract = ContractAttribute* contract id \"{\" ContractBody* \"}\" --simple\n | ContractAttribute* contract id with NonemptyListOf \",\"? \"{\" ContractBody* \"}\" --withTraits\n ContractInit = \"init\" \"(\" ListOf \",\"? \")\" \"{\" Statement* \"}\"\n ContractBody = Field\n | ContractInit\n | ReceiveFunction\n | Function\n | Constant\n \n // Trait\n Trait = ContractAttribute* trait id \"{\" TraitBody* \"}\" --originary\n | ContractAttribute* trait id with NonemptyListOf \",\"? \"{\" TraitBody* \"}\" --withTraits\n TraitBody = Field\n | ReceiveFunction\n | Function\n | Constant\n\n // Contract attributes\n ContractAttribute = \"@interface\" \"(\" stringLiteral \")\" --interface\n\n // Function\n FunctionAttribute = \"get\" --getter\n | mutates --mutates\n | extends --extends\n | virtual --virtual\n | override --override\n | inline --inline\n | abstract --abstract\n Function = FunctionAttribute* fun id \"(\" ListOf \",\"? \")\" \"{\" Statement* \"}\" --withVoid\n | FunctionAttribute* fun id \"(\" ListOf \",\"? \")\" \":\" Type \"{\" Statement* \"}\" --withType\n | FunctionAttribute* fun id \"(\" ListOf \",\"? \")\" \";\" --abstractVoid\n | FunctionAttribute* fun id \"(\" ListOf \",\"? \")\" \":\" Type \";\" --abstractType\n FunctionArg = id \":\" Type\n \n ReceiveFunction = \"receive\" \"(\" FunctionArg \")\" \"{\" Statement* \"}\" --simple\n | \"receive\" \"(\" \")\" \"{\" Statement* \"}\" --empty\n | \"receive\" \"(\" stringLiteral \")\" \"{\" Statement* \"}\" --comment\n | \"bounced\" \"(\" FunctionArg \")\" \"{\" Statement* \"}\" --bounced\n | \"external\" \"(\" FunctionArg \")\" \"{\" Statement* \"}\" --externalSimple\n | \"external\" \"(\" stringLiteral \")\" \"{\" Statement* \"}\" --externalComment\n | \"external\" \"(\" \")\" \"{\" Statement* \"}\" --externalEmpty\n\n // Statements\n Statement = StatementLet\n | StatementBlock\n | StatementReturn\n | StatementExpression\n | StatementAssign\n | StatementAugmentedAssign\n | StatementCondition\n | StatementWhile\n | StatementRepeat\n | StatementUntil\n StatementBlock = \"{\" Statement* \"}\"\n StatementLet = let id \":\" Type \"=\" Expression \";\"\n StatementReturn = return Expression \";\" --withExpression\n | return \";\" --withoutExpression \n StatementExpression = Expression \";\"\n StatementAssign = LValue \"=\" Expression \";\"\n StatementAugmentedAssign = StatementAugmentedAssignAdd\n | StatementAugmentedAssignSub\n | StatementAugmentedAssignMul\n | StatementAugmentedAssignDiv\n | StatementAugmentedAssignRem\n StatementAugmentedAssignAdd = LValue \"+=\" Expression \";\"\n StatementAugmentedAssignSub = LValue \"-=\" Expression \";\"\n StatementAugmentedAssignMul = LValue \"*=\" Expression \";\"\n StatementAugmentedAssignDiv = LValue \"/=\" Expression \";\"\n StatementAugmentedAssignRem = LValue \"%=\" Expression \";\"\n StatementCondition = if Expression \"{\" Statement* \"}\" ~else --simple\n | if Expression \"{\" Statement* \"}\" else \"{\" Statement* \"}\" --withElse\n | if Expression \"{\" Statement* \"}\" else StatementCondition --withElseIf\n StatementWhile = while \"(\" Expression \")\" \"{\" Statement* \"}\"\n StatementRepeat = repeat \"(\" Expression \")\" \"{\" Statement* \"}\"\n StatementUntil = do \"{\" Statement* \"}\" until \"(\" Expression \")\" \";\"\n\n // L-value\n LValue = id \".\" LValue --more\n | id --single\n\n // Expressions\n Expression = ExpressionConditional\n ExpressionConditional = ExpressionOr \"?\" ExpressionOr \":\" ExpressionConditional --ternary\n | ExpressionOr\n ExpressionOr = ExpressionOr \"||\" ExpressionAnd --or\n | ExpressionAnd\n ExpressionAnd = ExpressionAnd \"&&\" ExpressionCompare --and\n | ExpressionCompare\n ExpressionCompare = ExpressionCompare \"!=\" ExpressionBinary --not\n | ExpressionCompare \"==\" ExpressionBinary --eq\n | ExpressionCompare \">\" ExpressionBinary --gt\n | ExpressionCompare \">=\" ExpressionBinary --gte\n | ExpressionCompare \"<\" ExpressionBinary --lt\n | ExpressionCompare \"<=\" ExpressionBinary --lte\n | ExpressionBinary\n ExpressionBinary = ExpressionBinary \">>\" ExpressionAdd --shr\n | ExpressionBinary \"<<\" ExpressionAdd --shl\n | ExpressionBinary \"&\" ExpressionAdd --bin_and\n | ExpressionBinary \"|\" ExpressionAdd --bin_or\n | ExpressionAdd\n ExpressionAdd = ExpressionAdd \"+\" ~\"+\" ExpressionMul --add\n | ExpressionAdd \"-\" ~\"-\" ExpressionMul --sub\n | ExpressionMul\n ExpressionMul = ExpressionMul \"*\" ExpressionUnary --mul\n | ExpressionMul \"/\" ExpressionUnary --div\n | ExpressionMul \"%\" ExpressionUnary --rem\n | ExpressionUnary\n ExpressionUnary = \"-\" ExpressionUnarySuffix --neg\n | \"+\" ExpressionUnarySuffix --add\n | \"!\" ExpressionUnarySuffix --not\n | ExpressionUnarySuffix\n ExpressionUnarySuffix = ExpressionValue \"!!\" --notNull\n | ExpressionValue\n ExpressionBracket = \"(\" Expression \")\"\n\n // Order is important\n ExpressionValue = ExpressionCall\n | ExpressionField\n | ExpressionStaticCall\n | ExpressionBracket\n | ExpressionNew\n | integerLiteral\n | boolLiteral\n | id\n | null\n | ExpressionInitOf\n | ExpressionString\n ExpressionString = stringLiteral\n ExpressionField = ExpressionValue \".\" id ~\"(\"\n ExpressionCall = ExpressionValue \".\" id \"(\" ListOf \",\"? \")\"\n ExpressionNew = id \"{\" ListOf \",\"? \"}\"\n NewParameter = id \":\" Expression\n ExpressionStaticCall = id \"(\" ListOf \",\"? \")\"\n ExpressionInitOf = initOf id \"(\" ListOf \",\"? \")\"\n\n // Type Literal\n typeLiteral = letterAsciiUC typeLiteralPart*\n typeLiteralPart = letterAscii | digit | \"_\"\n\n // Integer Literal\n // hexDigit defined in Ohm's built-in rules (otherwise: hexDigit = \"0\"..\"9\" | \"a\"..\"f\" | \"A\"..\"F\")\n // digit defined in Ohm's built-in rules (otherwise: digit = \"0\"..\"9\")\n integerLiteral = integerLiteralHex | integerLiteralBin | integerLiteralOct | integerLiteralDec // Order is important\n integerLiteralDec = nonZeroDigit (\"_\"? digit)* --nonZeroIntegerLiteralDec\n | \"0\" digit* --integerLiteralWithLeadingZero\n integerLiteralHex = (\"0x\" | \"0X\") hexDigit (\"_\"? hexDigit)*\n integerLiteralBin = (\"0b\" | \"0B\") binDigit (\"_\"? binDigit)*\n integerLiteralOct = (\"0o\" | \"0O\") octDigit (\"_\"? octDigit)*\n binDigit = \"0\" | \"1\"\n octDigit = \"0\"..\"7\"\n nonZeroDigit = \"1\"..\"9\"\n\n // Letters\n letterAsciiLC = \"a\"..\"z\"\n letterAsciiUC = \"A\"..\"Z\"\n letterAscii = letterAsciiLC | letterAsciiUC\n letterComment = letterAsciiLC | letterAsciiUC | digit | \"_\"\n\n // ID Literal\n idStart = letterAscii | \"_\"\n idPart = letterAscii | digit | \"_\"\n id = ~reservedWord #idStart #(idPart*)\n\n // FunC id\n funcLetter = letterAscii | \"_\" | \"'\" | \"?\" | \"!\" | \"::\" | \"&\"\n funcId = funcLetter #(funcLetter | digit)*\n\n // Bool Literal\n boolLiteral = (\"true\" | \"false\") ~idPart\n\n // String literal\n stringLiteral = \"\\\"\" (nonQuoteOrBackslashChar | escapeSequence)* \"\\\"\"\n nonQuoteOrBackslashChar = ~(\"\\\"\" | \"\\\\\") any\n escapeSequence = \"\\\\\\\\\" -- backslash\n | \"\\\\\\\"\" -- doubleQuote\n | \"\\\\n\" -- newline\n | \"\\\\r\" -- carriageReturn\n | \"\\\\t\" -- tab\n | \"\\\\v\" -- verticalTab\n | \"\\\\b\" -- backspace\n | \"\\\\f\" -- formFeed\n | \"\\\\u{\" hexDigit hexDigit? hexDigit? hexDigit? hexDigit? hexDigit? \"}\" -- unicodeCodePoint\n | \"\\\\u\" hexDigit hexDigit hexDigit hexDigit -- unicodeEscape\n | \"\\\\x\" hexDigit hexDigit -- hexEscape\n\n // Keywords\n // NOTE Order is important\n keyword = fun \n | let\n | return \n | extend \n | native \n | public \n | null \n | if \n | else \n | while \n | repeat \n | do \n | until \n | as \n | mutates\n | extends\n | import\n | with\n | trait\n | initOf\n | override\n | abstract\n | virtual\n | inline\n | const\n contract = \"contract\" ~idPart\n let = \"let\" ~idPart\n fun = \"fun\" ~idPart\n return = \"return\" ~idPart\n extend = \"extend\" ~idPart\n native = \"native\" ~idPart\n public = \"public\" ~idPart\n null = \"null\" ~idPart\n if = \"if\" ~idPart\n else = \"else\" ~idPart\n while = \"while\" ~idPart\n repeat = \"repeat\" ~idPart\n do = \"do\" ~idPart\n until = \"until\" ~idPart\n as = \"as\" ~idPart\n mutates = \"mutates\" ~idPart\n extends = \"extends\" ~idPart\n import = \"import\" ~idPart\n with = \"with\" ~idPart\n trait = \"trait\" ~idPart\n initOf = \"initOf\" ~idPart\n virtual = \"virtual\" ~idPart\n override = \"override\" ~idPart\n inline = \"inline\" ~idPart\n const = \"const\" ~idPart\n abstract = \"abstract\" ~idPart\n\n // Attributes\n nameAttribute = \"@name\"\n\n // Reserved\n reservedWord = keyword\n\n // Comments\n space += comment | lineTerminator\n comment = multiLineComment | singleLineComment\n lineTerminator = \"\\n\" | \"\\r\" | \"\\u2028\" | \"\\u2029\"\n multiLineComment = \"/*\" (~\"*/\" any)* \"*/\"\n singleLineComment = \"//\" (~lineTerminator any)*\n}"},"Tact",null,"Program",{"Program":["define",{"sourceInterval":[49,71]},null,[],["star",{"sourceInterval":[59,71]},["app",{"sourceInterval":[59,70]},"ProgramItem",[]]]],"ProgramItem":["define",{"sourceInterval":[76,300]},null,[],["alt",{"sourceInterval":[90,300]},["app",{"sourceInterval":[90,96]},"Struct",[]],["app",{"sourceInterval":[115,123]},"Contract",[]],["app",{"sourceInterval":[142,151]},"Primitive",[]],["app",{"sourceInterval":[170,184]},"StaticFunction",[]],["app",{"sourceInterval":[203,217]},"NativeFunction",[]],["app",{"sourceInterval":[236,249]},"ProgramImport",[]],["app",{"sourceInterval":[268,273]},"Trait",[]],["app",{"sourceInterval":[292,300]},"Constant",[]]]],"ProgramImport":["define",{"sourceInterval":[305,345]},null,[],["seq",{"sourceInterval":[321,345]},["app",{"sourceInterval":[321,327]},"import",[]],["app",{"sourceInterval":[328,341]},"stringLiteral",[]],["terminal",{"sourceInterval":[342,345]},";"]]],"Primitive":["define",{"sourceInterval":[380,412]},null,[],["seq",{"sourceInterval":[392,412]},["terminal",{"sourceInterval":[392,403]},"primitive"],["app",{"sourceInterval":[404,408]},"Type",[]],["terminal",{"sourceInterval":[409,412]},";"]]],"StaticFunction":["define",{"sourceInterval":[441,466]},null,[],["app",{"sourceInterval":[458,466]},"Function",[]]],"NativeFunction_withVoid":["define",{"sourceInterval":[488,597]},null,[],["seq",{"sourceInterval":[488,586]},["app",{"sourceInterval":[488,501]},"nameAttribute",[]],["terminal",{"sourceInterval":[502,505]},"("],["app",{"sourceInterval":[506,512]},"funcId",[]],["terminal",{"sourceInterval":[513,516]},")"],["star",{"sourceInterval":[517,535]},["app",{"sourceInterval":[517,534]},"FunctionAttribute",[]]],["app",{"sourceInterval":[536,542]},"native",[]],["app",{"sourceInterval":[543,545]},"id",[]],["terminal",{"sourceInterval":[546,549]},"("],["app",{"sourceInterval":[550,573]},"ListOf",[["app",{"sourceInterval":[557,568]},"FunctionArg",[]],["terminal",{"sourceInterval":[569,572]},","]]],["opt",{"sourceInterval":[574,578]},["terminal",{"sourceInterval":[574,577]},","]],["terminal",{"sourceInterval":[579,582]},")"],["terminal",{"sourceInterval":[583,586]},";"]]],"NativeFunction_withType":["define",{"sourceInterval":[619,737]},null,[],["seq",{"sourceInterval":[619,726]},["app",{"sourceInterval":[619,632]},"nameAttribute",[]],["terminal",{"sourceInterval":[633,636]},"("],["app",{"sourceInterval":[637,643]},"funcId",[]],["terminal",{"sourceInterval":[644,647]},")"],["star",{"sourceInterval":[648,666]},["app",{"sourceInterval":[648,665]},"FunctionAttribute",[]]],["app",{"sourceInterval":[667,673]},"native",[]],["app",{"sourceInterval":[674,676]},"id",[]],["terminal",{"sourceInterval":[677,680]},"("],["app",{"sourceInterval":[681,704]},"ListOf",[["app",{"sourceInterval":[688,699]},"FunctionArg",[]],["terminal",{"sourceInterval":[700,703]},","]]],["opt",{"sourceInterval":[705,709]},["terminal",{"sourceInterval":[705,708]},","]],["terminal",{"sourceInterval":[710,713]},")"],["terminal",{"sourceInterval":[714,717]},":"],["app",{"sourceInterval":[718,722]},"Type",[]],["terminal",{"sourceInterval":[723,726]},";"]]],"NativeFunction":["define",{"sourceInterval":[471,737]},null,[],["alt",{"sourceInterval":[488,737]},["app",{"sourceInterval":[488,586]},"NativeFunction_withVoid",[]],["app",{"sourceInterval":[619,726]},"NativeFunction_withType",[]]]],"Type_optional":["define",{"sourceInterval":[780,806]},null,[],["seq",{"sourceInterval":[780,795]},["app",{"sourceInterval":[780,791]},"typeLiteral",[]],["terminal",{"sourceInterval":[792,795]},"?"]]],"Type_required":["define",{"sourceInterval":[818,840]},null,[],["app",{"sourceInterval":[818,829]},"typeLiteral",[]]],"Type_map":["define",{"sourceInterval":[852,917]},null,[],["seq",{"sourceInterval":[852,911]},["terminal",{"sourceInterval":[852,857]},"map"],["terminal",{"sourceInterval":[858,861]},"<"],["app",{"sourceInterval":[862,873]},"typeLiteral",[]],["opt",{"sourceInterval":[874,882]},["seq",{"sourceInterval":[875,880]},["app",{"sourceInterval":[875,877]},"as",[]],["app",{"sourceInterval":[878,880]},"id",[]]]],["terminal",{"sourceInterval":[883,886]},","],["app",{"sourceInterval":[887,898]},"typeLiteral",[]],["opt",{"sourceInterval":[899,907]},["seq",{"sourceInterval":[900,905]},["app",{"sourceInterval":[900,902]},"as",[]],["app",{"sourceInterval":[903,905]},"id",[]]]],["terminal",{"sourceInterval":[908,911]},">"]]],"Type_bounced":["define",{"sourceInterval":[929,968]},null,[],["seq",{"sourceInterval":[929,958]},["terminal",{"sourceInterval":[929,938]},"bounced"],["terminal",{"sourceInterval":[939,942]},"<"],["app",{"sourceInterval":[943,954]},"typeLiteral",[]],["terminal",{"sourceInterval":[955,958]},">"]]],"Type":["define",{"sourceInterval":[773,968]},null,[],["alt",{"sourceInterval":[780,968]},["app",{"sourceInterval":[780,795]},"Type_optional",[]],["app",{"sourceInterval":[818,829]},"Type_required",[]],["app",{"sourceInterval":[852,911]},"Type_map",[]],["app",{"sourceInterval":[929,958]},"Type_bounced",[]]]],"Field_default":["define",{"sourceInterval":[981,1006]},null,[],["seq",{"sourceInterval":[981,996]},["app",{"sourceInterval":[981,983]},"id",[]],["terminal",{"sourceInterval":[984,987]},":"],["app",{"sourceInterval":[988,992]},"Type",[]],["terminal",{"sourceInterval":[993,996]},";"]]],"Field_defaultWithInit":["define",{"sourceInterval":[1019,1067]},null,[],["seq",{"sourceInterval":[1019,1049]},["app",{"sourceInterval":[1019,1021]},"id",[]],["terminal",{"sourceInterval":[1022,1025]},":"],["app",{"sourceInterval":[1026,1030]},"Type",[]],["terminal",{"sourceInterval":[1031,1034]},"="],["app",{"sourceInterval":[1035,1045]},"Expression",[]],["terminal",{"sourceInterval":[1046,1049]},";"]]],"Field_withSerialization":["define",{"sourceInterval":[1080,1121]},null,[],["seq",{"sourceInterval":[1080,1101]},["app",{"sourceInterval":[1080,1082]},"id",[]],["terminal",{"sourceInterval":[1083,1086]},":"],["app",{"sourceInterval":[1087,1091]},"Type",[]],["app",{"sourceInterval":[1092,1094]},"as",[]],["app",{"sourceInterval":[1095,1097]},"id",[]],["terminal",{"sourceInterval":[1098,1101]},";"]]],"Field_withSerializationAndInit":["define",{"sourceInterval":[1134,1197]},null,[],["seq",{"sourceInterval":[1134,1170]},["app",{"sourceInterval":[1134,1136]},"id",[]],["terminal",{"sourceInterval":[1137,1140]},":"],["app",{"sourceInterval":[1141,1145]},"Type",[]],["app",{"sourceInterval":[1146,1148]},"as",[]],["app",{"sourceInterval":[1149,1151]},"id",[]],["terminal",{"sourceInterval":[1152,1155]},"="],["app",{"sourceInterval":[1156,1166]},"Expression",[]],["terminal",{"sourceInterval":[1167,1170]},";"]]],"Field":["define",{"sourceInterval":[973,1197]},null,[],["alt",{"sourceInterval":[981,1197]},["app",{"sourceInterval":[981,996]},"Field_default",[]],["app",{"sourceInterval":[1019,1049]},"Field_defaultWithInit",[]],["app",{"sourceInterval":[1080,1101]},"Field_withSerialization",[]],["app",{"sourceInterval":[1134,1170]},"Field_withSerializationAndInit",[]]]],"ConstantAttribute_virtual":["define",{"sourceInterval":[1243,1263]},null,[],["app",{"sourceInterval":[1243,1250]},"virtual",[]]],"ConstantAttribute_override":["define",{"sourceInterval":[1288,1309]},null,[],["app",{"sourceInterval":[1288,1296]},"override",[]]],"ConstantAttribute_abstract":["define",{"sourceInterval":[1334,1355]},null,[],["app",{"sourceInterval":[1334,1342]},"abstract",[]]],"ConstantAttribute":["define",{"sourceInterval":[1223,1355]},null,[],["alt",{"sourceInterval":[1243,1355]},["app",{"sourceInterval":[1243,1250]},"ConstantAttribute_virtual",[]],["app",{"sourceInterval":[1288,1296]},"ConstantAttribute_override",[]],["app",{"sourceInterval":[1334,1342]},"ConstantAttribute_abstract",[]]]],"Constant_withValue":["define",{"sourceInterval":[1371,1443]},null,[],["seq",{"sourceInterval":[1371,1431]},["star",{"sourceInterval":[1371,1389]},["app",{"sourceInterval":[1371,1388]},"ConstantAttribute",[]]],["not",{"sourceInterval":[1390,1394]},["app",{"sourceInterval":[1391,1394]},"fun",[]]],["app",{"sourceInterval":[1395,1400]},"const",[]],["app",{"sourceInterval":[1401,1403]},"id",[]],["terminal",{"sourceInterval":[1404,1407]},":"],["app",{"sourceInterval":[1408,1412]},"Type",[]],["terminal",{"sourceInterval":[1413,1416]},"="],["app",{"sourceInterval":[1417,1427]},"Expression",[]],["terminal",{"sourceInterval":[1428,1431]},";"]]],"Constant_withEmpty":["define",{"sourceInterval":[1459,1531]},null,[],["seq",{"sourceInterval":[1459,1504]},["star",{"sourceInterval":[1459,1477]},["app",{"sourceInterval":[1459,1476]},"ConstantAttribute",[]]],["not",{"sourceInterval":[1478,1482]},["app",{"sourceInterval":[1479,1482]},"fun",[]]],["app",{"sourceInterval":[1483,1488]},"const",[]],["app",{"sourceInterval":[1489,1491]},"id",[]],["terminal",{"sourceInterval":[1492,1495]},":"],["app",{"sourceInterval":[1496,1500]},"Type",[]],["terminal",{"sourceInterval":[1501,1504]},";"]]],"Constant":["define",{"sourceInterval":[1360,1531]},null,[],["alt",{"sourceInterval":[1371,1531]},["app",{"sourceInterval":[1371,1431]},"Constant_withValue",[]],["app",{"sourceInterval":[1459,1504]},"Constant_withEmpty",[]]]],"Struct_originary":["define",{"sourceInterval":[1560,1612]},null,[],["seq",{"sourceInterval":[1560,1600]},["terminal",{"sourceInterval":[1560,1568]},"struct"],["app",{"sourceInterval":[1569,1580]},"typeLiteral",[]],["terminal",{"sourceInterval":[1581,1584]},"{"],["star",{"sourceInterval":[1585,1596]},["app",{"sourceInterval":[1585,1595]},"StructBody",[]]],["terminal",{"sourceInterval":[1597,1600]},"}"]]],"Struct_message":["define",{"sourceInterval":[1626,1677]},null,[],["seq",{"sourceInterval":[1626,1667]},["terminal",{"sourceInterval":[1626,1635]},"message"],["app",{"sourceInterval":[1636,1647]},"typeLiteral",[]],["terminal",{"sourceInterval":[1648,1651]},"{"],["star",{"sourceInterval":[1652,1663]},["app",{"sourceInterval":[1652,1662]},"StructBody",[]]],["terminal",{"sourceInterval":[1664,1667]},"}"]]],"Struct_messageWithId":["define",{"sourceInterval":[1691,1771]},null,[],["seq",{"sourceInterval":[1691,1755]},["terminal",{"sourceInterval":[1691,1700]},"message"],["terminal",{"sourceInterval":[1701,1704]},"("],["app",{"sourceInterval":[1705,1719]},"integerLiteral",[]],["terminal",{"sourceInterval":[1720,1723]},")"],["app",{"sourceInterval":[1724,1735]},"typeLiteral",[]],["terminal",{"sourceInterval":[1736,1739]},"{"],["star",{"sourceInterval":[1740,1751]},["app",{"sourceInterval":[1740,1750]},"StructBody",[]]],["terminal",{"sourceInterval":[1752,1755]},"}"]]],"Struct":["define",{"sourceInterval":[1551,1771]},null,[],["alt",{"sourceInterval":[1560,1771]},["app",{"sourceInterval":[1560,1600]},"Struct_originary",[]],["app",{"sourceInterval":[1626,1667]},"Struct_message",[]],["app",{"sourceInterval":[1691,1755]},"Struct_messageWithId",[]]]],"StructBody":["define",{"sourceInterval":[1776,1794]},null,[],["app",{"sourceInterval":[1789,1794]},"Field",[]]],"Contract_simple":["define",{"sourceInterval":[1827,1888]},null,[],["seq",{"sourceInterval":[1827,1879]},["star",{"sourceInterval":[1827,1845]},["app",{"sourceInterval":[1827,1844]},"ContractAttribute",[]]],["app",{"sourceInterval":[1846,1854]},"contract",[]],["app",{"sourceInterval":[1855,1857]},"id",[]],["terminal",{"sourceInterval":[1858,1861]},"{"],["star",{"sourceInterval":[1862,1875]},["app",{"sourceInterval":[1862,1874]},"ContractBody",[]]],["terminal",{"sourceInterval":[1876,1879]},"}"]]],"Contract_withTraits":["define",{"sourceInterval":[1904,2002]},null,[],["seq",{"sourceInterval":[1904,1989]},["star",{"sourceInterval":[1904,1922]},["app",{"sourceInterval":[1904,1921]},"ContractAttribute",[]]],["app",{"sourceInterval":[1923,1931]},"contract",[]],["app",{"sourceInterval":[1932,1934]},"id",[]],["app",{"sourceInterval":[1935,1939]},"with",[]],["app",{"sourceInterval":[1940,1962]},"NonemptyListOf",[["app",{"sourceInterval":[1955,1957]},"id",[]],["terminal",{"sourceInterval":[1958,1961]},","]]],["opt",{"sourceInterval":[1963,1967]},["terminal",{"sourceInterval":[1963,1966]},","]],["terminal",{"sourceInterval":[1968,1971]},"{"],["star",{"sourceInterval":[1972,1985]},["app",{"sourceInterval":[1972,1984]},"ContractBody",[]]],["terminal",{"sourceInterval":[1986,1989]},"}"]]],"Contract":["define",{"sourceInterval":[1816,2002]},null,[],["alt",{"sourceInterval":[1827,2002]},["app",{"sourceInterval":[1827,1879]},"Contract_simple",[]],["app",{"sourceInterval":[1904,1989]},"Contract_withTraits",[]]]],"ContractInit":["define",{"sourceInterval":[2007,2084]},null,[],["seq",{"sourceInterval":[2022,2084]},["terminal",{"sourceInterval":[2022,2028]},"init"],["terminal",{"sourceInterval":[2029,2032]},"("],["app",{"sourceInterval":[2033,2056]},"ListOf",[["app",{"sourceInterval":[2040,2051]},"FunctionArg",[]],["terminal",{"sourceInterval":[2052,2055]},","]]],["opt",{"sourceInterval":[2057,2061]},["terminal",{"sourceInterval":[2057,2060]},","]],["terminal",{"sourceInterval":[2062,2065]},")"],["terminal",{"sourceInterval":[2066,2069]},"{"],["star",{"sourceInterval":[2070,2080]},["app",{"sourceInterval":[2070,2079]},"Statement",[]]],["terminal",{"sourceInterval":[2081,2084]},"}"]]],"ContractBody":["define",{"sourceInterval":[2089,2232]},null,[],["alt",{"sourceInterval":[2104,2232]},["app",{"sourceInterval":[2104,2109]},"Field",[]],["app",{"sourceInterval":[2129,2141]},"ContractInit",[]],["app",{"sourceInterval":[2161,2176]},"ReceiveFunction",[]],["app",{"sourceInterval":[2196,2204]},"Function",[]],["app",{"sourceInterval":[2224,2232]},"Constant",[]]]],"Trait_originary":["define",{"sourceInterval":[2263,2321]},null,[],["seq",{"sourceInterval":[2263,2309]},["star",{"sourceInterval":[2263,2281]},["app",{"sourceInterval":[2263,2280]},"ContractAttribute",[]]],["app",{"sourceInterval":[2282,2287]},"trait",[]],["app",{"sourceInterval":[2288,2290]},"id",[]],["terminal",{"sourceInterval":[2291,2294]},"{"],["star",{"sourceInterval":[2295,2305]},["app",{"sourceInterval":[2295,2304]},"TraitBody",[]]],["terminal",{"sourceInterval":[2306,2309]},"}"]]],"Trait_withTraits":["define",{"sourceInterval":[2334,2426]},null,[],["seq",{"sourceInterval":[2334,2413]},["star",{"sourceInterval":[2334,2352]},["app",{"sourceInterval":[2334,2351]},"ContractAttribute",[]]],["app",{"sourceInterval":[2353,2358]},"trait",[]],["app",{"sourceInterval":[2359,2361]},"id",[]],["app",{"sourceInterval":[2362,2366]},"with",[]],["app",{"sourceInterval":[2367,2389]},"NonemptyListOf",[["app",{"sourceInterval":[2382,2384]},"id",[]],["terminal",{"sourceInterval":[2385,2388]},","]]],["opt",{"sourceInterval":[2390,2394]},["terminal",{"sourceInterval":[2390,2393]},","]],["terminal",{"sourceInterval":[2395,2398]},"{"],["star",{"sourceInterval":[2399,2409]},["app",{"sourceInterval":[2399,2408]},"TraitBody",[]]],["terminal",{"sourceInterval":[2410,2413]},"}"]]],"Trait":["define",{"sourceInterval":[2255,2426]},null,[],["alt",{"sourceInterval":[2263,2426]},["app",{"sourceInterval":[2263,2309]},"Trait_originary",[]],["app",{"sourceInterval":[2334,2413]},"Trait_withTraits",[]]]],"TraitBody":["define",{"sourceInterval":[2431,2530]},null,[],["alt",{"sourceInterval":[2443,2530]},["app",{"sourceInterval":[2443,2448]},"Field",[]],["app",{"sourceInterval":[2465,2480]},"ReceiveFunction",[]],["app",{"sourceInterval":[2497,2505]},"Function",[]],["app",{"sourceInterval":[2522,2530]},"Constant",[]]]],"ContractAttribute_interface":["define",{"sourceInterval":[2583,2629]},null,[],["seq",{"sourceInterval":[2583,2617]},["terminal",{"sourceInterval":[2583,2595]},"@interface"],["terminal",{"sourceInterval":[2596,2599]},"("],["app",{"sourceInterval":[2600,2613]},"stringLiteral",[]],["terminal",{"sourceInterval":[2614,2617]},")"]]],"ContractAttribute":["define",{"sourceInterval":[2563,2629]},null,[],["app",{"sourceInterval":[2583,2629]},"ContractAttribute_interface",[]]],"FunctionAttribute_getter":["define",{"sourceInterval":[2671,2689]},null,[],["terminal",{"sourceInterval":[2671,2676]},"get"]],"FunctionAttribute_mutates":["define",{"sourceInterval":[2714,2733]},null,[],["app",{"sourceInterval":[2714,2721]},"mutates",[]]],"FunctionAttribute_extends":["define",{"sourceInterval":[2758,2777]},null,[],["app",{"sourceInterval":[2758,2765]},"extends",[]]],"FunctionAttribute_virtual":["define",{"sourceInterval":[2802,2821]},null,[],["app",{"sourceInterval":[2802,2809]},"virtual",[]]],"FunctionAttribute_override":["define",{"sourceInterval":[2846,2866]},null,[],["app",{"sourceInterval":[2846,2854]},"override",[]]],"FunctionAttribute_inline":["define",{"sourceInterval":[2891,2909]},null,[],["app",{"sourceInterval":[2891,2897]},"inline",[]]],"FunctionAttribute_abstract":["define",{"sourceInterval":[2934,2954]},null,[],["app",{"sourceInterval":[2934,2942]},"abstract",[]]],"FunctionAttribute":["define",{"sourceInterval":[2651,2954]},null,[],["alt",{"sourceInterval":[2671,2954]},["app",{"sourceInterval":[2671,2676]},"FunctionAttribute_getter",[]],["app",{"sourceInterval":[2714,2721]},"FunctionAttribute_mutates",[]],["app",{"sourceInterval":[2758,2765]},"FunctionAttribute_extends",[]],["app",{"sourceInterval":[2802,2809]},"FunctionAttribute_virtual",[]],["app",{"sourceInterval":[2846,2854]},"FunctionAttribute_override",[]],["app",{"sourceInterval":[2891,2897]},"FunctionAttribute_inline",[]],["app",{"sourceInterval":[2934,2942]},"FunctionAttribute_abstract",[]]]],"Function_withVoid":["define",{"sourceInterval":[2970,3062]},null,[],["seq",{"sourceInterval":[2970,3051]},["star",{"sourceInterval":[2970,2988]},["app",{"sourceInterval":[2970,2987]},"FunctionAttribute",[]]],["app",{"sourceInterval":[2989,2992]},"fun",[]],["app",{"sourceInterval":[2993,2995]},"id",[]],["terminal",{"sourceInterval":[2996,2999]},"("],["app",{"sourceInterval":[3000,3023]},"ListOf",[["app",{"sourceInterval":[3007,3018]},"FunctionArg",[]],["terminal",{"sourceInterval":[3019,3022]},","]]],["opt",{"sourceInterval":[3024,3028]},["terminal",{"sourceInterval":[3024,3027]},","]],["terminal",{"sourceInterval":[3029,3032]},")"],["terminal",{"sourceInterval":[3033,3036]},"{"],["star",{"sourceInterval":[3037,3047]},["app",{"sourceInterval":[3037,3046]},"Statement",[]]],["terminal",{"sourceInterval":[3048,3051]},"}"]]],"Function_withType":["define",{"sourceInterval":[3078,3179]},null,[],["seq",{"sourceInterval":[3078,3168]},["star",{"sourceInterval":[3078,3096]},["app",{"sourceInterval":[3078,3095]},"FunctionAttribute",[]]],["app",{"sourceInterval":[3097,3100]},"fun",[]],["app",{"sourceInterval":[3101,3103]},"id",[]],["terminal",{"sourceInterval":[3104,3107]},"("],["app",{"sourceInterval":[3108,3131]},"ListOf",[["app",{"sourceInterval":[3115,3126]},"FunctionArg",[]],["terminal",{"sourceInterval":[3127,3130]},","]]],["opt",{"sourceInterval":[3132,3136]},["terminal",{"sourceInterval":[3132,3135]},","]],["terminal",{"sourceInterval":[3137,3140]},")"],["terminal",{"sourceInterval":[3141,3144]},":"],["app",{"sourceInterval":[3145,3149]},"Type",[]],["terminal",{"sourceInterval":[3150,3153]},"{"],["star",{"sourceInterval":[3154,3164]},["app",{"sourceInterval":[3154,3163]},"Statement",[]]],["terminal",{"sourceInterval":[3165,3168]},"}"]]],"Function_abstractVoid":["define",{"sourceInterval":[3195,3276]},null,[],["seq",{"sourceInterval":[3195,3261]},["star",{"sourceInterval":[3195,3213]},["app",{"sourceInterval":[3195,3212]},"FunctionAttribute",[]]],["app",{"sourceInterval":[3214,3217]},"fun",[]],["app",{"sourceInterval":[3218,3220]},"id",[]],["terminal",{"sourceInterval":[3221,3224]},"("],["app",{"sourceInterval":[3225,3248]},"ListOf",[["app",{"sourceInterval":[3232,3243]},"FunctionArg",[]],["terminal",{"sourceInterval":[3244,3247]},","]]],["opt",{"sourceInterval":[3249,3253]},["terminal",{"sourceInterval":[3249,3252]},","]],["terminal",{"sourceInterval":[3254,3257]},")"],["terminal",{"sourceInterval":[3258,3261]},";"]]],"Function_abstractType":["define",{"sourceInterval":[3292,3382]},null,[],["seq",{"sourceInterval":[3292,3367]},["star",{"sourceInterval":[3292,3310]},["app",{"sourceInterval":[3292,3309]},"FunctionAttribute",[]]],["app",{"sourceInterval":[3311,3314]},"fun",[]],["app",{"sourceInterval":[3315,3317]},"id",[]],["terminal",{"sourceInterval":[3318,3321]},"("],["app",{"sourceInterval":[3322,3345]},"ListOf",[["app",{"sourceInterval":[3329,3340]},"FunctionArg",[]],["terminal",{"sourceInterval":[3341,3344]},","]]],["opt",{"sourceInterval":[3346,3350]},["terminal",{"sourceInterval":[3346,3349]},","]],["terminal",{"sourceInterval":[3351,3354]},")"],["terminal",{"sourceInterval":[3355,3358]},":"],["app",{"sourceInterval":[3359,3363]},"Type",[]],["terminal",{"sourceInterval":[3364,3367]},";"]]],"Function":["define",{"sourceInterval":[2959,3382]},null,[],["alt",{"sourceInterval":[2970,3382]},["app",{"sourceInterval":[2970,3051]},"Function_withVoid",[]],["app",{"sourceInterval":[3078,3168]},"Function_withType",[]],["app",{"sourceInterval":[3195,3261]},"Function_abstractVoid",[]],["app",{"sourceInterval":[3292,3367]},"Function_abstractType",[]]]],"FunctionArg":["define",{"sourceInterval":[3387,3412]},null,[],["seq",{"sourceInterval":[3401,3412]},["app",{"sourceInterval":[3401,3403]},"id",[]],["terminal",{"sourceInterval":[3404,3407]},":"],["app",{"sourceInterval":[3408,3412]},"Type",[]]]],"ReceiveFunction_simple":["define",{"sourceInterval":[3440,3497]},null,[],["seq",{"sourceInterval":[3440,3488]},["terminal",{"sourceInterval":[3440,3449]},"receive"],["terminal",{"sourceInterval":[3450,3453]},"("],["app",{"sourceInterval":[3454,3465]},"FunctionArg",[]],["terminal",{"sourceInterval":[3466,3469]},")"],["terminal",{"sourceInterval":[3470,3473]},"{"],["star",{"sourceInterval":[3474,3484]},["app",{"sourceInterval":[3474,3483]},"Statement",[]]],["terminal",{"sourceInterval":[3485,3488]},"}"]]],"ReceiveFunction_empty":["define",{"sourceInterval":[3520,3564]},null,[],["seq",{"sourceInterval":[3520,3556]},["terminal",{"sourceInterval":[3520,3529]},"receive"],["terminal",{"sourceInterval":[3530,3533]},"("],["terminal",{"sourceInterval":[3534,3537]},")"],["terminal",{"sourceInterval":[3538,3541]},"{"],["star",{"sourceInterval":[3542,3552]},["app",{"sourceInterval":[3542,3551]},"Statement",[]]],["terminal",{"sourceInterval":[3553,3556]},"}"]]],"ReceiveFunction_comment":["define",{"sourceInterval":[3587,3647]},null,[],["seq",{"sourceInterval":[3587,3637]},["terminal",{"sourceInterval":[3587,3596]},"receive"],["terminal",{"sourceInterval":[3597,3600]},"("],["app",{"sourceInterval":[3601,3614]},"stringLiteral",[]],["terminal",{"sourceInterval":[3615,3618]},")"],["terminal",{"sourceInterval":[3619,3622]},"{"],["star",{"sourceInterval":[3623,3633]},["app",{"sourceInterval":[3623,3632]},"Statement",[]]],["terminal",{"sourceInterval":[3634,3637]},"}"]]],"ReceiveFunction_bounced":["define",{"sourceInterval":[3670,3728]},null,[],["seq",{"sourceInterval":[3670,3718]},["terminal",{"sourceInterval":[3670,3679]},"bounced"],["terminal",{"sourceInterval":[3680,3683]},"("],["app",{"sourceInterval":[3684,3695]},"FunctionArg",[]],["terminal",{"sourceInterval":[3696,3699]},")"],["terminal",{"sourceInterval":[3700,3703]},"{"],["star",{"sourceInterval":[3704,3714]},["app",{"sourceInterval":[3704,3713]},"Statement",[]]],["terminal",{"sourceInterval":[3715,3718]},"}"]]],"ReceiveFunction_externalSimple":["define",{"sourceInterval":[3751,3817]},null,[],["seq",{"sourceInterval":[3751,3800]},["terminal",{"sourceInterval":[3751,3761]},"external"],["terminal",{"sourceInterval":[3762,3765]},"("],["app",{"sourceInterval":[3766,3777]},"FunctionArg",[]],["terminal",{"sourceInterval":[3778,3781]},")"],["terminal",{"sourceInterval":[3782,3785]},"{"],["star",{"sourceInterval":[3786,3796]},["app",{"sourceInterval":[3786,3795]},"Statement",[]]],["terminal",{"sourceInterval":[3797,3800]},"}"]]],"ReceiveFunction_externalComment":["define",{"sourceInterval":[3840,3909]},null,[],["seq",{"sourceInterval":[3840,3891]},["terminal",{"sourceInterval":[3840,3850]},"external"],["terminal",{"sourceInterval":[3851,3854]},"("],["app",{"sourceInterval":[3855,3868]},"stringLiteral",[]],["terminal",{"sourceInterval":[3869,3872]},")"],["terminal",{"sourceInterval":[3873,3876]},"{"],["star",{"sourceInterval":[3877,3887]},["app",{"sourceInterval":[3877,3886]},"Statement",[]]],["terminal",{"sourceInterval":[3888,3891]},"}"]]],"ReceiveFunction_externalEmpty":["define",{"sourceInterval":[3932,3985]},null,[],["seq",{"sourceInterval":[3932,3969]},["terminal",{"sourceInterval":[3932,3942]},"external"],["terminal",{"sourceInterval":[3943,3946]},"("],["terminal",{"sourceInterval":[3947,3950]},")"],["terminal",{"sourceInterval":[3951,3954]},"{"],["star",{"sourceInterval":[3955,3965]},["app",{"sourceInterval":[3955,3964]},"Statement",[]]],["terminal",{"sourceInterval":[3966,3969]},"}"]]],"ReceiveFunction":["define",{"sourceInterval":[3422,3985]},null,[],["alt",{"sourceInterval":[3440,3985]},["app",{"sourceInterval":[3440,3488]},"ReceiveFunction_simple",[]],["app",{"sourceInterval":[3520,3556]},"ReceiveFunction_empty",[]],["app",{"sourceInterval":[3587,3637]},"ReceiveFunction_comment",[]],["app",{"sourceInterval":[3670,3718]},"ReceiveFunction_bounced",[]],["app",{"sourceInterval":[3751,3800]},"ReceiveFunction_externalSimple",[]],["app",{"sourceInterval":[3840,3891]},"ReceiveFunction_externalComment",[]],["app",{"sourceInterval":[3932,3969]},"ReceiveFunction_externalEmpty",[]]]],"Statement":["define",{"sourceInterval":[4009,4334]},null,[],["alt",{"sourceInterval":[4021,4334]},["app",{"sourceInterval":[4021,4033]},"StatementLet",[]],["app",{"sourceInterval":[4050,4064]},"StatementBlock",[]],["app",{"sourceInterval":[4081,4096]},"StatementReturn",[]],["app",{"sourceInterval":[4113,4132]},"StatementExpression",[]],["app",{"sourceInterval":[4149,4164]},"StatementAssign",[]],["app",{"sourceInterval":[4181,4205]},"StatementAugmentedAssign",[]],["app",{"sourceInterval":[4222,4240]},"StatementCondition",[]],["app",{"sourceInterval":[4257,4271]},"StatementWhile",[]],["app",{"sourceInterval":[4288,4303]},"StatementRepeat",[]],["app",{"sourceInterval":[4320,4334]},"StatementUntil",[]]]],"StatementBlock":["define",{"sourceInterval":[4339,4374]},null,[],["seq",{"sourceInterval":[4356,4374]},["terminal",{"sourceInterval":[4356,4359]},"{"],["star",{"sourceInterval":[4360,4370]},["app",{"sourceInterval":[4360,4369]},"Statement",[]]],["terminal",{"sourceInterval":[4371,4374]},"}"]]],"StatementLet":["define",{"sourceInterval":[4379,4428]},null,[],["seq",{"sourceInterval":[4394,4428]},["app",{"sourceInterval":[4394,4397]},"let",[]],["app",{"sourceInterval":[4398,4400]},"id",[]],["terminal",{"sourceInterval":[4401,4404]},":"],["app",{"sourceInterval":[4405,4409]},"Type",[]],["terminal",{"sourceInterval":[4410,4413]},"="],["app",{"sourceInterval":[4414,4424]},"Expression",[]],["terminal",{"sourceInterval":[4425,4428]},";"]]],"StatementReturn_withExpression":["define",{"sourceInterval":[4451,4489]},null,[],["seq",{"sourceInterval":[4451,4472]},["app",{"sourceInterval":[4451,4457]},"return",[]],["app",{"sourceInterval":[4458,4468]},"Expression",[]],["terminal",{"sourceInterval":[4469,4472]},";"]]],"StatementReturn_withoutExpression":["define",{"sourceInterval":[4512,4542]},null,[],["seq",{"sourceInterval":[4512,4522]},["app",{"sourceInterval":[4512,4518]},"return",[]],["terminal",{"sourceInterval":[4519,4522]},";"]]],"StatementReturn":["define",{"sourceInterval":[4433,4542]},null,[],["alt",{"sourceInterval":[4451,4542]},["app",{"sourceInterval":[4451,4472]},"StatementReturn_withExpression",[]],["app",{"sourceInterval":[4512,4522]},"StatementReturn_withoutExpression",[]]]],"StatementExpression":["define",{"sourceInterval":[4551,4587]},null,[],["seq",{"sourceInterval":[4573,4587]},["app",{"sourceInterval":[4573,4583]},"Expression",[]],["terminal",{"sourceInterval":[4584,4587]},";"]]],"StatementAssign":["define",{"sourceInterval":[4592,4635]},null,[],["seq",{"sourceInterval":[4610,4635]},["app",{"sourceInterval":[4610,4616]},"LValue",[]],["terminal",{"sourceInterval":[4617,4620]},"="],["app",{"sourceInterval":[4621,4631]},"Expression",[]],["terminal",{"sourceInterval":[4632,4635]},";"]]],"StatementAugmentedAssign":["define",{"sourceInterval":[4640,4930]},null,[],["alt",{"sourceInterval":[4667,4930]},["app",{"sourceInterval":[4667,4694]},"StatementAugmentedAssignAdd",[]],["app",{"sourceInterval":[4726,4753]},"StatementAugmentedAssignSub",[]],["app",{"sourceInterval":[4785,4812]},"StatementAugmentedAssignMul",[]],["app",{"sourceInterval":[4844,4871]},"StatementAugmentedAssignDiv",[]],["app",{"sourceInterval":[4903,4930]},"StatementAugmentedAssignRem",[]]]],"StatementAugmentedAssignAdd":["define",{"sourceInterval":[4935,4991]},null,[],["seq",{"sourceInterval":[4965,4991]},["app",{"sourceInterval":[4965,4971]},"LValue",[]],["terminal",{"sourceInterval":[4972,4976]},"+="],["app",{"sourceInterval":[4977,4987]},"Expression",[]],["terminal",{"sourceInterval":[4988,4991]},";"]]],"StatementAugmentedAssignSub":["define",{"sourceInterval":[4996,5052]},null,[],["seq",{"sourceInterval":[5026,5052]},["app",{"sourceInterval":[5026,5032]},"LValue",[]],["terminal",{"sourceInterval":[5033,5037]},"-="],["app",{"sourceInterval":[5038,5048]},"Expression",[]],["terminal",{"sourceInterval":[5049,5052]},";"]]],"StatementAugmentedAssignMul":["define",{"sourceInterval":[5057,5113]},null,[],["seq",{"sourceInterval":[5087,5113]},["app",{"sourceInterval":[5087,5093]},"LValue",[]],["terminal",{"sourceInterval":[5094,5098]},"*="],["app",{"sourceInterval":[5099,5109]},"Expression",[]],["terminal",{"sourceInterval":[5110,5113]},";"]]],"StatementAugmentedAssignDiv":["define",{"sourceInterval":[5118,5174]},null,[],["seq",{"sourceInterval":[5148,5174]},["app",{"sourceInterval":[5148,5154]},"LValue",[]],["terminal",{"sourceInterval":[5155,5159]},"/="],["app",{"sourceInterval":[5160,5170]},"Expression",[]],["terminal",{"sourceInterval":[5171,5174]},";"]]],"StatementAugmentedAssignRem":["define",{"sourceInterval":[5179,5235]},null,[],["seq",{"sourceInterval":[5209,5235]},["app",{"sourceInterval":[5209,5215]},"LValue",[]],["terminal",{"sourceInterval":[5216,5220]},"%="],["app",{"sourceInterval":[5221,5231]},"Expression",[]],["terminal",{"sourceInterval":[5232,5235]},";"]]],"StatementCondition_simple":["define",{"sourceInterval":[5261,5308]},null,[],["seq",{"sourceInterval":[5261,5299]},["app",{"sourceInterval":[5261,5263]},"if",[]],["app",{"sourceInterval":[5264,5274]},"Expression",[]],["terminal",{"sourceInterval":[5275,5278]},"{"],["star",{"sourceInterval":[5279,5289]},["app",{"sourceInterval":[5279,5288]},"Statement",[]]],["terminal",{"sourceInterval":[5290,5293]},"}"],["not",{"sourceInterval":[5294,5299]},["app",{"sourceInterval":[5295,5299]},"else",[]]]]],"StatementCondition_withElse":["define",{"sourceInterval":[5334,5401]},null,[],["seq",{"sourceInterval":[5334,5390]},["app",{"sourceInterval":[5334,5336]},"if",[]],["app",{"sourceInterval":[5337,5347]},"Expression",[]],["terminal",{"sourceInterval":[5348,5351]},"{"],["star",{"sourceInterval":[5352,5362]},["app",{"sourceInterval":[5352,5361]},"Statement",[]]],["terminal",{"sourceInterval":[5363,5366]},"}"],["app",{"sourceInterval":[5367,5371]},"else",[]],["terminal",{"sourceInterval":[5372,5375]},"{"],["star",{"sourceInterval":[5376,5386]},["app",{"sourceInterval":[5376,5385]},"Statement",[]]],["terminal",{"sourceInterval":[5387,5390]},"}"]]],"StatementCondition_withElseIf":["define",{"sourceInterval":[5427,5496]},null,[],["seq",{"sourceInterval":[5427,5483]},["app",{"sourceInterval":[5427,5429]},"if",[]],["app",{"sourceInterval":[5430,5440]},"Expression",[]],["terminal",{"sourceInterval":[5441,5444]},"{"],["star",{"sourceInterval":[5445,5455]},["app",{"sourceInterval":[5445,5454]},"Statement",[]]],["terminal",{"sourceInterval":[5456,5459]},"}"],["app",{"sourceInterval":[5460,5464]},"else",[]],["app",{"sourceInterval":[5465,5483]},"StatementCondition",[]]]],"StatementCondition":["define",{"sourceInterval":[5240,5496]},null,[],["alt",{"sourceInterval":[5261,5496]},["app",{"sourceInterval":[5261,5299]},"StatementCondition_simple",[]],["app",{"sourceInterval":[5334,5390]},"StatementCondition_withElse",[]],["app",{"sourceInterval":[5427,5483]},"StatementCondition_withElseIf",[]]]],"StatementWhile":["define",{"sourceInterval":[5501,5561]},null,[],["seq",{"sourceInterval":[5518,5561]},["app",{"sourceInterval":[5518,5523]},"while",[]],["terminal",{"sourceInterval":[5524,5527]},"("],["app",{"sourceInterval":[5528,5538]},"Expression",[]],["terminal",{"sourceInterval":[5539,5542]},")"],["terminal",{"sourceInterval":[5543,5546]},"{"],["star",{"sourceInterval":[5547,5557]},["app",{"sourceInterval":[5547,5556]},"Statement",[]]],["terminal",{"sourceInterval":[5558,5561]},"}"]]],"StatementRepeat":["define",{"sourceInterval":[5566,5628]},null,[],["seq",{"sourceInterval":[5584,5628]},["app",{"sourceInterval":[5584,5590]},"repeat",[]],["terminal",{"sourceInterval":[5591,5594]},"("],["app",{"sourceInterval":[5595,5605]},"Expression",[]],["terminal",{"sourceInterval":[5606,5609]},")"],["terminal",{"sourceInterval":[5610,5613]},"{"],["star",{"sourceInterval":[5614,5624]},["app",{"sourceInterval":[5614,5623]},"Statement",[]]],["terminal",{"sourceInterval":[5625,5628]},"}"]]],"StatementUntil":["define",{"sourceInterval":[5633,5700]},null,[],["seq",{"sourceInterval":[5650,5700]},["app",{"sourceInterval":[5650,5652]},"do",[]],["terminal",{"sourceInterval":[5653,5656]},"{"],["star",{"sourceInterval":[5657,5667]},["app",{"sourceInterval":[5657,5666]},"Statement",[]]],["terminal",{"sourceInterval":[5668,5671]},"}"],["app",{"sourceInterval":[5672,5677]},"until",[]],["terminal",{"sourceInterval":[5678,5681]},"("],["app",{"sourceInterval":[5682,5692]},"Expression",[]],["terminal",{"sourceInterval":[5693,5696]},")"],["terminal",{"sourceInterval":[5697,5700]},";"]]],"LValue_more":["define",{"sourceInterval":[5730,5750]},null,[],["seq",{"sourceInterval":[5730,5743]},["app",{"sourceInterval":[5730,5732]},"id",[]],["terminal",{"sourceInterval":[5733,5736]},"."],["app",{"sourceInterval":[5737,5743]},"LValue",[]]]],"LValue_single":["define",{"sourceInterval":[5764,5775]},null,[],["app",{"sourceInterval":[5764,5766]},"id",[]]],"LValue":["define",{"sourceInterval":[5721,5775]},null,[],["alt",{"sourceInterval":[5730,5775]},["app",{"sourceInterval":[5730,5743]},"LValue_more",[]],["app",{"sourceInterval":[5764,5766]},"LValue_single",[]]]],"Expression":["define",{"sourceInterval":[5800,5834]},null,[],["app",{"sourceInterval":[5813,5834]},"ExpressionConditional",[]]],"ExpressionConditional_ternary":["define",{"sourceInterval":[5863,5928]},null,[],["seq",{"sourceInterval":[5863,5918]},["app",{"sourceInterval":[5863,5875]},"ExpressionOr",[]],["terminal",{"sourceInterval":[5876,5879]},"?"],["app",{"sourceInterval":[5880,5892]},"ExpressionOr",[]],["terminal",{"sourceInterval":[5893,5896]},":"],["app",{"sourceInterval":[5897,5918]},"ExpressionConditional",[]]]],"ExpressionConditional":["define",{"sourceInterval":[5839,5969]},null,[],["alt",{"sourceInterval":[5863,5969]},["app",{"sourceInterval":[5863,5918]},"ExpressionConditional_ternary",[]],["app",{"sourceInterval":[5957,5969]},"ExpressionOr",[]]]],"ExpressionOr_or":["define",{"sourceInterval":[5989,6025]},null,[],["seq",{"sourceInterval":[5989,6020]},["app",{"sourceInterval":[5989,6001]},"ExpressionOr",[]],["terminal",{"sourceInterval":[6002,6006]},"||"],["app",{"sourceInterval":[6007,6020]},"ExpressionAnd",[]]]],"ExpressionOr":["define",{"sourceInterval":[5974,6058]},null,[],["alt",{"sourceInterval":[5989,6058]},["app",{"sourceInterval":[5989,6020]},"ExpressionOr_or",[]],["app",{"sourceInterval":[6045,6058]},"ExpressionAnd",[]]]],"ExpressionAnd_and":["define",{"sourceInterval":[6079,6121]},null,[],["seq",{"sourceInterval":[6079,6115]},["app",{"sourceInterval":[6079,6092]},"ExpressionAnd",[]],["terminal",{"sourceInterval":[6093,6097]},"&&"],["app",{"sourceInterval":[6098,6115]},"ExpressionCompare",[]]]],"ExpressionAnd":["define",{"sourceInterval":[6063,6159]},null,[],["alt",{"sourceInterval":[6079,6159]},["app",{"sourceInterval":[6079,6115]},"ExpressionAnd_and",[]],["app",{"sourceInterval":[6142,6159]},"ExpressionCompare",[]]]],"ExpressionCompare_not":["define",{"sourceInterval":[6184,6229]},null,[],["seq",{"sourceInterval":[6184,6223]},["app",{"sourceInterval":[6184,6201]},"ExpressionCompare",[]],["terminal",{"sourceInterval":[6202,6206]},"!="],["app",{"sourceInterval":[6207,6223]},"ExpressionBinary",[]]]],"ExpressionCompare_eq":["define",{"sourceInterval":[6254,6298]},null,[],["seq",{"sourceInterval":[6254,6293]},["app",{"sourceInterval":[6254,6271]},"ExpressionCompare",[]],["terminal",{"sourceInterval":[6272,6276]},"=="],["app",{"sourceInterval":[6277,6293]},"ExpressionBinary",[]]]],"ExpressionCompare_gt":["define",{"sourceInterval":[6323,6366]},null,[],["seq",{"sourceInterval":[6323,6361]},["app",{"sourceInterval":[6323,6340]},"ExpressionCompare",[]],["terminal",{"sourceInterval":[6341,6344]},">"],["app",{"sourceInterval":[6345,6361]},"ExpressionBinary",[]]]],"ExpressionCompare_gte":["define",{"sourceInterval":[6391,6436]},null,[],["seq",{"sourceInterval":[6391,6430]},["app",{"sourceInterval":[6391,6408]},"ExpressionCompare",[]],["terminal",{"sourceInterval":[6409,6413]},">="],["app",{"sourceInterval":[6414,6430]},"ExpressionBinary",[]]]],"ExpressionCompare_lt":["define",{"sourceInterval":[6461,6504]},null,[],["seq",{"sourceInterval":[6461,6499]},["app",{"sourceInterval":[6461,6478]},"ExpressionCompare",[]],["terminal",{"sourceInterval":[6479,6482]},"<"],["app",{"sourceInterval":[6483,6499]},"ExpressionBinary",[]]]],"ExpressionCompare_lte":["define",{"sourceInterval":[6529,6574]},null,[],["seq",{"sourceInterval":[6529,6568]},["app",{"sourceInterval":[6529,6546]},"ExpressionCompare",[]],["terminal",{"sourceInterval":[6547,6551]},"<="],["app",{"sourceInterval":[6552,6568]},"ExpressionBinary",[]]]],"ExpressionCompare":["define",{"sourceInterval":[6164,6615]},null,[],["alt",{"sourceInterval":[6184,6615]},["app",{"sourceInterval":[6184,6223]},"ExpressionCompare_not",[]],["app",{"sourceInterval":[6254,6293]},"ExpressionCompare_eq",[]],["app",{"sourceInterval":[6323,6361]},"ExpressionCompare_gt",[]],["app",{"sourceInterval":[6391,6430]},"ExpressionCompare_gte",[]],["app",{"sourceInterval":[6461,6499]},"ExpressionCompare_lt",[]],["app",{"sourceInterval":[6529,6568]},"ExpressionCompare_lte",[]],["app",{"sourceInterval":[6599,6615]},"ExpressionBinary",[]]]],"ExpressionBinary_shr":["define",{"sourceInterval":[6639,6680]},null,[],["seq",{"sourceInterval":[6639,6674]},["app",{"sourceInterval":[6639,6655]},"ExpressionBinary",[]],["terminal",{"sourceInterval":[6656,6660]},">>"],["app",{"sourceInterval":[6661,6674]},"ExpressionAdd",[]]]],"ExpressionBinary_shl":["define",{"sourceInterval":[6703,6744]},null,[],["seq",{"sourceInterval":[6703,6738]},["app",{"sourceInterval":[6703,6719]},"ExpressionBinary",[]],["terminal",{"sourceInterval":[6720,6724]},"<<"],["app",{"sourceInterval":[6725,6738]},"ExpressionAdd",[]]]],"ExpressionBinary_bin_and":["define",{"sourceInterval":[6767,6811]},null,[],["seq",{"sourceInterval":[6767,6801]},["app",{"sourceInterval":[6767,6783]},"ExpressionBinary",[]],["terminal",{"sourceInterval":[6784,6787]},"&"],["app",{"sourceInterval":[6788,6801]},"ExpressionAdd",[]]]],"ExpressionBinary_bin_or":["define",{"sourceInterval":[6834,6877]},null,[],["seq",{"sourceInterval":[6834,6868]},["app",{"sourceInterval":[6834,6850]},"ExpressionBinary",[]],["terminal",{"sourceInterval":[6851,6854]},"|"],["app",{"sourceInterval":[6855,6868]},"ExpressionAdd",[]]]],"ExpressionBinary":["define",{"sourceInterval":[6620,6913]},null,[],["alt",{"sourceInterval":[6639,6913]},["app",{"sourceInterval":[6639,6674]},"ExpressionBinary_shr",[]],["app",{"sourceInterval":[6703,6738]},"ExpressionBinary_shl",[]],["app",{"sourceInterval":[6767,6801]},"ExpressionBinary_bin_and",[]],["app",{"sourceInterval":[6834,6868]},"ExpressionBinary_bin_or",[]],["app",{"sourceInterval":[6900,6913]},"ExpressionAdd",[]]]],"ExpressionAdd_add":["define",{"sourceInterval":[6934,6976]},null,[],["seq",{"sourceInterval":[6934,6970]},["app",{"sourceInterval":[6934,6947]},"ExpressionAdd",[]],["terminal",{"sourceInterval":[6948,6951]},"+"],["not",{"sourceInterval":[6952,6956]},["terminal",{"sourceInterval":[6953,6956]},"+"]],["app",{"sourceInterval":[6957,6970]},"ExpressionMul",[]]]],"ExpressionAdd_sub":["define",{"sourceInterval":[6997,7039]},null,[],["seq",{"sourceInterval":[6997,7033]},["app",{"sourceInterval":[6997,7010]},"ExpressionAdd",[]],["terminal",{"sourceInterval":[7011,7014]},"-"],["not",{"sourceInterval":[7015,7019]},["terminal",{"sourceInterval":[7016,7019]},"-"]],["app",{"sourceInterval":[7020,7033]},"ExpressionMul",[]]]],"ExpressionAdd":["define",{"sourceInterval":[6918,7073]},null,[],["alt",{"sourceInterval":[6934,7073]},["app",{"sourceInterval":[6934,6970]},"ExpressionAdd_add",[]],["app",{"sourceInterval":[6997,7033]},"ExpressionAdd_sub",[]],["app",{"sourceInterval":[7060,7073]},"ExpressionMul",[]]]],"ExpressionMul_mul":["define",{"sourceInterval":[7094,7133]},null,[],["seq",{"sourceInterval":[7094,7127]},["app",{"sourceInterval":[7094,7107]},"ExpressionMul",[]],["terminal",{"sourceInterval":[7108,7111]},"*"],["app",{"sourceInterval":[7112,7127]},"ExpressionUnary",[]]]],"ExpressionMul_div":["define",{"sourceInterval":[7154,7193]},null,[],["seq",{"sourceInterval":[7154,7187]},["app",{"sourceInterval":[7154,7167]},"ExpressionMul",[]],["terminal",{"sourceInterval":[7168,7171]},"/"],["app",{"sourceInterval":[7172,7187]},"ExpressionUnary",[]]]],"ExpressionMul_rem":["define",{"sourceInterval":[7214,7253]},null,[],["seq",{"sourceInterval":[7214,7247]},["app",{"sourceInterval":[7214,7227]},"ExpressionMul",[]],["terminal",{"sourceInterval":[7228,7231]},"%"],["app",{"sourceInterval":[7232,7247]},"ExpressionUnary",[]]]],"ExpressionMul":["define",{"sourceInterval":[7078,7289]},null,[],["alt",{"sourceInterval":[7094,7289]},["app",{"sourceInterval":[7094,7127]},"ExpressionMul_mul",[]],["app",{"sourceInterval":[7154,7187]},"ExpressionMul_div",[]],["app",{"sourceInterval":[7214,7247]},"ExpressionMul_rem",[]],["app",{"sourceInterval":[7274,7289]},"ExpressionUnary",[]]]],"ExpressionUnary_neg":["define",{"sourceInterval":[7312,7343]},null,[],["seq",{"sourceInterval":[7312,7337]},["terminal",{"sourceInterval":[7312,7315]},"-"],["app",{"sourceInterval":[7316,7337]},"ExpressionUnarySuffix",[]]]],"ExpressionUnary_add":["define",{"sourceInterval":[7366,7397]},null,[],["seq",{"sourceInterval":[7366,7391]},["terminal",{"sourceInterval":[7366,7369]},"+"],["app",{"sourceInterval":[7370,7391]},"ExpressionUnarySuffix",[]]]],"ExpressionUnary_not":["define",{"sourceInterval":[7420,7451]},null,[],["seq",{"sourceInterval":[7420,7445]},["terminal",{"sourceInterval":[7420,7423]},"!"],["app",{"sourceInterval":[7424,7445]},"ExpressionUnarySuffix",[]]]],"ExpressionUnary":["define",{"sourceInterval":[7294,7495]},null,[],["alt",{"sourceInterval":[7312,7495]},["app",{"sourceInterval":[7312,7337]},"ExpressionUnary_neg",[]],["app",{"sourceInterval":[7366,7391]},"ExpressionUnary_add",[]],["app",{"sourceInterval":[7420,7445]},"ExpressionUnary_not",[]],["app",{"sourceInterval":[7474,7495]},"ExpressionUnarySuffix",[]]]],"ExpressionUnarySuffix_notNull":["define",{"sourceInterval":[7524,7554]},null,[],["seq",{"sourceInterval":[7524,7544]},["app",{"sourceInterval":[7524,7539]},"ExpressionValue",[]],["terminal",{"sourceInterval":[7540,7544]},"!!"]]],"ExpressionUnarySuffix":["define",{"sourceInterval":[7500,7598]},null,[],["alt",{"sourceInterval":[7524,7598]},["app",{"sourceInterval":[7524,7544]},"ExpressionUnarySuffix_notNull",[]],["app",{"sourceInterval":[7583,7598]},"ExpressionValue",[]]]],"ExpressionBracket":["define",{"sourceInterval":[7603,7641]},null,[],["seq",{"sourceInterval":[7623,7641]},["terminal",{"sourceInterval":[7623,7626]},"("],["app",{"sourceInterval":[7627,7637]},"Expression",[]],["terminal",{"sourceInterval":[7638,7641]},")"]]],"ExpressionValue":["define",{"sourceInterval":[7673,8063]},null,[],["alt",{"sourceInterval":[7691,8063]},["app",{"sourceInterval":[7691,7705]},"ExpressionCall",[]],["app",{"sourceInterval":[7728,7743]},"ExpressionField",[]],["app",{"sourceInterval":[7766,7786]},"ExpressionStaticCall",[]],["app",{"sourceInterval":[7809,7826]},"ExpressionBracket",[]],["app",{"sourceInterval":[7849,7862]},"ExpressionNew",[]],["app",{"sourceInterval":[7885,7899]},"integerLiteral",[]],["app",{"sourceInterval":[7922,7933]},"boolLiteral",[]],["app",{"sourceInterval":[7956,7958]},"id",[]],["app",{"sourceInterval":[7981,7985]},"null",[]],["app",{"sourceInterval":[8008,8024]},"ExpressionInitOf",[]],["app",{"sourceInterval":[8047,8063]},"ExpressionString",[]]]],"ExpressionString":["define",{"sourceInterval":[8068,8100]},null,[],["app",{"sourceInterval":[8087,8100]},"stringLiteral",[]]],"ExpressionField":["define",{"sourceInterval":[8105,8150]},null,[],["seq",{"sourceInterval":[8123,8150]},["app",{"sourceInterval":[8123,8138]},"ExpressionValue",[]],["terminal",{"sourceInterval":[8139,8142]},"."],["app",{"sourceInterval":[8143,8145]},"id",[]],["not",{"sourceInterval":[8146,8150]},["terminal",{"sourceInterval":[8147,8150]},"("]]]],"ExpressionCall":["define",{"sourceInterval":[8155,8231]},null,[],["seq",{"sourceInterval":[8172,8231]},["app",{"sourceInterval":[8172,8187]},"ExpressionValue",[]],["terminal",{"sourceInterval":[8188,8191]},"."],["app",{"sourceInterval":[8192,8194]},"id",[]],["terminal",{"sourceInterval":[8195,8198]},"("],["app",{"sourceInterval":[8199,8222]},"ListOf",[["app",{"sourceInterval":[8206,8216]},"Expression",[]],["terminal",{"sourceInterval":[8218,8221]},","]]],["opt",{"sourceInterval":[8223,8227]},["terminal",{"sourceInterval":[8223,8226]},","]],["terminal",{"sourceInterval":[8228,8231]},")"]]],"ExpressionNew":["define",{"sourceInterval":[8236,8293]},null,[],["seq",{"sourceInterval":[8252,8293]},["app",{"sourceInterval":[8252,8254]},"id",[]],["terminal",{"sourceInterval":[8255,8258]},"{"],["app",{"sourceInterval":[8259,8284]},"ListOf",[["app",{"sourceInterval":[8266,8278]},"NewParameter",[]],["terminal",{"sourceInterval":[8280,8283]},","]]],["opt",{"sourceInterval":[8285,8289]},["terminal",{"sourceInterval":[8285,8288]},","]],["terminal",{"sourceInterval":[8290,8293]},"}"]]],"NewParameter":["define",{"sourceInterval":[8298,8330]},null,[],["seq",{"sourceInterval":[8313,8330]},["app",{"sourceInterval":[8313,8315]},"id",[]],["terminal",{"sourceInterval":[8316,8319]},":"],["app",{"sourceInterval":[8320,8330]},"Expression",[]]]],"ExpressionStaticCall":["define",{"sourceInterval":[8335,8397]},null,[],["seq",{"sourceInterval":[8358,8397]},["app",{"sourceInterval":[8358,8360]},"id",[]],["terminal",{"sourceInterval":[8361,8364]},"("],["app",{"sourceInterval":[8365,8388]},"ListOf",[["app",{"sourceInterval":[8372,8382]},"Expression",[]],["terminal",{"sourceInterval":[8384,8387]},","]]],["opt",{"sourceInterval":[8389,8393]},["terminal",{"sourceInterval":[8389,8392]},","]],["terminal",{"sourceInterval":[8394,8397]},")"]]],"ExpressionInitOf":["define",{"sourceInterval":[8402,8467]},null,[],["seq",{"sourceInterval":[8421,8467]},["app",{"sourceInterval":[8421,8427]},"initOf",[]],["app",{"sourceInterval":[8428,8430]},"id",[]],["terminal",{"sourceInterval":[8431,8434]},"("],["app",{"sourceInterval":[8435,8458]},"ListOf",[["app",{"sourceInterval":[8442,8452]},"Expression",[]],["terminal",{"sourceInterval":[8454,8457]},","]]],["opt",{"sourceInterval":[8459,8463]},["terminal",{"sourceInterval":[8459,8462]},","]],["terminal",{"sourceInterval":[8464,8467]},")"]]],"typeLiteral":["define",{"sourceInterval":[8493,8537]},null,[],["seq",{"sourceInterval":[8507,8537]},["app",{"sourceInterval":[8507,8520]},"letterAsciiUC",[]],["star",{"sourceInterval":[8521,8537]},["app",{"sourceInterval":[8521,8536]},"typeLiteralPart",[]]]]],"typeLiteralPart":["define",{"sourceInterval":[8542,8585]},null,[],["alt",{"sourceInterval":[8560,8585]},["app",{"sourceInterval":[8560,8571]},"letterAscii",[]],["app",{"sourceInterval":[8574,8579]},"digit",[]],["terminal",{"sourceInterval":[8582,8585]},"_"]]],"integerLiteral":["define",{"sourceInterval":[8792,8886]},null,[],["alt",{"sourceInterval":[8809,8886]},["app",{"sourceInterval":[8809,8826]},"integerLiteralHex",[]],["app",{"sourceInterval":[8829,8846]},"integerLiteralBin",[]],["app",{"sourceInterval":[8849,8866]},"integerLiteralOct",[]],["app",{"sourceInterval":[8869,8886]},"integerLiteralDec",[]]]],"integerLiteralDec_nonZeroIntegerLiteralDec":["define",{"sourceInterval":[8933,8987]},null,[],["seq",{"sourceInterval":[8933,8959]},["app",{"sourceInterval":[8933,8945]},"nonZeroDigit",[]],["star",{"sourceInterval":[8946,8959]},["seq",{"sourceInterval":[8947,8957]},["opt",{"sourceInterval":[8947,8951]},["terminal",{"sourceInterval":[8947,8950]},"_"]],["app",{"sourceInterval":[8952,8957]},"digit",[]]]]]],"integerLiteralDec_integerLiteralWithLeadingZero":["define",{"sourceInterval":[9012,9071]},null,[],["seq",{"sourceInterval":[9012,9022]},["terminal",{"sourceInterval":[9012,9015]},"0"],["star",{"sourceInterval":[9016,9022]},["app",{"sourceInterval":[9016,9021]},"digit",[]]]]],"integerLiteralDec":["define",{"sourceInterval":[8913,9071]},null,[],["alt",{"sourceInterval":[8933,9071]},["app",{"sourceInterval":[8933,8959]},"integerLiteralDec_nonZeroIntegerLiteralDec",[]],["app",{"sourceInterval":[9012,9022]},"integerLiteralDec_integerLiteralWithLeadingZero",[]]]],"integerLiteralHex":["define",{"sourceInterval":[9076,9135]},null,[],["seq",{"sourceInterval":[9096,9135]},["alt",{"sourceInterval":[9097,9108]},["terminal",{"sourceInterval":[9097,9101]},"0x"],["terminal",{"sourceInterval":[9104,9108]},"0X"]],["app",{"sourceInterval":[9110,9118]},"hexDigit",[]],["star",{"sourceInterval":[9119,9135]},["seq",{"sourceInterval":[9120,9133]},["opt",{"sourceInterval":[9120,9124]},["terminal",{"sourceInterval":[9120,9123]},"_"]],["app",{"sourceInterval":[9125,9133]},"hexDigit",[]]]]]],"integerLiteralBin":["define",{"sourceInterval":[9140,9199]},null,[],["seq",{"sourceInterval":[9160,9199]},["alt",{"sourceInterval":[9161,9172]},["terminal",{"sourceInterval":[9161,9165]},"0b"],["terminal",{"sourceInterval":[9168,9172]},"0B"]],["app",{"sourceInterval":[9174,9182]},"binDigit",[]],["star",{"sourceInterval":[9183,9199]},["seq",{"sourceInterval":[9184,9197]},["opt",{"sourceInterval":[9184,9188]},["terminal",{"sourceInterval":[9184,9187]},"_"]],["app",{"sourceInterval":[9189,9197]},"binDigit",[]]]]]],"integerLiteralOct":["define",{"sourceInterval":[9204,9263]},null,[],["seq",{"sourceInterval":[9224,9263]},["alt",{"sourceInterval":[9225,9236]},["terminal",{"sourceInterval":[9225,9229]},"0o"],["terminal",{"sourceInterval":[9232,9236]},"0O"]],["app",{"sourceInterval":[9238,9246]},"octDigit",[]],["star",{"sourceInterval":[9247,9263]},["seq",{"sourceInterval":[9248,9261]},["opt",{"sourceInterval":[9248,9252]},["terminal",{"sourceInterval":[9248,9251]},"_"]],["app",{"sourceInterval":[9253,9261]},"octDigit",[]]]]]],"binDigit":["define",{"sourceInterval":[9268,9288]},null,[],["alt",{"sourceInterval":[9279,9288]},["terminal",{"sourceInterval":[9279,9282]},"0"],["terminal",{"sourceInterval":[9285,9288]},"1"]]],"octDigit":["define",{"sourceInterval":[9293,9312]},null,[],["range",{"sourceInterval":[9304,9312]},"0","7"]],"nonZeroDigit":["define",{"sourceInterval":[9317,9340]},null,[],["range",{"sourceInterval":[9332,9340]},"1","9"]],"letterAsciiLC":["define",{"sourceInterval":[9361,9385]},null,[],["range",{"sourceInterval":[9377,9385]},"a","z"]],"letterAsciiUC":["define",{"sourceInterval":[9390,9414]},null,[],["range",{"sourceInterval":[9406,9414]},"A","Z"]],"letterAscii":["define",{"sourceInterval":[9419,9462]},null,[],["alt",{"sourceInterval":[9433,9462]},["app",{"sourceInterval":[9433,9446]},"letterAsciiLC",[]],["app",{"sourceInterval":[9449,9462]},"letterAsciiUC",[]]]],"letterComment":["define",{"sourceInterval":[9467,9526]},null,[],["alt",{"sourceInterval":[9483,9526]},["app",{"sourceInterval":[9483,9496]},"letterAsciiLC",[]],["app",{"sourceInterval":[9499,9512]},"letterAsciiUC",[]],["app",{"sourceInterval":[9515,9520]},"digit",[]],["terminal",{"sourceInterval":[9523,9526]},"_"]]],"idStart":["define",{"sourceInterval":[9550,9577]},null,[],["alt",{"sourceInterval":[9560,9577]},["app",{"sourceInterval":[9560,9571]},"letterAscii",[]],["terminal",{"sourceInterval":[9574,9577]},"_"]]],"idPart":["define",{"sourceInterval":[9582,9616]},null,[],["alt",{"sourceInterval":[9591,9616]},["app",{"sourceInterval":[9591,9602]},"letterAscii",[]],["app",{"sourceInterval":[9605,9610]},"digit",[]],["terminal",{"sourceInterval":[9613,9616]},"_"]]],"id":["define",{"sourceInterval":[9621,9659]},null,[],["seq",{"sourceInterval":[9626,9659]},["not",{"sourceInterval":[9626,9639]},["app",{"sourceInterval":[9627,9639]},"reservedWord",[]]],["lex",{"sourceInterval":[9640,9648]},["app",{"sourceInterval":[9641,9648]},"idStart",[]]],["lex",{"sourceInterval":[9649,9659]},["star",{"sourceInterval":[9651,9658]},["app",{"sourceInterval":[9651,9657]},"idPart",[]]]]]],"funcLetter":["define",{"sourceInterval":[9680,9741]},null,[],["alt",{"sourceInterval":[9693,9741]},["app",{"sourceInterval":[9693,9704]},"letterAscii",[]],["terminal",{"sourceInterval":[9707,9710]},"_"],["terminal",{"sourceInterval":[9713,9716]},"'"],["terminal",{"sourceInterval":[9719,9722]},"?"],["terminal",{"sourceInterval":[9725,9728]},"!"],["terminal",{"sourceInterval":[9731,9735]},"::"],["terminal",{"sourceInterval":[9738,9741]},"&"]]],"funcId":["define",{"sourceInterval":[9746,9788]},null,[],["seq",{"sourceInterval":[9755,9788]},["app",{"sourceInterval":[9755,9765]},"funcLetter",[]],["star",{"sourceInterval":[9766,9788]},["lex",{"sourceInterval":[9766,9787]},["alt",{"sourceInterval":[9768,9786]},["app",{"sourceInterval":[9768,9778]},"funcLetter",[]],["app",{"sourceInterval":[9781,9786]},"digit",[]]]]]]],"boolLiteral":["define",{"sourceInterval":[9814,9854]},null,[],["seq",{"sourceInterval":[9828,9854]},["alt",{"sourceInterval":[9829,9845]},["terminal",{"sourceInterval":[9829,9835]},"true"],["terminal",{"sourceInterval":[9838,9845]},"false"]],["not",{"sourceInterval":[9847,9854]},["app",{"sourceInterval":[9848,9854]},"idPart",[]]]]],"stringLiteral":["define",{"sourceInterval":[9882,9951]},null,[],["seq",{"sourceInterval":[9898,9951]},["terminal",{"sourceInterval":[9898,9902]},"\""],["star",{"sourceInterval":[9903,9946]},["alt",{"sourceInterval":[9904,9944]},["app",{"sourceInterval":[9904,9927]},"nonQuoteOrBackslashChar",[]],["app",{"sourceInterval":[9930,9944]},"escapeSequence",[]]]],["terminal",{"sourceInterval":[9947,9951]},"\""]]],"nonQuoteOrBackslashChar":["define",{"sourceInterval":[9956,10000]},null,[],["seq",{"sourceInterval":[9982,10000]},["not",{"sourceInterval":[9982,9996]},["alt",{"sourceInterval":[9984,9995]},["terminal",{"sourceInterval":[9984,9988]},"\""],["terminal",{"sourceInterval":[9991,9995]},"\\"]]],["app",{"sourceInterval":[9997,10000]},"any",[]]]],"escapeSequence_backslash":["define",{"sourceInterval":[10022,10041]},null,[],["terminal",{"sourceInterval":[10022,10028]},"\\\\"]],"escapeSequence_doubleQuote":["define",{"sourceInterval":[10063,10084]},null,[],["terminal",{"sourceInterval":[10063,10069]},"\\\""]],"escapeSequence_newline":["define",{"sourceInterval":[10106,10122]},null,[],["terminal",{"sourceInterval":[10106,10111]},"\\n"]],"escapeSequence_carriageReturn":["define",{"sourceInterval":[10144,10167]},null,[],["terminal",{"sourceInterval":[10144,10149]},"\\r"]],"escapeSequence_tab":["define",{"sourceInterval":[10189,10201]},null,[],["terminal",{"sourceInterval":[10189,10194]},"\\t"]],"escapeSequence_verticalTab":["define",{"sourceInterval":[10223,10243]},null,[],["terminal",{"sourceInterval":[10223,10228]},"\\v"]],"escapeSequence_backspace":["define",{"sourceInterval":[10265,10283]},null,[],["terminal",{"sourceInterval":[10265,10270]},"\\b"]],"escapeSequence_formFeed":["define",{"sourceInterval":[10305,10322]},null,[],["terminal",{"sourceInterval":[10305,10310]},"\\f"]],"escapeSequence_unicodeCodePoint":["define",{"sourceInterval":[10344,10433]},null,[],["seq",{"sourceInterval":[10344,10413]},["terminal",{"sourceInterval":[10344,10350]},"\\u{"],["app",{"sourceInterval":[10351,10359]},"hexDigit",[]],["opt",{"sourceInterval":[10360,10369]},["app",{"sourceInterval":[10360,10368]},"hexDigit",[]]],["opt",{"sourceInterval":[10370,10379]},["app",{"sourceInterval":[10370,10378]},"hexDigit",[]]],["opt",{"sourceInterval":[10380,10389]},["app",{"sourceInterval":[10380,10388]},"hexDigit",[]]],["opt",{"sourceInterval":[10390,10399]},["app",{"sourceInterval":[10390,10398]},"hexDigit",[]]],["opt",{"sourceInterval":[10400,10409]},["app",{"sourceInterval":[10400,10408]},"hexDigit",[]]],["terminal",{"sourceInterval":[10410,10413]},"}"]]],"escapeSequence_unicodeEscape":["define",{"sourceInterval":[10455,10513]},null,[],["seq",{"sourceInterval":[10455,10496]},["terminal",{"sourceInterval":[10455,10460]},"\\u"],["app",{"sourceInterval":[10461,10469]},"hexDigit",[]],["app",{"sourceInterval":[10470,10478]},"hexDigit",[]],["app",{"sourceInterval":[10479,10487]},"hexDigit",[]],["app",{"sourceInterval":[10488,10496]},"hexDigit",[]]]],"escapeSequence_hexEscape":["define",{"sourceInterval":[10535,10571]},null,[],["seq",{"sourceInterval":[10535,10558]},["terminal",{"sourceInterval":[10535,10540]},"\\x"],["app",{"sourceInterval":[10541,10549]},"hexDigit",[]],["app",{"sourceInterval":[10550,10558]},"hexDigit",[]]]],"escapeSequence":["define",{"sourceInterval":[10005,10571]},null,[],["alt",{"sourceInterval":[10022,10571]},["app",{"sourceInterval":[10022,10028]},"escapeSequence_backslash",[]],["app",{"sourceInterval":[10063,10069]},"escapeSequence_doubleQuote",[]],["app",{"sourceInterval":[10106,10111]},"escapeSequence_newline",[]],["app",{"sourceInterval":[10144,10149]},"escapeSequence_carriageReturn",[]],["app",{"sourceInterval":[10189,10194]},"escapeSequence_tab",[]],["app",{"sourceInterval":[10223,10228]},"escapeSequence_verticalTab",[]],["app",{"sourceInterval":[10265,10270]},"escapeSequence_backspace",[]],["app",{"sourceInterval":[10305,10310]},"escapeSequence_formFeed",[]],["app",{"sourceInterval":[10344,10413]},"escapeSequence_unicodeCodePoint",[]],["app",{"sourceInterval":[10455,10496]},"escapeSequence_unicodeEscape",[]],["app",{"sourceInterval":[10535,10558]},"escapeSequence_hexEscape",[]]]],"keyword":["define",{"sourceInterval":[10624,11137]},null,[],["alt",{"sourceInterval":[10634,11137]},["app",{"sourceInterval":[10634,10637]},"fun",[]],["app",{"sourceInterval":[10653,10656]},"let",[]],["app",{"sourceInterval":[10671,10677]},"return",[]],["app",{"sourceInterval":[10693,10699]},"extend",[]],["app",{"sourceInterval":[10715,10721]},"native",[]],["app",{"sourceInterval":[10737,10743]},"public",[]],["app",{"sourceInterval":[10759,10763]},"null",[]],["app",{"sourceInterval":[10779,10781]},"if",[]],["app",{"sourceInterval":[10797,10801]},"else",[]],["app",{"sourceInterval":[10817,10822]},"while",[]],["app",{"sourceInterval":[10838,10844]},"repeat",[]],["app",{"sourceInterval":[10860,10862]},"do",[]],["app",{"sourceInterval":[10878,10883]},"until",[]],["app",{"sourceInterval":[10899,10901]},"as",[]],["app",{"sourceInterval":[10918,10925]},"mutates",[]],["app",{"sourceInterval":[10940,10947]},"extends",[]],["app",{"sourceInterval":[10962,10968]},"import",[]],["app",{"sourceInterval":[10983,10987]},"with",[]],["app",{"sourceInterval":[11002,11007]},"trait",[]],["app",{"sourceInterval":[11022,11028]},"initOf",[]],["app",{"sourceInterval":[11043,11051]},"override",[]],["app",{"sourceInterval":[11066,11074]},"abstract",[]],["app",{"sourceInterval":[11089,11096]},"virtual",[]],["app",{"sourceInterval":[11111,11117]},"inline",[]],["app",{"sourceInterval":[11132,11137]},"const",[]]]],"contract":["define",{"sourceInterval":[11142,11171]},null,[],["seq",{"sourceInterval":[11153,11171]},["terminal",{"sourceInterval":[11153,11163]},"contract"],["not",{"sourceInterval":[11164,11171]},["app",{"sourceInterval":[11165,11171]},"idPart",[]]]]],"let":["define",{"sourceInterval":[11176,11195]},null,[],["seq",{"sourceInterval":[11182,11195]},["terminal",{"sourceInterval":[11182,11187]},"let"],["not",{"sourceInterval":[11188,11195]},["app",{"sourceInterval":[11189,11195]},"idPart",[]]]]],"fun":["define",{"sourceInterval":[11200,11219]},null,[],["seq",{"sourceInterval":[11206,11219]},["terminal",{"sourceInterval":[11206,11211]},"fun"],["not",{"sourceInterval":[11212,11219]},["app",{"sourceInterval":[11213,11219]},"idPart",[]]]]],"return":["define",{"sourceInterval":[11224,11249]},null,[],["seq",{"sourceInterval":[11233,11249]},["terminal",{"sourceInterval":[11233,11241]},"return"],["not",{"sourceInterval":[11242,11249]},["app",{"sourceInterval":[11243,11249]},"idPart",[]]]]],"extend":["define",{"sourceInterval":[11254,11279]},null,[],["seq",{"sourceInterval":[11263,11279]},["terminal",{"sourceInterval":[11263,11271]},"extend"],["not",{"sourceInterval":[11272,11279]},["app",{"sourceInterval":[11273,11279]},"idPart",[]]]]],"native":["define",{"sourceInterval":[11284,11309]},null,[],["seq",{"sourceInterval":[11293,11309]},["terminal",{"sourceInterval":[11293,11301]},"native"],["not",{"sourceInterval":[11302,11309]},["app",{"sourceInterval":[11303,11309]},"idPart",[]]]]],"public":["define",{"sourceInterval":[11314,11339]},null,[],["seq",{"sourceInterval":[11323,11339]},["terminal",{"sourceInterval":[11323,11331]},"public"],["not",{"sourceInterval":[11332,11339]},["app",{"sourceInterval":[11333,11339]},"idPart",[]]]]],"null":["define",{"sourceInterval":[11344,11365]},null,[],["seq",{"sourceInterval":[11351,11365]},["terminal",{"sourceInterval":[11351,11357]},"null"],["not",{"sourceInterval":[11358,11365]},["app",{"sourceInterval":[11359,11365]},"idPart",[]]]]],"if":["define",{"sourceInterval":[11370,11387]},null,[],["seq",{"sourceInterval":[11375,11387]},["terminal",{"sourceInterval":[11375,11379]},"if"],["not",{"sourceInterval":[11380,11387]},["app",{"sourceInterval":[11381,11387]},"idPart",[]]]]],"else":["define",{"sourceInterval":[11392,11413]},null,[],["seq",{"sourceInterval":[11399,11413]},["terminal",{"sourceInterval":[11399,11405]},"else"],["not",{"sourceInterval":[11406,11413]},["app",{"sourceInterval":[11407,11413]},"idPart",[]]]]],"while":["define",{"sourceInterval":[11418,11441]},null,[],["seq",{"sourceInterval":[11426,11441]},["terminal",{"sourceInterval":[11426,11433]},"while"],["not",{"sourceInterval":[11434,11441]},["app",{"sourceInterval":[11435,11441]},"idPart",[]]]]],"repeat":["define",{"sourceInterval":[11446,11471]},null,[],["seq",{"sourceInterval":[11455,11471]},["terminal",{"sourceInterval":[11455,11463]},"repeat"],["not",{"sourceInterval":[11464,11471]},["app",{"sourceInterval":[11465,11471]},"idPart",[]]]]],"do":["define",{"sourceInterval":[11476,11493]},null,[],["seq",{"sourceInterval":[11481,11493]},["terminal",{"sourceInterval":[11481,11485]},"do"],["not",{"sourceInterval":[11486,11493]},["app",{"sourceInterval":[11487,11493]},"idPart",[]]]]],"until":["define",{"sourceInterval":[11498,11521]},null,[],["seq",{"sourceInterval":[11506,11521]},["terminal",{"sourceInterval":[11506,11513]},"until"],["not",{"sourceInterval":[11514,11521]},["app",{"sourceInterval":[11515,11521]},"idPart",[]]]]],"as":["define",{"sourceInterval":[11526,11543]},null,[],["seq",{"sourceInterval":[11531,11543]},["terminal",{"sourceInterval":[11531,11535]},"as"],["not",{"sourceInterval":[11536,11543]},["app",{"sourceInterval":[11537,11543]},"idPart",[]]]]],"mutates":["define",{"sourceInterval":[11548,11575]},null,[],["seq",{"sourceInterval":[11558,11575]},["terminal",{"sourceInterval":[11558,11567]},"mutates"],["not",{"sourceInterval":[11568,11575]},["app",{"sourceInterval":[11569,11575]},"idPart",[]]]]],"extends":["define",{"sourceInterval":[11580,11607]},null,[],["seq",{"sourceInterval":[11590,11607]},["terminal",{"sourceInterval":[11590,11599]},"extends"],["not",{"sourceInterval":[11600,11607]},["app",{"sourceInterval":[11601,11607]},"idPart",[]]]]],"import":["define",{"sourceInterval":[11612,11637]},null,[],["seq",{"sourceInterval":[11621,11637]},["terminal",{"sourceInterval":[11621,11629]},"import"],["not",{"sourceInterval":[11630,11637]},["app",{"sourceInterval":[11631,11637]},"idPart",[]]]]],"with":["define",{"sourceInterval":[11642,11663]},null,[],["seq",{"sourceInterval":[11649,11663]},["terminal",{"sourceInterval":[11649,11655]},"with"],["not",{"sourceInterval":[11656,11663]},["app",{"sourceInterval":[11657,11663]},"idPart",[]]]]],"trait":["define",{"sourceInterval":[11668,11691]},null,[],["seq",{"sourceInterval":[11676,11691]},["terminal",{"sourceInterval":[11676,11683]},"trait"],["not",{"sourceInterval":[11684,11691]},["app",{"sourceInterval":[11685,11691]},"idPart",[]]]]],"initOf":["define",{"sourceInterval":[11696,11721]},null,[],["seq",{"sourceInterval":[11705,11721]},["terminal",{"sourceInterval":[11705,11713]},"initOf"],["not",{"sourceInterval":[11714,11721]},["app",{"sourceInterval":[11715,11721]},"idPart",[]]]]],"virtual":["define",{"sourceInterval":[11726,11753]},null,[],["seq",{"sourceInterval":[11736,11753]},["terminal",{"sourceInterval":[11736,11745]},"virtual"],["not",{"sourceInterval":[11746,11753]},["app",{"sourceInterval":[11747,11753]},"idPart",[]]]]],"override":["define",{"sourceInterval":[11758,11787]},null,[],["seq",{"sourceInterval":[11769,11787]},["terminal",{"sourceInterval":[11769,11779]},"override"],["not",{"sourceInterval":[11780,11787]},["app",{"sourceInterval":[11781,11787]},"idPart",[]]]]],"inline":["define",{"sourceInterval":[11792,11817]},null,[],["seq",{"sourceInterval":[11801,11817]},["terminal",{"sourceInterval":[11801,11809]},"inline"],["not",{"sourceInterval":[11810,11817]},["app",{"sourceInterval":[11811,11817]},"idPart",[]]]]],"const":["define",{"sourceInterval":[11822,11845]},null,[],["seq",{"sourceInterval":[11830,11845]},["terminal",{"sourceInterval":[11830,11837]},"const"],["not",{"sourceInterval":[11838,11845]},["app",{"sourceInterval":[11839,11845]},"idPart",[]]]]],"abstract":["define",{"sourceInterval":[11850,11879]},null,[],["seq",{"sourceInterval":[11861,11879]},["terminal",{"sourceInterval":[11861,11871]},"abstract"],["not",{"sourceInterval":[11872,11879]},["app",{"sourceInterval":[11873,11879]},"idPart",[]]]]],"nameAttribute":["define",{"sourceInterval":[11903,11926]},null,[],["terminal",{"sourceInterval":[11919,11926]},"@name"]],"reservedWord":["define",{"sourceInterval":[11948,11970]},null,[],["app",{"sourceInterval":[11963,11970]},"keyword",[]]],"space":["extend",{"sourceInterval":[11992,12025]},null,[],["alt",{"sourceInterval":[12001,12025]},["app",{"sourceInterval":[12001,12008]},"comment",[]],["app",{"sourceInterval":[12011,12025]},"lineTerminator",[]]]],"comment":["define",{"sourceInterval":[12030,12076]},null,[],["alt",{"sourceInterval":[12040,12076]},["app",{"sourceInterval":[12040,12056]},"multiLineComment",[]],["app",{"sourceInterval":[12059,12076]},"singleLineComment",[]]]],"lineTerminator":["define",{"sourceInterval":[12081,12131]},null,[],["alt",{"sourceInterval":[12098,12131]},["terminal",{"sourceInterval":[12098,12102]},"\n"],["terminal",{"sourceInterval":[12105,12109]},"\r"],["terminal",{"sourceInterval":[12112,12120]},"\u2028"],["terminal",{"sourceInterval":[12123,12131]},"\u2029"]]],"multiLineComment":["define",{"sourceInterval":[12136,12177]},null,[],["seq",{"sourceInterval":[12155,12177]},["terminal",{"sourceInterval":[12155,12159]},"/*"],["star",{"sourceInterval":[12160,12172]},["seq",{"sourceInterval":[12161,12170]},["not",{"sourceInterval":[12161,12166]},["terminal",{"sourceInterval":[12162,12166]},"*/"]],["app",{"sourceInterval":[12167,12170]},"any",[]]]],["terminal",{"sourceInterval":[12173,12177]},"*/"]]],"singleLineComment":["define",{"sourceInterval":[12182,12229]},null,[],["seq",{"sourceInterval":[12202,12229]},["terminal",{"sourceInterval":[12202,12206]},"//"],["star",{"sourceInterval":[12207,12229]},["seq",{"sourceInterval":[12208,12227]},["not",{"sourceInterval":[12208,12223]},["app",{"sourceInterval":[12209,12223]},"lineTerminator",[]]],["app",{"sourceInterval":[12224,12227]},"any",[]]]]]]}]);module.exports=result; \ No newline at end of file diff --git a/src/grammar/grammar.ts b/src/grammar/grammar.ts index 364db994f..c71650a1f 100644 --- a/src/grammar/grammar.ts +++ b/src/grammar/grammar.ts @@ -113,18 +113,11 @@ semantics.addOperation("resolve_program_item", { arg2, _arg3, arg4, - arg5, + _arg5, _arg6, arg7, _arg8, ) { - if (arg4.source.contents === "" && arg5.sourceString === ",") { - throwError( - "Empty inherited traits list should not have a dangling comma.", - createRef(arg5), - ); - } - checkVariableName(arg2.sourceString, createRef(arg2)); return createNode({ kind: "def_contract", @@ -154,14 +147,17 @@ semantics.addOperation("resolve_program_item", { ref: createRef(this), }); }, - Trait_withTraits(arg0, _arg1, arg2, _arg3, arg4, arg5, _arg6, arg7, _arg8) { - if (arg4.source.contents === "" && arg5.sourceString === ",") { - throwError( - "Empty inherited traits list should not have a dangling comma.", - createRef(arg5), - ); - } - + Trait_withTraits( + arg0, + _arg1, + arg2, + _arg3, + arg4, + _arg5, + _arg6, + arg7, + _arg8, + ) { checkVariableName(arg2.sourceString, createRef(arg2)); return createNode({ kind: "def_trait", diff --git a/src/grammar/test-failed/case-30.tact b/src/grammar/test-failed/case-30.tact new file mode 100644 index 000000000..239f5eb15 --- /dev/null +++ b/src/grammar/test-failed/case-30.tact @@ -0,0 +1 @@ +contract Name with {} diff --git a/src/grammar/test-failed/case-31.tact b/src/grammar/test-failed/case-31.tact new file mode 100644 index 000000000..9c5f79b46 --- /dev/null +++ b/src/grammar/test-failed/case-31.tact @@ -0,0 +1 @@ +trait Name with {}