diff --git a/src/grammar/__snapshots__/grammar.spec.ts.snap b/src/grammar/__snapshots__/grammar.spec.ts.snap index 637348e32..cff3730b5 100644 --- a/src/grammar/__snapshots__/grammar.spec.ts.snap +++ b/src/grammar/__snapshots__/grammar.spec.ts.snap @@ -2906,6 +2906,482 @@ exports[`grammar should parse case-26 1`] = ` `; exports[`grammar should parse case-27 1`] = ` +{ + "entries": [ + { + "args": [], + "attributes": [], + "id": 68, + "kind": "def_function", + "name": "testFunc", + "origin": "user", + "ref": fun testFunc(): Int { + let a: Int = 1; + let b: Int = 2; + a += b; + b += a; + a += 3; + a += b + 4; + b -= 1; + a -= b; + a -= b - 1; + b *= 2; + a *= b; + a *= b * 2; + b /= 2; + a /= b; + a /= b / 2; + a %= 2; + a %= b; + a %= b % 2; + return a; +}, + "return": { + "id": 1, + "kind": "type_ref_simple", + "name": "Int", + "optional": false, + "ref": Int, + }, + "statements": [ + { + "expression": { + "id": 3, + "kind": "number", + "ref": 1, + "value": 1n, + }, + "id": 4, + "kind": "statement_let", + "name": "a", + "ref": let a: Int = 1;, + "type": { + "id": 2, + "kind": "type_ref_simple", + "name": "Int", + "optional": false, + "ref": Int, + }, + }, + { + "expression": { + "id": 6, + "kind": "number", + "ref": 2, + "value": 2n, + }, + "id": 7, + "kind": "statement_let", + "name": "b", + "ref": let b: Int = 2;, + "type": { + "id": 5, + "kind": "type_ref_simple", + "name": "Int", + "optional": false, + "ref": Int, + }, + }, + { + "expression": { + "id": 9, + "kind": "id", + "ref": b, + "value": "b", + }, + "id": 10, + "kind": "statement_augmentedassign", + "op": "+", + "path": [ + { + "id": 8, + "kind": "lvalue_ref", + "name": "a", + "ref": a, + }, + ], + "ref": a += b;, + }, + { + "expression": { + "id": 12, + "kind": "id", + "ref": a, + "value": "a", + }, + "id": 13, + "kind": "statement_augmentedassign", + "op": "+", + "path": [ + { + "id": 11, + "kind": "lvalue_ref", + "name": "b", + "ref": b, + }, + ], + "ref": b += a;, + }, + { + "expression": { + "id": 15, + "kind": "number", + "ref": 3, + "value": 3n, + }, + "id": 16, + "kind": "statement_augmentedassign", + "op": "+", + "path": [ + { + "id": 14, + "kind": "lvalue_ref", + "name": "a", + "ref": a, + }, + ], + "ref": a += 3;, + }, + { + "expression": { + "id": 20, + "kind": "op_binary", + "left": { + "id": 18, + "kind": "id", + "ref": b, + "value": "b", + }, + "op": "+", + "ref": b + 4, + "right": { + "id": 19, + "kind": "number", + "ref": 4, + "value": 4n, + }, + }, + "id": 21, + "kind": "statement_augmentedassign", + "op": "+", + "path": [ + { + "id": 17, + "kind": "lvalue_ref", + "name": "a", + "ref": a, + }, + ], + "ref": a += b + 4;, + }, + { + "expression": { + "id": 23, + "kind": "number", + "ref": 1, + "value": 1n, + }, + "id": 24, + "kind": "statement_augmentedassign", + "op": "-", + "path": [ + { + "id": 22, + "kind": "lvalue_ref", + "name": "b", + "ref": b, + }, + ], + "ref": b -= 1;, + }, + { + "expression": { + "id": 26, + "kind": "id", + "ref": b, + "value": "b", + }, + "id": 27, + "kind": "statement_augmentedassign", + "op": "-", + "path": [ + { + "id": 25, + "kind": "lvalue_ref", + "name": "a", + "ref": a, + }, + ], + "ref": a -= b;, + }, + { + "expression": { + "id": 31, + "kind": "op_binary", + "left": { + "id": 29, + "kind": "id", + "ref": b, + "value": "b", + }, + "op": "-", + "ref": b - 1, + "right": { + "id": 30, + "kind": "number", + "ref": 1, + "value": 1n, + }, + }, + "id": 32, + "kind": "statement_augmentedassign", + "op": "-", + "path": [ + { + "id": 28, + "kind": "lvalue_ref", + "name": "a", + "ref": a, + }, + ], + "ref": a -= b - 1;, + }, + { + "expression": { + "id": 34, + "kind": "number", + "ref": 2, + "value": 2n, + }, + "id": 35, + "kind": "statement_augmentedassign", + "op": "*", + "path": [ + { + "id": 33, + "kind": "lvalue_ref", + "name": "b", + "ref": b, + }, + ], + "ref": b *= 2;, + }, + { + "expression": { + "id": 37, + "kind": "id", + "ref": b, + "value": "b", + }, + "id": 38, + "kind": "statement_augmentedassign", + "op": "*", + "path": [ + { + "id": 36, + "kind": "lvalue_ref", + "name": "a", + "ref": a, + }, + ], + "ref": a *= b;, + }, + { + "expression": { + "id": 42, + "kind": "op_binary", + "left": { + "id": 40, + "kind": "id", + "ref": b, + "value": "b", + }, + "op": "*", + "ref": b * 2, + "right": { + "id": 41, + "kind": "number", + "ref": 2, + "value": 2n, + }, + }, + "id": 43, + "kind": "statement_augmentedassign", + "op": "*", + "path": [ + { + "id": 39, + "kind": "lvalue_ref", + "name": "a", + "ref": a, + }, + ], + "ref": a *= b * 2;, + }, + { + "expression": { + "id": 45, + "kind": "number", + "ref": 2, + "value": 2n, + }, + "id": 46, + "kind": "statement_augmentedassign", + "op": "/", + "path": [ + { + "id": 44, + "kind": "lvalue_ref", + "name": "b", + "ref": b, + }, + ], + "ref": b /= 2;, + }, + { + "expression": { + "id": 48, + "kind": "id", + "ref": b, + "value": "b", + }, + "id": 49, + "kind": "statement_augmentedassign", + "op": "/", + "path": [ + { + "id": 47, + "kind": "lvalue_ref", + "name": "a", + "ref": a, + }, + ], + "ref": a /= b;, + }, + { + "expression": { + "id": 53, + "kind": "op_binary", + "left": { + "id": 51, + "kind": "id", + "ref": b, + "value": "b", + }, + "op": "/", + "ref": b / 2, + "right": { + "id": 52, + "kind": "number", + "ref": 2, + "value": 2n, + }, + }, + "id": 54, + "kind": "statement_augmentedassign", + "op": "/", + "path": [ + { + "id": 50, + "kind": "lvalue_ref", + "name": "a", + "ref": a, + }, + ], + "ref": a /= b / 2;, + }, + { + "expression": { + "id": 56, + "kind": "number", + "ref": 2, + "value": 2n, + }, + "id": 57, + "kind": "statement_augmentedassign", + "op": "%", + "path": [ + { + "id": 55, + "kind": "lvalue_ref", + "name": "a", + "ref": a, + }, + ], + "ref": a %= 2;, + }, + { + "expression": { + "id": 59, + "kind": "id", + "ref": b, + "value": "b", + }, + "id": 60, + "kind": "statement_augmentedassign", + "op": "%", + "path": [ + { + "id": 58, + "kind": "lvalue_ref", + "name": "a", + "ref": a, + }, + ], + "ref": a %= b;, + }, + { + "expression": { + "id": 64, + "kind": "op_binary", + "left": { + "id": 62, + "kind": "id", + "ref": b, + "value": "b", + }, + "op": "%", + "ref": b % 2, + "right": { + "id": 63, + "kind": "number", + "ref": 2, + "value": 2n, + }, + }, + "id": 65, + "kind": "statement_augmentedassign", + "op": "%", + "path": [ + { + "id": 61, + "kind": "lvalue_ref", + "name": "a", + "ref": a, + }, + ], + "ref": a %= b % 2;, + }, + { + "expression": { + "id": 66, + "kind": "id", + "ref": a, + "value": "a", + }, + "id": 67, + "kind": "statement_return", + "ref": return a;, + }, + ], + }, + ], + "id": 69, + "kind": "program", +} +`; + +exports[`grammar should parse case-28 1`] = ` { "entries": [ { diff --git a/src/grammar/grammar.ohm-bundle.js b/src/grammar/grammar.ohm-bundle.js index 0ed7bc33f..911d21942 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 | 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 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 = 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 = digit+ (\"_\" | digit)*\n integerLiteralHex = \"0x\" hexDigit+ (\"_\" | hexDigit)*\n | \"0X\" hexDigit+ (\"_\" | hexDigit)*\n integerLiteralBin = \"0b\" binDigit+ (\"_\" | binDigit)*\n | \"0B\" binDigit+ (\"_\" | binDigit)*\n integerLiteralOct = \"0o\" octDigit+ (\"_\" | octDigit)*\n | \"0O\" octDigit+ (\"_\" | octDigit)*\n binDigit = \"0\" | \"1\"\n octDigit = \"0\"..\"7\"\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 stringLiteralCharacter = ~(\"\\\"\" | \"\\\\\" | lineTerminator) any\n stringLiteral = \"\\\"\" stringLiteralCharacter* \"\\\"\"\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,592]},null,[],["seq",{"sourceInterval":[488,581]},["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]},","]]],["terminal",{"sourceInterval":[574,577]},")"],["terminal",{"sourceInterval":[578,581]},";"]]],"NativeFunction_withType":["define",{"sourceInterval":[614,727]},null,[],["seq",{"sourceInterval":[614,716]},["app",{"sourceInterval":[614,627]},"nameAttribute",[]],["terminal",{"sourceInterval":[628,631]},"("],["app",{"sourceInterval":[632,638]},"funcId",[]],["terminal",{"sourceInterval":[639,642]},")"],["star",{"sourceInterval":[643,661]},["app",{"sourceInterval":[643,660]},"FunctionAttribute",[]]],["app",{"sourceInterval":[662,668]},"native",[]],["app",{"sourceInterval":[669,671]},"id",[]],["terminal",{"sourceInterval":[672,675]},"("],["app",{"sourceInterval":[676,699]},"ListOf",[["app",{"sourceInterval":[683,694]},"FunctionArg",[]],["terminal",{"sourceInterval":[695,698]},","]]],["terminal",{"sourceInterval":[700,703]},")"],["terminal",{"sourceInterval":[704,707]},":"],["app",{"sourceInterval":[708,712]},"Type",[]],["terminal",{"sourceInterval":[713,716]},";"]]],"NativeFunction":["define",{"sourceInterval":[471,727]},null,[],["alt",{"sourceInterval":[488,727]},["app",{"sourceInterval":[488,581]},"NativeFunction_withVoid",[]],["app",{"sourceInterval":[614,716]},"NativeFunction_withType",[]]]],"Type_optional":["define",{"sourceInterval":[770,796]},null,[],["seq",{"sourceInterval":[770,785]},["app",{"sourceInterval":[770,781]},"typeLiteral",[]],["terminal",{"sourceInterval":[782,785]},"?"]]],"Type_required":["define",{"sourceInterval":[808,830]},null,[],["app",{"sourceInterval":[808,819]},"typeLiteral",[]]],"Type_map":["define",{"sourceInterval":[842,907]},null,[],["seq",{"sourceInterval":[842,901]},["terminal",{"sourceInterval":[842,847]},"map"],["terminal",{"sourceInterval":[848,851]},"<"],["app",{"sourceInterval":[852,863]},"typeLiteral",[]],["opt",{"sourceInterval":[864,872]},["seq",{"sourceInterval":[865,870]},["app",{"sourceInterval":[865,867]},"as",[]],["app",{"sourceInterval":[868,870]},"id",[]]]],["terminal",{"sourceInterval":[873,876]},","],["app",{"sourceInterval":[877,888]},"typeLiteral",[]],["opt",{"sourceInterval":[889,897]},["seq",{"sourceInterval":[890,895]},["app",{"sourceInterval":[890,892]},"as",[]],["app",{"sourceInterval":[893,895]},"id",[]]]],["terminal",{"sourceInterval":[898,901]},">"]]],"Type_bounced":["define",{"sourceInterval":[919,958]},null,[],["seq",{"sourceInterval":[919,948]},["terminal",{"sourceInterval":[919,928]},"bounced"],["terminal",{"sourceInterval":[929,932]},"<"],["app",{"sourceInterval":[933,944]},"typeLiteral",[]],["terminal",{"sourceInterval":[945,948]},">"]]],"Type":["define",{"sourceInterval":[763,958]},null,[],["alt",{"sourceInterval":[770,958]},["app",{"sourceInterval":[770,785]},"Type_optional",[]],["app",{"sourceInterval":[808,819]},"Type_required",[]],["app",{"sourceInterval":[842,901]},"Type_map",[]],["app",{"sourceInterval":[919,948]},"Type_bounced",[]]]],"Field_default":["define",{"sourceInterval":[971,996]},null,[],["seq",{"sourceInterval":[971,986]},["app",{"sourceInterval":[971,973]},"id",[]],["terminal",{"sourceInterval":[974,977]},":"],["app",{"sourceInterval":[978,982]},"Type",[]],["terminal",{"sourceInterval":[983,986]},";"]]],"Field_defaultWithInit":["define",{"sourceInterval":[1009,1057]},null,[],["seq",{"sourceInterval":[1009,1039]},["app",{"sourceInterval":[1009,1011]},"id",[]],["terminal",{"sourceInterval":[1012,1015]},":"],["app",{"sourceInterval":[1016,1020]},"Type",[]],["terminal",{"sourceInterval":[1021,1024]},"="],["app",{"sourceInterval":[1025,1035]},"Expression",[]],["terminal",{"sourceInterval":[1036,1039]},";"]]],"Field_withSerialization":["define",{"sourceInterval":[1070,1111]},null,[],["seq",{"sourceInterval":[1070,1091]},["app",{"sourceInterval":[1070,1072]},"id",[]],["terminal",{"sourceInterval":[1073,1076]},":"],["app",{"sourceInterval":[1077,1081]},"Type",[]],["app",{"sourceInterval":[1082,1084]},"as",[]],["app",{"sourceInterval":[1085,1087]},"id",[]],["terminal",{"sourceInterval":[1088,1091]},";"]]],"Field_withSerializationAndInit":["define",{"sourceInterval":[1124,1187]},null,[],["seq",{"sourceInterval":[1124,1160]},["app",{"sourceInterval":[1124,1126]},"id",[]],["terminal",{"sourceInterval":[1127,1130]},":"],["app",{"sourceInterval":[1131,1135]},"Type",[]],["app",{"sourceInterval":[1136,1138]},"as",[]],["app",{"sourceInterval":[1139,1141]},"id",[]],["terminal",{"sourceInterval":[1142,1145]},"="],["app",{"sourceInterval":[1146,1156]},"Expression",[]],["terminal",{"sourceInterval":[1157,1160]},";"]]],"Field":["define",{"sourceInterval":[963,1187]},null,[],["alt",{"sourceInterval":[971,1187]},["app",{"sourceInterval":[971,986]},"Field_default",[]],["app",{"sourceInterval":[1009,1039]},"Field_defaultWithInit",[]],["app",{"sourceInterval":[1070,1091]},"Field_withSerialization",[]],["app",{"sourceInterval":[1124,1160]},"Field_withSerializationAndInit",[]]]],"ConstantAttribute_virtual":["define",{"sourceInterval":[1233,1253]},null,[],["app",{"sourceInterval":[1233,1240]},"virtual",[]]],"ConstantAttribute_override":["define",{"sourceInterval":[1278,1299]},null,[],["app",{"sourceInterval":[1278,1286]},"override",[]]],"ConstantAttribute_abstract":["define",{"sourceInterval":[1324,1345]},null,[],["app",{"sourceInterval":[1324,1332]},"abstract",[]]],"ConstantAttribute":["define",{"sourceInterval":[1213,1345]},null,[],["alt",{"sourceInterval":[1233,1345]},["app",{"sourceInterval":[1233,1240]},"ConstantAttribute_virtual",[]],["app",{"sourceInterval":[1278,1286]},"ConstantAttribute_override",[]],["app",{"sourceInterval":[1324,1332]},"ConstantAttribute_abstract",[]]]],"Constant_withValue":["define",{"sourceInterval":[1361,1433]},null,[],["seq",{"sourceInterval":[1361,1421]},["star",{"sourceInterval":[1361,1379]},["app",{"sourceInterval":[1361,1378]},"ConstantAttribute",[]]],["not",{"sourceInterval":[1380,1384]},["app",{"sourceInterval":[1381,1384]},"fun",[]]],["app",{"sourceInterval":[1385,1390]},"const",[]],["app",{"sourceInterval":[1391,1393]},"id",[]],["terminal",{"sourceInterval":[1394,1397]},":"],["app",{"sourceInterval":[1398,1402]},"Type",[]],["terminal",{"sourceInterval":[1403,1406]},"="],["app",{"sourceInterval":[1407,1417]},"Expression",[]],["terminal",{"sourceInterval":[1418,1421]},";"]]],"Constant_withEmpty":["define",{"sourceInterval":[1449,1521]},null,[],["seq",{"sourceInterval":[1449,1494]},["star",{"sourceInterval":[1449,1467]},["app",{"sourceInterval":[1449,1466]},"ConstantAttribute",[]]],["not",{"sourceInterval":[1468,1472]},["app",{"sourceInterval":[1469,1472]},"fun",[]]],["app",{"sourceInterval":[1473,1478]},"const",[]],["app",{"sourceInterval":[1479,1481]},"id",[]],["terminal",{"sourceInterval":[1482,1485]},":"],["app",{"sourceInterval":[1486,1490]},"Type",[]],["terminal",{"sourceInterval":[1491,1494]},";"]]],"Constant":["define",{"sourceInterval":[1350,1521]},null,[],["alt",{"sourceInterval":[1361,1521]},["app",{"sourceInterval":[1361,1421]},"Constant_withValue",[]],["app",{"sourceInterval":[1449,1494]},"Constant_withEmpty",[]]]],"Struct_originary":["define",{"sourceInterval":[1550,1602]},null,[],["seq",{"sourceInterval":[1550,1590]},["terminal",{"sourceInterval":[1550,1558]},"struct"],["app",{"sourceInterval":[1559,1570]},"typeLiteral",[]],["terminal",{"sourceInterval":[1571,1574]},"{"],["star",{"sourceInterval":[1575,1586]},["app",{"sourceInterval":[1575,1585]},"StructBody",[]]],["terminal",{"sourceInterval":[1587,1590]},"}"]]],"Struct_message":["define",{"sourceInterval":[1616,1667]},null,[],["seq",{"sourceInterval":[1616,1657]},["terminal",{"sourceInterval":[1616,1625]},"message"],["app",{"sourceInterval":[1626,1637]},"typeLiteral",[]],["terminal",{"sourceInterval":[1638,1641]},"{"],["star",{"sourceInterval":[1642,1653]},["app",{"sourceInterval":[1642,1652]},"StructBody",[]]],["terminal",{"sourceInterval":[1654,1657]},"}"]]],"Struct_messageWithId":["define",{"sourceInterval":[1681,1761]},null,[],["seq",{"sourceInterval":[1681,1745]},["terminal",{"sourceInterval":[1681,1690]},"message"],["terminal",{"sourceInterval":[1691,1694]},"("],["app",{"sourceInterval":[1695,1709]},"integerLiteral",[]],["terminal",{"sourceInterval":[1710,1713]},")"],["app",{"sourceInterval":[1714,1725]},"typeLiteral",[]],["terminal",{"sourceInterval":[1726,1729]},"{"],["star",{"sourceInterval":[1730,1741]},["app",{"sourceInterval":[1730,1740]},"StructBody",[]]],["terminal",{"sourceInterval":[1742,1745]},"}"]]],"Struct":["define",{"sourceInterval":[1541,1761]},null,[],["alt",{"sourceInterval":[1550,1761]},["app",{"sourceInterval":[1550,1590]},"Struct_originary",[]],["app",{"sourceInterval":[1616,1657]},"Struct_message",[]],["app",{"sourceInterval":[1681,1745]},"Struct_messageWithId",[]]]],"StructBody":["define",{"sourceInterval":[1766,1784]},null,[],["app",{"sourceInterval":[1779,1784]},"Field",[]]],"Contract_simple":["define",{"sourceInterval":[1817,1878]},null,[],["seq",{"sourceInterval":[1817,1869]},["star",{"sourceInterval":[1817,1835]},["app",{"sourceInterval":[1817,1834]},"ContractAttribute",[]]],["app",{"sourceInterval":[1836,1844]},"contract",[]],["app",{"sourceInterval":[1845,1847]},"id",[]],["terminal",{"sourceInterval":[1848,1851]},"{"],["star",{"sourceInterval":[1852,1865]},["app",{"sourceInterval":[1852,1864]},"ContractBody",[]]],["terminal",{"sourceInterval":[1866,1869]},"}"]]],"Contract_withTraits":["define",{"sourceInterval":[1894,1979]},null,[],["seq",{"sourceInterval":[1894,1966]},["star",{"sourceInterval":[1894,1912]},["app",{"sourceInterval":[1894,1911]},"ContractAttribute",[]]],["app",{"sourceInterval":[1913,1921]},"contract",[]],["app",{"sourceInterval":[1922,1924]},"id",[]],["app",{"sourceInterval":[1925,1929]},"with",[]],["app",{"sourceInterval":[1930,1944]},"ListOf",[["app",{"sourceInterval":[1937,1939]},"id",[]],["terminal",{"sourceInterval":[1940,1943]},","]]],["terminal",{"sourceInterval":[1945,1948]},"{"],["star",{"sourceInterval":[1949,1962]},["app",{"sourceInterval":[1949,1961]},"ContractBody",[]]],["terminal",{"sourceInterval":[1963,1966]},"}"]]],"Contract":["define",{"sourceInterval":[1806,1979]},null,[],["alt",{"sourceInterval":[1817,1979]},["app",{"sourceInterval":[1817,1869]},"Contract_simple",[]],["app",{"sourceInterval":[1894,1966]},"Contract_withTraits",[]]]],"ContractInit":["define",{"sourceInterval":[1984,2056]},null,[],["seq",{"sourceInterval":[1999,2056]},["terminal",{"sourceInterval":[1999,2005]},"init"],["terminal",{"sourceInterval":[2006,2009]},"("],["app",{"sourceInterval":[2010,2033]},"ListOf",[["app",{"sourceInterval":[2017,2028]},"FunctionArg",[]],["terminal",{"sourceInterval":[2029,2032]},","]]],["terminal",{"sourceInterval":[2034,2037]},")"],["terminal",{"sourceInterval":[2038,2041]},"{"],["star",{"sourceInterval":[2042,2052]},["app",{"sourceInterval":[2042,2051]},"Statement",[]]],["terminal",{"sourceInterval":[2053,2056]},"}"]]],"ContractBody":["define",{"sourceInterval":[2061,2204]},null,[],["alt",{"sourceInterval":[2076,2204]},["app",{"sourceInterval":[2076,2081]},"Field",[]],["app",{"sourceInterval":[2101,2113]},"ContractInit",[]],["app",{"sourceInterval":[2133,2148]},"ReceiveFunction",[]],["app",{"sourceInterval":[2168,2176]},"Function",[]],["app",{"sourceInterval":[2196,2204]},"Constant",[]]]],"Trait_originary":["define",{"sourceInterval":[2235,2293]},null,[],["seq",{"sourceInterval":[2235,2281]},["star",{"sourceInterval":[2235,2253]},["app",{"sourceInterval":[2235,2252]},"ContractAttribute",[]]],["app",{"sourceInterval":[2254,2259]},"trait",[]],["app",{"sourceInterval":[2260,2262]},"id",[]],["terminal",{"sourceInterval":[2263,2266]},"{"],["star",{"sourceInterval":[2267,2277]},["app",{"sourceInterval":[2267,2276]},"TraitBody",[]]],["terminal",{"sourceInterval":[2278,2281]},"}"]]],"Trait_withTraits":["define",{"sourceInterval":[2306,2385]},null,[],["seq",{"sourceInterval":[2306,2372]},["star",{"sourceInterval":[2306,2324]},["app",{"sourceInterval":[2306,2323]},"ContractAttribute",[]]],["app",{"sourceInterval":[2325,2330]},"trait",[]],["app",{"sourceInterval":[2331,2333]},"id",[]],["app",{"sourceInterval":[2334,2338]},"with",[]],["app",{"sourceInterval":[2339,2353]},"ListOf",[["app",{"sourceInterval":[2346,2348]},"id",[]],["terminal",{"sourceInterval":[2349,2352]},","]]],["terminal",{"sourceInterval":[2354,2357]},"{"],["star",{"sourceInterval":[2358,2368]},["app",{"sourceInterval":[2358,2367]},"TraitBody",[]]],["terminal",{"sourceInterval":[2369,2372]},"}"]]],"Trait":["define",{"sourceInterval":[2227,2385]},null,[],["alt",{"sourceInterval":[2235,2385]},["app",{"sourceInterval":[2235,2281]},"Trait_originary",[]],["app",{"sourceInterval":[2306,2372]},"Trait_withTraits",[]]]],"TraitBody":["define",{"sourceInterval":[2390,2489]},null,[],["alt",{"sourceInterval":[2402,2489]},["app",{"sourceInterval":[2402,2407]},"Field",[]],["app",{"sourceInterval":[2424,2439]},"ReceiveFunction",[]],["app",{"sourceInterval":[2456,2464]},"Function",[]],["app",{"sourceInterval":[2481,2489]},"Constant",[]]]],"ContractAttribute_interface":["define",{"sourceInterval":[2542,2588]},null,[],["seq",{"sourceInterval":[2542,2576]},["terminal",{"sourceInterval":[2542,2554]},"@interface"],["terminal",{"sourceInterval":[2555,2558]},"("],["app",{"sourceInterval":[2559,2572]},"stringLiteral",[]],["terminal",{"sourceInterval":[2573,2576]},")"]]],"ContractAttribute":["define",{"sourceInterval":[2522,2588]},null,[],["app",{"sourceInterval":[2542,2588]},"ContractAttribute_interface",[]]],"FunctionAttribute_getter":["define",{"sourceInterval":[2630,2648]},null,[],["terminal",{"sourceInterval":[2630,2635]},"get"]],"FunctionAttribute_mutates":["define",{"sourceInterval":[2673,2692]},null,[],["app",{"sourceInterval":[2673,2680]},"mutates",[]]],"FunctionAttribute_extends":["define",{"sourceInterval":[2717,2736]},null,[],["app",{"sourceInterval":[2717,2724]},"extends",[]]],"FunctionAttribute_virtual":["define",{"sourceInterval":[2761,2780]},null,[],["app",{"sourceInterval":[2761,2768]},"virtual",[]]],"FunctionAttribute_override":["define",{"sourceInterval":[2805,2825]},null,[],["app",{"sourceInterval":[2805,2813]},"override",[]]],"FunctionAttribute_inline":["define",{"sourceInterval":[2850,2868]},null,[],["app",{"sourceInterval":[2850,2856]},"inline",[]]],"FunctionAttribute_abstract":["define",{"sourceInterval":[2893,2913]},null,[],["app",{"sourceInterval":[2893,2901]},"abstract",[]]],"FunctionAttribute":["define",{"sourceInterval":[2610,2913]},null,[],["alt",{"sourceInterval":[2630,2913]},["app",{"sourceInterval":[2630,2635]},"FunctionAttribute_getter",[]],["app",{"sourceInterval":[2673,2680]},"FunctionAttribute_mutates",[]],["app",{"sourceInterval":[2717,2724]},"FunctionAttribute_extends",[]],["app",{"sourceInterval":[2761,2768]},"FunctionAttribute_virtual",[]],["app",{"sourceInterval":[2805,2813]},"FunctionAttribute_override",[]],["app",{"sourceInterval":[2850,2856]},"FunctionAttribute_inline",[]],["app",{"sourceInterval":[2893,2901]},"FunctionAttribute_abstract",[]]]],"Function_withVoid":["define",{"sourceInterval":[2929,3016]},null,[],["seq",{"sourceInterval":[2929,3005]},["star",{"sourceInterval":[2929,2947]},["app",{"sourceInterval":[2929,2946]},"FunctionAttribute",[]]],["app",{"sourceInterval":[2948,2951]},"fun",[]],["app",{"sourceInterval":[2952,2954]},"id",[]],["terminal",{"sourceInterval":[2955,2958]},"("],["app",{"sourceInterval":[2959,2982]},"ListOf",[["app",{"sourceInterval":[2966,2977]},"FunctionArg",[]],["terminal",{"sourceInterval":[2978,2981]},","]]],["terminal",{"sourceInterval":[2983,2986]},")"],["terminal",{"sourceInterval":[2987,2990]},"{"],["star",{"sourceInterval":[2991,3001]},["app",{"sourceInterval":[2991,3000]},"Statement",[]]],["terminal",{"sourceInterval":[3002,3005]},"}"]]],"Function_withType":["define",{"sourceInterval":[3032,3128]},null,[],["seq",{"sourceInterval":[3032,3117]},["star",{"sourceInterval":[3032,3050]},["app",{"sourceInterval":[3032,3049]},"FunctionAttribute",[]]],["app",{"sourceInterval":[3051,3054]},"fun",[]],["app",{"sourceInterval":[3055,3057]},"id",[]],["terminal",{"sourceInterval":[3058,3061]},"("],["app",{"sourceInterval":[3062,3085]},"ListOf",[["app",{"sourceInterval":[3069,3080]},"FunctionArg",[]],["terminal",{"sourceInterval":[3081,3084]},","]]],["terminal",{"sourceInterval":[3086,3089]},")"],["terminal",{"sourceInterval":[3090,3093]},":"],["app",{"sourceInterval":[3094,3098]},"Type",[]],["terminal",{"sourceInterval":[3099,3102]},"{"],["star",{"sourceInterval":[3103,3113]},["app",{"sourceInterval":[3103,3112]},"Statement",[]]],["terminal",{"sourceInterval":[3114,3117]},"}"]]],"Function_abstractVoid":["define",{"sourceInterval":[3144,3220]},null,[],["seq",{"sourceInterval":[3144,3205]},["star",{"sourceInterval":[3144,3162]},["app",{"sourceInterval":[3144,3161]},"FunctionAttribute",[]]],["app",{"sourceInterval":[3163,3166]},"fun",[]],["app",{"sourceInterval":[3167,3169]},"id",[]],["terminal",{"sourceInterval":[3170,3173]},"("],["app",{"sourceInterval":[3174,3197]},"ListOf",[["app",{"sourceInterval":[3181,3192]},"FunctionArg",[]],["terminal",{"sourceInterval":[3193,3196]},","]]],["terminal",{"sourceInterval":[3198,3201]},")"],["terminal",{"sourceInterval":[3202,3205]},";"]]],"Function_abstractType":["define",{"sourceInterval":[3236,3321]},null,[],["seq",{"sourceInterval":[3236,3306]},["star",{"sourceInterval":[3236,3254]},["app",{"sourceInterval":[3236,3253]},"FunctionAttribute",[]]],["app",{"sourceInterval":[3255,3258]},"fun",[]],["app",{"sourceInterval":[3259,3261]},"id",[]],["terminal",{"sourceInterval":[3262,3265]},"("],["app",{"sourceInterval":[3266,3289]},"ListOf",[["app",{"sourceInterval":[3273,3284]},"FunctionArg",[]],["terminal",{"sourceInterval":[3285,3288]},","]]],["terminal",{"sourceInterval":[3290,3293]},")"],["terminal",{"sourceInterval":[3294,3297]},":"],["app",{"sourceInterval":[3298,3302]},"Type",[]],["terminal",{"sourceInterval":[3303,3306]},";"]]],"Function":["define",{"sourceInterval":[2918,3321]},null,[],["alt",{"sourceInterval":[2929,3321]},["app",{"sourceInterval":[2929,3005]},"Function_withVoid",[]],["app",{"sourceInterval":[3032,3117]},"Function_withType",[]],["app",{"sourceInterval":[3144,3205]},"Function_abstractVoid",[]],["app",{"sourceInterval":[3236,3306]},"Function_abstractType",[]]]],"FunctionArg":["define",{"sourceInterval":[3326,3351]},null,[],["seq",{"sourceInterval":[3340,3351]},["app",{"sourceInterval":[3340,3342]},"id",[]],["terminal",{"sourceInterval":[3343,3346]},":"],["app",{"sourceInterval":[3347,3351]},"Type",[]]]],"ReceiveFunction_simple":["define",{"sourceInterval":[3379,3436]},null,[],["seq",{"sourceInterval":[3379,3427]},["terminal",{"sourceInterval":[3379,3388]},"receive"],["terminal",{"sourceInterval":[3389,3392]},"("],["app",{"sourceInterval":[3393,3404]},"FunctionArg",[]],["terminal",{"sourceInterval":[3405,3408]},")"],["terminal",{"sourceInterval":[3409,3412]},"{"],["star",{"sourceInterval":[3413,3423]},["app",{"sourceInterval":[3413,3422]},"Statement",[]]],["terminal",{"sourceInterval":[3424,3427]},"}"]]],"ReceiveFunction_empty":["define",{"sourceInterval":[3459,3503]},null,[],["seq",{"sourceInterval":[3459,3495]},["terminal",{"sourceInterval":[3459,3468]},"receive"],["terminal",{"sourceInterval":[3469,3472]},"("],["terminal",{"sourceInterval":[3473,3476]},")"],["terminal",{"sourceInterval":[3477,3480]},"{"],["star",{"sourceInterval":[3481,3491]},["app",{"sourceInterval":[3481,3490]},"Statement",[]]],["terminal",{"sourceInterval":[3492,3495]},"}"]]],"ReceiveFunction_comment":["define",{"sourceInterval":[3526,3586]},null,[],["seq",{"sourceInterval":[3526,3576]},["terminal",{"sourceInterval":[3526,3535]},"receive"],["terminal",{"sourceInterval":[3536,3539]},"("],["app",{"sourceInterval":[3540,3553]},"stringLiteral",[]],["terminal",{"sourceInterval":[3554,3557]},")"],["terminal",{"sourceInterval":[3558,3561]},"{"],["star",{"sourceInterval":[3562,3572]},["app",{"sourceInterval":[3562,3571]},"Statement",[]]],["terminal",{"sourceInterval":[3573,3576]},"}"]]],"ReceiveFunction_bounced":["define",{"sourceInterval":[3609,3667]},null,[],["seq",{"sourceInterval":[3609,3657]},["terminal",{"sourceInterval":[3609,3618]},"bounced"],["terminal",{"sourceInterval":[3619,3622]},"("],["app",{"sourceInterval":[3623,3634]},"FunctionArg",[]],["terminal",{"sourceInterval":[3635,3638]},")"],["terminal",{"sourceInterval":[3639,3642]},"{"],["star",{"sourceInterval":[3643,3653]},["app",{"sourceInterval":[3643,3652]},"Statement",[]]],["terminal",{"sourceInterval":[3654,3657]},"}"]]],"ReceiveFunction_externalSimple":["define",{"sourceInterval":[3690,3756]},null,[],["seq",{"sourceInterval":[3690,3739]},["terminal",{"sourceInterval":[3690,3700]},"external"],["terminal",{"sourceInterval":[3701,3704]},"("],["app",{"sourceInterval":[3705,3716]},"FunctionArg",[]],["terminal",{"sourceInterval":[3717,3720]},")"],["terminal",{"sourceInterval":[3721,3724]},"{"],["star",{"sourceInterval":[3725,3735]},["app",{"sourceInterval":[3725,3734]},"Statement",[]]],["terminal",{"sourceInterval":[3736,3739]},"}"]]],"ReceiveFunction_externalComment":["define",{"sourceInterval":[3779,3848]},null,[],["seq",{"sourceInterval":[3779,3830]},["terminal",{"sourceInterval":[3779,3789]},"external"],["terminal",{"sourceInterval":[3790,3793]},"("],["app",{"sourceInterval":[3794,3807]},"stringLiteral",[]],["terminal",{"sourceInterval":[3808,3811]},")"],["terminal",{"sourceInterval":[3812,3815]},"{"],["star",{"sourceInterval":[3816,3826]},["app",{"sourceInterval":[3816,3825]},"Statement",[]]],["terminal",{"sourceInterval":[3827,3830]},"}"]]],"ReceiveFunction_externalEmpty":["define",{"sourceInterval":[3871,3924]},null,[],["seq",{"sourceInterval":[3871,3908]},["terminal",{"sourceInterval":[3871,3881]},"external"],["terminal",{"sourceInterval":[3882,3885]},"("],["terminal",{"sourceInterval":[3886,3889]},")"],["terminal",{"sourceInterval":[3890,3893]},"{"],["star",{"sourceInterval":[3894,3904]},["app",{"sourceInterval":[3894,3903]},"Statement",[]]],["terminal",{"sourceInterval":[3905,3908]},"}"]]],"ReceiveFunction":["define",{"sourceInterval":[3361,3924]},null,[],["alt",{"sourceInterval":[3379,3924]},["app",{"sourceInterval":[3379,3427]},"ReceiveFunction_simple",[]],["app",{"sourceInterval":[3459,3495]},"ReceiveFunction_empty",[]],["app",{"sourceInterval":[3526,3576]},"ReceiveFunction_comment",[]],["app",{"sourceInterval":[3609,3657]},"ReceiveFunction_bounced",[]],["app",{"sourceInterval":[3690,3739]},"ReceiveFunction_externalSimple",[]],["app",{"sourceInterval":[3779,3830]},"ReceiveFunction_externalComment",[]],["app",{"sourceInterval":[3871,3908]},"ReceiveFunction_externalEmpty",[]]]],"Statement":["define",{"sourceInterval":[3948,4232]},null,[],["alt",{"sourceInterval":[3960,4232]},["app",{"sourceInterval":[3960,3972]},"StatementLet",[]],["app",{"sourceInterval":[3989,4003]},"StatementBlock",[]],["app",{"sourceInterval":[4020,4035]},"StatementReturn",[]],["app",{"sourceInterval":[4052,4071]},"StatementExpression",[]],["app",{"sourceInterval":[4088,4103]},"StatementAssign",[]],["app",{"sourceInterval":[4120,4138]},"StatementCondition",[]],["app",{"sourceInterval":[4155,4169]},"StatementWhile",[]],["app",{"sourceInterval":[4186,4201]},"StatementRepeat",[]],["app",{"sourceInterval":[4218,4232]},"StatementUntil",[]]]],"StatementBlock":["define",{"sourceInterval":[4237,4272]},null,[],["seq",{"sourceInterval":[4254,4272]},["terminal",{"sourceInterval":[4254,4257]},"{"],["star",{"sourceInterval":[4258,4268]},["app",{"sourceInterval":[4258,4267]},"Statement",[]]],["terminal",{"sourceInterval":[4269,4272]},"}"]]],"StatementLet":["define",{"sourceInterval":[4277,4326]},null,[],["seq",{"sourceInterval":[4292,4326]},["app",{"sourceInterval":[4292,4295]},"let",[]],["app",{"sourceInterval":[4296,4298]},"id",[]],["terminal",{"sourceInterval":[4299,4302]},":"],["app",{"sourceInterval":[4303,4307]},"Type",[]],["terminal",{"sourceInterval":[4308,4311]},"="],["app",{"sourceInterval":[4312,4322]},"Expression",[]],["terminal",{"sourceInterval":[4323,4326]},";"]]],"StatementReturn_withExpression":["define",{"sourceInterval":[4349,4387]},null,[],["seq",{"sourceInterval":[4349,4370]},["app",{"sourceInterval":[4349,4355]},"return",[]],["app",{"sourceInterval":[4356,4366]},"Expression",[]],["terminal",{"sourceInterval":[4367,4370]},";"]]],"StatementReturn_withoutExpression":["define",{"sourceInterval":[4410,4440]},null,[],["seq",{"sourceInterval":[4410,4420]},["app",{"sourceInterval":[4410,4416]},"return",[]],["terminal",{"sourceInterval":[4417,4420]},";"]]],"StatementReturn":["define",{"sourceInterval":[4331,4440]},null,[],["alt",{"sourceInterval":[4349,4440]},["app",{"sourceInterval":[4349,4370]},"StatementReturn_withExpression",[]],["app",{"sourceInterval":[4410,4420]},"StatementReturn_withoutExpression",[]]]],"StatementExpression":["define",{"sourceInterval":[4449,4485]},null,[],["seq",{"sourceInterval":[4471,4485]},["app",{"sourceInterval":[4471,4481]},"Expression",[]],["terminal",{"sourceInterval":[4482,4485]},";"]]],"StatementAssign":["define",{"sourceInterval":[4490,4533]},null,[],["seq",{"sourceInterval":[4508,4533]},["app",{"sourceInterval":[4508,4514]},"LValue",[]],["terminal",{"sourceInterval":[4515,4518]},"="],["app",{"sourceInterval":[4519,4529]},"Expression",[]],["terminal",{"sourceInterval":[4530,4533]},";"]]],"StatementCondition_simple":["define",{"sourceInterval":[4559,4606]},null,[],["seq",{"sourceInterval":[4559,4597]},["app",{"sourceInterval":[4559,4561]},"if",[]],["app",{"sourceInterval":[4562,4572]},"Expression",[]],["terminal",{"sourceInterval":[4573,4576]},"{"],["star",{"sourceInterval":[4577,4587]},["app",{"sourceInterval":[4577,4586]},"Statement",[]]],["terminal",{"sourceInterval":[4588,4591]},"}"],["not",{"sourceInterval":[4592,4597]},["app",{"sourceInterval":[4593,4597]},"else",[]]]]],"StatementCondition_withElse":["define",{"sourceInterval":[4632,4699]},null,[],["seq",{"sourceInterval":[4632,4688]},["app",{"sourceInterval":[4632,4634]},"if",[]],["app",{"sourceInterval":[4635,4645]},"Expression",[]],["terminal",{"sourceInterval":[4646,4649]},"{"],["star",{"sourceInterval":[4650,4660]},["app",{"sourceInterval":[4650,4659]},"Statement",[]]],["terminal",{"sourceInterval":[4661,4664]},"}"],["app",{"sourceInterval":[4665,4669]},"else",[]],["terminal",{"sourceInterval":[4670,4673]},"{"],["star",{"sourceInterval":[4674,4684]},["app",{"sourceInterval":[4674,4683]},"Statement",[]]],["terminal",{"sourceInterval":[4685,4688]},"}"]]],"StatementCondition_withElseIf":["define",{"sourceInterval":[4725,4794]},null,[],["seq",{"sourceInterval":[4725,4781]},["app",{"sourceInterval":[4725,4727]},"if",[]],["app",{"sourceInterval":[4728,4738]},"Expression",[]],["terminal",{"sourceInterval":[4739,4742]},"{"],["star",{"sourceInterval":[4743,4753]},["app",{"sourceInterval":[4743,4752]},"Statement",[]]],["terminal",{"sourceInterval":[4754,4757]},"}"],["app",{"sourceInterval":[4758,4762]},"else",[]],["app",{"sourceInterval":[4763,4781]},"StatementCondition",[]]]],"StatementCondition":["define",{"sourceInterval":[4538,4794]},null,[],["alt",{"sourceInterval":[4559,4794]},["app",{"sourceInterval":[4559,4597]},"StatementCondition_simple",[]],["app",{"sourceInterval":[4632,4688]},"StatementCondition_withElse",[]],["app",{"sourceInterval":[4725,4781]},"StatementCondition_withElseIf",[]]]],"StatementWhile":["define",{"sourceInterval":[4799,4859]},null,[],["seq",{"sourceInterval":[4816,4859]},["app",{"sourceInterval":[4816,4821]},"while",[]],["terminal",{"sourceInterval":[4822,4825]},"("],["app",{"sourceInterval":[4826,4836]},"Expression",[]],["terminal",{"sourceInterval":[4837,4840]},")"],["terminal",{"sourceInterval":[4841,4844]},"{"],["star",{"sourceInterval":[4845,4855]},["app",{"sourceInterval":[4845,4854]},"Statement",[]]],["terminal",{"sourceInterval":[4856,4859]},"}"]]],"StatementRepeat":["define",{"sourceInterval":[4864,4926]},null,[],["seq",{"sourceInterval":[4882,4926]},["app",{"sourceInterval":[4882,4888]},"repeat",[]],["terminal",{"sourceInterval":[4889,4892]},"("],["app",{"sourceInterval":[4893,4903]},"Expression",[]],["terminal",{"sourceInterval":[4904,4907]},")"],["terminal",{"sourceInterval":[4908,4911]},"{"],["star",{"sourceInterval":[4912,4922]},["app",{"sourceInterval":[4912,4921]},"Statement",[]]],["terminal",{"sourceInterval":[4923,4926]},"}"]]],"StatementUntil":["define",{"sourceInterval":[4931,4998]},null,[],["seq",{"sourceInterval":[4948,4998]},["app",{"sourceInterval":[4948,4950]},"do",[]],["terminal",{"sourceInterval":[4951,4954]},"{"],["star",{"sourceInterval":[4955,4965]},["app",{"sourceInterval":[4955,4964]},"Statement",[]]],["terminal",{"sourceInterval":[4966,4969]},"}"],["app",{"sourceInterval":[4970,4975]},"until",[]],["terminal",{"sourceInterval":[4976,4979]},"("],["app",{"sourceInterval":[4980,4990]},"Expression",[]],["terminal",{"sourceInterval":[4991,4994]},")"],["terminal",{"sourceInterval":[4995,4998]},";"]]],"LValue_more":["define",{"sourceInterval":[5028,5048]},null,[],["seq",{"sourceInterval":[5028,5041]},["app",{"sourceInterval":[5028,5030]},"id",[]],["terminal",{"sourceInterval":[5031,5034]},"."],["app",{"sourceInterval":[5035,5041]},"LValue",[]]]],"LValue_single":["define",{"sourceInterval":[5062,5073]},null,[],["app",{"sourceInterval":[5062,5064]},"id",[]]],"LValue":["define",{"sourceInterval":[5019,5073]},null,[],["alt",{"sourceInterval":[5028,5073]},["app",{"sourceInterval":[5028,5041]},"LValue_more",[]],["app",{"sourceInterval":[5062,5064]},"LValue_single",[]]]],"Expression":["define",{"sourceInterval":[5098,5123]},null,[],["app",{"sourceInterval":[5111,5123]},"ExpressionOr",[]]],"ExpressionOr_or":["define",{"sourceInterval":[5143,5179]},null,[],["seq",{"sourceInterval":[5143,5174]},["app",{"sourceInterval":[5143,5155]},"ExpressionOr",[]],["terminal",{"sourceInterval":[5156,5160]},"||"],["app",{"sourceInterval":[5161,5174]},"ExpressionAnd",[]]]],"ExpressionOr":["define",{"sourceInterval":[5128,5212]},null,[],["alt",{"sourceInterval":[5143,5212]},["app",{"sourceInterval":[5143,5174]},"ExpressionOr_or",[]],["app",{"sourceInterval":[5199,5212]},"ExpressionAnd",[]]]],"ExpressionAnd_and":["define",{"sourceInterval":[5233,5275]},null,[],["seq",{"sourceInterval":[5233,5269]},["app",{"sourceInterval":[5233,5246]},"ExpressionAnd",[]],["terminal",{"sourceInterval":[5247,5251]},"&&"],["app",{"sourceInterval":[5252,5269]},"ExpressionCompare",[]]]],"ExpressionAnd":["define",{"sourceInterval":[5217,5313]},null,[],["alt",{"sourceInterval":[5233,5313]},["app",{"sourceInterval":[5233,5269]},"ExpressionAnd_and",[]],["app",{"sourceInterval":[5296,5313]},"ExpressionCompare",[]]]],"ExpressionCompare_not":["define",{"sourceInterval":[5338,5383]},null,[],["seq",{"sourceInterval":[5338,5377]},["app",{"sourceInterval":[5338,5355]},"ExpressionCompare",[]],["terminal",{"sourceInterval":[5356,5360]},"!="],["app",{"sourceInterval":[5361,5377]},"ExpressionBinary",[]]]],"ExpressionCompare_eq":["define",{"sourceInterval":[5408,5452]},null,[],["seq",{"sourceInterval":[5408,5447]},["app",{"sourceInterval":[5408,5425]},"ExpressionCompare",[]],["terminal",{"sourceInterval":[5426,5430]},"=="],["app",{"sourceInterval":[5431,5447]},"ExpressionBinary",[]]]],"ExpressionCompare_gt":["define",{"sourceInterval":[5477,5520]},null,[],["seq",{"sourceInterval":[5477,5515]},["app",{"sourceInterval":[5477,5494]},"ExpressionCompare",[]],["terminal",{"sourceInterval":[5495,5498]},">"],["app",{"sourceInterval":[5499,5515]},"ExpressionBinary",[]]]],"ExpressionCompare_gte":["define",{"sourceInterval":[5545,5590]},null,[],["seq",{"sourceInterval":[5545,5584]},["app",{"sourceInterval":[5545,5562]},"ExpressionCompare",[]],["terminal",{"sourceInterval":[5563,5567]},">="],["app",{"sourceInterval":[5568,5584]},"ExpressionBinary",[]]]],"ExpressionCompare_lt":["define",{"sourceInterval":[5615,5658]},null,[],["seq",{"sourceInterval":[5615,5653]},["app",{"sourceInterval":[5615,5632]},"ExpressionCompare",[]],["terminal",{"sourceInterval":[5633,5636]},"<"],["app",{"sourceInterval":[5637,5653]},"ExpressionBinary",[]]]],"ExpressionCompare_lte":["define",{"sourceInterval":[5683,5728]},null,[],["seq",{"sourceInterval":[5683,5722]},["app",{"sourceInterval":[5683,5700]},"ExpressionCompare",[]],["terminal",{"sourceInterval":[5701,5705]},"<="],["app",{"sourceInterval":[5706,5722]},"ExpressionBinary",[]]]],"ExpressionCompare":["define",{"sourceInterval":[5318,5769]},null,[],["alt",{"sourceInterval":[5338,5769]},["app",{"sourceInterval":[5338,5377]},"ExpressionCompare_not",[]],["app",{"sourceInterval":[5408,5447]},"ExpressionCompare_eq",[]],["app",{"sourceInterval":[5477,5515]},"ExpressionCompare_gt",[]],["app",{"sourceInterval":[5545,5584]},"ExpressionCompare_gte",[]],["app",{"sourceInterval":[5615,5653]},"ExpressionCompare_lt",[]],["app",{"sourceInterval":[5683,5722]},"ExpressionCompare_lte",[]],["app",{"sourceInterval":[5753,5769]},"ExpressionBinary",[]]]],"ExpressionBinary_shr":["define",{"sourceInterval":[5793,5834]},null,[],["seq",{"sourceInterval":[5793,5828]},["app",{"sourceInterval":[5793,5809]},"ExpressionBinary",[]],["terminal",{"sourceInterval":[5810,5814]},">>"],["app",{"sourceInterval":[5815,5828]},"ExpressionAdd",[]]]],"ExpressionBinary_shl":["define",{"sourceInterval":[5857,5898]},null,[],["seq",{"sourceInterval":[5857,5892]},["app",{"sourceInterval":[5857,5873]},"ExpressionBinary",[]],["terminal",{"sourceInterval":[5874,5878]},"<<"],["app",{"sourceInterval":[5879,5892]},"ExpressionAdd",[]]]],"ExpressionBinary_bin_and":["define",{"sourceInterval":[5921,5965]},null,[],["seq",{"sourceInterval":[5921,5955]},["app",{"sourceInterval":[5921,5937]},"ExpressionBinary",[]],["terminal",{"sourceInterval":[5938,5941]},"&"],["app",{"sourceInterval":[5942,5955]},"ExpressionAdd",[]]]],"ExpressionBinary_bin_or":["define",{"sourceInterval":[5988,6031]},null,[],["seq",{"sourceInterval":[5988,6022]},["app",{"sourceInterval":[5988,6004]},"ExpressionBinary",[]],["terminal",{"sourceInterval":[6005,6008]},"|"],["app",{"sourceInterval":[6009,6022]},"ExpressionAdd",[]]]],"ExpressionBinary":["define",{"sourceInterval":[5774,6067]},null,[],["alt",{"sourceInterval":[5793,6067]},["app",{"sourceInterval":[5793,5828]},"ExpressionBinary_shr",[]],["app",{"sourceInterval":[5857,5892]},"ExpressionBinary_shl",[]],["app",{"sourceInterval":[5921,5955]},"ExpressionBinary_bin_and",[]],["app",{"sourceInterval":[5988,6022]},"ExpressionBinary_bin_or",[]],["app",{"sourceInterval":[6054,6067]},"ExpressionAdd",[]]]],"ExpressionAdd_add":["define",{"sourceInterval":[6088,6130]},null,[],["seq",{"sourceInterval":[6088,6124]},["app",{"sourceInterval":[6088,6101]},"ExpressionAdd",[]],["terminal",{"sourceInterval":[6102,6105]},"+"],["not",{"sourceInterval":[6106,6110]},["terminal",{"sourceInterval":[6107,6110]},"+"]],["app",{"sourceInterval":[6111,6124]},"ExpressionMul",[]]]],"ExpressionAdd_sub":["define",{"sourceInterval":[6151,6193]},null,[],["seq",{"sourceInterval":[6151,6187]},["app",{"sourceInterval":[6151,6164]},"ExpressionAdd",[]],["terminal",{"sourceInterval":[6165,6168]},"-"],["not",{"sourceInterval":[6169,6173]},["terminal",{"sourceInterval":[6170,6173]},"-"]],["app",{"sourceInterval":[6174,6187]},"ExpressionMul",[]]]],"ExpressionAdd":["define",{"sourceInterval":[6072,6227]},null,[],["alt",{"sourceInterval":[6088,6227]},["app",{"sourceInterval":[6088,6124]},"ExpressionAdd_add",[]],["app",{"sourceInterval":[6151,6187]},"ExpressionAdd_sub",[]],["app",{"sourceInterval":[6214,6227]},"ExpressionMul",[]]]],"ExpressionMul_mul":["define",{"sourceInterval":[6248,6287]},null,[],["seq",{"sourceInterval":[6248,6281]},["app",{"sourceInterval":[6248,6261]},"ExpressionMul",[]],["terminal",{"sourceInterval":[6262,6265]},"*"],["app",{"sourceInterval":[6266,6281]},"ExpressionUnary",[]]]],"ExpressionMul_div":["define",{"sourceInterval":[6308,6347]},null,[],["seq",{"sourceInterval":[6308,6341]},["app",{"sourceInterval":[6308,6321]},"ExpressionMul",[]],["terminal",{"sourceInterval":[6322,6325]},"/"],["app",{"sourceInterval":[6326,6341]},"ExpressionUnary",[]]]],"ExpressionMul_rem":["define",{"sourceInterval":[6368,6407]},null,[],["seq",{"sourceInterval":[6368,6401]},["app",{"sourceInterval":[6368,6381]},"ExpressionMul",[]],["terminal",{"sourceInterval":[6382,6385]},"%"],["app",{"sourceInterval":[6386,6401]},"ExpressionUnary",[]]]],"ExpressionMul":["define",{"sourceInterval":[6232,6443]},null,[],["alt",{"sourceInterval":[6248,6443]},["app",{"sourceInterval":[6248,6281]},"ExpressionMul_mul",[]],["app",{"sourceInterval":[6308,6341]},"ExpressionMul_div",[]],["app",{"sourceInterval":[6368,6401]},"ExpressionMul_rem",[]],["app",{"sourceInterval":[6428,6443]},"ExpressionUnary",[]]]],"ExpressionUnary_neg":["define",{"sourceInterval":[6466,6497]},null,[],["seq",{"sourceInterval":[6466,6491]},["terminal",{"sourceInterval":[6466,6469]},"-"],["app",{"sourceInterval":[6470,6491]},"ExpressionUnarySuffix",[]]]],"ExpressionUnary_add":["define",{"sourceInterval":[6520,6551]},null,[],["seq",{"sourceInterval":[6520,6545]},["terminal",{"sourceInterval":[6520,6523]},"+"],["app",{"sourceInterval":[6524,6545]},"ExpressionUnarySuffix",[]]]],"ExpressionUnary_not":["define",{"sourceInterval":[6574,6605]},null,[],["seq",{"sourceInterval":[6574,6599]},["terminal",{"sourceInterval":[6574,6577]},"!"],["app",{"sourceInterval":[6578,6599]},"ExpressionUnarySuffix",[]]]],"ExpressionUnary":["define",{"sourceInterval":[6448,6649]},null,[],["alt",{"sourceInterval":[6466,6649]},["app",{"sourceInterval":[6466,6491]},"ExpressionUnary_neg",[]],["app",{"sourceInterval":[6520,6545]},"ExpressionUnary_add",[]],["app",{"sourceInterval":[6574,6599]},"ExpressionUnary_not",[]],["app",{"sourceInterval":[6628,6649]},"ExpressionUnarySuffix",[]]]],"ExpressionUnarySuffix_notNull":["define",{"sourceInterval":[6678,6708]},null,[],["seq",{"sourceInterval":[6678,6698]},["app",{"sourceInterval":[6678,6693]},"ExpressionValue",[]],["terminal",{"sourceInterval":[6694,6698]},"!!"]]],"ExpressionUnarySuffix":["define",{"sourceInterval":[6654,6752]},null,[],["alt",{"sourceInterval":[6678,6752]},["app",{"sourceInterval":[6678,6698]},"ExpressionUnarySuffix_notNull",[]],["app",{"sourceInterval":[6737,6752]},"ExpressionValue",[]]]],"ExpressionBracket":["define",{"sourceInterval":[6757,6795]},null,[],["seq",{"sourceInterval":[6777,6795]},["terminal",{"sourceInterval":[6777,6780]},"("],["app",{"sourceInterval":[6781,6791]},"Expression",[]],["terminal",{"sourceInterval":[6792,6795]},")"]]],"ExpressionValue":["define",{"sourceInterval":[6827,7217]},null,[],["alt",{"sourceInterval":[6845,7217]},["app",{"sourceInterval":[6845,6859]},"ExpressionCall",[]],["app",{"sourceInterval":[6882,6897]},"ExpressionField",[]],["app",{"sourceInterval":[6920,6940]},"ExpressionStaticCall",[]],["app",{"sourceInterval":[6963,6980]},"ExpressionBracket",[]],["app",{"sourceInterval":[7003,7016]},"ExpressionNew",[]],["app",{"sourceInterval":[7039,7053]},"integerLiteral",[]],["app",{"sourceInterval":[7076,7087]},"boolLiteral",[]],["app",{"sourceInterval":[7110,7112]},"id",[]],["app",{"sourceInterval":[7135,7139]},"null",[]],["app",{"sourceInterval":[7162,7178]},"ExpressionInitOf",[]],["app",{"sourceInterval":[7201,7217]},"ExpressionString",[]]]],"ExpressionString":["define",{"sourceInterval":[7222,7254]},null,[],["app",{"sourceInterval":[7241,7254]},"stringLiteral",[]]],"ExpressionField":["define",{"sourceInterval":[7259,7304]},null,[],["seq",{"sourceInterval":[7277,7304]},["app",{"sourceInterval":[7277,7292]},"ExpressionValue",[]],["terminal",{"sourceInterval":[7293,7296]},"."],["app",{"sourceInterval":[7297,7299]},"id",[]],["not",{"sourceInterval":[7300,7304]},["terminal",{"sourceInterval":[7301,7304]},"("]]]],"ExpressionCall":["define",{"sourceInterval":[7309,7380]},null,[],["seq",{"sourceInterval":[7326,7380]},["app",{"sourceInterval":[7326,7341]},"ExpressionValue",[]],["terminal",{"sourceInterval":[7342,7345]},"."],["app",{"sourceInterval":[7346,7348]},"id",[]],["terminal",{"sourceInterval":[7349,7352]},"("],["app",{"sourceInterval":[7353,7376]},"ListOf",[["app",{"sourceInterval":[7360,7370]},"Expression",[]],["terminal",{"sourceInterval":[7372,7375]},","]]],["terminal",{"sourceInterval":[7377,7380]},")"]]],"ExpressionNew":["define",{"sourceInterval":[7385,7437]},null,[],["seq",{"sourceInterval":[7401,7437]},["app",{"sourceInterval":[7401,7403]},"id",[]],["terminal",{"sourceInterval":[7404,7407]},"{"],["app",{"sourceInterval":[7408,7433]},"ListOf",[["app",{"sourceInterval":[7415,7427]},"NewParameter",[]],["terminal",{"sourceInterval":[7429,7432]},","]]],["terminal",{"sourceInterval":[7434,7437]},"}"]]],"NewParameter":["define",{"sourceInterval":[7442,7474]},null,[],["seq",{"sourceInterval":[7457,7474]},["app",{"sourceInterval":[7457,7459]},"id",[]],["terminal",{"sourceInterval":[7460,7463]},":"],["app",{"sourceInterval":[7464,7474]},"Expression",[]]]],"ExpressionStaticCall":["define",{"sourceInterval":[7479,7536]},null,[],["seq",{"sourceInterval":[7502,7536]},["app",{"sourceInterval":[7502,7504]},"id",[]],["terminal",{"sourceInterval":[7505,7508]},"("],["app",{"sourceInterval":[7509,7532]},"ListOf",[["app",{"sourceInterval":[7516,7526]},"Expression",[]],["terminal",{"sourceInterval":[7528,7531]},","]]],["terminal",{"sourceInterval":[7533,7536]},")"]]],"ExpressionInitOf":["define",{"sourceInterval":[7541,7601]},null,[],["seq",{"sourceInterval":[7560,7601]},["app",{"sourceInterval":[7560,7566]},"initOf",[]],["app",{"sourceInterval":[7567,7569]},"id",[]],["terminal",{"sourceInterval":[7570,7573]},"("],["app",{"sourceInterval":[7574,7597]},"ListOf",[["app",{"sourceInterval":[7581,7591]},"Expression",[]],["terminal",{"sourceInterval":[7593,7596]},","]]],["terminal",{"sourceInterval":[7598,7601]},")"]]],"typeLiteral":["define",{"sourceInterval":[7627,7671]},null,[],["seq",{"sourceInterval":[7641,7671]},["app",{"sourceInterval":[7641,7654]},"letterAsciiUC",[]],["star",{"sourceInterval":[7655,7671]},["app",{"sourceInterval":[7655,7670]},"typeLiteralPart",[]]]]],"typeLiteralPart":["define",{"sourceInterval":[7676,7719]},null,[],["alt",{"sourceInterval":[7694,7719]},["app",{"sourceInterval":[7694,7705]},"letterAscii",[]],["app",{"sourceInterval":[7708,7713]},"digit",[]],["terminal",{"sourceInterval":[7716,7719]},"_"]]],"integerLiteral":["define",{"sourceInterval":[7926,8020]},null,[],["alt",{"sourceInterval":[7943,8020]},["app",{"sourceInterval":[7943,7960]},"integerLiteralHex",[]],["app",{"sourceInterval":[7963,7980]},"integerLiteralBin",[]],["app",{"sourceInterval":[7983,8000]},"integerLiteralOct",[]],["app",{"sourceInterval":[8003,8020]},"integerLiteralDec",[]]]],"integerLiteralDec":["define",{"sourceInterval":[8047,8088]},null,[],["seq",{"sourceInterval":[8067,8088]},["plus",{"sourceInterval":[8067,8073]},["app",{"sourceInterval":[8067,8072]},"digit",[]]],["star",{"sourceInterval":[8074,8088]},["alt",{"sourceInterval":[8075,8086]},["terminal",{"sourceInterval":[8075,8078]},"_"],["app",{"sourceInterval":[8081,8086]},"digit",[]]]]]],"integerLiteralHex":["define",{"sourceInterval":[8093,8202]},null,[],["alt",{"sourceInterval":[8113,8202]},["seq",{"sourceInterval":[8113,8145]},["terminal",{"sourceInterval":[8113,8117]},"0x"],["plus",{"sourceInterval":[8118,8127]},["app",{"sourceInterval":[8118,8126]},"hexDigit",[]]],["star",{"sourceInterval":[8128,8145]},["alt",{"sourceInterval":[8129,8143]},["terminal",{"sourceInterval":[8129,8132]},"_"],["app",{"sourceInterval":[8135,8143]},"hexDigit",[]]]]],["seq",{"sourceInterval":[8170,8202]},["terminal",{"sourceInterval":[8170,8174]},"0X"],["plus",{"sourceInterval":[8175,8184]},["app",{"sourceInterval":[8175,8183]},"hexDigit",[]]],["star",{"sourceInterval":[8185,8202]},["alt",{"sourceInterval":[8186,8200]},["terminal",{"sourceInterval":[8186,8189]},"_"],["app",{"sourceInterval":[8192,8200]},"hexDigit",[]]]]]]],"integerLiteralBin":["define",{"sourceInterval":[8207,8316]},null,[],["alt",{"sourceInterval":[8227,8316]},["seq",{"sourceInterval":[8227,8259]},["terminal",{"sourceInterval":[8227,8231]},"0b"],["plus",{"sourceInterval":[8232,8241]},["app",{"sourceInterval":[8232,8240]},"binDigit",[]]],["star",{"sourceInterval":[8242,8259]},["alt",{"sourceInterval":[8243,8257]},["terminal",{"sourceInterval":[8243,8246]},"_"],["app",{"sourceInterval":[8249,8257]},"binDigit",[]]]]],["seq",{"sourceInterval":[8284,8316]},["terminal",{"sourceInterval":[8284,8288]},"0B"],["plus",{"sourceInterval":[8289,8298]},["app",{"sourceInterval":[8289,8297]},"binDigit",[]]],["star",{"sourceInterval":[8299,8316]},["alt",{"sourceInterval":[8300,8314]},["terminal",{"sourceInterval":[8300,8303]},"_"],["app",{"sourceInterval":[8306,8314]},"binDigit",[]]]]]]],"integerLiteralOct":["define",{"sourceInterval":[8321,8430]},null,[],["alt",{"sourceInterval":[8341,8430]},["seq",{"sourceInterval":[8341,8373]},["terminal",{"sourceInterval":[8341,8345]},"0o"],["plus",{"sourceInterval":[8346,8355]},["app",{"sourceInterval":[8346,8354]},"octDigit",[]]],["star",{"sourceInterval":[8356,8373]},["alt",{"sourceInterval":[8357,8371]},["terminal",{"sourceInterval":[8357,8360]},"_"],["app",{"sourceInterval":[8363,8371]},"octDigit",[]]]]],["seq",{"sourceInterval":[8398,8430]},["terminal",{"sourceInterval":[8398,8402]},"0O"],["plus",{"sourceInterval":[8403,8412]},["app",{"sourceInterval":[8403,8411]},"octDigit",[]]],["star",{"sourceInterval":[8413,8430]},["alt",{"sourceInterval":[8414,8428]},["terminal",{"sourceInterval":[8414,8417]},"_"],["app",{"sourceInterval":[8420,8428]},"octDigit",[]]]]]]],"binDigit":["define",{"sourceInterval":[8435,8455]},null,[],["alt",{"sourceInterval":[8446,8455]},["terminal",{"sourceInterval":[8446,8449]},"0"],["terminal",{"sourceInterval":[8452,8455]},"1"]]],"octDigit":["define",{"sourceInterval":[8460,8479]},null,[],["range",{"sourceInterval":[8471,8479]},"0","7"]],"letterAsciiLC":["define",{"sourceInterval":[8500,8524]},null,[],["range",{"sourceInterval":[8516,8524]},"a","z"]],"letterAsciiUC":["define",{"sourceInterval":[8529,8553]},null,[],["range",{"sourceInterval":[8545,8553]},"A","Z"]],"letterAscii":["define",{"sourceInterval":[8558,8601]},null,[],["alt",{"sourceInterval":[8572,8601]},["app",{"sourceInterval":[8572,8585]},"letterAsciiLC",[]],["app",{"sourceInterval":[8588,8601]},"letterAsciiUC",[]]]],"letterComment":["define",{"sourceInterval":[8606,8665]},null,[],["alt",{"sourceInterval":[8622,8665]},["app",{"sourceInterval":[8622,8635]},"letterAsciiLC",[]],["app",{"sourceInterval":[8638,8651]},"letterAsciiUC",[]],["app",{"sourceInterval":[8654,8659]},"digit",[]],["terminal",{"sourceInterval":[8662,8665]},"_"]]],"idStart":["define",{"sourceInterval":[8689,8716]},null,[],["alt",{"sourceInterval":[8699,8716]},["app",{"sourceInterval":[8699,8710]},"letterAscii",[]],["terminal",{"sourceInterval":[8713,8716]},"_"]]],"idPart":["define",{"sourceInterval":[8721,8755]},null,[],["alt",{"sourceInterval":[8730,8755]},["app",{"sourceInterval":[8730,8741]},"letterAscii",[]],["app",{"sourceInterval":[8744,8749]},"digit",[]],["terminal",{"sourceInterval":[8752,8755]},"_"]]],"id":["define",{"sourceInterval":[8760,8798]},null,[],["seq",{"sourceInterval":[8765,8798]},["not",{"sourceInterval":[8765,8778]},["app",{"sourceInterval":[8766,8778]},"reservedWord",[]]],["lex",{"sourceInterval":[8779,8787]},["app",{"sourceInterval":[8780,8787]},"idStart",[]]],["lex",{"sourceInterval":[8788,8798]},["star",{"sourceInterval":[8790,8797]},["app",{"sourceInterval":[8790,8796]},"idPart",[]]]]]],"funcLetter":["define",{"sourceInterval":[8819,8880]},null,[],["alt",{"sourceInterval":[8832,8880]},["app",{"sourceInterval":[8832,8843]},"letterAscii",[]],["terminal",{"sourceInterval":[8846,8849]},"_"],["terminal",{"sourceInterval":[8852,8855]},"'"],["terminal",{"sourceInterval":[8858,8861]},"?"],["terminal",{"sourceInterval":[8864,8867]},"!"],["terminal",{"sourceInterval":[8870,8874]},"::"],["terminal",{"sourceInterval":[8877,8880]},"&"]]],"funcId":["define",{"sourceInterval":[8885,8927]},null,[],["seq",{"sourceInterval":[8894,8927]},["app",{"sourceInterval":[8894,8904]},"funcLetter",[]],["star",{"sourceInterval":[8905,8927]},["lex",{"sourceInterval":[8905,8926]},["alt",{"sourceInterval":[8907,8925]},["app",{"sourceInterval":[8907,8917]},"funcLetter",[]],["app",{"sourceInterval":[8920,8925]},"digit",[]]]]]]],"boolLiteral":["define",{"sourceInterval":[8953,8993]},null,[],["seq",{"sourceInterval":[8967,8993]},["alt",{"sourceInterval":[8968,8984]},["terminal",{"sourceInterval":[8968,8974]},"true"],["terminal",{"sourceInterval":[8977,8984]},"false"]],["not",{"sourceInterval":[8986,8993]},["app",{"sourceInterval":[8987,8993]},"idPart",[]]]]],"stringLiteralCharacter":["define",{"sourceInterval":[9021,9081]},null,[],["seq",{"sourceInterval":[9046,9081]},["not",{"sourceInterval":[9046,9077]},["alt",{"sourceInterval":[9048,9076]},["terminal",{"sourceInterval":[9048,9052]},"\""],["terminal",{"sourceInterval":[9055,9059]},"\\"],["app",{"sourceInterval":[9062,9076]},"lineTerminator",[]]]],["app",{"sourceInterval":[9078,9081]},"any",[]]]],"stringLiteral":["define",{"sourceInterval":[9086,9135]},null,[],["seq",{"sourceInterval":[9102,9135]},["terminal",{"sourceInterval":[9102,9106]},"\""],["star",{"sourceInterval":[9107,9130]},["app",{"sourceInterval":[9107,9129]},"stringLiteralCharacter",[]]],["terminal",{"sourceInterval":[9131,9135]},"\""]]],"keyword":["define",{"sourceInterval":[9188,9701]},null,[],["alt",{"sourceInterval":[9198,9701]},["app",{"sourceInterval":[9198,9201]},"fun",[]],["app",{"sourceInterval":[9217,9220]},"let",[]],["app",{"sourceInterval":[9235,9241]},"return",[]],["app",{"sourceInterval":[9257,9263]},"extend",[]],["app",{"sourceInterval":[9279,9285]},"native",[]],["app",{"sourceInterval":[9301,9307]},"public",[]],["app",{"sourceInterval":[9323,9327]},"null",[]],["app",{"sourceInterval":[9343,9345]},"if",[]],["app",{"sourceInterval":[9361,9365]},"else",[]],["app",{"sourceInterval":[9381,9386]},"while",[]],["app",{"sourceInterval":[9402,9408]},"repeat",[]],["app",{"sourceInterval":[9424,9426]},"do",[]],["app",{"sourceInterval":[9442,9447]},"until",[]],["app",{"sourceInterval":[9463,9465]},"as",[]],["app",{"sourceInterval":[9482,9489]},"mutates",[]],["app",{"sourceInterval":[9504,9511]},"extends",[]],["app",{"sourceInterval":[9526,9532]},"import",[]],["app",{"sourceInterval":[9547,9551]},"with",[]],["app",{"sourceInterval":[9566,9571]},"trait",[]],["app",{"sourceInterval":[9586,9592]},"initOf",[]],["app",{"sourceInterval":[9607,9615]},"override",[]],["app",{"sourceInterval":[9630,9638]},"abstract",[]],["app",{"sourceInterval":[9653,9660]},"virtual",[]],["app",{"sourceInterval":[9675,9681]},"inline",[]],["app",{"sourceInterval":[9696,9701]},"const",[]]]],"contract":["define",{"sourceInterval":[9706,9735]},null,[],["seq",{"sourceInterval":[9717,9735]},["terminal",{"sourceInterval":[9717,9727]},"contract"],["not",{"sourceInterval":[9728,9735]},["app",{"sourceInterval":[9729,9735]},"idPart",[]]]]],"let":["define",{"sourceInterval":[9740,9759]},null,[],["seq",{"sourceInterval":[9746,9759]},["terminal",{"sourceInterval":[9746,9751]},"let"],["not",{"sourceInterval":[9752,9759]},["app",{"sourceInterval":[9753,9759]},"idPart",[]]]]],"fun":["define",{"sourceInterval":[9764,9783]},null,[],["seq",{"sourceInterval":[9770,9783]},["terminal",{"sourceInterval":[9770,9775]},"fun"],["not",{"sourceInterval":[9776,9783]},["app",{"sourceInterval":[9777,9783]},"idPart",[]]]]],"return":["define",{"sourceInterval":[9788,9813]},null,[],["seq",{"sourceInterval":[9797,9813]},["terminal",{"sourceInterval":[9797,9805]},"return"],["not",{"sourceInterval":[9806,9813]},["app",{"sourceInterval":[9807,9813]},"idPart",[]]]]],"extend":["define",{"sourceInterval":[9818,9843]},null,[],["seq",{"sourceInterval":[9827,9843]},["terminal",{"sourceInterval":[9827,9835]},"extend"],["not",{"sourceInterval":[9836,9843]},["app",{"sourceInterval":[9837,9843]},"idPart",[]]]]],"native":["define",{"sourceInterval":[9848,9873]},null,[],["seq",{"sourceInterval":[9857,9873]},["terminal",{"sourceInterval":[9857,9865]},"native"],["not",{"sourceInterval":[9866,9873]},["app",{"sourceInterval":[9867,9873]},"idPart",[]]]]],"public":["define",{"sourceInterval":[9878,9903]},null,[],["seq",{"sourceInterval":[9887,9903]},["terminal",{"sourceInterval":[9887,9895]},"public"],["not",{"sourceInterval":[9896,9903]},["app",{"sourceInterval":[9897,9903]},"idPart",[]]]]],"null":["define",{"sourceInterval":[9908,9929]},null,[],["seq",{"sourceInterval":[9915,9929]},["terminal",{"sourceInterval":[9915,9921]},"null"],["not",{"sourceInterval":[9922,9929]},["app",{"sourceInterval":[9923,9929]},"idPart",[]]]]],"if":["define",{"sourceInterval":[9934,9951]},null,[],["seq",{"sourceInterval":[9939,9951]},["terminal",{"sourceInterval":[9939,9943]},"if"],["not",{"sourceInterval":[9944,9951]},["app",{"sourceInterval":[9945,9951]},"idPart",[]]]]],"else":["define",{"sourceInterval":[9956,9977]},null,[],["seq",{"sourceInterval":[9963,9977]},["terminal",{"sourceInterval":[9963,9969]},"else"],["not",{"sourceInterval":[9970,9977]},["app",{"sourceInterval":[9971,9977]},"idPart",[]]]]],"while":["define",{"sourceInterval":[9982,10005]},null,[],["seq",{"sourceInterval":[9990,10005]},["terminal",{"sourceInterval":[9990,9997]},"while"],["not",{"sourceInterval":[9998,10005]},["app",{"sourceInterval":[9999,10005]},"idPart",[]]]]],"repeat":["define",{"sourceInterval":[10010,10035]},null,[],["seq",{"sourceInterval":[10019,10035]},["terminal",{"sourceInterval":[10019,10027]},"repeat"],["not",{"sourceInterval":[10028,10035]},["app",{"sourceInterval":[10029,10035]},"idPart",[]]]]],"do":["define",{"sourceInterval":[10040,10057]},null,[],["seq",{"sourceInterval":[10045,10057]},["terminal",{"sourceInterval":[10045,10049]},"do"],["not",{"sourceInterval":[10050,10057]},["app",{"sourceInterval":[10051,10057]},"idPart",[]]]]],"until":["define",{"sourceInterval":[10062,10085]},null,[],["seq",{"sourceInterval":[10070,10085]},["terminal",{"sourceInterval":[10070,10077]},"until"],["not",{"sourceInterval":[10078,10085]},["app",{"sourceInterval":[10079,10085]},"idPart",[]]]]],"as":["define",{"sourceInterval":[10090,10107]},null,[],["seq",{"sourceInterval":[10095,10107]},["terminal",{"sourceInterval":[10095,10099]},"as"],["not",{"sourceInterval":[10100,10107]},["app",{"sourceInterval":[10101,10107]},"idPart",[]]]]],"mutates":["define",{"sourceInterval":[10112,10139]},null,[],["seq",{"sourceInterval":[10122,10139]},["terminal",{"sourceInterval":[10122,10131]},"mutates"],["not",{"sourceInterval":[10132,10139]},["app",{"sourceInterval":[10133,10139]},"idPart",[]]]]],"extends":["define",{"sourceInterval":[10144,10171]},null,[],["seq",{"sourceInterval":[10154,10171]},["terminal",{"sourceInterval":[10154,10163]},"extends"],["not",{"sourceInterval":[10164,10171]},["app",{"sourceInterval":[10165,10171]},"idPart",[]]]]],"import":["define",{"sourceInterval":[10176,10201]},null,[],["seq",{"sourceInterval":[10185,10201]},["terminal",{"sourceInterval":[10185,10193]},"import"],["not",{"sourceInterval":[10194,10201]},["app",{"sourceInterval":[10195,10201]},"idPart",[]]]]],"with":["define",{"sourceInterval":[10206,10227]},null,[],["seq",{"sourceInterval":[10213,10227]},["terminal",{"sourceInterval":[10213,10219]},"with"],["not",{"sourceInterval":[10220,10227]},["app",{"sourceInterval":[10221,10227]},"idPart",[]]]]],"trait":["define",{"sourceInterval":[10232,10255]},null,[],["seq",{"sourceInterval":[10240,10255]},["terminal",{"sourceInterval":[10240,10247]},"trait"],["not",{"sourceInterval":[10248,10255]},["app",{"sourceInterval":[10249,10255]},"idPart",[]]]]],"initOf":["define",{"sourceInterval":[10260,10285]},null,[],["seq",{"sourceInterval":[10269,10285]},["terminal",{"sourceInterval":[10269,10277]},"initOf"],["not",{"sourceInterval":[10278,10285]},["app",{"sourceInterval":[10279,10285]},"idPart",[]]]]],"virtual":["define",{"sourceInterval":[10290,10317]},null,[],["seq",{"sourceInterval":[10300,10317]},["terminal",{"sourceInterval":[10300,10309]},"virtual"],["not",{"sourceInterval":[10310,10317]},["app",{"sourceInterval":[10311,10317]},"idPart",[]]]]],"override":["define",{"sourceInterval":[10322,10351]},null,[],["seq",{"sourceInterval":[10333,10351]},["terminal",{"sourceInterval":[10333,10343]},"override"],["not",{"sourceInterval":[10344,10351]},["app",{"sourceInterval":[10345,10351]},"idPart",[]]]]],"inline":["define",{"sourceInterval":[10356,10381]},null,[],["seq",{"sourceInterval":[10365,10381]},["terminal",{"sourceInterval":[10365,10373]},"inline"],["not",{"sourceInterval":[10374,10381]},["app",{"sourceInterval":[10375,10381]},"idPart",[]]]]],"const":["define",{"sourceInterval":[10386,10409]},null,[],["seq",{"sourceInterval":[10394,10409]},["terminal",{"sourceInterval":[10394,10401]},"const"],["not",{"sourceInterval":[10402,10409]},["app",{"sourceInterval":[10403,10409]},"idPart",[]]]]],"abstract":["define",{"sourceInterval":[10414,10443]},null,[],["seq",{"sourceInterval":[10425,10443]},["terminal",{"sourceInterval":[10425,10435]},"abstract"],["not",{"sourceInterval":[10436,10443]},["app",{"sourceInterval":[10437,10443]},"idPart",[]]]]],"nameAttribute":["define",{"sourceInterval":[10467,10490]},null,[],["terminal",{"sourceInterval":[10483,10490]},"@name"]],"reservedWord":["define",{"sourceInterval":[10512,10534]},null,[],["app",{"sourceInterval":[10527,10534]},"keyword",[]]],"space":["extend",{"sourceInterval":[10556,10589]},null,[],["alt",{"sourceInterval":[10565,10589]},["app",{"sourceInterval":[10565,10572]},"comment",[]],["app",{"sourceInterval":[10575,10589]},"lineTerminator",[]]]],"comment":["define",{"sourceInterval":[10594,10640]},null,[],["alt",{"sourceInterval":[10604,10640]},["app",{"sourceInterval":[10604,10620]},"multiLineComment",[]],["app",{"sourceInterval":[10623,10640]},"singleLineComment",[]]]],"lineTerminator":["define",{"sourceInterval":[10645,10695]},null,[],["alt",{"sourceInterval":[10662,10695]},["terminal",{"sourceInterval":[10662,10666]},"\n"],["terminal",{"sourceInterval":[10669,10673]},"\r"],["terminal",{"sourceInterval":[10676,10684]},"\u2028"],["terminal",{"sourceInterval":[10687,10695]},"\u2029"]]],"multiLineComment":["define",{"sourceInterval":[10700,10741]},null,[],["seq",{"sourceInterval":[10719,10741]},["terminal",{"sourceInterval":[10719,10723]},"/*"],["star",{"sourceInterval":[10724,10736]},["seq",{"sourceInterval":[10725,10734]},["not",{"sourceInterval":[10725,10730]},["terminal",{"sourceInterval":[10726,10730]},"*/"]],["app",{"sourceInterval":[10731,10734]},"any",[]]]],["terminal",{"sourceInterval":[10737,10741]},"*/"]]],"singleLineComment":["define",{"sourceInterval":[10746,10793]},null,[],["seq",{"sourceInterval":[10766,10793]},["terminal",{"sourceInterval":[10766,10770]},"//"],["star",{"sourceInterval":[10771,10793]},["seq",{"sourceInterval":[10772,10791]},["not",{"sourceInterval":[10772,10787]},["app",{"sourceInterval":[10773,10787]},"lineTerminator",[]]],["app",{"sourceInterval":[10788,10791]},"any",[]]]]]]}]);module.exports=result; \ No newline at end of file +'use strict';const ohm=(require('ohm-js').default || require('ohm-js'));const result=ohm.makeRecipe(["grammar",{"source":"Tact {\n\n // Starting point of the program\n Program = ProgramItem*\n ProgramItem = Struct\n | Contract\n | Primitive\n | StaticFunction\n | NativeFunction\n | ProgramImport\n | Trait\n | Constant\n ProgramImport = import stringLiteral \";\"\n\n // Built-in declarations\n Primitive = \"primitive\" Type \";\"\n\n // Static function\n StaticFunction = Function\n NativeFunction = nameAttribute \"(\" funcId \")\" FunctionAttribute* native id \"(\" ListOf \")\" \";\" --withVoid\n | nameAttribute \"(\" funcId \")\" FunctionAttribute* native id \"(\" ListOf \")\" \":\" Type \";\" --withType\n \n // Field declarations\n Type = typeLiteral \"?\" --optional\n | typeLiteral --required\n | \"map\" \"<\" typeLiteral (as id)? \",\" typeLiteral (as id)? \">\" --map\n | \"bounced\" \"<\" typeLiteral \">\" --bounced\n Field = id \":\" Type \";\" --default\n | id \":\" Type \"=\" Expression \";\" --defaultWithInit\n | id \":\" Type as id \";\" --withSerialization\n | id \":\" Type as id \"=\" Expression \";\" --withSerializationAndInit\n \n // Constant\n ConstantAttribute = virtual --virtual\n | override --override\n | abstract --abstract\n Constant = ConstantAttribute* ~fun const id \":\" Type \"=\" Expression \";\" --withValue\n | ConstantAttribute* ~fun const id \":\" Type \";\" --withEmpty\n\n // Struct\n Struct = \"struct\" typeLiteral \"{\" StructBody* \"}\" --originary\n | \"message\" typeLiteral \"{\" StructBody* \"}\" --message\n | \"message\" \"(\" integerLiteral \")\" typeLiteral \"{\" StructBody* \"}\" --messageWithId\n StructBody = Field\n\n // Contract\n Contract = ContractAttribute* contract id \"{\" ContractBody* \"}\" --simple\n | ContractAttribute* contract id with ListOf \"{\" ContractBody* \"}\" --withTraits\n ContractInit = \"init\" \"(\" ListOf \")\" \"{\" Statement* \"}\"\n ContractBody = Field\n | ContractInit\n | ReceiveFunction\n | Function\n | Constant\n \n // Trait\n Trait = ContractAttribute* trait id \"{\" TraitBody* \"}\" --originary\n | ContractAttribute* trait id with ListOf \"{\" TraitBody* \"}\" --withTraits\n TraitBody = Field\n | ReceiveFunction\n | Function\n | Constant\n\n // Contract attributes\n ContractAttribute = \"@interface\" \"(\" stringLiteral \")\" --interface\n\n // Function\n FunctionAttribute = \"get\" --getter\n | mutates --mutates\n | extends --extends\n | virtual --virtual\n | override --override\n | inline --inline\n | abstract --abstract\n Function = FunctionAttribute* fun id \"(\" ListOf \")\" \"{\" Statement* \"}\" --withVoid\n | FunctionAttribute* fun id \"(\" ListOf \")\" \":\" Type \"{\" Statement* \"}\" --withType\n | FunctionAttribute* fun id \"(\" ListOf \")\" \";\" --abstractVoid\n | FunctionAttribute* fun id \"(\" ListOf \")\" \":\" Type \";\" --abstractType\n FunctionArg = id \":\" Type\n \n ReceiveFunction = \"receive\" \"(\" FunctionArg \")\" \"{\" Statement* \"}\" --simple\n | \"receive\" \"(\" \")\" \"{\" Statement* \"}\" --empty\n | \"receive\" \"(\" stringLiteral \")\" \"{\" Statement* \"}\" --comment\n | \"bounced\" \"(\" FunctionArg \")\" \"{\" Statement* \"}\" --bounced\n | \"external\" \"(\" FunctionArg \")\" \"{\" Statement* \"}\" --externalSimple\n | \"external\" \"(\" stringLiteral \")\" \"{\" Statement* \"}\" --externalComment\n | \"external\" \"(\" \")\" \"{\" Statement* \"}\" --externalEmpty\n\n // Statements\n Statement = StatementLet\n | StatementBlock\n | StatementReturn\n | StatementExpression\n | StatementAssign\n | StatementAugmentedAssign\n | StatementCondition\n | StatementWhile\n | StatementRepeat\n | StatementUntil\n StatementBlock = \"{\" Statement* \"}\"\n StatementLet = let id \":\" Type \"=\" Expression \";\"\n StatementReturn = return Expression \";\" --withExpression\n | return \";\" --withoutExpression \n StatementExpression = Expression \";\"\n StatementAssign = LValue \"=\" Expression \";\"\n StatementAugmentedAssign = StatementAugmentedAssignAdd\n | StatementAugmentedAssignSub\n | StatementAugmentedAssignMul\n | StatementAugmentedAssignDiv\n | StatementAugmentedAssignRem\n StatementAugmentedAssignAdd = LValue \"+=\" Expression \";\"\n StatementAugmentedAssignSub = LValue \"-=\" Expression \";\"\n StatementAugmentedAssignMul = LValue \"*=\" Expression \";\"\n StatementAugmentedAssignDiv = LValue \"/=\" Expression \";\"\n StatementAugmentedAssignRem = LValue \"%=\" Expression \";\"\n StatementCondition = if Expression \"{\" Statement* \"}\" ~else --simple\n | if Expression \"{\" Statement* \"}\" else \"{\" Statement* \"}\" --withElse\n | if Expression \"{\" Statement* \"}\" else StatementCondition --withElseIf\n StatementWhile = while \"(\" Expression \")\" \"{\" Statement* \"}\"\n StatementRepeat = repeat \"(\" Expression \")\" \"{\" Statement* \"}\"\n StatementUntil = do \"{\" Statement* \"}\" until \"(\" Expression \")\" \";\"\n\n // L-value\n LValue = id \".\" LValue --more\n | id --single\n\n // Expressions\n Expression = 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 = digit+ (\"_\" | digit)*\n integerLiteralHex = \"0x\" hexDigit+ (\"_\" | hexDigit)*\n | \"0X\" hexDigit+ (\"_\" | hexDigit)*\n integerLiteralBin = \"0b\" binDigit+ (\"_\" | binDigit)*\n | \"0B\" binDigit+ (\"_\" | binDigit)*\n integerLiteralOct = \"0o\" octDigit+ (\"_\" | octDigit)*\n | \"0O\" octDigit+ (\"_\" | octDigit)*\n binDigit = \"0\" | \"1\"\n octDigit = \"0\"..\"7\"\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 stringLiteralCharacter = ~(\"\\\"\" | \"\\\\\" | lineTerminator) any\n stringLiteral = \"\\\"\" stringLiteralCharacter* \"\\\"\"\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,592]},null,[],["seq",{"sourceInterval":[488,581]},["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]},","]]],["terminal",{"sourceInterval":[574,577]},")"],["terminal",{"sourceInterval":[578,581]},";"]]],"NativeFunction_withType":["define",{"sourceInterval":[614,727]},null,[],["seq",{"sourceInterval":[614,716]},["app",{"sourceInterval":[614,627]},"nameAttribute",[]],["terminal",{"sourceInterval":[628,631]},"("],["app",{"sourceInterval":[632,638]},"funcId",[]],["terminal",{"sourceInterval":[639,642]},")"],["star",{"sourceInterval":[643,661]},["app",{"sourceInterval":[643,660]},"FunctionAttribute",[]]],["app",{"sourceInterval":[662,668]},"native",[]],["app",{"sourceInterval":[669,671]},"id",[]],["terminal",{"sourceInterval":[672,675]},"("],["app",{"sourceInterval":[676,699]},"ListOf",[["app",{"sourceInterval":[683,694]},"FunctionArg",[]],["terminal",{"sourceInterval":[695,698]},","]]],["terminal",{"sourceInterval":[700,703]},")"],["terminal",{"sourceInterval":[704,707]},":"],["app",{"sourceInterval":[708,712]},"Type",[]],["terminal",{"sourceInterval":[713,716]},";"]]],"NativeFunction":["define",{"sourceInterval":[471,727]},null,[],["alt",{"sourceInterval":[488,727]},["app",{"sourceInterval":[488,581]},"NativeFunction_withVoid",[]],["app",{"sourceInterval":[614,716]},"NativeFunction_withType",[]]]],"Type_optional":["define",{"sourceInterval":[770,796]},null,[],["seq",{"sourceInterval":[770,785]},["app",{"sourceInterval":[770,781]},"typeLiteral",[]],["terminal",{"sourceInterval":[782,785]},"?"]]],"Type_required":["define",{"sourceInterval":[808,830]},null,[],["app",{"sourceInterval":[808,819]},"typeLiteral",[]]],"Type_map":["define",{"sourceInterval":[842,907]},null,[],["seq",{"sourceInterval":[842,901]},["terminal",{"sourceInterval":[842,847]},"map"],["terminal",{"sourceInterval":[848,851]},"<"],["app",{"sourceInterval":[852,863]},"typeLiteral",[]],["opt",{"sourceInterval":[864,872]},["seq",{"sourceInterval":[865,870]},["app",{"sourceInterval":[865,867]},"as",[]],["app",{"sourceInterval":[868,870]},"id",[]]]],["terminal",{"sourceInterval":[873,876]},","],["app",{"sourceInterval":[877,888]},"typeLiteral",[]],["opt",{"sourceInterval":[889,897]},["seq",{"sourceInterval":[890,895]},["app",{"sourceInterval":[890,892]},"as",[]],["app",{"sourceInterval":[893,895]},"id",[]]]],["terminal",{"sourceInterval":[898,901]},">"]]],"Type_bounced":["define",{"sourceInterval":[919,958]},null,[],["seq",{"sourceInterval":[919,948]},["terminal",{"sourceInterval":[919,928]},"bounced"],["terminal",{"sourceInterval":[929,932]},"<"],["app",{"sourceInterval":[933,944]},"typeLiteral",[]],["terminal",{"sourceInterval":[945,948]},">"]]],"Type":["define",{"sourceInterval":[763,958]},null,[],["alt",{"sourceInterval":[770,958]},["app",{"sourceInterval":[770,785]},"Type_optional",[]],["app",{"sourceInterval":[808,819]},"Type_required",[]],["app",{"sourceInterval":[842,901]},"Type_map",[]],["app",{"sourceInterval":[919,948]},"Type_bounced",[]]]],"Field_default":["define",{"sourceInterval":[971,996]},null,[],["seq",{"sourceInterval":[971,986]},["app",{"sourceInterval":[971,973]},"id",[]],["terminal",{"sourceInterval":[974,977]},":"],["app",{"sourceInterval":[978,982]},"Type",[]],["terminal",{"sourceInterval":[983,986]},";"]]],"Field_defaultWithInit":["define",{"sourceInterval":[1009,1057]},null,[],["seq",{"sourceInterval":[1009,1039]},["app",{"sourceInterval":[1009,1011]},"id",[]],["terminal",{"sourceInterval":[1012,1015]},":"],["app",{"sourceInterval":[1016,1020]},"Type",[]],["terminal",{"sourceInterval":[1021,1024]},"="],["app",{"sourceInterval":[1025,1035]},"Expression",[]],["terminal",{"sourceInterval":[1036,1039]},";"]]],"Field_withSerialization":["define",{"sourceInterval":[1070,1111]},null,[],["seq",{"sourceInterval":[1070,1091]},["app",{"sourceInterval":[1070,1072]},"id",[]],["terminal",{"sourceInterval":[1073,1076]},":"],["app",{"sourceInterval":[1077,1081]},"Type",[]],["app",{"sourceInterval":[1082,1084]},"as",[]],["app",{"sourceInterval":[1085,1087]},"id",[]],["terminal",{"sourceInterval":[1088,1091]},";"]]],"Field_withSerializationAndInit":["define",{"sourceInterval":[1124,1187]},null,[],["seq",{"sourceInterval":[1124,1160]},["app",{"sourceInterval":[1124,1126]},"id",[]],["terminal",{"sourceInterval":[1127,1130]},":"],["app",{"sourceInterval":[1131,1135]},"Type",[]],["app",{"sourceInterval":[1136,1138]},"as",[]],["app",{"sourceInterval":[1139,1141]},"id",[]],["terminal",{"sourceInterval":[1142,1145]},"="],["app",{"sourceInterval":[1146,1156]},"Expression",[]],["terminal",{"sourceInterval":[1157,1160]},";"]]],"Field":["define",{"sourceInterval":[963,1187]},null,[],["alt",{"sourceInterval":[971,1187]},["app",{"sourceInterval":[971,986]},"Field_default",[]],["app",{"sourceInterval":[1009,1039]},"Field_defaultWithInit",[]],["app",{"sourceInterval":[1070,1091]},"Field_withSerialization",[]],["app",{"sourceInterval":[1124,1160]},"Field_withSerializationAndInit",[]]]],"ConstantAttribute_virtual":["define",{"sourceInterval":[1233,1253]},null,[],["app",{"sourceInterval":[1233,1240]},"virtual",[]]],"ConstantAttribute_override":["define",{"sourceInterval":[1278,1299]},null,[],["app",{"sourceInterval":[1278,1286]},"override",[]]],"ConstantAttribute_abstract":["define",{"sourceInterval":[1324,1345]},null,[],["app",{"sourceInterval":[1324,1332]},"abstract",[]]],"ConstantAttribute":["define",{"sourceInterval":[1213,1345]},null,[],["alt",{"sourceInterval":[1233,1345]},["app",{"sourceInterval":[1233,1240]},"ConstantAttribute_virtual",[]],["app",{"sourceInterval":[1278,1286]},"ConstantAttribute_override",[]],["app",{"sourceInterval":[1324,1332]},"ConstantAttribute_abstract",[]]]],"Constant_withValue":["define",{"sourceInterval":[1361,1433]},null,[],["seq",{"sourceInterval":[1361,1421]},["star",{"sourceInterval":[1361,1379]},["app",{"sourceInterval":[1361,1378]},"ConstantAttribute",[]]],["not",{"sourceInterval":[1380,1384]},["app",{"sourceInterval":[1381,1384]},"fun",[]]],["app",{"sourceInterval":[1385,1390]},"const",[]],["app",{"sourceInterval":[1391,1393]},"id",[]],["terminal",{"sourceInterval":[1394,1397]},":"],["app",{"sourceInterval":[1398,1402]},"Type",[]],["terminal",{"sourceInterval":[1403,1406]},"="],["app",{"sourceInterval":[1407,1417]},"Expression",[]],["terminal",{"sourceInterval":[1418,1421]},";"]]],"Constant_withEmpty":["define",{"sourceInterval":[1449,1521]},null,[],["seq",{"sourceInterval":[1449,1494]},["star",{"sourceInterval":[1449,1467]},["app",{"sourceInterval":[1449,1466]},"ConstantAttribute",[]]],["not",{"sourceInterval":[1468,1472]},["app",{"sourceInterval":[1469,1472]},"fun",[]]],["app",{"sourceInterval":[1473,1478]},"const",[]],["app",{"sourceInterval":[1479,1481]},"id",[]],["terminal",{"sourceInterval":[1482,1485]},":"],["app",{"sourceInterval":[1486,1490]},"Type",[]],["terminal",{"sourceInterval":[1491,1494]},";"]]],"Constant":["define",{"sourceInterval":[1350,1521]},null,[],["alt",{"sourceInterval":[1361,1521]},["app",{"sourceInterval":[1361,1421]},"Constant_withValue",[]],["app",{"sourceInterval":[1449,1494]},"Constant_withEmpty",[]]]],"Struct_originary":["define",{"sourceInterval":[1550,1602]},null,[],["seq",{"sourceInterval":[1550,1590]},["terminal",{"sourceInterval":[1550,1558]},"struct"],["app",{"sourceInterval":[1559,1570]},"typeLiteral",[]],["terminal",{"sourceInterval":[1571,1574]},"{"],["star",{"sourceInterval":[1575,1586]},["app",{"sourceInterval":[1575,1585]},"StructBody",[]]],["terminal",{"sourceInterval":[1587,1590]},"}"]]],"Struct_message":["define",{"sourceInterval":[1616,1667]},null,[],["seq",{"sourceInterval":[1616,1657]},["terminal",{"sourceInterval":[1616,1625]},"message"],["app",{"sourceInterval":[1626,1637]},"typeLiteral",[]],["terminal",{"sourceInterval":[1638,1641]},"{"],["star",{"sourceInterval":[1642,1653]},["app",{"sourceInterval":[1642,1652]},"StructBody",[]]],["terminal",{"sourceInterval":[1654,1657]},"}"]]],"Struct_messageWithId":["define",{"sourceInterval":[1681,1761]},null,[],["seq",{"sourceInterval":[1681,1745]},["terminal",{"sourceInterval":[1681,1690]},"message"],["terminal",{"sourceInterval":[1691,1694]},"("],["app",{"sourceInterval":[1695,1709]},"integerLiteral",[]],["terminal",{"sourceInterval":[1710,1713]},")"],["app",{"sourceInterval":[1714,1725]},"typeLiteral",[]],["terminal",{"sourceInterval":[1726,1729]},"{"],["star",{"sourceInterval":[1730,1741]},["app",{"sourceInterval":[1730,1740]},"StructBody",[]]],["terminal",{"sourceInterval":[1742,1745]},"}"]]],"Struct":["define",{"sourceInterval":[1541,1761]},null,[],["alt",{"sourceInterval":[1550,1761]},["app",{"sourceInterval":[1550,1590]},"Struct_originary",[]],["app",{"sourceInterval":[1616,1657]},"Struct_message",[]],["app",{"sourceInterval":[1681,1745]},"Struct_messageWithId",[]]]],"StructBody":["define",{"sourceInterval":[1766,1784]},null,[],["app",{"sourceInterval":[1779,1784]},"Field",[]]],"Contract_simple":["define",{"sourceInterval":[1817,1878]},null,[],["seq",{"sourceInterval":[1817,1869]},["star",{"sourceInterval":[1817,1835]},["app",{"sourceInterval":[1817,1834]},"ContractAttribute",[]]],["app",{"sourceInterval":[1836,1844]},"contract",[]],["app",{"sourceInterval":[1845,1847]},"id",[]],["terminal",{"sourceInterval":[1848,1851]},"{"],["star",{"sourceInterval":[1852,1865]},["app",{"sourceInterval":[1852,1864]},"ContractBody",[]]],["terminal",{"sourceInterval":[1866,1869]},"}"]]],"Contract_withTraits":["define",{"sourceInterval":[1894,1979]},null,[],["seq",{"sourceInterval":[1894,1966]},["star",{"sourceInterval":[1894,1912]},["app",{"sourceInterval":[1894,1911]},"ContractAttribute",[]]],["app",{"sourceInterval":[1913,1921]},"contract",[]],["app",{"sourceInterval":[1922,1924]},"id",[]],["app",{"sourceInterval":[1925,1929]},"with",[]],["app",{"sourceInterval":[1930,1944]},"ListOf",[["app",{"sourceInterval":[1937,1939]},"id",[]],["terminal",{"sourceInterval":[1940,1943]},","]]],["terminal",{"sourceInterval":[1945,1948]},"{"],["star",{"sourceInterval":[1949,1962]},["app",{"sourceInterval":[1949,1961]},"ContractBody",[]]],["terminal",{"sourceInterval":[1963,1966]},"}"]]],"Contract":["define",{"sourceInterval":[1806,1979]},null,[],["alt",{"sourceInterval":[1817,1979]},["app",{"sourceInterval":[1817,1869]},"Contract_simple",[]],["app",{"sourceInterval":[1894,1966]},"Contract_withTraits",[]]]],"ContractInit":["define",{"sourceInterval":[1984,2056]},null,[],["seq",{"sourceInterval":[1999,2056]},["terminal",{"sourceInterval":[1999,2005]},"init"],["terminal",{"sourceInterval":[2006,2009]},"("],["app",{"sourceInterval":[2010,2033]},"ListOf",[["app",{"sourceInterval":[2017,2028]},"FunctionArg",[]],["terminal",{"sourceInterval":[2029,2032]},","]]],["terminal",{"sourceInterval":[2034,2037]},")"],["terminal",{"sourceInterval":[2038,2041]},"{"],["star",{"sourceInterval":[2042,2052]},["app",{"sourceInterval":[2042,2051]},"Statement",[]]],["terminal",{"sourceInterval":[2053,2056]},"}"]]],"ContractBody":["define",{"sourceInterval":[2061,2204]},null,[],["alt",{"sourceInterval":[2076,2204]},["app",{"sourceInterval":[2076,2081]},"Field",[]],["app",{"sourceInterval":[2101,2113]},"ContractInit",[]],["app",{"sourceInterval":[2133,2148]},"ReceiveFunction",[]],["app",{"sourceInterval":[2168,2176]},"Function",[]],["app",{"sourceInterval":[2196,2204]},"Constant",[]]]],"Trait_originary":["define",{"sourceInterval":[2235,2293]},null,[],["seq",{"sourceInterval":[2235,2281]},["star",{"sourceInterval":[2235,2253]},["app",{"sourceInterval":[2235,2252]},"ContractAttribute",[]]],["app",{"sourceInterval":[2254,2259]},"trait",[]],["app",{"sourceInterval":[2260,2262]},"id",[]],["terminal",{"sourceInterval":[2263,2266]},"{"],["star",{"sourceInterval":[2267,2277]},["app",{"sourceInterval":[2267,2276]},"TraitBody",[]]],["terminal",{"sourceInterval":[2278,2281]},"}"]]],"Trait_withTraits":["define",{"sourceInterval":[2306,2385]},null,[],["seq",{"sourceInterval":[2306,2372]},["star",{"sourceInterval":[2306,2324]},["app",{"sourceInterval":[2306,2323]},"ContractAttribute",[]]],["app",{"sourceInterval":[2325,2330]},"trait",[]],["app",{"sourceInterval":[2331,2333]},"id",[]],["app",{"sourceInterval":[2334,2338]},"with",[]],["app",{"sourceInterval":[2339,2353]},"ListOf",[["app",{"sourceInterval":[2346,2348]},"id",[]],["terminal",{"sourceInterval":[2349,2352]},","]]],["terminal",{"sourceInterval":[2354,2357]},"{"],["star",{"sourceInterval":[2358,2368]},["app",{"sourceInterval":[2358,2367]},"TraitBody",[]]],["terminal",{"sourceInterval":[2369,2372]},"}"]]],"Trait":["define",{"sourceInterval":[2227,2385]},null,[],["alt",{"sourceInterval":[2235,2385]},["app",{"sourceInterval":[2235,2281]},"Trait_originary",[]],["app",{"sourceInterval":[2306,2372]},"Trait_withTraits",[]]]],"TraitBody":["define",{"sourceInterval":[2390,2489]},null,[],["alt",{"sourceInterval":[2402,2489]},["app",{"sourceInterval":[2402,2407]},"Field",[]],["app",{"sourceInterval":[2424,2439]},"ReceiveFunction",[]],["app",{"sourceInterval":[2456,2464]},"Function",[]],["app",{"sourceInterval":[2481,2489]},"Constant",[]]]],"ContractAttribute_interface":["define",{"sourceInterval":[2542,2588]},null,[],["seq",{"sourceInterval":[2542,2576]},["terminal",{"sourceInterval":[2542,2554]},"@interface"],["terminal",{"sourceInterval":[2555,2558]},"("],["app",{"sourceInterval":[2559,2572]},"stringLiteral",[]],["terminal",{"sourceInterval":[2573,2576]},")"]]],"ContractAttribute":["define",{"sourceInterval":[2522,2588]},null,[],["app",{"sourceInterval":[2542,2588]},"ContractAttribute_interface",[]]],"FunctionAttribute_getter":["define",{"sourceInterval":[2630,2648]},null,[],["terminal",{"sourceInterval":[2630,2635]},"get"]],"FunctionAttribute_mutates":["define",{"sourceInterval":[2673,2692]},null,[],["app",{"sourceInterval":[2673,2680]},"mutates",[]]],"FunctionAttribute_extends":["define",{"sourceInterval":[2717,2736]},null,[],["app",{"sourceInterval":[2717,2724]},"extends",[]]],"FunctionAttribute_virtual":["define",{"sourceInterval":[2761,2780]},null,[],["app",{"sourceInterval":[2761,2768]},"virtual",[]]],"FunctionAttribute_override":["define",{"sourceInterval":[2805,2825]},null,[],["app",{"sourceInterval":[2805,2813]},"override",[]]],"FunctionAttribute_inline":["define",{"sourceInterval":[2850,2868]},null,[],["app",{"sourceInterval":[2850,2856]},"inline",[]]],"FunctionAttribute_abstract":["define",{"sourceInterval":[2893,2913]},null,[],["app",{"sourceInterval":[2893,2901]},"abstract",[]]],"FunctionAttribute":["define",{"sourceInterval":[2610,2913]},null,[],["alt",{"sourceInterval":[2630,2913]},["app",{"sourceInterval":[2630,2635]},"FunctionAttribute_getter",[]],["app",{"sourceInterval":[2673,2680]},"FunctionAttribute_mutates",[]],["app",{"sourceInterval":[2717,2724]},"FunctionAttribute_extends",[]],["app",{"sourceInterval":[2761,2768]},"FunctionAttribute_virtual",[]],["app",{"sourceInterval":[2805,2813]},"FunctionAttribute_override",[]],["app",{"sourceInterval":[2850,2856]},"FunctionAttribute_inline",[]],["app",{"sourceInterval":[2893,2901]},"FunctionAttribute_abstract",[]]]],"Function_withVoid":["define",{"sourceInterval":[2929,3016]},null,[],["seq",{"sourceInterval":[2929,3005]},["star",{"sourceInterval":[2929,2947]},["app",{"sourceInterval":[2929,2946]},"FunctionAttribute",[]]],["app",{"sourceInterval":[2948,2951]},"fun",[]],["app",{"sourceInterval":[2952,2954]},"id",[]],["terminal",{"sourceInterval":[2955,2958]},"("],["app",{"sourceInterval":[2959,2982]},"ListOf",[["app",{"sourceInterval":[2966,2977]},"FunctionArg",[]],["terminal",{"sourceInterval":[2978,2981]},","]]],["terminal",{"sourceInterval":[2983,2986]},")"],["terminal",{"sourceInterval":[2987,2990]},"{"],["star",{"sourceInterval":[2991,3001]},["app",{"sourceInterval":[2991,3000]},"Statement",[]]],["terminal",{"sourceInterval":[3002,3005]},"}"]]],"Function_withType":["define",{"sourceInterval":[3032,3128]},null,[],["seq",{"sourceInterval":[3032,3117]},["star",{"sourceInterval":[3032,3050]},["app",{"sourceInterval":[3032,3049]},"FunctionAttribute",[]]],["app",{"sourceInterval":[3051,3054]},"fun",[]],["app",{"sourceInterval":[3055,3057]},"id",[]],["terminal",{"sourceInterval":[3058,3061]},"("],["app",{"sourceInterval":[3062,3085]},"ListOf",[["app",{"sourceInterval":[3069,3080]},"FunctionArg",[]],["terminal",{"sourceInterval":[3081,3084]},","]]],["terminal",{"sourceInterval":[3086,3089]},")"],["terminal",{"sourceInterval":[3090,3093]},":"],["app",{"sourceInterval":[3094,3098]},"Type",[]],["terminal",{"sourceInterval":[3099,3102]},"{"],["star",{"sourceInterval":[3103,3113]},["app",{"sourceInterval":[3103,3112]},"Statement",[]]],["terminal",{"sourceInterval":[3114,3117]},"}"]]],"Function_abstractVoid":["define",{"sourceInterval":[3144,3220]},null,[],["seq",{"sourceInterval":[3144,3205]},["star",{"sourceInterval":[3144,3162]},["app",{"sourceInterval":[3144,3161]},"FunctionAttribute",[]]],["app",{"sourceInterval":[3163,3166]},"fun",[]],["app",{"sourceInterval":[3167,3169]},"id",[]],["terminal",{"sourceInterval":[3170,3173]},"("],["app",{"sourceInterval":[3174,3197]},"ListOf",[["app",{"sourceInterval":[3181,3192]},"FunctionArg",[]],["terminal",{"sourceInterval":[3193,3196]},","]]],["terminal",{"sourceInterval":[3198,3201]},")"],["terminal",{"sourceInterval":[3202,3205]},";"]]],"Function_abstractType":["define",{"sourceInterval":[3236,3321]},null,[],["seq",{"sourceInterval":[3236,3306]},["star",{"sourceInterval":[3236,3254]},["app",{"sourceInterval":[3236,3253]},"FunctionAttribute",[]]],["app",{"sourceInterval":[3255,3258]},"fun",[]],["app",{"sourceInterval":[3259,3261]},"id",[]],["terminal",{"sourceInterval":[3262,3265]},"("],["app",{"sourceInterval":[3266,3289]},"ListOf",[["app",{"sourceInterval":[3273,3284]},"FunctionArg",[]],["terminal",{"sourceInterval":[3285,3288]},","]]],["terminal",{"sourceInterval":[3290,3293]},")"],["terminal",{"sourceInterval":[3294,3297]},":"],["app",{"sourceInterval":[3298,3302]},"Type",[]],["terminal",{"sourceInterval":[3303,3306]},";"]]],"Function":["define",{"sourceInterval":[2918,3321]},null,[],["alt",{"sourceInterval":[2929,3321]},["app",{"sourceInterval":[2929,3005]},"Function_withVoid",[]],["app",{"sourceInterval":[3032,3117]},"Function_withType",[]],["app",{"sourceInterval":[3144,3205]},"Function_abstractVoid",[]],["app",{"sourceInterval":[3236,3306]},"Function_abstractType",[]]]],"FunctionArg":["define",{"sourceInterval":[3326,3351]},null,[],["seq",{"sourceInterval":[3340,3351]},["app",{"sourceInterval":[3340,3342]},"id",[]],["terminal",{"sourceInterval":[3343,3346]},":"],["app",{"sourceInterval":[3347,3351]},"Type",[]]]],"ReceiveFunction_simple":["define",{"sourceInterval":[3379,3436]},null,[],["seq",{"sourceInterval":[3379,3427]},["terminal",{"sourceInterval":[3379,3388]},"receive"],["terminal",{"sourceInterval":[3389,3392]},"("],["app",{"sourceInterval":[3393,3404]},"FunctionArg",[]],["terminal",{"sourceInterval":[3405,3408]},")"],["terminal",{"sourceInterval":[3409,3412]},"{"],["star",{"sourceInterval":[3413,3423]},["app",{"sourceInterval":[3413,3422]},"Statement",[]]],["terminal",{"sourceInterval":[3424,3427]},"}"]]],"ReceiveFunction_empty":["define",{"sourceInterval":[3459,3503]},null,[],["seq",{"sourceInterval":[3459,3495]},["terminal",{"sourceInterval":[3459,3468]},"receive"],["terminal",{"sourceInterval":[3469,3472]},"("],["terminal",{"sourceInterval":[3473,3476]},")"],["terminal",{"sourceInterval":[3477,3480]},"{"],["star",{"sourceInterval":[3481,3491]},["app",{"sourceInterval":[3481,3490]},"Statement",[]]],["terminal",{"sourceInterval":[3492,3495]},"}"]]],"ReceiveFunction_comment":["define",{"sourceInterval":[3526,3586]},null,[],["seq",{"sourceInterval":[3526,3576]},["terminal",{"sourceInterval":[3526,3535]},"receive"],["terminal",{"sourceInterval":[3536,3539]},"("],["app",{"sourceInterval":[3540,3553]},"stringLiteral",[]],["terminal",{"sourceInterval":[3554,3557]},")"],["terminal",{"sourceInterval":[3558,3561]},"{"],["star",{"sourceInterval":[3562,3572]},["app",{"sourceInterval":[3562,3571]},"Statement",[]]],["terminal",{"sourceInterval":[3573,3576]},"}"]]],"ReceiveFunction_bounced":["define",{"sourceInterval":[3609,3667]},null,[],["seq",{"sourceInterval":[3609,3657]},["terminal",{"sourceInterval":[3609,3618]},"bounced"],["terminal",{"sourceInterval":[3619,3622]},"("],["app",{"sourceInterval":[3623,3634]},"FunctionArg",[]],["terminal",{"sourceInterval":[3635,3638]},")"],["terminal",{"sourceInterval":[3639,3642]},"{"],["star",{"sourceInterval":[3643,3653]},["app",{"sourceInterval":[3643,3652]},"Statement",[]]],["terminal",{"sourceInterval":[3654,3657]},"}"]]],"ReceiveFunction_externalSimple":["define",{"sourceInterval":[3690,3756]},null,[],["seq",{"sourceInterval":[3690,3739]},["terminal",{"sourceInterval":[3690,3700]},"external"],["terminal",{"sourceInterval":[3701,3704]},"("],["app",{"sourceInterval":[3705,3716]},"FunctionArg",[]],["terminal",{"sourceInterval":[3717,3720]},")"],["terminal",{"sourceInterval":[3721,3724]},"{"],["star",{"sourceInterval":[3725,3735]},["app",{"sourceInterval":[3725,3734]},"Statement",[]]],["terminal",{"sourceInterval":[3736,3739]},"}"]]],"ReceiveFunction_externalComment":["define",{"sourceInterval":[3779,3848]},null,[],["seq",{"sourceInterval":[3779,3830]},["terminal",{"sourceInterval":[3779,3789]},"external"],["terminal",{"sourceInterval":[3790,3793]},"("],["app",{"sourceInterval":[3794,3807]},"stringLiteral",[]],["terminal",{"sourceInterval":[3808,3811]},")"],["terminal",{"sourceInterval":[3812,3815]},"{"],["star",{"sourceInterval":[3816,3826]},["app",{"sourceInterval":[3816,3825]},"Statement",[]]],["terminal",{"sourceInterval":[3827,3830]},"}"]]],"ReceiveFunction_externalEmpty":["define",{"sourceInterval":[3871,3924]},null,[],["seq",{"sourceInterval":[3871,3908]},["terminal",{"sourceInterval":[3871,3881]},"external"],["terminal",{"sourceInterval":[3882,3885]},"("],["terminal",{"sourceInterval":[3886,3889]},")"],["terminal",{"sourceInterval":[3890,3893]},"{"],["star",{"sourceInterval":[3894,3904]},["app",{"sourceInterval":[3894,3903]},"Statement",[]]],["terminal",{"sourceInterval":[3905,3908]},"}"]]],"ReceiveFunction":["define",{"sourceInterval":[3361,3924]},null,[],["alt",{"sourceInterval":[3379,3924]},["app",{"sourceInterval":[3379,3427]},"ReceiveFunction_simple",[]],["app",{"sourceInterval":[3459,3495]},"ReceiveFunction_empty",[]],["app",{"sourceInterval":[3526,3576]},"ReceiveFunction_comment",[]],["app",{"sourceInterval":[3609,3657]},"ReceiveFunction_bounced",[]],["app",{"sourceInterval":[3690,3739]},"ReceiveFunction_externalSimple",[]],["app",{"sourceInterval":[3779,3830]},"ReceiveFunction_externalComment",[]],["app",{"sourceInterval":[3871,3908]},"ReceiveFunction_externalEmpty",[]]]],"Statement":["define",{"sourceInterval":[3948,4273]},null,[],["alt",{"sourceInterval":[3960,4273]},["app",{"sourceInterval":[3960,3972]},"StatementLet",[]],["app",{"sourceInterval":[3989,4003]},"StatementBlock",[]],["app",{"sourceInterval":[4020,4035]},"StatementReturn",[]],["app",{"sourceInterval":[4052,4071]},"StatementExpression",[]],["app",{"sourceInterval":[4088,4103]},"StatementAssign",[]],["app",{"sourceInterval":[4120,4144]},"StatementAugmentedAssign",[]],["app",{"sourceInterval":[4161,4179]},"StatementCondition",[]],["app",{"sourceInterval":[4196,4210]},"StatementWhile",[]],["app",{"sourceInterval":[4227,4242]},"StatementRepeat",[]],["app",{"sourceInterval":[4259,4273]},"StatementUntil",[]]]],"StatementBlock":["define",{"sourceInterval":[4278,4313]},null,[],["seq",{"sourceInterval":[4295,4313]},["terminal",{"sourceInterval":[4295,4298]},"{"],["star",{"sourceInterval":[4299,4309]},["app",{"sourceInterval":[4299,4308]},"Statement",[]]],["terminal",{"sourceInterval":[4310,4313]},"}"]]],"StatementLet":["define",{"sourceInterval":[4318,4367]},null,[],["seq",{"sourceInterval":[4333,4367]},["app",{"sourceInterval":[4333,4336]},"let",[]],["app",{"sourceInterval":[4337,4339]},"id",[]],["terminal",{"sourceInterval":[4340,4343]},":"],["app",{"sourceInterval":[4344,4348]},"Type",[]],["terminal",{"sourceInterval":[4349,4352]},"="],["app",{"sourceInterval":[4353,4363]},"Expression",[]],["terminal",{"sourceInterval":[4364,4367]},";"]]],"StatementReturn_withExpression":["define",{"sourceInterval":[4390,4428]},null,[],["seq",{"sourceInterval":[4390,4411]},["app",{"sourceInterval":[4390,4396]},"return",[]],["app",{"sourceInterval":[4397,4407]},"Expression",[]],["terminal",{"sourceInterval":[4408,4411]},";"]]],"StatementReturn_withoutExpression":["define",{"sourceInterval":[4451,4481]},null,[],["seq",{"sourceInterval":[4451,4461]},["app",{"sourceInterval":[4451,4457]},"return",[]],["terminal",{"sourceInterval":[4458,4461]},";"]]],"StatementReturn":["define",{"sourceInterval":[4372,4481]},null,[],["alt",{"sourceInterval":[4390,4481]},["app",{"sourceInterval":[4390,4411]},"StatementReturn_withExpression",[]],["app",{"sourceInterval":[4451,4461]},"StatementReturn_withoutExpression",[]]]],"StatementExpression":["define",{"sourceInterval":[4490,4526]},null,[],["seq",{"sourceInterval":[4512,4526]},["app",{"sourceInterval":[4512,4522]},"Expression",[]],["terminal",{"sourceInterval":[4523,4526]},";"]]],"StatementAssign":["define",{"sourceInterval":[4531,4574]},null,[],["seq",{"sourceInterval":[4549,4574]},["app",{"sourceInterval":[4549,4555]},"LValue",[]],["terminal",{"sourceInterval":[4556,4559]},"="],["app",{"sourceInterval":[4560,4570]},"Expression",[]],["terminal",{"sourceInterval":[4571,4574]},";"]]],"StatementAugmentedAssign":["define",{"sourceInterval":[4579,4869]},null,[],["alt",{"sourceInterval":[4606,4869]},["app",{"sourceInterval":[4606,4633]},"StatementAugmentedAssignAdd",[]],["app",{"sourceInterval":[4665,4692]},"StatementAugmentedAssignSub",[]],["app",{"sourceInterval":[4724,4751]},"StatementAugmentedAssignMul",[]],["app",{"sourceInterval":[4783,4810]},"StatementAugmentedAssignDiv",[]],["app",{"sourceInterval":[4842,4869]},"StatementAugmentedAssignRem",[]]]],"StatementAugmentedAssignAdd":["define",{"sourceInterval":[4874,4930]},null,[],["seq",{"sourceInterval":[4904,4930]},["app",{"sourceInterval":[4904,4910]},"LValue",[]],["terminal",{"sourceInterval":[4911,4915]},"+="],["app",{"sourceInterval":[4916,4926]},"Expression",[]],["terminal",{"sourceInterval":[4927,4930]},";"]]],"StatementAugmentedAssignSub":["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]},";"]]],"StatementAugmentedAssignMul":["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]},";"]]],"StatementAugmentedAssignDiv":["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]},";"]]],"StatementAugmentedAssignRem":["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]},";"]]],"StatementCondition_simple":["define",{"sourceInterval":[5200,5247]},null,[],["seq",{"sourceInterval":[5200,5238]},["app",{"sourceInterval":[5200,5202]},"if",[]],["app",{"sourceInterval":[5203,5213]},"Expression",[]],["terminal",{"sourceInterval":[5214,5217]},"{"],["star",{"sourceInterval":[5218,5228]},["app",{"sourceInterval":[5218,5227]},"Statement",[]]],["terminal",{"sourceInterval":[5229,5232]},"}"],["not",{"sourceInterval":[5233,5238]},["app",{"sourceInterval":[5234,5238]},"else",[]]]]],"StatementCondition_withElse":["define",{"sourceInterval":[5273,5340]},null,[],["seq",{"sourceInterval":[5273,5329]},["app",{"sourceInterval":[5273,5275]},"if",[]],["app",{"sourceInterval":[5276,5286]},"Expression",[]],["terminal",{"sourceInterval":[5287,5290]},"{"],["star",{"sourceInterval":[5291,5301]},["app",{"sourceInterval":[5291,5300]},"Statement",[]]],["terminal",{"sourceInterval":[5302,5305]},"}"],["app",{"sourceInterval":[5306,5310]},"else",[]],["terminal",{"sourceInterval":[5311,5314]},"{"],["star",{"sourceInterval":[5315,5325]},["app",{"sourceInterval":[5315,5324]},"Statement",[]]],["terminal",{"sourceInterval":[5326,5329]},"}"]]],"StatementCondition_withElseIf":["define",{"sourceInterval":[5366,5435]},null,[],["seq",{"sourceInterval":[5366,5422]},["app",{"sourceInterval":[5366,5368]},"if",[]],["app",{"sourceInterval":[5369,5379]},"Expression",[]],["terminal",{"sourceInterval":[5380,5383]},"{"],["star",{"sourceInterval":[5384,5394]},["app",{"sourceInterval":[5384,5393]},"Statement",[]]],["terminal",{"sourceInterval":[5395,5398]},"}"],["app",{"sourceInterval":[5399,5403]},"else",[]],["app",{"sourceInterval":[5404,5422]},"StatementCondition",[]]]],"StatementCondition":["define",{"sourceInterval":[5179,5435]},null,[],["alt",{"sourceInterval":[5200,5435]},["app",{"sourceInterval":[5200,5238]},"StatementCondition_simple",[]],["app",{"sourceInterval":[5273,5329]},"StatementCondition_withElse",[]],["app",{"sourceInterval":[5366,5422]},"StatementCondition_withElseIf",[]]]],"StatementWhile":["define",{"sourceInterval":[5440,5500]},null,[],["seq",{"sourceInterval":[5457,5500]},["app",{"sourceInterval":[5457,5462]},"while",[]],["terminal",{"sourceInterval":[5463,5466]},"("],["app",{"sourceInterval":[5467,5477]},"Expression",[]],["terminal",{"sourceInterval":[5478,5481]},")"],["terminal",{"sourceInterval":[5482,5485]},"{"],["star",{"sourceInterval":[5486,5496]},["app",{"sourceInterval":[5486,5495]},"Statement",[]]],["terminal",{"sourceInterval":[5497,5500]},"}"]]],"StatementRepeat":["define",{"sourceInterval":[5505,5567]},null,[],["seq",{"sourceInterval":[5523,5567]},["app",{"sourceInterval":[5523,5529]},"repeat",[]],["terminal",{"sourceInterval":[5530,5533]},"("],["app",{"sourceInterval":[5534,5544]},"Expression",[]],["terminal",{"sourceInterval":[5545,5548]},")"],["terminal",{"sourceInterval":[5549,5552]},"{"],["star",{"sourceInterval":[5553,5563]},["app",{"sourceInterval":[5553,5562]},"Statement",[]]],["terminal",{"sourceInterval":[5564,5567]},"}"]]],"StatementUntil":["define",{"sourceInterval":[5572,5639]},null,[],["seq",{"sourceInterval":[5589,5639]},["app",{"sourceInterval":[5589,5591]},"do",[]],["terminal",{"sourceInterval":[5592,5595]},"{"],["star",{"sourceInterval":[5596,5606]},["app",{"sourceInterval":[5596,5605]},"Statement",[]]],["terminal",{"sourceInterval":[5607,5610]},"}"],["app",{"sourceInterval":[5611,5616]},"until",[]],["terminal",{"sourceInterval":[5617,5620]},"("],["app",{"sourceInterval":[5621,5631]},"Expression",[]],["terminal",{"sourceInterval":[5632,5635]},")"],["terminal",{"sourceInterval":[5636,5639]},";"]]],"LValue_more":["define",{"sourceInterval":[5669,5689]},null,[],["seq",{"sourceInterval":[5669,5682]},["app",{"sourceInterval":[5669,5671]},"id",[]],["terminal",{"sourceInterval":[5672,5675]},"."],["app",{"sourceInterval":[5676,5682]},"LValue",[]]]],"LValue_single":["define",{"sourceInterval":[5703,5714]},null,[],["app",{"sourceInterval":[5703,5705]},"id",[]]],"LValue":["define",{"sourceInterval":[5660,5714]},null,[],["alt",{"sourceInterval":[5669,5714]},["app",{"sourceInterval":[5669,5682]},"LValue_more",[]],["app",{"sourceInterval":[5703,5705]},"LValue_single",[]]]],"Expression":["define",{"sourceInterval":[5739,5764]},null,[],["app",{"sourceInterval":[5752,5764]},"ExpressionOr",[]]],"ExpressionOr_or":["define",{"sourceInterval":[5784,5820]},null,[],["seq",{"sourceInterval":[5784,5815]},["app",{"sourceInterval":[5784,5796]},"ExpressionOr",[]],["terminal",{"sourceInterval":[5797,5801]},"||"],["app",{"sourceInterval":[5802,5815]},"ExpressionAnd",[]]]],"ExpressionOr":["define",{"sourceInterval":[5769,5853]},null,[],["alt",{"sourceInterval":[5784,5853]},["app",{"sourceInterval":[5784,5815]},"ExpressionOr_or",[]],["app",{"sourceInterval":[5840,5853]},"ExpressionAnd",[]]]],"ExpressionAnd_and":["define",{"sourceInterval":[5874,5916]},null,[],["seq",{"sourceInterval":[5874,5910]},["app",{"sourceInterval":[5874,5887]},"ExpressionAnd",[]],["terminal",{"sourceInterval":[5888,5892]},"&&"],["app",{"sourceInterval":[5893,5910]},"ExpressionCompare",[]]]],"ExpressionAnd":["define",{"sourceInterval":[5858,5954]},null,[],["alt",{"sourceInterval":[5874,5954]},["app",{"sourceInterval":[5874,5910]},"ExpressionAnd_and",[]],["app",{"sourceInterval":[5937,5954]},"ExpressionCompare",[]]]],"ExpressionCompare_not":["define",{"sourceInterval":[5979,6024]},null,[],["seq",{"sourceInterval":[5979,6018]},["app",{"sourceInterval":[5979,5996]},"ExpressionCompare",[]],["terminal",{"sourceInterval":[5997,6001]},"!="],["app",{"sourceInterval":[6002,6018]},"ExpressionBinary",[]]]],"ExpressionCompare_eq":["define",{"sourceInterval":[6049,6093]},null,[],["seq",{"sourceInterval":[6049,6088]},["app",{"sourceInterval":[6049,6066]},"ExpressionCompare",[]],["terminal",{"sourceInterval":[6067,6071]},"=="],["app",{"sourceInterval":[6072,6088]},"ExpressionBinary",[]]]],"ExpressionCompare_gt":["define",{"sourceInterval":[6118,6161]},null,[],["seq",{"sourceInterval":[6118,6156]},["app",{"sourceInterval":[6118,6135]},"ExpressionCompare",[]],["terminal",{"sourceInterval":[6136,6139]},">"],["app",{"sourceInterval":[6140,6156]},"ExpressionBinary",[]]]],"ExpressionCompare_gte":["define",{"sourceInterval":[6186,6231]},null,[],["seq",{"sourceInterval":[6186,6225]},["app",{"sourceInterval":[6186,6203]},"ExpressionCompare",[]],["terminal",{"sourceInterval":[6204,6208]},">="],["app",{"sourceInterval":[6209,6225]},"ExpressionBinary",[]]]],"ExpressionCompare_lt":["define",{"sourceInterval":[6256,6299]},null,[],["seq",{"sourceInterval":[6256,6294]},["app",{"sourceInterval":[6256,6273]},"ExpressionCompare",[]],["terminal",{"sourceInterval":[6274,6277]},"<"],["app",{"sourceInterval":[6278,6294]},"ExpressionBinary",[]]]],"ExpressionCompare_lte":["define",{"sourceInterval":[6324,6369]},null,[],["seq",{"sourceInterval":[6324,6363]},["app",{"sourceInterval":[6324,6341]},"ExpressionCompare",[]],["terminal",{"sourceInterval":[6342,6346]},"<="],["app",{"sourceInterval":[6347,6363]},"ExpressionBinary",[]]]],"ExpressionCompare":["define",{"sourceInterval":[5959,6410]},null,[],["alt",{"sourceInterval":[5979,6410]},["app",{"sourceInterval":[5979,6018]},"ExpressionCompare_not",[]],["app",{"sourceInterval":[6049,6088]},"ExpressionCompare_eq",[]],["app",{"sourceInterval":[6118,6156]},"ExpressionCompare_gt",[]],["app",{"sourceInterval":[6186,6225]},"ExpressionCompare_gte",[]],["app",{"sourceInterval":[6256,6294]},"ExpressionCompare_lt",[]],["app",{"sourceInterval":[6324,6363]},"ExpressionCompare_lte",[]],["app",{"sourceInterval":[6394,6410]},"ExpressionBinary",[]]]],"ExpressionBinary_shr":["define",{"sourceInterval":[6434,6475]},null,[],["seq",{"sourceInterval":[6434,6469]},["app",{"sourceInterval":[6434,6450]},"ExpressionBinary",[]],["terminal",{"sourceInterval":[6451,6455]},">>"],["app",{"sourceInterval":[6456,6469]},"ExpressionAdd",[]]]],"ExpressionBinary_shl":["define",{"sourceInterval":[6498,6539]},null,[],["seq",{"sourceInterval":[6498,6533]},["app",{"sourceInterval":[6498,6514]},"ExpressionBinary",[]],["terminal",{"sourceInterval":[6515,6519]},"<<"],["app",{"sourceInterval":[6520,6533]},"ExpressionAdd",[]]]],"ExpressionBinary_bin_and":["define",{"sourceInterval":[6562,6606]},null,[],["seq",{"sourceInterval":[6562,6596]},["app",{"sourceInterval":[6562,6578]},"ExpressionBinary",[]],["terminal",{"sourceInterval":[6579,6582]},"&"],["app",{"sourceInterval":[6583,6596]},"ExpressionAdd",[]]]],"ExpressionBinary_bin_or":["define",{"sourceInterval":[6629,6672]},null,[],["seq",{"sourceInterval":[6629,6663]},["app",{"sourceInterval":[6629,6645]},"ExpressionBinary",[]],["terminal",{"sourceInterval":[6646,6649]},"|"],["app",{"sourceInterval":[6650,6663]},"ExpressionAdd",[]]]],"ExpressionBinary":["define",{"sourceInterval":[6415,6708]},null,[],["alt",{"sourceInterval":[6434,6708]},["app",{"sourceInterval":[6434,6469]},"ExpressionBinary_shr",[]],["app",{"sourceInterval":[6498,6533]},"ExpressionBinary_shl",[]],["app",{"sourceInterval":[6562,6596]},"ExpressionBinary_bin_and",[]],["app",{"sourceInterval":[6629,6663]},"ExpressionBinary_bin_or",[]],["app",{"sourceInterval":[6695,6708]},"ExpressionAdd",[]]]],"ExpressionAdd_add":["define",{"sourceInterval":[6729,6771]},null,[],["seq",{"sourceInterval":[6729,6765]},["app",{"sourceInterval":[6729,6742]},"ExpressionAdd",[]],["terminal",{"sourceInterval":[6743,6746]},"+"],["not",{"sourceInterval":[6747,6751]},["terminal",{"sourceInterval":[6748,6751]},"+"]],["app",{"sourceInterval":[6752,6765]},"ExpressionMul",[]]]],"ExpressionAdd_sub":["define",{"sourceInterval":[6792,6834]},null,[],["seq",{"sourceInterval":[6792,6828]},["app",{"sourceInterval":[6792,6805]},"ExpressionAdd",[]],["terminal",{"sourceInterval":[6806,6809]},"-"],["not",{"sourceInterval":[6810,6814]},["terminal",{"sourceInterval":[6811,6814]},"-"]],["app",{"sourceInterval":[6815,6828]},"ExpressionMul",[]]]],"ExpressionAdd":["define",{"sourceInterval":[6713,6868]},null,[],["alt",{"sourceInterval":[6729,6868]},["app",{"sourceInterval":[6729,6765]},"ExpressionAdd_add",[]],["app",{"sourceInterval":[6792,6828]},"ExpressionAdd_sub",[]],["app",{"sourceInterval":[6855,6868]},"ExpressionMul",[]]]],"ExpressionMul_mul":["define",{"sourceInterval":[6889,6928]},null,[],["seq",{"sourceInterval":[6889,6922]},["app",{"sourceInterval":[6889,6902]},"ExpressionMul",[]],["terminal",{"sourceInterval":[6903,6906]},"*"],["app",{"sourceInterval":[6907,6922]},"ExpressionUnary",[]]]],"ExpressionMul_div":["define",{"sourceInterval":[6949,6988]},null,[],["seq",{"sourceInterval":[6949,6982]},["app",{"sourceInterval":[6949,6962]},"ExpressionMul",[]],["terminal",{"sourceInterval":[6963,6966]},"/"],["app",{"sourceInterval":[6967,6982]},"ExpressionUnary",[]]]],"ExpressionMul_rem":["define",{"sourceInterval":[7009,7048]},null,[],["seq",{"sourceInterval":[7009,7042]},["app",{"sourceInterval":[7009,7022]},"ExpressionMul",[]],["terminal",{"sourceInterval":[7023,7026]},"%"],["app",{"sourceInterval":[7027,7042]},"ExpressionUnary",[]]]],"ExpressionMul":["define",{"sourceInterval":[6873,7084]},null,[],["alt",{"sourceInterval":[6889,7084]},["app",{"sourceInterval":[6889,6922]},"ExpressionMul_mul",[]],["app",{"sourceInterval":[6949,6982]},"ExpressionMul_div",[]],["app",{"sourceInterval":[7009,7042]},"ExpressionMul_rem",[]],["app",{"sourceInterval":[7069,7084]},"ExpressionUnary",[]]]],"ExpressionUnary_neg":["define",{"sourceInterval":[7107,7138]},null,[],["seq",{"sourceInterval":[7107,7132]},["terminal",{"sourceInterval":[7107,7110]},"-"],["app",{"sourceInterval":[7111,7132]},"ExpressionUnarySuffix",[]]]],"ExpressionUnary_add":["define",{"sourceInterval":[7161,7192]},null,[],["seq",{"sourceInterval":[7161,7186]},["terminal",{"sourceInterval":[7161,7164]},"+"],["app",{"sourceInterval":[7165,7186]},"ExpressionUnarySuffix",[]]]],"ExpressionUnary_not":["define",{"sourceInterval":[7215,7246]},null,[],["seq",{"sourceInterval":[7215,7240]},["terminal",{"sourceInterval":[7215,7218]},"!"],["app",{"sourceInterval":[7219,7240]},"ExpressionUnarySuffix",[]]]],"ExpressionUnary":["define",{"sourceInterval":[7089,7290]},null,[],["alt",{"sourceInterval":[7107,7290]},["app",{"sourceInterval":[7107,7132]},"ExpressionUnary_neg",[]],["app",{"sourceInterval":[7161,7186]},"ExpressionUnary_add",[]],["app",{"sourceInterval":[7215,7240]},"ExpressionUnary_not",[]],["app",{"sourceInterval":[7269,7290]},"ExpressionUnarySuffix",[]]]],"ExpressionUnarySuffix_notNull":["define",{"sourceInterval":[7319,7349]},null,[],["seq",{"sourceInterval":[7319,7339]},["app",{"sourceInterval":[7319,7334]},"ExpressionValue",[]],["terminal",{"sourceInterval":[7335,7339]},"!!"]]],"ExpressionUnarySuffix":["define",{"sourceInterval":[7295,7393]},null,[],["alt",{"sourceInterval":[7319,7393]},["app",{"sourceInterval":[7319,7339]},"ExpressionUnarySuffix_notNull",[]],["app",{"sourceInterval":[7378,7393]},"ExpressionValue",[]]]],"ExpressionBracket":["define",{"sourceInterval":[7398,7436]},null,[],["seq",{"sourceInterval":[7418,7436]},["terminal",{"sourceInterval":[7418,7421]},"("],["app",{"sourceInterval":[7422,7432]},"Expression",[]],["terminal",{"sourceInterval":[7433,7436]},")"]]],"ExpressionValue":["define",{"sourceInterval":[7468,7858]},null,[],["alt",{"sourceInterval":[7486,7858]},["app",{"sourceInterval":[7486,7500]},"ExpressionCall",[]],["app",{"sourceInterval":[7523,7538]},"ExpressionField",[]],["app",{"sourceInterval":[7561,7581]},"ExpressionStaticCall",[]],["app",{"sourceInterval":[7604,7621]},"ExpressionBracket",[]],["app",{"sourceInterval":[7644,7657]},"ExpressionNew",[]],["app",{"sourceInterval":[7680,7694]},"integerLiteral",[]],["app",{"sourceInterval":[7717,7728]},"boolLiteral",[]],["app",{"sourceInterval":[7751,7753]},"id",[]],["app",{"sourceInterval":[7776,7780]},"null",[]],["app",{"sourceInterval":[7803,7819]},"ExpressionInitOf",[]],["app",{"sourceInterval":[7842,7858]},"ExpressionString",[]]]],"ExpressionString":["define",{"sourceInterval":[7863,7895]},null,[],["app",{"sourceInterval":[7882,7895]},"stringLiteral",[]]],"ExpressionField":["define",{"sourceInterval":[7900,7945]},null,[],["seq",{"sourceInterval":[7918,7945]},["app",{"sourceInterval":[7918,7933]},"ExpressionValue",[]],["terminal",{"sourceInterval":[7934,7937]},"."],["app",{"sourceInterval":[7938,7940]},"id",[]],["not",{"sourceInterval":[7941,7945]},["terminal",{"sourceInterval":[7942,7945]},"("]]]],"ExpressionCall":["define",{"sourceInterval":[7950,8021]},null,[],["seq",{"sourceInterval":[7967,8021]},["app",{"sourceInterval":[7967,7982]},"ExpressionValue",[]],["terminal",{"sourceInterval":[7983,7986]},"."],["app",{"sourceInterval":[7987,7989]},"id",[]],["terminal",{"sourceInterval":[7990,7993]},"("],["app",{"sourceInterval":[7994,8017]},"ListOf",[["app",{"sourceInterval":[8001,8011]},"Expression",[]],["terminal",{"sourceInterval":[8013,8016]},","]]],["terminal",{"sourceInterval":[8018,8021]},")"]]],"ExpressionNew":["define",{"sourceInterval":[8026,8078]},null,[],["seq",{"sourceInterval":[8042,8078]},["app",{"sourceInterval":[8042,8044]},"id",[]],["terminal",{"sourceInterval":[8045,8048]},"{"],["app",{"sourceInterval":[8049,8074]},"ListOf",[["app",{"sourceInterval":[8056,8068]},"NewParameter",[]],["terminal",{"sourceInterval":[8070,8073]},","]]],["terminal",{"sourceInterval":[8075,8078]},"}"]]],"NewParameter":["define",{"sourceInterval":[8083,8115]},null,[],["seq",{"sourceInterval":[8098,8115]},["app",{"sourceInterval":[8098,8100]},"id",[]],["terminal",{"sourceInterval":[8101,8104]},":"],["app",{"sourceInterval":[8105,8115]},"Expression",[]]]],"ExpressionStaticCall":["define",{"sourceInterval":[8120,8177]},null,[],["seq",{"sourceInterval":[8143,8177]},["app",{"sourceInterval":[8143,8145]},"id",[]],["terminal",{"sourceInterval":[8146,8149]},"("],["app",{"sourceInterval":[8150,8173]},"ListOf",[["app",{"sourceInterval":[8157,8167]},"Expression",[]],["terminal",{"sourceInterval":[8169,8172]},","]]],["terminal",{"sourceInterval":[8174,8177]},")"]]],"ExpressionInitOf":["define",{"sourceInterval":[8182,8242]},null,[],["seq",{"sourceInterval":[8201,8242]},["app",{"sourceInterval":[8201,8207]},"initOf",[]],["app",{"sourceInterval":[8208,8210]},"id",[]],["terminal",{"sourceInterval":[8211,8214]},"("],["app",{"sourceInterval":[8215,8238]},"ListOf",[["app",{"sourceInterval":[8222,8232]},"Expression",[]],["terminal",{"sourceInterval":[8234,8237]},","]]],["terminal",{"sourceInterval":[8239,8242]},")"]]],"typeLiteral":["define",{"sourceInterval":[8268,8312]},null,[],["seq",{"sourceInterval":[8282,8312]},["app",{"sourceInterval":[8282,8295]},"letterAsciiUC",[]],["star",{"sourceInterval":[8296,8312]},["app",{"sourceInterval":[8296,8311]},"typeLiteralPart",[]]]]],"typeLiteralPart":["define",{"sourceInterval":[8317,8360]},null,[],["alt",{"sourceInterval":[8335,8360]},["app",{"sourceInterval":[8335,8346]},"letterAscii",[]],["app",{"sourceInterval":[8349,8354]},"digit",[]],["terminal",{"sourceInterval":[8357,8360]},"_"]]],"integerLiteral":["define",{"sourceInterval":[8567,8661]},null,[],["alt",{"sourceInterval":[8584,8661]},["app",{"sourceInterval":[8584,8601]},"integerLiteralHex",[]],["app",{"sourceInterval":[8604,8621]},"integerLiteralBin",[]],["app",{"sourceInterval":[8624,8641]},"integerLiteralOct",[]],["app",{"sourceInterval":[8644,8661]},"integerLiteralDec",[]]]],"integerLiteralDec":["define",{"sourceInterval":[8688,8729]},null,[],["seq",{"sourceInterval":[8708,8729]},["plus",{"sourceInterval":[8708,8714]},["app",{"sourceInterval":[8708,8713]},"digit",[]]],["star",{"sourceInterval":[8715,8729]},["alt",{"sourceInterval":[8716,8727]},["terminal",{"sourceInterval":[8716,8719]},"_"],["app",{"sourceInterval":[8722,8727]},"digit",[]]]]]],"integerLiteralHex":["define",{"sourceInterval":[8734,8843]},null,[],["alt",{"sourceInterval":[8754,8843]},["seq",{"sourceInterval":[8754,8786]},["terminal",{"sourceInterval":[8754,8758]},"0x"],["plus",{"sourceInterval":[8759,8768]},["app",{"sourceInterval":[8759,8767]},"hexDigit",[]]],["star",{"sourceInterval":[8769,8786]},["alt",{"sourceInterval":[8770,8784]},["terminal",{"sourceInterval":[8770,8773]},"_"],["app",{"sourceInterval":[8776,8784]},"hexDigit",[]]]]],["seq",{"sourceInterval":[8811,8843]},["terminal",{"sourceInterval":[8811,8815]},"0X"],["plus",{"sourceInterval":[8816,8825]},["app",{"sourceInterval":[8816,8824]},"hexDigit",[]]],["star",{"sourceInterval":[8826,8843]},["alt",{"sourceInterval":[8827,8841]},["terminal",{"sourceInterval":[8827,8830]},"_"],["app",{"sourceInterval":[8833,8841]},"hexDigit",[]]]]]]],"integerLiteralBin":["define",{"sourceInterval":[8848,8957]},null,[],["alt",{"sourceInterval":[8868,8957]},["seq",{"sourceInterval":[8868,8900]},["terminal",{"sourceInterval":[8868,8872]},"0b"],["plus",{"sourceInterval":[8873,8882]},["app",{"sourceInterval":[8873,8881]},"binDigit",[]]],["star",{"sourceInterval":[8883,8900]},["alt",{"sourceInterval":[8884,8898]},["terminal",{"sourceInterval":[8884,8887]},"_"],["app",{"sourceInterval":[8890,8898]},"binDigit",[]]]]],["seq",{"sourceInterval":[8925,8957]},["terminal",{"sourceInterval":[8925,8929]},"0B"],["plus",{"sourceInterval":[8930,8939]},["app",{"sourceInterval":[8930,8938]},"binDigit",[]]],["star",{"sourceInterval":[8940,8957]},["alt",{"sourceInterval":[8941,8955]},["terminal",{"sourceInterval":[8941,8944]},"_"],["app",{"sourceInterval":[8947,8955]},"binDigit",[]]]]]]],"integerLiteralOct":["define",{"sourceInterval":[8962,9071]},null,[],["alt",{"sourceInterval":[8982,9071]},["seq",{"sourceInterval":[8982,9014]},["terminal",{"sourceInterval":[8982,8986]},"0o"],["plus",{"sourceInterval":[8987,8996]},["app",{"sourceInterval":[8987,8995]},"octDigit",[]]],["star",{"sourceInterval":[8997,9014]},["alt",{"sourceInterval":[8998,9012]},["terminal",{"sourceInterval":[8998,9001]},"_"],["app",{"sourceInterval":[9004,9012]},"octDigit",[]]]]],["seq",{"sourceInterval":[9039,9071]},["terminal",{"sourceInterval":[9039,9043]},"0O"],["plus",{"sourceInterval":[9044,9053]},["app",{"sourceInterval":[9044,9052]},"octDigit",[]]],["star",{"sourceInterval":[9054,9071]},["alt",{"sourceInterval":[9055,9069]},["terminal",{"sourceInterval":[9055,9058]},"_"],["app",{"sourceInterval":[9061,9069]},"octDigit",[]]]]]]],"binDigit":["define",{"sourceInterval":[9076,9096]},null,[],["alt",{"sourceInterval":[9087,9096]},["terminal",{"sourceInterval":[9087,9090]},"0"],["terminal",{"sourceInterval":[9093,9096]},"1"]]],"octDigit":["define",{"sourceInterval":[9101,9120]},null,[],["range",{"sourceInterval":[9112,9120]},"0","7"]],"letterAsciiLC":["define",{"sourceInterval":[9141,9165]},null,[],["range",{"sourceInterval":[9157,9165]},"a","z"]],"letterAsciiUC":["define",{"sourceInterval":[9170,9194]},null,[],["range",{"sourceInterval":[9186,9194]},"A","Z"]],"letterAscii":["define",{"sourceInterval":[9199,9242]},null,[],["alt",{"sourceInterval":[9213,9242]},["app",{"sourceInterval":[9213,9226]},"letterAsciiLC",[]],["app",{"sourceInterval":[9229,9242]},"letterAsciiUC",[]]]],"letterComment":["define",{"sourceInterval":[9247,9306]},null,[],["alt",{"sourceInterval":[9263,9306]},["app",{"sourceInterval":[9263,9276]},"letterAsciiLC",[]],["app",{"sourceInterval":[9279,9292]},"letterAsciiUC",[]],["app",{"sourceInterval":[9295,9300]},"digit",[]],["terminal",{"sourceInterval":[9303,9306]},"_"]]],"idStart":["define",{"sourceInterval":[9330,9357]},null,[],["alt",{"sourceInterval":[9340,9357]},["app",{"sourceInterval":[9340,9351]},"letterAscii",[]],["terminal",{"sourceInterval":[9354,9357]},"_"]]],"idPart":["define",{"sourceInterval":[9362,9396]},null,[],["alt",{"sourceInterval":[9371,9396]},["app",{"sourceInterval":[9371,9382]},"letterAscii",[]],["app",{"sourceInterval":[9385,9390]},"digit",[]],["terminal",{"sourceInterval":[9393,9396]},"_"]]],"id":["define",{"sourceInterval":[9401,9439]},null,[],["seq",{"sourceInterval":[9406,9439]},["not",{"sourceInterval":[9406,9419]},["app",{"sourceInterval":[9407,9419]},"reservedWord",[]]],["lex",{"sourceInterval":[9420,9428]},["app",{"sourceInterval":[9421,9428]},"idStart",[]]],["lex",{"sourceInterval":[9429,9439]},["star",{"sourceInterval":[9431,9438]},["app",{"sourceInterval":[9431,9437]},"idPart",[]]]]]],"funcLetter":["define",{"sourceInterval":[9460,9521]},null,[],["alt",{"sourceInterval":[9473,9521]},["app",{"sourceInterval":[9473,9484]},"letterAscii",[]],["terminal",{"sourceInterval":[9487,9490]},"_"],["terminal",{"sourceInterval":[9493,9496]},"'"],["terminal",{"sourceInterval":[9499,9502]},"?"],["terminal",{"sourceInterval":[9505,9508]},"!"],["terminal",{"sourceInterval":[9511,9515]},"::"],["terminal",{"sourceInterval":[9518,9521]},"&"]]],"funcId":["define",{"sourceInterval":[9526,9568]},null,[],["seq",{"sourceInterval":[9535,9568]},["app",{"sourceInterval":[9535,9545]},"funcLetter",[]],["star",{"sourceInterval":[9546,9568]},["lex",{"sourceInterval":[9546,9567]},["alt",{"sourceInterval":[9548,9566]},["app",{"sourceInterval":[9548,9558]},"funcLetter",[]],["app",{"sourceInterval":[9561,9566]},"digit",[]]]]]]],"boolLiteral":["define",{"sourceInterval":[9594,9634]},null,[],["seq",{"sourceInterval":[9608,9634]},["alt",{"sourceInterval":[9609,9625]},["terminal",{"sourceInterval":[9609,9615]},"true"],["terminal",{"sourceInterval":[9618,9625]},"false"]],["not",{"sourceInterval":[9627,9634]},["app",{"sourceInterval":[9628,9634]},"idPart",[]]]]],"stringLiteralCharacter":["define",{"sourceInterval":[9662,9722]},null,[],["seq",{"sourceInterval":[9687,9722]},["not",{"sourceInterval":[9687,9718]},["alt",{"sourceInterval":[9689,9717]},["terminal",{"sourceInterval":[9689,9693]},"\""],["terminal",{"sourceInterval":[9696,9700]},"\\"],["app",{"sourceInterval":[9703,9717]},"lineTerminator",[]]]],["app",{"sourceInterval":[9719,9722]},"any",[]]]],"stringLiteral":["define",{"sourceInterval":[9727,9776]},null,[],["seq",{"sourceInterval":[9743,9776]},["terminal",{"sourceInterval":[9743,9747]},"\""],["star",{"sourceInterval":[9748,9771]},["app",{"sourceInterval":[9748,9770]},"stringLiteralCharacter",[]]],["terminal",{"sourceInterval":[9772,9776]},"\""]]],"keyword":["define",{"sourceInterval":[9829,10342]},null,[],["alt",{"sourceInterval":[9839,10342]},["app",{"sourceInterval":[9839,9842]},"fun",[]],["app",{"sourceInterval":[9858,9861]},"let",[]],["app",{"sourceInterval":[9876,9882]},"return",[]],["app",{"sourceInterval":[9898,9904]},"extend",[]],["app",{"sourceInterval":[9920,9926]},"native",[]],["app",{"sourceInterval":[9942,9948]},"public",[]],["app",{"sourceInterval":[9964,9968]},"null",[]],["app",{"sourceInterval":[9984,9986]},"if",[]],["app",{"sourceInterval":[10002,10006]},"else",[]],["app",{"sourceInterval":[10022,10027]},"while",[]],["app",{"sourceInterval":[10043,10049]},"repeat",[]],["app",{"sourceInterval":[10065,10067]},"do",[]],["app",{"sourceInterval":[10083,10088]},"until",[]],["app",{"sourceInterval":[10104,10106]},"as",[]],["app",{"sourceInterval":[10123,10130]},"mutates",[]],["app",{"sourceInterval":[10145,10152]},"extends",[]],["app",{"sourceInterval":[10167,10173]},"import",[]],["app",{"sourceInterval":[10188,10192]},"with",[]],["app",{"sourceInterval":[10207,10212]},"trait",[]],["app",{"sourceInterval":[10227,10233]},"initOf",[]],["app",{"sourceInterval":[10248,10256]},"override",[]],["app",{"sourceInterval":[10271,10279]},"abstract",[]],["app",{"sourceInterval":[10294,10301]},"virtual",[]],["app",{"sourceInterval":[10316,10322]},"inline",[]],["app",{"sourceInterval":[10337,10342]},"const",[]]]],"contract":["define",{"sourceInterval":[10347,10376]},null,[],["seq",{"sourceInterval":[10358,10376]},["terminal",{"sourceInterval":[10358,10368]},"contract"],["not",{"sourceInterval":[10369,10376]},["app",{"sourceInterval":[10370,10376]},"idPart",[]]]]],"let":["define",{"sourceInterval":[10381,10400]},null,[],["seq",{"sourceInterval":[10387,10400]},["terminal",{"sourceInterval":[10387,10392]},"let"],["not",{"sourceInterval":[10393,10400]},["app",{"sourceInterval":[10394,10400]},"idPart",[]]]]],"fun":["define",{"sourceInterval":[10405,10424]},null,[],["seq",{"sourceInterval":[10411,10424]},["terminal",{"sourceInterval":[10411,10416]},"fun"],["not",{"sourceInterval":[10417,10424]},["app",{"sourceInterval":[10418,10424]},"idPart",[]]]]],"return":["define",{"sourceInterval":[10429,10454]},null,[],["seq",{"sourceInterval":[10438,10454]},["terminal",{"sourceInterval":[10438,10446]},"return"],["not",{"sourceInterval":[10447,10454]},["app",{"sourceInterval":[10448,10454]},"idPart",[]]]]],"extend":["define",{"sourceInterval":[10459,10484]},null,[],["seq",{"sourceInterval":[10468,10484]},["terminal",{"sourceInterval":[10468,10476]},"extend"],["not",{"sourceInterval":[10477,10484]},["app",{"sourceInterval":[10478,10484]},"idPart",[]]]]],"native":["define",{"sourceInterval":[10489,10514]},null,[],["seq",{"sourceInterval":[10498,10514]},["terminal",{"sourceInterval":[10498,10506]},"native"],["not",{"sourceInterval":[10507,10514]},["app",{"sourceInterval":[10508,10514]},"idPart",[]]]]],"public":["define",{"sourceInterval":[10519,10544]},null,[],["seq",{"sourceInterval":[10528,10544]},["terminal",{"sourceInterval":[10528,10536]},"public"],["not",{"sourceInterval":[10537,10544]},["app",{"sourceInterval":[10538,10544]},"idPart",[]]]]],"null":["define",{"sourceInterval":[10549,10570]},null,[],["seq",{"sourceInterval":[10556,10570]},["terminal",{"sourceInterval":[10556,10562]},"null"],["not",{"sourceInterval":[10563,10570]},["app",{"sourceInterval":[10564,10570]},"idPart",[]]]]],"if":["define",{"sourceInterval":[10575,10592]},null,[],["seq",{"sourceInterval":[10580,10592]},["terminal",{"sourceInterval":[10580,10584]},"if"],["not",{"sourceInterval":[10585,10592]},["app",{"sourceInterval":[10586,10592]},"idPart",[]]]]],"else":["define",{"sourceInterval":[10597,10618]},null,[],["seq",{"sourceInterval":[10604,10618]},["terminal",{"sourceInterval":[10604,10610]},"else"],["not",{"sourceInterval":[10611,10618]},["app",{"sourceInterval":[10612,10618]},"idPart",[]]]]],"while":["define",{"sourceInterval":[10623,10646]},null,[],["seq",{"sourceInterval":[10631,10646]},["terminal",{"sourceInterval":[10631,10638]},"while"],["not",{"sourceInterval":[10639,10646]},["app",{"sourceInterval":[10640,10646]},"idPart",[]]]]],"repeat":["define",{"sourceInterval":[10651,10676]},null,[],["seq",{"sourceInterval":[10660,10676]},["terminal",{"sourceInterval":[10660,10668]},"repeat"],["not",{"sourceInterval":[10669,10676]},["app",{"sourceInterval":[10670,10676]},"idPart",[]]]]],"do":["define",{"sourceInterval":[10681,10698]},null,[],["seq",{"sourceInterval":[10686,10698]},["terminal",{"sourceInterval":[10686,10690]},"do"],["not",{"sourceInterval":[10691,10698]},["app",{"sourceInterval":[10692,10698]},"idPart",[]]]]],"until":["define",{"sourceInterval":[10703,10726]},null,[],["seq",{"sourceInterval":[10711,10726]},["terminal",{"sourceInterval":[10711,10718]},"until"],["not",{"sourceInterval":[10719,10726]},["app",{"sourceInterval":[10720,10726]},"idPart",[]]]]],"as":["define",{"sourceInterval":[10731,10748]},null,[],["seq",{"sourceInterval":[10736,10748]},["terminal",{"sourceInterval":[10736,10740]},"as"],["not",{"sourceInterval":[10741,10748]},["app",{"sourceInterval":[10742,10748]},"idPart",[]]]]],"mutates":["define",{"sourceInterval":[10753,10780]},null,[],["seq",{"sourceInterval":[10763,10780]},["terminal",{"sourceInterval":[10763,10772]},"mutates"],["not",{"sourceInterval":[10773,10780]},["app",{"sourceInterval":[10774,10780]},"idPart",[]]]]],"extends":["define",{"sourceInterval":[10785,10812]},null,[],["seq",{"sourceInterval":[10795,10812]},["terminal",{"sourceInterval":[10795,10804]},"extends"],["not",{"sourceInterval":[10805,10812]},["app",{"sourceInterval":[10806,10812]},"idPart",[]]]]],"import":["define",{"sourceInterval":[10817,10842]},null,[],["seq",{"sourceInterval":[10826,10842]},["terminal",{"sourceInterval":[10826,10834]},"import"],["not",{"sourceInterval":[10835,10842]},["app",{"sourceInterval":[10836,10842]},"idPart",[]]]]],"with":["define",{"sourceInterval":[10847,10868]},null,[],["seq",{"sourceInterval":[10854,10868]},["terminal",{"sourceInterval":[10854,10860]},"with"],["not",{"sourceInterval":[10861,10868]},["app",{"sourceInterval":[10862,10868]},"idPart",[]]]]],"trait":["define",{"sourceInterval":[10873,10896]},null,[],["seq",{"sourceInterval":[10881,10896]},["terminal",{"sourceInterval":[10881,10888]},"trait"],["not",{"sourceInterval":[10889,10896]},["app",{"sourceInterval":[10890,10896]},"idPart",[]]]]],"initOf":["define",{"sourceInterval":[10901,10926]},null,[],["seq",{"sourceInterval":[10910,10926]},["terminal",{"sourceInterval":[10910,10918]},"initOf"],["not",{"sourceInterval":[10919,10926]},["app",{"sourceInterval":[10920,10926]},"idPart",[]]]]],"virtual":["define",{"sourceInterval":[10931,10958]},null,[],["seq",{"sourceInterval":[10941,10958]},["terminal",{"sourceInterval":[10941,10950]},"virtual"],["not",{"sourceInterval":[10951,10958]},["app",{"sourceInterval":[10952,10958]},"idPart",[]]]]],"override":["define",{"sourceInterval":[10963,10992]},null,[],["seq",{"sourceInterval":[10974,10992]},["terminal",{"sourceInterval":[10974,10984]},"override"],["not",{"sourceInterval":[10985,10992]},["app",{"sourceInterval":[10986,10992]},"idPart",[]]]]],"inline":["define",{"sourceInterval":[10997,11022]},null,[],["seq",{"sourceInterval":[11006,11022]},["terminal",{"sourceInterval":[11006,11014]},"inline"],["not",{"sourceInterval":[11015,11022]},["app",{"sourceInterval":[11016,11022]},"idPart",[]]]]],"const":["define",{"sourceInterval":[11027,11050]},null,[],["seq",{"sourceInterval":[11035,11050]},["terminal",{"sourceInterval":[11035,11042]},"const"],["not",{"sourceInterval":[11043,11050]},["app",{"sourceInterval":[11044,11050]},"idPart",[]]]]],"abstract":["define",{"sourceInterval":[11055,11084]},null,[],["seq",{"sourceInterval":[11066,11084]},["terminal",{"sourceInterval":[11066,11076]},"abstract"],["not",{"sourceInterval":[11077,11084]},["app",{"sourceInterval":[11078,11084]},"idPart",[]]]]],"nameAttribute":["define",{"sourceInterval":[11108,11131]},null,[],["terminal",{"sourceInterval":[11124,11131]},"@name"]],"reservedWord":["define",{"sourceInterval":[11153,11175]},null,[],["app",{"sourceInterval":[11168,11175]},"keyword",[]]],"space":["extend",{"sourceInterval":[11197,11230]},null,[],["alt",{"sourceInterval":[11206,11230]},["app",{"sourceInterval":[11206,11213]},"comment",[]],["app",{"sourceInterval":[11216,11230]},"lineTerminator",[]]]],"comment":["define",{"sourceInterval":[11235,11281]},null,[],["alt",{"sourceInterval":[11245,11281]},["app",{"sourceInterval":[11245,11261]},"multiLineComment",[]],["app",{"sourceInterval":[11264,11281]},"singleLineComment",[]]]],"lineTerminator":["define",{"sourceInterval":[11286,11336]},null,[],["alt",{"sourceInterval":[11303,11336]},["terminal",{"sourceInterval":[11303,11307]},"\n"],["terminal",{"sourceInterval":[11310,11314]},"\r"],["terminal",{"sourceInterval":[11317,11325]},"\u2028"],["terminal",{"sourceInterval":[11328,11336]},"\u2029"]]],"multiLineComment":["define",{"sourceInterval":[11341,11382]},null,[],["seq",{"sourceInterval":[11360,11382]},["terminal",{"sourceInterval":[11360,11364]},"/*"],["star",{"sourceInterval":[11365,11377]},["seq",{"sourceInterval":[11366,11375]},["not",{"sourceInterval":[11366,11371]},["terminal",{"sourceInterval":[11367,11371]},"*/"]],["app",{"sourceInterval":[11372,11375]},"any",[]]]],["terminal",{"sourceInterval":[11378,11382]},"*/"]]],"singleLineComment":["define",{"sourceInterval":[11387,11434]},null,[],["seq",{"sourceInterval":[11407,11434]},["terminal",{"sourceInterval":[11407,11411]},"//"],["star",{"sourceInterval":[11412,11434]},["seq",{"sourceInterval":[11413,11432]},["not",{"sourceInterval":[11413,11428]},["app",{"sourceInterval":[11414,11428]},"lineTerminator",[]]],["app",{"sourceInterval":[11429,11432]},"any",[]]]]]]}]);module.exports=result; \ No newline at end of file diff --git a/src/grammar/test/case-27.tact b/src/grammar/test/case-27.tact index d6cf98949..9a08e7f95 100644 --- a/src/grammar/test/case-27.tact +++ b/src/grammar/test/case-27.tact @@ -1,15 +1,21 @@ -fun test_fun(): Int { - let a: Int = 123; - let b: Int = -123; - let c: Int = 1_0123_00__000; - let d: Int = 0x123; - let e: Int = -0x123; - let f: Int = 0x1_0123_00__000; - let g: Int = 0b101010; - let h: Int = -0b101010; - let i: Int = 0b1_0101_00__000; - let j: Int = 0o123; - let k: Int = -0o123; - let l: Int = 0o1_0123_00__000; - return a + b + c + d + e + f + g + h + i + j + k + l; +fun testFunc(): Int { + let a: Int = 1; + let b: Int = 2; + a += b; + b += a; + a += 3; + a += b + 4; + b -= 1; + a -= b; + a -= b - 1; + b *= 2; + a *= b; + a *= b * 2; + b /= 2; + a /= b; + a /= b / 2; + a %= 2; + a %= b; + a %= b % 2; + return a; } \ No newline at end of file diff --git a/src/grammar/test/case-28.tact b/src/grammar/test/case-28.tact new file mode 100644 index 000000000..d6cf98949 --- /dev/null +++ b/src/grammar/test/case-28.tact @@ -0,0 +1,15 @@ +fun test_fun(): Int { + let a: Int = 123; + let b: Int = -123; + let c: Int = 1_0123_00__000; + let d: Int = 0x123; + let e: Int = -0x123; + let f: Int = 0x1_0123_00__000; + let g: Int = 0b101010; + let h: Int = -0b101010; + let i: Int = 0b1_0101_00__000; + let j: Int = 0o123; + let k: Int = -0o123; + let l: Int = 0o1_0123_00__000; + return a + b + c + d + e + f + g + h + i + j + k + l; +} \ No newline at end of file