diff --git a/CHANGELOG.md b/CHANGELOG.md index 8c1968d25..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 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 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/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"], 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/**/*", diff --git a/src/grammar/__snapshots__/grammar.spec.ts.snap b/src/grammar/__snapshots__/grammar.spec.ts.snap index 8492e3c7c..ae2527b8f 100644 --- a/src/grammar/__snapshots__/grammar.spec.ts.snap +++ b/src/grammar/__snapshots__/grammar.spec.ts.snap @@ -254,6 +254,52 @@ Line 2, col 31: " `; +exports[`grammar should fail case-27 1`] = ` +":1:19: Syntax error: expected "_", "A".."Z", or "a".."z" +Line 1, col 19: +> 1 | contract Name with, {} + ^ + 2 | +" +`; + +exports[`grammar should fail case-28 1`] = ` +":1:16: Syntax error: expected "_", "A".."Z", or "a".."z" +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 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": [ @@ -2727,8 +2773,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 +2786,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 +2801,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 +2813,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 +2864,7 @@ exports[`grammar should parse case-22 1`] = ` ], }, ], - "id": 9, + "id": 13, "kind": "program", } `; @@ -3669,7 +3750,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 +3762,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..2465b7f87 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 NonemptyListOf ","? "{" 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 NonemptyListOf ","? "{" 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..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,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 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 543e98310..c71650a1f 100644 --- a/src/grammar/grammar.ts +++ b/src/grammar/grammar.ts @@ -107,7 +107,17 @@ 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, + ) { checkVariableName(arg2.sourceString, createRef(arg2)); return createNode({ kind: "def_contract", @@ -116,7 +126,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 +147,17 @@ 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, + ) { checkVariableName(arg2.sourceString, createRef(arg2)); return createNode({ kind: "def_trait", @@ -146,7 +166,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 +559,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-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 {} 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() {