From 56cfe423dae3638553d86b8fe9dffe8076574e1a Mon Sep 17 00:00:00 2001 From: Gusarich Date: Wed, 29 Nov 2023 19:49:20 +0300 Subject: [PATCH 01/11] feat: add binary integer literal --- src/grammar/grammar.ohm | 5 +- src/grammar/grammar.ohm-bundle.d.ts | 2 + src/grammar/grammar.ohm-bundle.js | 2 +- src/test/feature-integer-literals.spec.ts | 28 ++ src/test/features/integer-literals.tact | 34 ++ ...integer-literals_IntegerLiteralsTester.abi | 1 + ...er-literals_IntegerLiteralsTester.code.boc | Bin 0 -> 472 bytes ...ger-literals_IntegerLiteralsTester.code.fc | 162 +++++++++ ...er-literals_IntegerLiteralsTester.code.fif | 193 ++++++++++ ...iterals_IntegerLiteralsTester.code.rev.fif | 181 +++++++++ ...-literals_IntegerLiteralsTester.headers.fc | 34 ++ .../integer-literals_IntegerLiteralsTester.md | 59 +++ ...integer-literals_IntegerLiteralsTester.pkg | 1 + ...r-literals_IntegerLiteralsTester.stdlib.fc | 12 + ...-literals_IntegerLiteralsTester.storage.fc | 23 ++ .../integer-literals_IntegerLiteralsTester.ts | 344 ++++++++++++++++++ tact.config.json | 8 + 17 files changed, 1087 insertions(+), 2 deletions(-) create mode 100644 src/test/feature-integer-literals.spec.ts create mode 100644 src/test/features/integer-literals.tact create mode 100644 src/test/features/output/integer-literals_IntegerLiteralsTester.abi create mode 100644 src/test/features/output/integer-literals_IntegerLiteralsTester.code.boc create mode 100644 src/test/features/output/integer-literals_IntegerLiteralsTester.code.fc create mode 100644 src/test/features/output/integer-literals_IntegerLiteralsTester.code.fif create mode 100644 src/test/features/output/integer-literals_IntegerLiteralsTester.code.rev.fif create mode 100644 src/test/features/output/integer-literals_IntegerLiteralsTester.headers.fc create mode 100644 src/test/features/output/integer-literals_IntegerLiteralsTester.md create mode 100644 src/test/features/output/integer-literals_IntegerLiteralsTester.pkg create mode 100644 src/test/features/output/integer-literals_IntegerLiteralsTester.stdlib.fc create mode 100644 src/test/features/output/integer-literals_IntegerLiteralsTester.storage.fc create mode 100644 src/test/features/output/integer-literals_IntegerLiteralsTester.ts diff --git a/src/grammar/grammar.ohm b/src/grammar/grammar.ohm index 808435447..a6989057f 100644 --- a/src/grammar/grammar.ohm +++ b/src/grammar/grammar.ohm @@ -184,10 +184,13 @@ Tact { // Integer Literal // hexDigit defined in Ohm's built-in rules (otherwise: hexDigit = "0".."9" | "a".."f" | "A".."F") // digit defined in Ohm's built-in rules (otherwise: digit = "0".."9") - integerLiteral = integerLiteralHex | integerLiteralDec // Order is important + integerLiteral = integerLiteralHex | integerLiteralBin | integerLiteralDec // Order is important integerLiteralDec = digit+ integerLiteralHex = "0x" hexDigit+ | "0X" hexDigit+ + integerLiteralBin = "0b" binDigit+ + | "0B" binDigit+ + binDigit = "0" | "1" // Letters letterAsciiLC = "a".."z" diff --git a/src/grammar/grammar.ohm-bundle.d.ts b/src/grammar/grammar.ohm-bundle.d.ts index c52fc9422..715de4e16 100644 --- a/src/grammar/grammar.ohm-bundle.d.ts +++ b/src/grammar/grammar.ohm-bundle.d.ts @@ -143,6 +143,8 @@ export interface TactActionDict extends ActionDict { integerLiteral?: (this: NonterminalNode, arg0: NonterminalNode) => T; integerLiteralDec?: (this: NonterminalNode, arg0: IterationNode) => T; integerLiteralHex?: (this: NonterminalNode, arg0: TerminalNode, arg1: IterationNode) => T; + integerLiteralBin?: (this: NonterminalNode, arg0: TerminalNode, arg1: IterationNode) => T; + binDigit?: (this: NonterminalNode, arg0: TerminalNode) => T; letterAsciiLC?: (this: NonterminalNode, arg0: TerminalNode) => T; letterAsciiUC?: (this: NonterminalNode, arg0: TerminalNode) => T; letterAscii?: (this: NonterminalNode, arg0: NonterminalNode) => T; diff --git a/src/grammar/grammar.ohm-bundle.js b/src/grammar/grammar.ohm-bundle.js index 3234af8c8..013d280ba 100644 --- a/src/grammar/grammar.ohm-bundle.js +++ b/src/grammar/grammar.ohm-bundle.js @@ -1 +1 @@ -'use strict';const ohm=(require('ohm-js').default || require('ohm-js'));const result=ohm.makeRecipe(["grammar",{"source":"Tact {\n\n // Starting point of the program\n Program = ProgramItem*\n ProgramItem = Struct\n | Contract\n | Primitive\n | StaticFunction\n | NativeFunction\n | ProgramImport\n | Trait\n | Constant\n ProgramImport = import stringLiteral \";\"\n\n // Built-in declarations\n Primitive = \"primitive\" Type \";\"\n\n // Static function\n StaticFunction = Function\n NativeFunction = nameAttribute \"(\" funcId \")\" FunctionAttribute* native id \"(\" ListOf \")\" \";\" --withVoid\n | nameAttribute \"(\" funcId \")\" FunctionAttribute* native id \"(\" ListOf \")\" \":\" Type \";\" --withType\n \n // Field declarations\n Type = typeLiteral \"?\" --optional\n | typeLiteral --required\n | \"map\" \"<\" typeLiteral (as id)? \",\" typeLiteral (as id)? \">\" --map\n | \"bounced\" \"<\" typeLiteral \">\" --bounced\n Field = id \":\" Type \";\" --default\n | id \":\" Type \"=\" Expression \";\" --defaultWithInit\n | id \":\" Type as id \";\" --withSerialization\n | id \":\" Type as id \"=\" Expression \";\" --withSerializationAndInit\n \n // Constant\n ConstantAttribute = virtual --virtual\n | override --override\n | abstract --abstract\n Constant = ConstantAttribute* ~fun const id \":\" Type \"=\" Expression \";\" --withValue\n | ConstantAttribute* ~fun const id \":\" Type \";\" --withEmpty\n\n // Struct\n Struct = \"struct\" typeLiteral \"{\" StructBody* \"}\" --originary\n | \"message\" typeLiteral \"{\" StructBody* \"}\" --message\n | \"message\" \"(\" integerLiteral \")\" typeLiteral \"{\" StructBody* \"}\" --messageWithId\n StructBody = Field\n\n // Contract\n Contract = ContractAttribute* contract id \"{\" ContractBody* \"}\" --simple\n | ContractAttribute* contract id with ListOf \"{\" ContractBody* \"}\" --withTraits\n ContractInit = \"init\" \"(\" ListOf \")\" \"{\" Statement* \"}\"\n ContractBody = Field\n | ContractInit\n | ReceiveFunction\n | Function\n | Constant\n \n // Trait\n Trait = ContractAttribute* trait id \"{\" TraitBody* \"}\" --originary\n | ContractAttribute* trait id with ListOf \"{\" TraitBody* \"}\" --withTraits\n TraitBody = Field\n | ReceiveFunction\n | Function\n | Constant\n\n // Contract attributes\n ContractAttribute = \"@interface\" \"(\" stringLiteral \")\" --interface\n\n // Function\n FunctionAttribute = \"get\" --getter\n | mutates --mutates\n | extends --extends\n | virtual --virtual\n | override --override\n | inline --inline\n | abstract --abstract\n Function = FunctionAttribute* fun id \"(\" ListOf \")\" \"{\" Statement* \"}\" --withVoid\n | FunctionAttribute* fun id \"(\" ListOf \")\" \":\" Type \"{\" Statement* \"}\" --withType\n | FunctionAttribute* fun id \"(\" ListOf \")\" \";\" --abstractVoid\n | FunctionAttribute* fun id \"(\" ListOf \")\" \":\" Type \";\" --abstractType\n FunctionArg = id \":\" Type\n \n ReceiveFunction = \"receive\" \"(\" FunctionArg \")\" \"{\" Statement* \"}\" --simple\n | \"receive\" \"(\" \")\" \"{\" Statement* \"}\" --empty\n | \"receive\" \"(\" stringLiteral \")\" \"{\" Statement* \"}\" --comment\n | \"bounced\" \"(\" FunctionArg \")\" \"{\" Statement* \"}\" --bounced\n | \"external\" \"(\" FunctionArg \")\" \"{\" Statement* \"}\" --externalSimple\n | \"external\" \"(\" stringLiteral \")\" \"{\" Statement* \"}\" --externalComment\n | \"external\" \"(\" \")\" \"{\" Statement* \"}\" --externalEmpty\n\n // Statements\n Statement = StatementLet\n | StatementBlock\n | StatementReturn\n | StatementExpression\n | StatementAssign\n | StatementAugmentedAssign\n | StatementCondition\n | StatementWhile\n | StatementRepeat\n | StatementUntil\n StatementBlock = \"{\" Statement* \"}\"\n StatementLet = let id \":\" Type \"=\" Expression \";\"\n StatementReturn = return Expression \";\" --withExpression\n | return \";\" --withoutExpression \n StatementExpression = Expression \";\"\n StatementAssign = LValue \"=\" Expression \";\"\n StatementAugmentedAssign = StatementAugmentedAssignAdd\n | StatementAugmentedAssignSub\n | StatementAugmentedAssignMul\n | StatementAugmentedAssignDiv\n | StatementAugmentedAssignRem\n StatementAugmentedAssignAdd = LValue \"+=\" Expression \";\"\n StatementAugmentedAssignSub = LValue \"-=\" Expression \";\"\n StatementAugmentedAssignMul = LValue \"*=\" Expression \";\"\n StatementAugmentedAssignDiv = LValue \"/=\" Expression \";\"\n StatementAugmentedAssignRem = LValue \"%=\" Expression \";\"\n StatementCondition = if Expression \"{\" Statement* \"}\" ~else --simple\n | if Expression \"{\" Statement* \"}\" else \"{\" Statement* \"}\" --withElse\n | if Expression \"{\" Statement* \"}\" else StatementCondition --withElseIf\n StatementWhile = while \"(\" Expression \")\" \"{\" Statement* \"}\"\n StatementRepeat = repeat \"(\" Expression \")\" \"{\" Statement* \"}\"\n StatementUntil = do \"{\" Statement* \"}\" until \"(\" Expression \")\" \";\"\n\n // L-value\n LValue = id \".\" LValue --more\n | id --single\n\n // Expressions\n Expression = 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 | integerLiteralDec // Order is important\n integerLiteralDec = digit+\n integerLiteralHex = \"0x\" hexDigit+\n | \"0X\" hexDigit+\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,8621]},null,[],["alt",{"sourceInterval":[8584,8621]},["app",{"sourceInterval":[8584,8601]},"integerLiteralHex",[]],["app",{"sourceInterval":[8604,8621]},"integerLiteralDec",[]]]],"integerLiteralDec":["define",{"sourceInterval":[8648,8674]},null,[],["plus",{"sourceInterval":[8668,8674]},["app",{"sourceInterval":[8668,8673]},"digit",[]]]],"integerLiteralHex":["define",{"sourceInterval":[8679,8752]},null,[],["alt",{"sourceInterval":[8699,8752]},["seq",{"sourceInterval":[8699,8713]},["terminal",{"sourceInterval":[8699,8703]},"0x"],["plus",{"sourceInterval":[8704,8713]},["app",{"sourceInterval":[8704,8712]},"hexDigit",[]]]],["seq",{"sourceInterval":[8738,8752]},["terminal",{"sourceInterval":[8738,8742]},"0X"],["plus",{"sourceInterval":[8743,8752]},["app",{"sourceInterval":[8743,8751]},"hexDigit",[]]]]]],"letterAsciiLC":["define",{"sourceInterval":[8773,8797]},null,[],["range",{"sourceInterval":[8789,8797]},"a","z"]],"letterAsciiUC":["define",{"sourceInterval":[8802,8826]},null,[],["range",{"sourceInterval":[8818,8826]},"A","Z"]],"letterAscii":["define",{"sourceInterval":[8831,8874]},null,[],["alt",{"sourceInterval":[8845,8874]},["app",{"sourceInterval":[8845,8858]},"letterAsciiLC",[]],["app",{"sourceInterval":[8861,8874]},"letterAsciiUC",[]]]],"letterComment":["define",{"sourceInterval":[8879,8938]},null,[],["alt",{"sourceInterval":[8895,8938]},["app",{"sourceInterval":[8895,8908]},"letterAsciiLC",[]],["app",{"sourceInterval":[8911,8924]},"letterAsciiUC",[]],["app",{"sourceInterval":[8927,8932]},"digit",[]],["terminal",{"sourceInterval":[8935,8938]},"_"]]],"idStart":["define",{"sourceInterval":[8962,8989]},null,[],["alt",{"sourceInterval":[8972,8989]},["app",{"sourceInterval":[8972,8983]},"letterAscii",[]],["terminal",{"sourceInterval":[8986,8989]},"_"]]],"idPart":["define",{"sourceInterval":[8994,9028]},null,[],["alt",{"sourceInterval":[9003,9028]},["app",{"sourceInterval":[9003,9014]},"letterAscii",[]],["app",{"sourceInterval":[9017,9022]},"digit",[]],["terminal",{"sourceInterval":[9025,9028]},"_"]]],"id":["define",{"sourceInterval":[9033,9071]},null,[],["seq",{"sourceInterval":[9038,9071]},["not",{"sourceInterval":[9038,9051]},["app",{"sourceInterval":[9039,9051]},"reservedWord",[]]],["lex",{"sourceInterval":[9052,9060]},["app",{"sourceInterval":[9053,9060]},"idStart",[]]],["lex",{"sourceInterval":[9061,9071]},["star",{"sourceInterval":[9063,9070]},["app",{"sourceInterval":[9063,9069]},"idPart",[]]]]]],"funcLetter":["define",{"sourceInterval":[9092,9153]},null,[],["alt",{"sourceInterval":[9105,9153]},["app",{"sourceInterval":[9105,9116]},"letterAscii",[]],["terminal",{"sourceInterval":[9119,9122]},"_"],["terminal",{"sourceInterval":[9125,9128]},"'"],["terminal",{"sourceInterval":[9131,9134]},"?"],["terminal",{"sourceInterval":[9137,9140]},"!"],["terminal",{"sourceInterval":[9143,9147]},"::"],["terminal",{"sourceInterval":[9150,9153]},"&"]]],"funcId":["define",{"sourceInterval":[9158,9200]},null,[],["seq",{"sourceInterval":[9167,9200]},["app",{"sourceInterval":[9167,9177]},"funcLetter",[]],["star",{"sourceInterval":[9178,9200]},["lex",{"sourceInterval":[9178,9199]},["alt",{"sourceInterval":[9180,9198]},["app",{"sourceInterval":[9180,9190]},"funcLetter",[]],["app",{"sourceInterval":[9193,9198]},"digit",[]]]]]]],"boolLiteral":["define",{"sourceInterval":[9226,9266]},null,[],["seq",{"sourceInterval":[9240,9266]},["alt",{"sourceInterval":[9241,9257]},["terminal",{"sourceInterval":[9241,9247]},"true"],["terminal",{"sourceInterval":[9250,9257]},"false"]],["not",{"sourceInterval":[9259,9266]},["app",{"sourceInterval":[9260,9266]},"idPart",[]]]]],"stringLiteralCharacter":["define",{"sourceInterval":[9294,9354]},null,[],["seq",{"sourceInterval":[9319,9354]},["not",{"sourceInterval":[9319,9350]},["alt",{"sourceInterval":[9321,9349]},["terminal",{"sourceInterval":[9321,9325]},"\""],["terminal",{"sourceInterval":[9328,9332]},"\\"],["app",{"sourceInterval":[9335,9349]},"lineTerminator",[]]]],["app",{"sourceInterval":[9351,9354]},"any",[]]]],"stringLiteral":["define",{"sourceInterval":[9359,9408]},null,[],["seq",{"sourceInterval":[9375,9408]},["terminal",{"sourceInterval":[9375,9379]},"\""],["star",{"sourceInterval":[9380,9403]},["app",{"sourceInterval":[9380,9402]},"stringLiteralCharacter",[]]],["terminal",{"sourceInterval":[9404,9408]},"\""]]],"keyword":["define",{"sourceInterval":[9461,9974]},null,[],["alt",{"sourceInterval":[9471,9974]},["app",{"sourceInterval":[9471,9474]},"fun",[]],["app",{"sourceInterval":[9490,9493]},"let",[]],["app",{"sourceInterval":[9508,9514]},"return",[]],["app",{"sourceInterval":[9530,9536]},"extend",[]],["app",{"sourceInterval":[9552,9558]},"native",[]],["app",{"sourceInterval":[9574,9580]},"public",[]],["app",{"sourceInterval":[9596,9600]},"null",[]],["app",{"sourceInterval":[9616,9618]},"if",[]],["app",{"sourceInterval":[9634,9638]},"else",[]],["app",{"sourceInterval":[9654,9659]},"while",[]],["app",{"sourceInterval":[9675,9681]},"repeat",[]],["app",{"sourceInterval":[9697,9699]},"do",[]],["app",{"sourceInterval":[9715,9720]},"until",[]],["app",{"sourceInterval":[9736,9738]},"as",[]],["app",{"sourceInterval":[9755,9762]},"mutates",[]],["app",{"sourceInterval":[9777,9784]},"extends",[]],["app",{"sourceInterval":[9799,9805]},"import",[]],["app",{"sourceInterval":[9820,9824]},"with",[]],["app",{"sourceInterval":[9839,9844]},"trait",[]],["app",{"sourceInterval":[9859,9865]},"initOf",[]],["app",{"sourceInterval":[9880,9888]},"override",[]],["app",{"sourceInterval":[9903,9911]},"abstract",[]],["app",{"sourceInterval":[9926,9933]},"virtual",[]],["app",{"sourceInterval":[9948,9954]},"inline",[]],["app",{"sourceInterval":[9969,9974]},"const",[]]]],"contract":["define",{"sourceInterval":[9979,10008]},null,[],["seq",{"sourceInterval":[9990,10008]},["terminal",{"sourceInterval":[9990,10000]},"contract"],["not",{"sourceInterval":[10001,10008]},["app",{"sourceInterval":[10002,10008]},"idPart",[]]]]],"let":["define",{"sourceInterval":[10013,10032]},null,[],["seq",{"sourceInterval":[10019,10032]},["terminal",{"sourceInterval":[10019,10024]},"let"],["not",{"sourceInterval":[10025,10032]},["app",{"sourceInterval":[10026,10032]},"idPart",[]]]]],"fun":["define",{"sourceInterval":[10037,10056]},null,[],["seq",{"sourceInterval":[10043,10056]},["terminal",{"sourceInterval":[10043,10048]},"fun"],["not",{"sourceInterval":[10049,10056]},["app",{"sourceInterval":[10050,10056]},"idPart",[]]]]],"return":["define",{"sourceInterval":[10061,10086]},null,[],["seq",{"sourceInterval":[10070,10086]},["terminal",{"sourceInterval":[10070,10078]},"return"],["not",{"sourceInterval":[10079,10086]},["app",{"sourceInterval":[10080,10086]},"idPart",[]]]]],"extend":["define",{"sourceInterval":[10091,10116]},null,[],["seq",{"sourceInterval":[10100,10116]},["terminal",{"sourceInterval":[10100,10108]},"extend"],["not",{"sourceInterval":[10109,10116]},["app",{"sourceInterval":[10110,10116]},"idPart",[]]]]],"native":["define",{"sourceInterval":[10121,10146]},null,[],["seq",{"sourceInterval":[10130,10146]},["terminal",{"sourceInterval":[10130,10138]},"native"],["not",{"sourceInterval":[10139,10146]},["app",{"sourceInterval":[10140,10146]},"idPart",[]]]]],"public":["define",{"sourceInterval":[10151,10176]},null,[],["seq",{"sourceInterval":[10160,10176]},["terminal",{"sourceInterval":[10160,10168]},"public"],["not",{"sourceInterval":[10169,10176]},["app",{"sourceInterval":[10170,10176]},"idPart",[]]]]],"null":["define",{"sourceInterval":[10181,10202]},null,[],["seq",{"sourceInterval":[10188,10202]},["terminal",{"sourceInterval":[10188,10194]},"null"],["not",{"sourceInterval":[10195,10202]},["app",{"sourceInterval":[10196,10202]},"idPart",[]]]]],"if":["define",{"sourceInterval":[10207,10224]},null,[],["seq",{"sourceInterval":[10212,10224]},["terminal",{"sourceInterval":[10212,10216]},"if"],["not",{"sourceInterval":[10217,10224]},["app",{"sourceInterval":[10218,10224]},"idPart",[]]]]],"else":["define",{"sourceInterval":[10229,10250]},null,[],["seq",{"sourceInterval":[10236,10250]},["terminal",{"sourceInterval":[10236,10242]},"else"],["not",{"sourceInterval":[10243,10250]},["app",{"sourceInterval":[10244,10250]},"idPart",[]]]]],"while":["define",{"sourceInterval":[10255,10278]},null,[],["seq",{"sourceInterval":[10263,10278]},["terminal",{"sourceInterval":[10263,10270]},"while"],["not",{"sourceInterval":[10271,10278]},["app",{"sourceInterval":[10272,10278]},"idPart",[]]]]],"repeat":["define",{"sourceInterval":[10283,10308]},null,[],["seq",{"sourceInterval":[10292,10308]},["terminal",{"sourceInterval":[10292,10300]},"repeat"],["not",{"sourceInterval":[10301,10308]},["app",{"sourceInterval":[10302,10308]},"idPart",[]]]]],"do":["define",{"sourceInterval":[10313,10330]},null,[],["seq",{"sourceInterval":[10318,10330]},["terminal",{"sourceInterval":[10318,10322]},"do"],["not",{"sourceInterval":[10323,10330]},["app",{"sourceInterval":[10324,10330]},"idPart",[]]]]],"until":["define",{"sourceInterval":[10335,10358]},null,[],["seq",{"sourceInterval":[10343,10358]},["terminal",{"sourceInterval":[10343,10350]},"until"],["not",{"sourceInterval":[10351,10358]},["app",{"sourceInterval":[10352,10358]},"idPart",[]]]]],"as":["define",{"sourceInterval":[10363,10380]},null,[],["seq",{"sourceInterval":[10368,10380]},["terminal",{"sourceInterval":[10368,10372]},"as"],["not",{"sourceInterval":[10373,10380]},["app",{"sourceInterval":[10374,10380]},"idPart",[]]]]],"mutates":["define",{"sourceInterval":[10385,10412]},null,[],["seq",{"sourceInterval":[10395,10412]},["terminal",{"sourceInterval":[10395,10404]},"mutates"],["not",{"sourceInterval":[10405,10412]},["app",{"sourceInterval":[10406,10412]},"idPart",[]]]]],"extends":["define",{"sourceInterval":[10417,10444]},null,[],["seq",{"sourceInterval":[10427,10444]},["terminal",{"sourceInterval":[10427,10436]},"extends"],["not",{"sourceInterval":[10437,10444]},["app",{"sourceInterval":[10438,10444]},"idPart",[]]]]],"import":["define",{"sourceInterval":[10449,10474]},null,[],["seq",{"sourceInterval":[10458,10474]},["terminal",{"sourceInterval":[10458,10466]},"import"],["not",{"sourceInterval":[10467,10474]},["app",{"sourceInterval":[10468,10474]},"idPart",[]]]]],"with":["define",{"sourceInterval":[10479,10500]},null,[],["seq",{"sourceInterval":[10486,10500]},["terminal",{"sourceInterval":[10486,10492]},"with"],["not",{"sourceInterval":[10493,10500]},["app",{"sourceInterval":[10494,10500]},"idPart",[]]]]],"trait":["define",{"sourceInterval":[10505,10528]},null,[],["seq",{"sourceInterval":[10513,10528]},["terminal",{"sourceInterval":[10513,10520]},"trait"],["not",{"sourceInterval":[10521,10528]},["app",{"sourceInterval":[10522,10528]},"idPart",[]]]]],"initOf":["define",{"sourceInterval":[10533,10558]},null,[],["seq",{"sourceInterval":[10542,10558]},["terminal",{"sourceInterval":[10542,10550]},"initOf"],["not",{"sourceInterval":[10551,10558]},["app",{"sourceInterval":[10552,10558]},"idPart",[]]]]],"virtual":["define",{"sourceInterval":[10563,10590]},null,[],["seq",{"sourceInterval":[10573,10590]},["terminal",{"sourceInterval":[10573,10582]},"virtual"],["not",{"sourceInterval":[10583,10590]},["app",{"sourceInterval":[10584,10590]},"idPart",[]]]]],"override":["define",{"sourceInterval":[10595,10624]},null,[],["seq",{"sourceInterval":[10606,10624]},["terminal",{"sourceInterval":[10606,10616]},"override"],["not",{"sourceInterval":[10617,10624]},["app",{"sourceInterval":[10618,10624]},"idPart",[]]]]],"inline":["define",{"sourceInterval":[10629,10654]},null,[],["seq",{"sourceInterval":[10638,10654]},["terminal",{"sourceInterval":[10638,10646]},"inline"],["not",{"sourceInterval":[10647,10654]},["app",{"sourceInterval":[10648,10654]},"idPart",[]]]]],"const":["define",{"sourceInterval":[10659,10682]},null,[],["seq",{"sourceInterval":[10667,10682]},["terminal",{"sourceInterval":[10667,10674]},"const"],["not",{"sourceInterval":[10675,10682]},["app",{"sourceInterval":[10676,10682]},"idPart",[]]]]],"abstract":["define",{"sourceInterval":[10687,10716]},null,[],["seq",{"sourceInterval":[10698,10716]},["terminal",{"sourceInterval":[10698,10708]},"abstract"],["not",{"sourceInterval":[10709,10716]},["app",{"sourceInterval":[10710,10716]},"idPart",[]]]]],"nameAttribute":["define",{"sourceInterval":[10740,10763]},null,[],["terminal",{"sourceInterval":[10756,10763]},"@name"]],"reservedWord":["define",{"sourceInterval":[10785,10807]},null,[],["app",{"sourceInterval":[10800,10807]},"keyword",[]]],"space":["extend",{"sourceInterval":[10829,10862]},null,[],["alt",{"sourceInterval":[10838,10862]},["app",{"sourceInterval":[10838,10845]},"comment",[]],["app",{"sourceInterval":[10848,10862]},"lineTerminator",[]]]],"comment":["define",{"sourceInterval":[10867,10913]},null,[],["alt",{"sourceInterval":[10877,10913]},["app",{"sourceInterval":[10877,10893]},"multiLineComment",[]],["app",{"sourceInterval":[10896,10913]},"singleLineComment",[]]]],"lineTerminator":["define",{"sourceInterval":[10918,10968]},null,[],["alt",{"sourceInterval":[10935,10968]},["terminal",{"sourceInterval":[10935,10939]},"\n"],["terminal",{"sourceInterval":[10942,10946]},"\r"],["terminal",{"sourceInterval":[10949,10957]},"\u2028"],["terminal",{"sourceInterval":[10960,10968]},"\u2029"]]],"multiLineComment":["define",{"sourceInterval":[10973,11014]},null,[],["seq",{"sourceInterval":[10992,11014]},["terminal",{"sourceInterval":[10992,10996]},"/*"],["star",{"sourceInterval":[10997,11009]},["seq",{"sourceInterval":[10998,11007]},["not",{"sourceInterval":[10998,11003]},["terminal",{"sourceInterval":[10999,11003]},"*/"]],["app",{"sourceInterval":[11004,11007]},"any",[]]]],["terminal",{"sourceInterval":[11010,11014]},"*/"]]],"singleLineComment":["define",{"sourceInterval":[11019,11066]},null,[],["seq",{"sourceInterval":[11039,11066]},["terminal",{"sourceInterval":[11039,11043]},"//"],["star",{"sourceInterval":[11044,11066]},["seq",{"sourceInterval":[11045,11064]},["not",{"sourceInterval":[11045,11060]},["app",{"sourceInterval":[11046,11060]},"lineTerminator",[]]],["app",{"sourceInterval":[11061,11064]},"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 | integerLiteralDec // Order is important\n integerLiteralDec = digit+\n integerLiteralHex = \"0x\" hexDigit+\n | \"0X\" hexDigit+\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,8621]},null,[],["alt",{"sourceInterval":[8584,8621]},["app",{"sourceInterval":[8584,8601]},"integerLiteralHex",[]],["app",{"sourceInterval":[8604,8621]},"integerLiteralDec",[]]]],"integerLiteralDec":["define",{"sourceInterval":[8648,8674]},null,[],["plus",{"sourceInterval":[8668,8674]},["app",{"sourceInterval":[8668,8673]},"digit",[]]]],"integerLiteralHex":["define",{"sourceInterval":[8679,8752]},null,[],["alt",{"sourceInterval":[8699,8752]},["seq",{"sourceInterval":[8699,8713]},["terminal",{"sourceInterval":[8699,8703]},"0x"],["plus",{"sourceInterval":[8704,8713]},["app",{"sourceInterval":[8704,8712]},"hexDigit",[]]]],["seq",{"sourceInterval":[8738,8752]},["terminal",{"sourceInterval":[8738,8742]},"0X"],["plus",{"sourceInterval":[8743,8752]},["app",{"sourceInterval":[8743,8751]},"hexDigit",[]]]]]],"letterAsciiLC":["define",{"sourceInterval":[8773,8797]},null,[],["range",{"sourceInterval":[8789,8797]},"a","z"]],"letterAsciiUC":["define",{"sourceInterval":[8802,8826]},null,[],["range",{"sourceInterval":[8818,8826]},"A","Z"]],"letterAscii":["define",{"sourceInterval":[8831,8874]},null,[],["alt",{"sourceInterval":[8845,8874]},["app",{"sourceInterval":[8845,8858]},"letterAsciiLC",[]],["app",{"sourceInterval":[8861,8874]},"letterAsciiUC",[]]]],"letterComment":["define",{"sourceInterval":[8879,8938]},null,[],["alt",{"sourceInterval":[8895,8938]},["app",{"sourceInterval":[8895,8908]},"letterAsciiLC",[]],["app",{"sourceInterval":[8911,8924]},"letterAsciiUC",[]],["app",{"sourceInterval":[8927,8932]},"digit",[]],["terminal",{"sourceInterval":[8935,8938]},"_"]]],"idStart":["define",{"sourceInterval":[8962,8989]},null,[],["alt",{"sourceInterval":[8972,8989]},["app",{"sourceInterval":[8972,8983]},"letterAscii",[]],["terminal",{"sourceInterval":[8986,8989]},"_"]]],"idPart":["define",{"sourceInterval":[8994,9028]},null,[],["alt",{"sourceInterval":[9003,9028]},["app",{"sourceInterval":[9003,9014]},"letterAscii",[]],["app",{"sourceInterval":[9017,9022]},"digit",[]],["terminal",{"sourceInterval":[9025,9028]},"_"]]],"id":["define",{"sourceInterval":[9033,9071]},null,[],["seq",{"sourceInterval":[9038,9071]},["not",{"sourceInterval":[9038,9051]},["app",{"sourceInterval":[9039,9051]},"reservedWord",[]]],["lex",{"sourceInterval":[9052,9060]},["app",{"sourceInterval":[9053,9060]},"idStart",[]]],["lex",{"sourceInterval":[9061,9071]},["star",{"sourceInterval":[9063,9070]},["app",{"sourceInterval":[9063,9069]},"idPart",[]]]]]],"funcLetter":["define",{"sourceInterval":[9092,9153]},null,[],["alt",{"sourceInterval":[9105,9153]},["app",{"sourceInterval":[9105,9116]},"letterAscii",[]],["terminal",{"sourceInterval":[9119,9122]},"_"],["terminal",{"sourceInterval":[9125,9128]},"'"],["terminal",{"sourceInterval":[9131,9134]},"?"],["terminal",{"sourceInterval":[9137,9140]},"!"],["terminal",{"sourceInterval":[9143,9147]},"::"],["terminal",{"sourceInterval":[9150,9153]},"&"]]],"funcId":["define",{"sourceInterval":[9158,9200]},null,[],["seq",{"sourceInterval":[9167,9200]},["app",{"sourceInterval":[9167,9177]},"funcLetter",[]],["star",{"sourceInterval":[9178,9200]},["lex",{"sourceInterval":[9178,9199]},["alt",{"sourceInterval":[9180,9198]},["app",{"sourceInterval":[9180,9190]},"funcLetter",[]],["app",{"sourceInterval":[9193,9198]},"digit",[]]]]]]],"boolLiteral":["define",{"sourceInterval":[9226,9266]},null,[],["seq",{"sourceInterval":[9240,9266]},["alt",{"sourceInterval":[9241,9257]},["terminal",{"sourceInterval":[9241,9247]},"true"],["terminal",{"sourceInterval":[9250,9257]},"false"]],["not",{"sourceInterval":[9259,9266]},["app",{"sourceInterval":[9260,9266]},"idPart",[]]]]],"stringLiteralCharacter":["define",{"sourceInterval":[9294,9354]},null,[],["seq",{"sourceInterval":[9319,9354]},["not",{"sourceInterval":[9319,9350]},["alt",{"sourceInterval":[9321,9349]},["terminal",{"sourceInterval":[9321,9325]},"\""],["terminal",{"sourceInterval":[9328,9332]},"\\"],["app",{"sourceInterval":[9335,9349]},"lineTerminator",[]]]],["app",{"sourceInterval":[9351,9354]},"any",[]]]],"stringLiteral":["define",{"sourceInterval":[9359,9408]},null,[],["seq",{"sourceInterval":[9375,9408]},["terminal",{"sourceInterval":[9375,9379]},"\""],["star",{"sourceInterval":[9380,9403]},["app",{"sourceInterval":[9380,9402]},"stringLiteralCharacter",[]]],["terminal",{"sourceInterval":[9404,9408]},"\""]]],"keyword":["define",{"sourceInterval":[9461,9974]},null,[],["alt",{"sourceInterval":[9471,9974]},["app",{"sourceInterval":[9471,9474]},"fun",[]],["app",{"sourceInterval":[9490,9493]},"let",[]],["app",{"sourceInterval":[9508,9514]},"return",[]],["app",{"sourceInterval":[9530,9536]},"extend",[]],["app",{"sourceInterval":[9552,9558]},"native",[]],["app",{"sourceInterval":[9574,9580]},"public",[]],["app",{"sourceInterval":[9596,9600]},"null",[]],["app",{"sourceInterval":[9616,9618]},"if",[]],["app",{"sourceInterval":[9634,9638]},"else",[]],["app",{"sourceInterval":[9654,9659]},"while",[]],["app",{"sourceInterval":[9675,9681]},"repeat",[]],["app",{"sourceInterval":[9697,9699]},"do",[]],["app",{"sourceInterval":[9715,9720]},"until",[]],["app",{"sourceInterval":[9736,9738]},"as",[]],["app",{"sourceInterval":[9755,9762]},"mutates",[]],["app",{"sourceInterval":[9777,9784]},"extends",[]],["app",{"sourceInterval":[9799,9805]},"import",[]],["app",{"sourceInterval":[9820,9824]},"with",[]],["app",{"sourceInterval":[9839,9844]},"trait",[]],["app",{"sourceInterval":[9859,9865]},"initOf",[]],["app",{"sourceInterval":[9880,9888]},"override",[]],["app",{"sourceInterval":[9903,9911]},"abstract",[]],["app",{"sourceInterval":[9926,9933]},"virtual",[]],["app",{"sourceInterval":[9948,9954]},"inline",[]],["app",{"sourceInterval":[9969,9974]},"const",[]]]],"contract":["define",{"sourceInterval":[9979,10008]},null,[],["seq",{"sourceInterval":[9990,10008]},["terminal",{"sourceInterval":[9990,10000]},"contract"],["not",{"sourceInterval":[10001,10008]},["app",{"sourceInterval":[10002,10008]},"idPart",[]]]]],"let":["define",{"sourceInterval":[10013,10032]},null,[],["seq",{"sourceInterval":[10019,10032]},["terminal",{"sourceInterval":[10019,10024]},"let"],["not",{"sourceInterval":[10025,10032]},["app",{"sourceInterval":[10026,10032]},"idPart",[]]]]],"fun":["define",{"sourceInterval":[10037,10056]},null,[],["seq",{"sourceInterval":[10043,10056]},["terminal",{"sourceInterval":[10043,10048]},"fun"],["not",{"sourceInterval":[10049,10056]},["app",{"sourceInterval":[10050,10056]},"idPart",[]]]]],"return":["define",{"sourceInterval":[10061,10086]},null,[],["seq",{"sourceInterval":[10070,10086]},["terminal",{"sourceInterval":[10070,10078]},"return"],["not",{"sourceInterval":[10079,10086]},["app",{"sourceInterval":[10080,10086]},"idPart",[]]]]],"extend":["define",{"sourceInterval":[10091,10116]},null,[],["seq",{"sourceInterval":[10100,10116]},["terminal",{"sourceInterval":[10100,10108]},"extend"],["not",{"sourceInterval":[10109,10116]},["app",{"sourceInterval":[10110,10116]},"idPart",[]]]]],"native":["define",{"sourceInterval":[10121,10146]},null,[],["seq",{"sourceInterval":[10130,10146]},["terminal",{"sourceInterval":[10130,10138]},"native"],["not",{"sourceInterval":[10139,10146]},["app",{"sourceInterval":[10140,10146]},"idPart",[]]]]],"public":["define",{"sourceInterval":[10151,10176]},null,[],["seq",{"sourceInterval":[10160,10176]},["terminal",{"sourceInterval":[10160,10168]},"public"],["not",{"sourceInterval":[10169,10176]},["app",{"sourceInterval":[10170,10176]},"idPart",[]]]]],"null":["define",{"sourceInterval":[10181,10202]},null,[],["seq",{"sourceInterval":[10188,10202]},["terminal",{"sourceInterval":[10188,10194]},"null"],["not",{"sourceInterval":[10195,10202]},["app",{"sourceInterval":[10196,10202]},"idPart",[]]]]],"if":["define",{"sourceInterval":[10207,10224]},null,[],["seq",{"sourceInterval":[10212,10224]},["terminal",{"sourceInterval":[10212,10216]},"if"],["not",{"sourceInterval":[10217,10224]},["app",{"sourceInterval":[10218,10224]},"idPart",[]]]]],"else":["define",{"sourceInterval":[10229,10250]},null,[],["seq",{"sourceInterval":[10236,10250]},["terminal",{"sourceInterval":[10236,10242]},"else"],["not",{"sourceInterval":[10243,10250]},["app",{"sourceInterval":[10244,10250]},"idPart",[]]]]],"while":["define",{"sourceInterval":[10255,10278]},null,[],["seq",{"sourceInterval":[10263,10278]},["terminal",{"sourceInterval":[10263,10270]},"while"],["not",{"sourceInterval":[10271,10278]},["app",{"sourceInterval":[10272,10278]},"idPart",[]]]]],"repeat":["define",{"sourceInterval":[10283,10308]},null,[],["seq",{"sourceInterval":[10292,10308]},["terminal",{"sourceInterval":[10292,10300]},"repeat"],["not",{"sourceInterval":[10301,10308]},["app",{"sourceInterval":[10302,10308]},"idPart",[]]]]],"do":["define",{"sourceInterval":[10313,10330]},null,[],["seq",{"sourceInterval":[10318,10330]},["terminal",{"sourceInterval":[10318,10322]},"do"],["not",{"sourceInterval":[10323,10330]},["app",{"sourceInterval":[10324,10330]},"idPart",[]]]]],"until":["define",{"sourceInterval":[10335,10358]},null,[],["seq",{"sourceInterval":[10343,10358]},["terminal",{"sourceInterval":[10343,10350]},"until"],["not",{"sourceInterval":[10351,10358]},["app",{"sourceInterval":[10352,10358]},"idPart",[]]]]],"as":["define",{"sourceInterval":[10363,10380]},null,[],["seq",{"sourceInterval":[10368,10380]},["terminal",{"sourceInterval":[10368,10372]},"as"],["not",{"sourceInterval":[10373,10380]},["app",{"sourceInterval":[10374,10380]},"idPart",[]]]]],"mutates":["define",{"sourceInterval":[10385,10412]},null,[],["seq",{"sourceInterval":[10395,10412]},["terminal",{"sourceInterval":[10395,10404]},"mutates"],["not",{"sourceInterval":[10405,10412]},["app",{"sourceInterval":[10406,10412]},"idPart",[]]]]],"extends":["define",{"sourceInterval":[10417,10444]},null,[],["seq",{"sourceInterval":[10427,10444]},["terminal",{"sourceInterval":[10427,10436]},"extends"],["not",{"sourceInterval":[10437,10444]},["app",{"sourceInterval":[10438,10444]},"idPart",[]]]]],"import":["define",{"sourceInterval":[10449,10474]},null,[],["seq",{"sourceInterval":[10458,10474]},["terminal",{"sourceInterval":[10458,10466]},"import"],["not",{"sourceInterval":[10467,10474]},["app",{"sourceInterval":[10468,10474]},"idPart",[]]]]],"with":["define",{"sourceInterval":[10479,10500]},null,[],["seq",{"sourceInterval":[10486,10500]},["terminal",{"sourceInterval":[10486,10492]},"with"],["not",{"sourceInterval":[10493,10500]},["app",{"sourceInterval":[10494,10500]},"idPart",[]]]]],"trait":["define",{"sourceInterval":[10505,10528]},null,[],["seq",{"sourceInterval":[10513,10528]},["terminal",{"sourceInterval":[10513,10520]},"trait"],["not",{"sourceInterval":[10521,10528]},["app",{"sourceInterval":[10522,10528]},"idPart",[]]]]],"initOf":["define",{"sourceInterval":[10533,10558]},null,[],["seq",{"sourceInterval":[10542,10558]},["terminal",{"sourceInterval":[10542,10550]},"initOf"],["not",{"sourceInterval":[10551,10558]},["app",{"sourceInterval":[10552,10558]},"idPart",[]]]]],"virtual":["define",{"sourceInterval":[10563,10590]},null,[],["seq",{"sourceInterval":[10573,10590]},["terminal",{"sourceInterval":[10573,10582]},"virtual"],["not",{"sourceInterval":[10583,10590]},["app",{"sourceInterval":[10584,10590]},"idPart",[]]]]],"override":["define",{"sourceInterval":[10595,10624]},null,[],["seq",{"sourceInterval":[10606,10624]},["terminal",{"sourceInterval":[10606,10616]},"override"],["not",{"sourceInterval":[10617,10624]},["app",{"sourceInterval":[10618,10624]},"idPart",[]]]]],"inline":["define",{"sourceInterval":[10629,10654]},null,[],["seq",{"sourceInterval":[10638,10654]},["terminal",{"sourceInterval":[10638,10646]},"inline"],["not",{"sourceInterval":[10647,10654]},["app",{"sourceInterval":[10648,10654]},"idPart",[]]]]],"const":["define",{"sourceInterval":[10659,10682]},null,[],["seq",{"sourceInterval":[10667,10682]},["terminal",{"sourceInterval":[10667,10674]},"const"],["not",{"sourceInterval":[10675,10682]},["app",{"sourceInterval":[10676,10682]},"idPart",[]]]]],"abstract":["define",{"sourceInterval":[10687,10716]},null,[],["seq",{"sourceInterval":[10698,10716]},["terminal",{"sourceInterval":[10698,10708]},"abstract"],["not",{"sourceInterval":[10709,10716]},["app",{"sourceInterval":[10710,10716]},"idPart",[]]]]],"nameAttribute":["define",{"sourceInterval":[10740,10763]},null,[],["terminal",{"sourceInterval":[10756,10763]},"@name"]],"reservedWord":["define",{"sourceInterval":[10785,10807]},null,[],["app",{"sourceInterval":[10800,10807]},"keyword",[]]],"space":["extend",{"sourceInterval":[10829,10862]},null,[],["alt",{"sourceInterval":[10838,10862]},["app",{"sourceInterval":[10838,10845]},"comment",[]],["app",{"sourceInterval":[10848,10862]},"lineTerminator",[]]]],"comment":["define",{"sourceInterval":[10867,10913]},null,[],["alt",{"sourceInterval":[10877,10913]},["app",{"sourceInterval":[10877,10893]},"multiLineComment",[]],["app",{"sourceInterval":[10896,10913]},"singleLineComment",[]]]],"lineTerminator":["define",{"sourceInterval":[10918,10968]},null,[],["alt",{"sourceInterval":[10935,10968]},["terminal",{"sourceInterval":[10935,10939]},"\n"],["terminal",{"sourceInterval":[10942,10946]},"\r"],["terminal",{"sourceInterval":[10949,10957]},"\u2028"],["terminal",{"sourceInterval":[10960,10968]},"\u2029"]]],"multiLineComment":["define",{"sourceInterval":[10973,11014]},null,[],["seq",{"sourceInterval":[10992,11014]},["terminal",{"sourceInterval":[10992,10996]},"/*"],["star",{"sourceInterval":[10997,11009]},["seq",{"sourceInterval":[10998,11007]},["not",{"sourceInterval":[10998,11003]},["terminal",{"sourceInterval":[10999,11003]},"*/"]],["app",{"sourceInterval":[11004,11007]},"any",[]]]],["terminal",{"sourceInterval":[11010,11014]},"*/"]]],"singleLineComment":["define",{"sourceInterval":[11019,11066]},null,[],["seq",{"sourceInterval":[11039,11066]},["terminal",{"sourceInterval":[11039,11043]},"//"],["star",{"sourceInterval":[11044,11066]},["seq",{"sourceInterval":[11045,11064]},["not",{"sourceInterval":[11045,11060]},["app",{"sourceInterval":[11046,11060]},"lineTerminator",[]]],["app",{"sourceInterval":[11061,11064]},"any",[]]]]]]}]);module.exports=result; diff --git a/src/test/feature-integer-literals.spec.ts b/src/test/feature-integer-literals.spec.ts new file mode 100644 index 000000000..efb14c0b8 --- /dev/null +++ b/src/test/feature-integer-literals.spec.ts @@ -0,0 +1,28 @@ +import { toNano } from 'ton-core'; +import { ContractSystem } from '@tact-lang/emulator'; +import { __DANGER_resetNodeId } from '../grammar/ast'; +import { IntegerLiteralsTester } from './features/output/integer-literals_IntegerLiteralsTester'; + +describe('feature-integer-literals', () => { + beforeEach(() => { + __DANGER_resetNodeId(); + }); + it('should implement integer literals correctly', async () => { + // Init + let system = await ContractSystem.create(); + let treasure = system.treasure('treasure'); + let contract = system.open(await IntegerLiteralsTester.fromInit()); + await contract.send(treasure, { value: toNano('10') }, null); + await system.run(); + + // Check methods + expect(await contract.getDecLiteral1()).toEqual(123n); + expect(await contract.getDecLiteral2()).toEqual(-123n); + + expect(await contract.getHexLiteral1()).toEqual(0x123n); + expect(await contract.getHexLiteral2()).toEqual(-0x123n); + + expect(await contract.getBinLiteral1()).toEqual(0b101010n); + expect(await contract.getBinLiteral2()).toEqual(-0b101010n); + }); +}); diff --git a/src/test/features/integer-literals.tact b/src/test/features/integer-literals.tact new file mode 100644 index 000000000..fcf4d5bff --- /dev/null +++ b/src/test/features/integer-literals.tact @@ -0,0 +1,34 @@ +contract IntegerLiteralsTester { + + init() { + + } + + receive() { + // Deploy + } + + get fun decLiteral1(): Int { + return 123; + } + + get fun decLiteral2(): Int { + return -123; + } + + get fun hexLiteral1(): Int { + return 0x123; + } + + get fun hexLiteral2(): Int { + return -0x123; + } + + get fun binLiteral1(): Int { + return 0b101010; + } + + get fun binLiteral2(): Int { + return -0b101010; + } +} \ No newline at end of file diff --git a/src/test/features/output/integer-literals_IntegerLiteralsTester.abi b/src/test/features/output/integer-literals_IntegerLiteralsTester.abi new file mode 100644 index 000000000..8952bb3b9 --- /dev/null +++ b/src/test/features/output/integer-literals_IntegerLiteralsTester.abi @@ -0,0 +1 @@ +{"name":"IntegerLiteralsTester","types":[{"name":"StateInit","header":null,"fields":[{"name":"code","type":{"kind":"simple","type":"cell","optional":false}},{"name":"data","type":{"kind":"simple","type":"cell","optional":false}}]},{"name":"Context","header":null,"fields":[{"name":"bounced","type":{"kind":"simple","type":"bool","optional":false}},{"name":"sender","type":{"kind":"simple","type":"address","optional":false}},{"name":"value","type":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"raw","type":{"kind":"simple","type":"slice","optional":false}}]},{"name":"SendParameters","header":null,"fields":[{"name":"bounce","type":{"kind":"simple","type":"bool","optional":false}},{"name":"to","type":{"kind":"simple","type":"address","optional":false}},{"name":"value","type":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"mode","type":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"body","type":{"kind":"simple","type":"cell","optional":true}},{"name":"code","type":{"kind":"simple","type":"cell","optional":true}},{"name":"data","type":{"kind":"simple","type":"cell","optional":true}}]}],"receivers":[{"receiver":"internal","message":{"kind":"empty"}}],"getters":[{"name":"decLiteral1","arguments":[],"returnType":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"decLiteral2","arguments":[],"returnType":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"hexLiteral1","arguments":[],"returnType":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"hexLiteral2","arguments":[],"returnType":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"binLiteral1","arguments":[],"returnType":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"binLiteral2","arguments":[],"returnType":{"kind":"simple","type":"int","optional":false,"format":257}}],"errors":{"2":{"message":"Stack undeflow"},"3":{"message":"Stack overflow"},"4":{"message":"Integer overflow"},"5":{"message":"Integer out of expected range"},"6":{"message":"Invalid opcode"},"7":{"message":"Type check error"},"8":{"message":"Cell overflow"},"9":{"message":"Cell underflow"},"10":{"message":"Dictionary error"},"13":{"message":"Out of gas error"},"32":{"message":"Method ID not found"},"34":{"message":"Action is invalid or not supported"},"37":{"message":"Not enough TON"},"38":{"message":"Not enough extra-currencies"},"128":{"message":"Null reference exception"},"129":{"message":"Invalid serialization prefix"},"130":{"message":"Invalid incoming message"},"131":{"message":"Constraints error"},"132":{"message":"Access denied"},"133":{"message":"Contract stopped"},"134":{"message":"Invalid argument"},"135":{"message":"Code of a contract was not found"},"136":{"message":"Invalid address"},"137":{"message":"Masterchain support is not enabled for this contract"}},"interfaces":["org.ton.introspection.v0","org.ton.abi.ipfs.v0","org.ton.deploy.lazy.v0","org.ton.debug.v0","org.ton.chain.workchain.v0"]} \ No newline at end of file diff --git a/src/test/features/output/integer-literals_IntegerLiteralsTester.code.boc b/src/test/features/output/integer-literals_IntegerLiteralsTester.code.boc new file mode 100644 index 0000000000000000000000000000000000000000..7b671de23fff923d099c3752a78087d13a33f1c9 GIT binary patch literal 472 zcmdn`ZcY&+lPn_x;~54oGcy)$Sj_m#fl=YQ zXCou`u1^m-6s~h~DKxVD-}UK2XEP^ABqSi1IiKZ6BGZqg+cuH6Z9Y9{GC1+Wnej|L z<0*!dZ$qS5m>3mU*%)jXCmGZ~C{Voac}RY$0ni-zdj}X8uX`R;+%OR+&cx`!&H+@( z&BMgM-EVjL?DRGRDNZK-txmTgY%T`2#(#H#1fw!g8807@5EcQ-Uyg>z^D{B#2?#Q< zG*mO}SbednAm)v2tj@Y>xt2GU*SuP#)0ztAUNhCzPN~_fba}n*-;YU_O$7>}2c#R) zlc$`Euv+J?y6JFJf%KKR@29#>`*=L~@;%nb!)icX)BU10`<*Vf;+vK`CGEu$Ccafa zZ`<6qF_aPlTGk45hNu`5|F#p-5NAjOJt8i_P`WAav2)mTwshk~pT3G+O}jqrb2{7i z^039uQ&ikOn>;Vu8eaB2M6}g-`jS*tHPgju?&{*sCP%}}zI!Mz2&~%o*5$$_21cM= r$`HFGfp%#zngE5bF#brs#9%Nn_rVVhU}S(Jq4Tzl3{b%}2Bus9D4@By literal 0 HcmV?d00001 diff --git a/src/test/features/output/integer-literals_IntegerLiteralsTester.code.fc b/src/test/features/output/integer-literals_IntegerLiteralsTester.code.fc new file mode 100644 index 000000000..3cd757b79 --- /dev/null +++ b/src/test/features/output/integer-literals_IntegerLiteralsTester.code.fc @@ -0,0 +1,162 @@ +#pragma version =0.4.3; +#pragma allow-post-modification; +#pragma compute-asm-ltr; + +#include "integer-literals_IntegerLiteralsTester.headers.fc"; +#include "integer-literals_IntegerLiteralsTester.stdlib.fc"; +#include "integer-literals_IntegerLiteralsTester.storage.fc"; + +;; +;; Contract IntegerLiteralsTester functions +;; + +tuple $IntegerLiteralsTester$_contract_init() impure inline_ref { + tuple $self = null(); + return $self; +} + +(tuple, int) $IntegerLiteralsTester$_fun_decLiteral1(tuple $self) impure inline_ref { + var ($self) = $self; + return ($self, 123); +} + +(tuple, int) $IntegerLiteralsTester$_fun_decLiteral2(tuple $self) impure inline_ref { + var ($self) = $self; + return ($self, (- 123)); +} + +(tuple, int) $IntegerLiteralsTester$_fun_hexLiteral1(tuple $self) impure inline_ref { + var ($self) = $self; + return ($self, 291); +} + +(tuple, int) $IntegerLiteralsTester$_fun_hexLiteral2(tuple $self) impure inline_ref { + var ($self) = $self; + return ($self, (- 291)); +} + +(tuple, int) $IntegerLiteralsTester$_fun_binLiteral1(tuple $self) impure inline_ref { + var ($self) = $self; + return ($self, 42); +} + +(tuple, int) $IntegerLiteralsTester$_fun_binLiteral2(tuple $self) impure inline_ref { + var ($self) = $self; + return ($self, (- 42)); +} + +;; +;; Receivers of a Contract IntegerLiteralsTester +;; + +((tuple), ()) %$IntegerLiteralsTester$_internal_empty(tuple $self) impure inline { + var $self = $self; + return ($self, ()); +} + +;; +;; Get methods of a Contract IntegerLiteralsTester +;; + +_ %decLiteral1() method_id(102042) { + var self = $IntegerLiteralsTester$_contract_load(); + var res = self~$IntegerLiteralsTester$_fun_decLiteral1(); + return res; +} + +_ %decLiteral2() method_id(114425) { + var self = $IntegerLiteralsTester$_contract_load(); + var res = self~$IntegerLiteralsTester$_fun_decLiteral2(); + return res; +} + +_ %hexLiteral1() method_id(76310) { + var self = $IntegerLiteralsTester$_contract_load(); + var res = self~$IntegerLiteralsTester$_fun_hexLiteral1(); + return res; +} + +_ %hexLiteral2() method_id(72309) { + var self = $IntegerLiteralsTester$_contract_load(); + var res = self~$IntegerLiteralsTester$_fun_hexLiteral2(); + return res; +} + +_ %binLiteral1() method_id(116259) { + var self = $IntegerLiteralsTester$_contract_load(); + var res = self~$IntegerLiteralsTester$_fun_binLiteral1(); + return res; +} + +_ %binLiteral2() method_id(128576) { + var self = $IntegerLiteralsTester$_contract_load(); + var res = self~$IntegerLiteralsTester$_fun_binLiteral2(); + return res; +} + +_ supported_interfaces() method_id { + return ( + "org.ton.introspection.v0"H >> 128, + "org.ton.abi.ipfs.v0"H >> 128, + "org.ton.deploy.lazy.v0"H >> 128, + "org.ton.debug.v0"H >> 128, + "org.ton.chain.workchain.v0"H >> 128 + ); +} + +_ get_abi_ipfs() method_id { + return "ipfs://QmVmyo6powuj49BDo3NwkUwouAXS9zFRRcZ6drqt3LUcot"; +} + +_ lazy_deployment_completed() method_id { + return get_data().begin_parse().load_int(1); +} + +;; +;; Routing of a Contract IntegerLiteralsTester +;; + +(tuple, int) $IntegerLiteralsTester$_contract_router_internal(tuple self, int msg_bounced, slice in_msg) impure inline_ref { + ;; Handle bounced messages + if (msg_bounced) { + return (self, true); + } + + ;; Parse incoming message + int op = 0; + if (slice_bits(in_msg) >= 32) { + op = in_msg.preload_uint(32); + } + + + ;; Receive empty message + if ((op == 0) & (slice_bits(in_msg) <= 32)) { + self~%$IntegerLiteralsTester$_internal_empty(); + return (self, true); + } + + return (self, false); +} + +() recv_internal(int msg_value, cell in_msg_cell, slice in_msg) impure { + + ;; Context + var cs = in_msg_cell.begin_parse(); + var msg_flags = cs~load_uint(4); + var msg_bounced = -(msg_flags & 1); + slice msg_sender_addr = __tact_verify_address(cs~load_msg_addr()); + __tact_context = (msg_bounced, msg_sender_addr, msg_value, cs); + __tact_context_sender = msg_sender_addr; + + ;; Load contract data + var self = $IntegerLiteralsTester$_contract_load(); + + ;; Handle operation + int handled = self~$IntegerLiteralsTester$_contract_router_internal(msg_bounced, in_msg); + + ;; Throw if not handled + throw_unless(130, handled); + + ;; Persist state + $IntegerLiteralsTester$_contract_store(self); +} diff --git a/src/test/features/output/integer-literals_IntegerLiteralsTester.code.fif b/src/test/features/output/integer-literals_IntegerLiteralsTester.code.fif new file mode 100644 index 000000000..c76a3ee0a --- /dev/null +++ b/src/test/features/output/integer-literals_IntegerLiteralsTester.code.fif @@ -0,0 +1,193 @@ +PROGRAM{ + DECLPROC __tact_verify_address + DECLPROC $IntegerLiteralsTester$_contract_init + DECLPROC $IntegerLiteralsTester$_contract_load + DECLPROC $IntegerLiteralsTester$_contract_store + DECLPROC $IntegerLiteralsTester$_fun_decLiteral1 + DECLPROC $IntegerLiteralsTester$_fun_decLiteral2 + DECLPROC $IntegerLiteralsTester$_fun_hexLiteral1 + DECLPROC $IntegerLiteralsTester$_fun_hexLiteral2 + DECLPROC $IntegerLiteralsTester$_fun_binLiteral1 + DECLPROC $IntegerLiteralsTester$_fun_binLiteral2 + DECLPROC %$IntegerLiteralsTester$_internal_empty + 102042 DECLMETHOD %decLiteral1 + 114425 DECLMETHOD %decLiteral2 + 76310 DECLMETHOD %hexLiteral1 + 72309 DECLMETHOD %hexLiteral2 + 116259 DECLMETHOD %binLiteral1 + 128576 DECLMETHOD %binLiteral2 + 113617 DECLMETHOD supported_interfaces + 121275 DECLMETHOD get_abi_ipfs + 115390 DECLMETHOD lazy_deployment_completed + DECLPROC $IntegerLiteralsTester$_contract_router_internal + DECLPROC recv_internal + DECLGLOBVAR __tact_context + DECLGLOBVAR __tact_context_sender + DECLGLOBVAR __tact_context_sys + DECLGLOBVAR __tact_randomized + __tact_verify_address PROCINLINE:<{ + DUP + SBITS + 267 PUSHINT + EQUAL + 136 THROWIFNOT + DUP + 11 PLDU + DUP + 1279 PUSHINT + EQUAL + 137 THROWIF + 10 PUSHPOW2 + EQUAL + 136 THROWIFNOT + }> + $IntegerLiteralsTester$_contract_init PROCREF:<{ + PUSHNULL + }> + $IntegerLiteralsTester$_contract_load PROCREF:<{ + c4 PUSH + CTOS + LDREF + SWAP + __tact_context_sys SETGLOB + 1 LDI + DROP + IFJMP:<{ + PUSHNULL + }> + MYADDR + 11 PLDU + 10 PUSHPOW2 + EQUAL + 137 THROWIFNOT + $IntegerLiteralsTester$_contract_init INLINECALLDICT + }> + $IntegerLiteralsTester$_contract_store PROCINLINE:<{ + DROP + NEWC + __tact_context_sys GETGLOB + SWAP + STREF + TRUE + SWAP + 1 STI + ENDC + c4 POP + }> + $IntegerLiteralsTester$_fun_decLiteral1 PROCREF:<{ + 123 PUSHINT + }> + $IntegerLiteralsTester$_fun_decLiteral2 PROCREF:<{ + -123 PUSHINT + }> + $IntegerLiteralsTester$_fun_hexLiteral1 PROCREF:<{ + 291 PUSHINT + }> + $IntegerLiteralsTester$_fun_hexLiteral2 PROCREF:<{ + -291 PUSHINT + }> + $IntegerLiteralsTester$_fun_binLiteral1 PROCREF:<{ + 42 PUSHINT + }> + $IntegerLiteralsTester$_fun_binLiteral2 PROCREF:<{ + -42 PUSHINT + }> + %$IntegerLiteralsTester$_internal_empty PROCINLINE:<{ + }> + %decLiteral1 PROC:<{ + $IntegerLiteralsTester$_contract_load INLINECALLDICT + $IntegerLiteralsTester$_fun_decLiteral1 INLINECALLDICT + NIP + }> + %decLiteral2 PROC:<{ + $IntegerLiteralsTester$_contract_load INLINECALLDICT + $IntegerLiteralsTester$_fun_decLiteral2 INLINECALLDICT + NIP + }> + %hexLiteral1 PROC:<{ + $IntegerLiteralsTester$_contract_load INLINECALLDICT + $IntegerLiteralsTester$_fun_hexLiteral1 INLINECALLDICT + NIP + }> + %hexLiteral2 PROC:<{ + $IntegerLiteralsTester$_contract_load INLINECALLDICT + $IntegerLiteralsTester$_fun_hexLiteral2 INLINECALLDICT + NIP + }> + %binLiteral1 PROC:<{ + $IntegerLiteralsTester$_contract_load INLINECALLDICT + $IntegerLiteralsTester$_fun_binLiteral1 INLINECALLDICT + NIP + }> + %binLiteral2 PROC:<{ + $IntegerLiteralsTester$_contract_load INLINECALLDICT + $IntegerLiteralsTester$_fun_binLiteral2 INLINECALLDICT + NIP + }> + supported_interfaces PROC:<{ + 123515602279859691144772641439386770278 PUSHINT + 209801025412363888721030803524359905849 PUSHINT + 42980537499636128163026532310500881091 PUSHINT + 36993126140238121407019133875791708966 PUSHINT + 209474421377847335869795010607481022628 PUSHINT + }> + get_abi_ipfs PROC:<{ + x{697066733a2f2f516d566d796f36706f77756a343942446f334e776b55776f75415853397a465252635a3664727174334c55636f74} PUSHSLICE + }> + lazy_deployment_completed PROC:<{ + c4 PUSH + CTOS + 1 LDI + SWAP + }> + $IntegerLiteralsTester$_contract_router_internal PROCREF:<{ + SWAP + IFJMP:<{ + DROP + TRUE + }> + 0 PUSHINT + OVER + SBITS + 31 GTINT + IF:<{ + DROP + DUP + 32 PLDU + }> + 0 EQINT + SWAP + SBITS + 33 LESSINT + AND + IFJMP:<{ + %$IntegerLiteralsTester$_internal_empty INLINECALLDICT + TRUE + }> + FALSE + }> + recv_internal PROC:<{ + SWAP + CTOS + 4 LDU + SWAP + 1 PUSHINT + AND + NEGATE + SWAP + LDMSGADDR + SWAP + __tact_verify_address INLINECALLDICT + s0 s4 s2 PUXCPU + s0 s3 XCHG + 4 TUPLE + __tact_context SETGLOB + s0 s2 XCHG + __tact_context_sender SETGLOB + $IntegerLiteralsTester$_contract_load INLINECALLDICT + -ROT + $IntegerLiteralsTester$_contract_router_internal INLINECALLDICT + 130 THROWIFNOT + $IntegerLiteralsTester$_contract_store INLINECALLDICT + }> +}END>c diff --git a/src/test/features/output/integer-literals_IntegerLiteralsTester.code.rev.fif b/src/test/features/output/integer-literals_IntegerLiteralsTester.code.rev.fif new file mode 100644 index 000000000..d94dd5fe9 --- /dev/null +++ b/src/test/features/output/integer-literals_IntegerLiteralsTester.code.rev.fif @@ -0,0 +1,181 @@ +PROGRAM{ + DECLPROC recv_internal; + DECLPROC ?fun_72309; + DECLPROC ?fun_76310; + DECLPROC ?fun_102042; + DECLPROC supported_interfaces; + DECLPROC ?fun_114425; + DECLPROC lazy_deployment_completed; + DECLPROC ?fun_116259; + DECLPROC get_abi_ipfs; + DECLPROC ?fun_128576; + DECLPROC ?fun_ref_026cdd3ff17e82bb; + DECLPROC ?fun_ref_26dd4850c2973b9d; + DECLPROC ?fun_ref_32a8f017ec2ceafb; + DECLPROC ?fun_ref_364de9562794919e; + DECLPROC ?fun_ref_4065f3bb1951fe13; + DECLPROC ?fun_ref_553f7869b01170d9; + DECLPROC ?fun_ref_7a4cfefa28b39727; + DECLPROC ?fun_ref_a05e0042bce184fb; + DECLPROC ?fun_ref_c0ca23818e24f3c9; + recv_internal PROC:<{ + s0 s1 XCHG + CTOS + 4 LDU + s0 s1 XCHG + 1 PUSHINT + AND + -1 MULCONST + s0 s1 XCHG + LDMSGADDR + s0 s1 XCHG + s0 PUSH + SBITS + 267 PUSHINT + EQUAL + 136 THROWIFNOT + s0 PUSH + 11 PLDU + s0 PUSH + 1279 PUSHINT + EQUAL + 137 THROWIF + 10 PUSHPOW2 + EQUAL + 136 THROWIFNOT + s0 s6 s4 PUXCPU + s0 s3 XCHG + 4 TUPLE + 1 SETGLOBVAR + s0 s2 XCHG + 2 SETGLOBVAR + ?fun_ref_a05e0042bce184fb INLINECALLDICT + ROTREV + ?fun_ref_364de9562794919e INLINECALLDICT + 130 THROWIFNOT + s0 POP + NEWC + 3 GETGLOBVAR + s0 s1 XCHG + STREF + -1 PUSHINT + s0 s1 XCHG + 1 STI + ENDC + c4 POP + }> + ?fun_72309 PROC:<{ + ?fun_ref_a05e0042bce184fb INLINECALLDICT + ?fun_ref_26dd4850c2973b9d INLINECALLDICT + s1 POP + }> + ?fun_76310 PROC:<{ + ?fun_ref_a05e0042bce184fb INLINECALLDICT + ?fun_ref_7a4cfefa28b39727 INLINECALLDICT + s1 POP + }> + ?fun_102042 PROC:<{ + ?fun_ref_a05e0042bce184fb INLINECALLDICT + ?fun_ref_553f7869b01170d9 INLINECALLDICT + s1 POP + }> + supported_interfaces PROC:<{ + 123515602279859691144772641439386770278 PUSHINT + 209801025412363888721030803524359905849 PUSHINT + 42980537499636128163026532310500881091 PUSHINT + 36993126140238121407019133875791708966 PUSHINT + 209474421377847335869795010607481022628 PUSHINT + }> + ?fun_114425 PROC:<{ + ?fun_ref_a05e0042bce184fb INLINECALLDICT + ?fun_ref_32a8f017ec2ceafb INLINECALLDICT + s1 POP + }> + lazy_deployment_completed PROC:<{ + c4 PUSH + CTOS + 1 LDI + s0 s1 XCHG + }> + ?fun_116259 PROC:<{ + ?fun_ref_a05e0042bce184fb INLINECALLDICT + ?fun_ref_026cdd3ff17e82bb INLINECALLDICT + s1 POP + }> + get_abi_ipfs PROC:<{ + x{697066733A2F2F516D566D796F36706F77756A343942446F334E776B55776F75415853397A465252635A3664727174334C55636F7482_} PUSHSLICE + }> + ?fun_128576 PROC:<{ + ?fun_ref_a05e0042bce184fb INLINECALLDICT + ?fun_ref_4065f3bb1951fe13 INLINECALLDICT + s1 POP + }> + ?fun_ref_026cdd3ff17e82bb PROCREF:<{ + 42 PUSHINT + }> + ?fun_ref_26dd4850c2973b9d PROCREF:<{ + -291 PUSHINT + }> + ?fun_ref_32a8f017ec2ceafb PROCREF:<{ + -123 PUSHINT + }> + ?fun_ref_364de9562794919e PROCREF:<{ + s0 s1 XCHG + <{ + s0 POP + -1 PUSHINT + }> PUSHCONT + IFJMP + 0 PUSHINT + s1 PUSH + SBITS + 31 GTINT + <{ + s0 POP + s0 PUSH + 32 PLDU + }> PUSHCONT + IF + 0 EQINT + s0 s1 XCHG + SBITS + 33 LESSINT + AND + <{ + -1 PUSHINT + }> PUSHCONT + IFJMP + 0 PUSHINT + }> + ?fun_ref_4065f3bb1951fe13 PROCREF:<{ + -42 PUSHINT + }> + ?fun_ref_553f7869b01170d9 PROCREF:<{ + 123 PUSHINT + }> + ?fun_ref_7a4cfefa28b39727 PROCREF:<{ + 291 PUSHINT + }> + ?fun_ref_a05e0042bce184fb PROCREF:<{ + c4 PUSH + CTOS + LDREF + s0 s1 XCHG + 3 SETGLOBVAR + 1 LDI + s0 POP + <{ + NULL + }> PUSHCONT + IFJMP + MYADDR + 11 PLDU + 10 PUSHPOW2 + EQUAL + 137 THROWIFNOT + ?fun_ref_c0ca23818e24f3c9 INLINECALLDICT + }> + ?fun_ref_c0ca23818e24f3c9 PROCREF:<{ + NULL + }> +}END>c \ No newline at end of file diff --git a/src/test/features/output/integer-literals_IntegerLiteralsTester.headers.fc b/src/test/features/output/integer-literals_IntegerLiteralsTester.headers.fc new file mode 100644 index 000000000..212cd1070 --- /dev/null +++ b/src/test/features/output/integer-literals_IntegerLiteralsTester.headers.fc @@ -0,0 +1,34 @@ +;; +;; Header files for IntegerLiteralsTester +;; NOTE: declarations are sorted for optimal order +;; + +;; __tact_verify_address +slice __tact_verify_address(slice address) inline; + +;; $IntegerLiteralsTester$_contract_init +tuple $IntegerLiteralsTester$_contract_init() impure inline_ref; + +;; $IntegerLiteralsTester$_contract_load +tuple $IntegerLiteralsTester$_contract_load() impure inline_ref; + +;; $IntegerLiteralsTester$_contract_store +() $IntegerLiteralsTester$_contract_store(tuple v) impure inline; + +;; $IntegerLiteralsTester$_fun_decLiteral1 +(tuple, int) $IntegerLiteralsTester$_fun_decLiteral1(tuple $self) impure inline_ref; + +;; $IntegerLiteralsTester$_fun_decLiteral2 +(tuple, int) $IntegerLiteralsTester$_fun_decLiteral2(tuple $self) impure inline_ref; + +;; $IntegerLiteralsTester$_fun_hexLiteral1 +(tuple, int) $IntegerLiteralsTester$_fun_hexLiteral1(tuple $self) impure inline_ref; + +;; $IntegerLiteralsTester$_fun_hexLiteral2 +(tuple, int) $IntegerLiteralsTester$_fun_hexLiteral2(tuple $self) impure inline_ref; + +;; $IntegerLiteralsTester$_fun_binLiteral1 +(tuple, int) $IntegerLiteralsTester$_fun_binLiteral1(tuple $self) impure inline_ref; + +;; $IntegerLiteralsTester$_fun_binLiteral2 +(tuple, int) $IntegerLiteralsTester$_fun_binLiteral2(tuple $self) impure inline_ref; diff --git a/src/test/features/output/integer-literals_IntegerLiteralsTester.md b/src/test/features/output/integer-literals_IntegerLiteralsTester.md new file mode 100644 index 000000000..d2eb7aff4 --- /dev/null +++ b/src/test/features/output/integer-literals_IntegerLiteralsTester.md @@ -0,0 +1,59 @@ +# TACT Compilation Report +Contract: IntegerLiteralsTester +BOC Size: 472 bytes + +# Types +Total Types: 3 + +## StateInit +TLB: `_ code:^cell data:^cell = StateInit` +Signature: `StateInit{code:^cell,data:^cell}` + +## Context +TLB: `_ bounced:bool sender:address value:int257 raw:^slice = Context` +Signature: `Context{bounced:bool,sender:address,value:int257,raw:^slice}` + +## SendParameters +TLB: `_ bounce:bool to:address value:int257 mode:int257 body:Maybe ^cell code:Maybe ^cell data:Maybe ^cell = SendParameters` +Signature: `SendParameters{bounce:bool,to:address,value:int257,mode:int257,body:Maybe ^cell,code:Maybe ^cell,data:Maybe ^cell}` + +# Get Methods +Total Get Methods: 6 + +## decLiteral1 + +## decLiteral2 + +## hexLiteral1 + +## hexLiteral2 + +## binLiteral1 + +## binLiteral2 + +# Error Codes +2: Stack undeflow +3: Stack overflow +4: Integer overflow +5: Integer out of expected range +6: Invalid opcode +7: Type check error +8: Cell overflow +9: Cell underflow +10: Dictionary error +13: Out of gas error +32: Method ID not found +34: Action is invalid or not supported +37: Not enough TON +38: Not enough extra-currencies +128: Null reference exception +129: Invalid serialization prefix +130: Invalid incoming message +131: Constraints error +132: Access denied +133: Contract stopped +134: Invalid argument +135: Code of a contract was not found +136: Invalid address +137: Masterchain support is not enabled for this contract \ No newline at end of file diff --git a/src/test/features/output/integer-literals_IntegerLiteralsTester.pkg b/src/test/features/output/integer-literals_IntegerLiteralsTester.pkg new file mode 100644 index 000000000..11bef1f0a --- /dev/null +++ b/src/test/features/output/integer-literals_IntegerLiteralsTester.pkg @@ -0,0 +1 @@ +{"name":"IntegerLiteralsTester","code":"te6ccgECHQEAAcwAART/APSkE/S88sgLAQIBYgIDApLQAdDTAwFxsKMB+kABINdJgQELuvLgiCDXCwoggQT/uvLQiYMJuvLgiFRQUwNvBPhhAvhi2zxZ2zzy4IIwyPhDAcx/AcoAye1UGgQCASAFBgA8AZIwf+BwIddJwh+VMCDXCx/ewAAB10nBIbCRf+BwAgFIBwgCASALDAIPt067Z5tnhjAaCQIPtULbZ5tnhjAaCgAGgf7dAAaBASMCASANDgIBIBMUAg+101tnm2eGMBoPAgFuEBEABIB7ALir0YJwXOw9XSyuex6E7DnWSoUbZoJwndY1LStkfLMi068t/fFiOYJwIFXAG4BnY5TOWDquRyWyw4JwG9Sd75VFlvHHU9PeBVnDJoJwnZdOWrNOy3M6DpZtlGbopAIOqvnbPNs8MRoSAASAhQIBIBUWAg+2yBtnm2eGMBobAgFIFxgAdbJu40NWlwZnM6Ly9RbVZteW82cG93dWo0OUJEbzNOd2tVd291QVhTOXpGUlJjWjZkcnF0M0xVY290ggABCqvu1E0NIAAQIOqiPbPNs8MRoZAASAKgE07UTQ1AH4Y9IAMJFt4Pgo1wsKgwm68uCJ2zwcAASA1gACbQ==","abi":"{\"name\":\"IntegerLiteralsTester\",\"types\":[{\"name\":\"StateInit\",\"header\":null,\"fields\":[{\"name\":\"code\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":false}},{\"name\":\"data\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":false}}]},{\"name\":\"Context\",\"header\":null,\"fields\":[{\"name\":\"bounced\",\"type\":{\"kind\":\"simple\",\"type\":\"bool\",\"optional\":false}},{\"name\":\"sender\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":false}},{\"name\":\"value\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"raw\",\"type\":{\"kind\":\"simple\",\"type\":\"slice\",\"optional\":false}}]},{\"name\":\"SendParameters\",\"header\":null,\"fields\":[{\"name\":\"bounce\",\"type\":{\"kind\":\"simple\",\"type\":\"bool\",\"optional\":false}},{\"name\":\"to\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":false}},{\"name\":\"value\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"mode\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"body\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":true}},{\"name\":\"code\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":true}},{\"name\":\"data\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":true}}]}],\"receivers\":[{\"receiver\":\"internal\",\"message\":{\"kind\":\"empty\"}}],\"getters\":[{\"name\":\"decLiteral1\",\"arguments\":[],\"returnType\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"decLiteral2\",\"arguments\":[],\"returnType\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"hexLiteral1\",\"arguments\":[],\"returnType\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"hexLiteral2\",\"arguments\":[],\"returnType\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"binLiteral1\",\"arguments\":[],\"returnType\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"binLiteral2\",\"arguments\":[],\"returnType\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}}],\"errors\":{\"2\":{\"message\":\"Stack undeflow\"},\"3\":{\"message\":\"Stack overflow\"},\"4\":{\"message\":\"Integer overflow\"},\"5\":{\"message\":\"Integer out of expected range\"},\"6\":{\"message\":\"Invalid opcode\"},\"7\":{\"message\":\"Type check error\"},\"8\":{\"message\":\"Cell overflow\"},\"9\":{\"message\":\"Cell underflow\"},\"10\":{\"message\":\"Dictionary error\"},\"13\":{\"message\":\"Out of gas error\"},\"32\":{\"message\":\"Method ID not found\"},\"34\":{\"message\":\"Action is invalid or not supported\"},\"37\":{\"message\":\"Not enough TON\"},\"38\":{\"message\":\"Not enough extra-currencies\"},\"128\":{\"message\":\"Null reference exception\"},\"129\":{\"message\":\"Invalid serialization prefix\"},\"130\":{\"message\":\"Invalid incoming message\"},\"131\":{\"message\":\"Constraints error\"},\"132\":{\"message\":\"Access denied\"},\"133\":{\"message\":\"Contract stopped\"},\"134\":{\"message\":\"Invalid argument\"},\"135\":{\"message\":\"Code of a contract was not found\"},\"136\":{\"message\":\"Invalid address\"},\"137\":{\"message\":\"Masterchain support is not enabled for this contract\"}},\"interfaces\":[\"org.ton.introspection.v0\",\"org.ton.abi.ipfs.v0\",\"org.ton.deploy.lazy.v0\",\"org.ton.debug.v0\",\"org.ton.chain.workchain.v0\"]}","init":{"kind":"direct","args":[],"prefix":{"bits":1,"value":0},"deployment":{"kind":"system-cell","system":"te6cckECHwEAAdYAAQHAAQEFobyzAgEU/wD0pBP0vPLICwMCAWIbBAIBIBYFAgEgDwYCASAJBwIPtsgbZ5tnhjAdCAAEgNYCASALCgB1sm7jQ1aXBmczovL1FtVm15bzZwb3d1ajQ5QkRvM053a1V3b3VBWFM5ekZSUmNaNmRycXQzTFVjb3SCACAUgODAIOqiPbPNs8MR0NAASAKgAQqr7tRNDSAAECASAUEAIBbhMRAg6q+ds82zwxHRIABICFALir0YJwXOw9XSyuex6E7DnWSoUbZoJwndY1LStkfLMi068t/fFiOYJwIFXAG4BnY5TOWDquRyWyw4JwG9Sd75VFlvHHU9PeBVnDJoJwnZdOWrNOy3M6DpZtlGbopAIPtdNbZ5tnhjAdFQAEgHsCAUgZFwIPtULbZ5tnhjAdGAAGgQEjAg+3Trtnm2eGMB0aAAaB/t0CktAB0NMDAXGwowH6QAEg10mBAQu68uCIINcLCiCBBP+68tCJgwm68uCIVFBTA28E+GEC+GLbPFnbPPLggjDI+EMBzH8BygDJ7VQdHAA8AZIwf+BwIddJwh+VMCDXCx/ewAAB10nBIbCRf+BwATTtRNDUAfhj0gAwkW3g+CjXCwqDCbry4InbPB4AAm0QTcC0"}},"sources":{"src/test/features/integer-literals.tact":"Y29udHJhY3QgSW50ZWdlckxpdGVyYWxzVGVzdGVyIHsKCiAgICBpbml0KCkgewogICAgICAgIAogICAgfQogICAgCiAgICByZWNlaXZlKCkgewogICAgICAgIC8vIERlcGxveQogICAgfQoKICAgIGdldCBmdW4gZGVjTGl0ZXJhbDEoKTogSW50IHsKICAgICAgICByZXR1cm4gMTIzOwogICAgfQoKICAgIGdldCBmdW4gZGVjTGl0ZXJhbDIoKTogSW50IHsKICAgICAgICByZXR1cm4gLTEyMzsKICAgIH0KCiAgICBnZXQgZnVuIGhleExpdGVyYWwxKCk6IEludCB7CiAgICAgICAgcmV0dXJuIDB4MTIzOwogICAgfQoKICAgIGdldCBmdW4gaGV4TGl0ZXJhbDIoKTogSW50IHsKICAgICAgICByZXR1cm4gLTB4MTIzOwogICAgfQoKICAgIGdldCBmdW4gYmluTGl0ZXJhbDEoKTogSW50IHsKICAgICAgICByZXR1cm4gMGIxMDEwMTA7CiAgICB9CgogICAgZ2V0IGZ1biBiaW5MaXRlcmFsMigpOiBJbnQgewogICAgICAgIHJldHVybiAtMGIxMDEwMTA7CiAgICB9Cn0="},"compiler":{"name":"tact","version":"invalid","parameters":"{\"entrypoint\":\"./src/test/features/integer-literals.tact\",\"options\":{\"debug\":true}}"}} \ No newline at end of file diff --git a/src/test/features/output/integer-literals_IntegerLiteralsTester.stdlib.fc b/src/test/features/output/integer-literals_IntegerLiteralsTester.stdlib.fc new file mode 100644 index 000000000..b987818a0 --- /dev/null +++ b/src/test/features/output/integer-literals_IntegerLiteralsTester.stdlib.fc @@ -0,0 +1,12 @@ +global (int, slice, int, slice) __tact_context; +global slice __tact_context_sender; +global cell __tact_context_sys; +global int __tact_randomized; + +slice __tact_verify_address(slice address) inline { + throw_unless(136, address.slice_bits() == 267); + var h = address.preload_uint(11); + throw_if(137, h == 1279); + throw_unless(136, h == 1024); + return address; +} \ No newline at end of file diff --git a/src/test/features/output/integer-literals_IntegerLiteralsTester.storage.fc b/src/test/features/output/integer-literals_IntegerLiteralsTester.storage.fc new file mode 100644 index 000000000..fd570364f --- /dev/null +++ b/src/test/features/output/integer-literals_IntegerLiteralsTester.storage.fc @@ -0,0 +1,23 @@ +;; +;; Type: IntegerLiteralsTester +;; + +tuple $IntegerLiteralsTester$_contract_load() impure inline_ref { + slice $sc = get_data().begin_parse(); + __tact_context_sys = $sc~load_ref(); + int $loaded = $sc~load_int(1); + if ($loaded) { + return null(); + } else { + ;; Allow only workchain deployments + throw_unless(137, my_address().preload_uint(11) == 1024); + return $IntegerLiteralsTester$_contract_init(); + } +} + +() $IntegerLiteralsTester$_contract_store(tuple v) impure inline { + builder b = begin_cell(); + b = b.store_ref(__tact_context_sys); + b = b.store_int(true, 1); + set_data(b.end_cell()); +} \ No newline at end of file diff --git a/src/test/features/output/integer-literals_IntegerLiteralsTester.ts b/src/test/features/output/integer-literals_IntegerLiteralsTester.ts new file mode 100644 index 000000000..cbac06fe3 --- /dev/null +++ b/src/test/features/output/integer-literals_IntegerLiteralsTester.ts @@ -0,0 +1,344 @@ +import { + Cell, + Slice, + Address, + Builder, + beginCell, + ComputeError, + TupleItem, + TupleReader, + Dictionary, + contractAddress, + ContractProvider, + Sender, + Contract, + ContractABI, + ABIType, + ABIGetter, + ABIReceiver, + TupleBuilder, + DictionaryValue +} from 'ton-core'; + +export type StateInit = { + $$type: 'StateInit'; + code: Cell; + data: Cell; +} + +export function storeStateInit(src: StateInit) { + return (builder: Builder) => { + let b_0 = builder; + b_0.storeRef(src.code); + b_0.storeRef(src.data); + }; +} + +export function loadStateInit(slice: Slice) { + let sc_0 = slice; + let _code = sc_0.loadRef(); + let _data = sc_0.loadRef(); + return { $$type: 'StateInit' as const, code: _code, data: _data }; +} + +function loadTupleStateInit(source: TupleReader) { + let _code = source.readCell(); + let _data = source.readCell(); + return { $$type: 'StateInit' as const, code: _code, data: _data }; +} + +function storeTupleStateInit(source: StateInit) { + let builder = new TupleBuilder(); + builder.writeCell(source.code); + builder.writeCell(source.data); + return builder.build(); +} + +function dictValueParserStateInit(): DictionaryValue { + return { + serialize: (src, buidler) => { + buidler.storeRef(beginCell().store(storeStateInit(src)).endCell()); + }, + parse: (src) => { + return loadStateInit(src.loadRef().beginParse()); + } + } +} + +export type Context = { + $$type: 'Context'; + bounced: boolean; + sender: Address; + value: bigint; + raw: Cell; +} + +export function storeContext(src: Context) { + return (builder: Builder) => { + let b_0 = builder; + b_0.storeBit(src.bounced); + b_0.storeAddress(src.sender); + b_0.storeInt(src.value, 257); + b_0.storeRef(src.raw); + }; +} + +export function loadContext(slice: Slice) { + let sc_0 = slice; + let _bounced = sc_0.loadBit(); + let _sender = sc_0.loadAddress(); + let _value = sc_0.loadIntBig(257); + let _raw = sc_0.loadRef(); + return { $$type: 'Context' as const, bounced: _bounced, sender: _sender, value: _value, raw: _raw }; +} + +function loadTupleContext(source: TupleReader) { + let _bounced = source.readBoolean(); + let _sender = source.readAddress(); + let _value = source.readBigNumber(); + let _raw = source.readCell(); + return { $$type: 'Context' as const, bounced: _bounced, sender: _sender, value: _value, raw: _raw }; +} + +function storeTupleContext(source: Context) { + let builder = new TupleBuilder(); + builder.writeBoolean(source.bounced); + builder.writeAddress(source.sender); + builder.writeNumber(source.value); + builder.writeSlice(source.raw); + return builder.build(); +} + +function dictValueParserContext(): DictionaryValue { + return { + serialize: (src, buidler) => { + buidler.storeRef(beginCell().store(storeContext(src)).endCell()); + }, + parse: (src) => { + return loadContext(src.loadRef().beginParse()); + } + } +} + +export type SendParameters = { + $$type: 'SendParameters'; + bounce: boolean; + to: Address; + value: bigint; + mode: bigint; + body: Cell | null; + code: Cell | null; + data: Cell | null; +} + +export function storeSendParameters(src: SendParameters) { + return (builder: Builder) => { + let b_0 = builder; + b_0.storeBit(src.bounce); + b_0.storeAddress(src.to); + b_0.storeInt(src.value, 257); + b_0.storeInt(src.mode, 257); + if (src.body !== null && src.body !== undefined) { b_0.storeBit(true).storeRef(src.body); } else { b_0.storeBit(false); } + if (src.code !== null && src.code !== undefined) { b_0.storeBit(true).storeRef(src.code); } else { b_0.storeBit(false); } + if (src.data !== null && src.data !== undefined) { b_0.storeBit(true).storeRef(src.data); } else { b_0.storeBit(false); } + }; +} + +export function loadSendParameters(slice: Slice) { + let sc_0 = slice; + let _bounce = sc_0.loadBit(); + let _to = sc_0.loadAddress(); + let _value = sc_0.loadIntBig(257); + let _mode = sc_0.loadIntBig(257); + let _body = sc_0.loadBit() ? sc_0.loadRef() : null; + let _code = sc_0.loadBit() ? sc_0.loadRef() : null; + let _data = sc_0.loadBit() ? sc_0.loadRef() : null; + return { $$type: 'SendParameters' as const, bounce: _bounce, to: _to, value: _value, mode: _mode, body: _body, code: _code, data: _data }; +} + +function loadTupleSendParameters(source: TupleReader) { + let _bounce = source.readBoolean(); + let _to = source.readAddress(); + let _value = source.readBigNumber(); + let _mode = source.readBigNumber(); + let _body = source.readCellOpt(); + let _code = source.readCellOpt(); + let _data = source.readCellOpt(); + return { $$type: 'SendParameters' as const, bounce: _bounce, to: _to, value: _value, mode: _mode, body: _body, code: _code, data: _data }; +} + +function storeTupleSendParameters(source: SendParameters) { + let builder = new TupleBuilder(); + builder.writeBoolean(source.bounce); + builder.writeAddress(source.to); + builder.writeNumber(source.value); + builder.writeNumber(source.mode); + builder.writeCell(source.body); + builder.writeCell(source.code); + builder.writeCell(source.data); + return builder.build(); +} + +function dictValueParserSendParameters(): DictionaryValue { + return { + serialize: (src, buidler) => { + buidler.storeRef(beginCell().store(storeSendParameters(src)).endCell()); + }, + parse: (src) => { + return loadSendParameters(src.loadRef().beginParse()); + } + } +} + + type IntegerLiteralsTester_init_args = { + $$type: 'IntegerLiteralsTester_init_args'; +} + +function initIntegerLiteralsTester_init_args(src: IntegerLiteralsTester_init_args) { + return (builder: Builder) => { + let b_0 = builder; + }; +} + +async function IntegerLiteralsTester_init() { + const __code = Cell.fromBase64('te6ccgECHQEAAcwAART/APSkE/S88sgLAQIBYgIDApLQAdDTAwFxsKMB+kABINdJgQELuvLgiCDXCwoggQT/uvLQiYMJuvLgiFRQUwNvBPhhAvhi2zxZ2zzy4IIwyPhDAcx/AcoAye1UGgQCASAFBgA8AZIwf+BwIddJwh+VMCDXCx/ewAAB10nBIbCRf+BwAgFIBwgCASALDAIPt067Z5tnhjAaCQIPtULbZ5tnhjAaCgAGgf7dAAaBASMCASANDgIBIBMUAg+101tnm2eGMBoPAgFuEBEABIB7ALir0YJwXOw9XSyuex6E7DnWSoUbZoJwndY1LStkfLMi068t/fFiOYJwIFXAG4BnY5TOWDquRyWyw4JwG9Sd75VFlvHHU9PeBVnDJoJwnZdOWrNOy3M6DpZtlGbopAIOqvnbPNs8MRoSAASAhQIBIBUWAg+2yBtnm2eGMBobAgFIFxgAdbJu40NWlwZnM6Ly9RbVZteW82cG93dWo0OUJEbzNOd2tVd291QVhTOXpGUlJjWjZkcnF0M0xVY290ggABCqvu1E0NIAAQIOqiPbPNs8MRoZAASAKgE07UTQ1AH4Y9IAMJFt4Pgo1wsKgwm68uCJ2zwcAASA1gACbQ=='); + const __system = Cell.fromBase64('te6cckECHwEAAdYAAQHAAQEFobyzAgEU/wD0pBP0vPLICwMCAWIbBAIBIBYFAgEgDwYCASAJBwIPtsgbZ5tnhjAdCAAEgNYCASALCgB1sm7jQ1aXBmczovL1FtVm15bzZwb3d1ajQ5QkRvM053a1V3b3VBWFM5ekZSUmNaNmRycXQzTFVjb3SCACAUgODAIOqiPbPNs8MR0NAASAKgAQqr7tRNDSAAECASAUEAIBbhMRAg6q+ds82zwxHRIABICFALir0YJwXOw9XSyuex6E7DnWSoUbZoJwndY1LStkfLMi068t/fFiOYJwIFXAG4BnY5TOWDquRyWyw4JwG9Sd75VFlvHHU9PeBVnDJoJwnZdOWrNOy3M6DpZtlGbopAIPtdNbZ5tnhjAdFQAEgHsCAUgZFwIPtULbZ5tnhjAdGAAGgQEjAg+3Trtnm2eGMB0aAAaB/t0CktAB0NMDAXGwowH6QAEg10mBAQu68uCIINcLCiCBBP+68tCJgwm68uCIVFBTA28E+GEC+GLbPFnbPPLggjDI+EMBzH8BygDJ7VQdHAA8AZIwf+BwIddJwh+VMCDXCx/ewAAB10nBIbCRf+BwATTtRNDUAfhj0gAwkW3g+CjXCwqDCbry4InbPB4AAm0QTcC0'); + let builder = beginCell(); + builder.storeRef(__system); + builder.storeUint(0, 1); + initIntegerLiteralsTester_init_args({ $$type: 'IntegerLiteralsTester_init_args' })(builder); + const __data = builder.endCell(); + return { code: __code, data: __data }; +} + +const IntegerLiteralsTester_errors: { [key: number]: { message: string } } = { + 2: { message: `Stack undeflow` }, + 3: { message: `Stack overflow` }, + 4: { message: `Integer overflow` }, + 5: { message: `Integer out of expected range` }, + 6: { message: `Invalid opcode` }, + 7: { message: `Type check error` }, + 8: { message: `Cell overflow` }, + 9: { message: `Cell underflow` }, + 10: { message: `Dictionary error` }, + 13: { message: `Out of gas error` }, + 32: { message: `Method ID not found` }, + 34: { message: `Action is invalid or not supported` }, + 37: { message: `Not enough TON` }, + 38: { message: `Not enough extra-currencies` }, + 128: { message: `Null reference exception` }, + 129: { message: `Invalid serialization prefix` }, + 130: { message: `Invalid incoming message` }, + 131: { message: `Constraints error` }, + 132: { message: `Access denied` }, + 133: { message: `Contract stopped` }, + 134: { message: `Invalid argument` }, + 135: { message: `Code of a contract was not found` }, + 136: { message: `Invalid address` }, + 137: { message: `Masterchain support is not enabled for this contract` }, +} + +const IntegerLiteralsTester_types: ABIType[] = [ + {"name":"StateInit","header":null,"fields":[{"name":"code","type":{"kind":"simple","type":"cell","optional":false}},{"name":"data","type":{"kind":"simple","type":"cell","optional":false}}]}, + {"name":"Context","header":null,"fields":[{"name":"bounced","type":{"kind":"simple","type":"bool","optional":false}},{"name":"sender","type":{"kind":"simple","type":"address","optional":false}},{"name":"value","type":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"raw","type":{"kind":"simple","type":"slice","optional":false}}]}, + {"name":"SendParameters","header":null,"fields":[{"name":"bounce","type":{"kind":"simple","type":"bool","optional":false}},{"name":"to","type":{"kind":"simple","type":"address","optional":false}},{"name":"value","type":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"mode","type":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"body","type":{"kind":"simple","type":"cell","optional":true}},{"name":"code","type":{"kind":"simple","type":"cell","optional":true}},{"name":"data","type":{"kind":"simple","type":"cell","optional":true}}]}, +] + +const IntegerLiteralsTester_getters: ABIGetter[] = [ + {"name":"decLiteral1","arguments":[],"returnType":{"kind":"simple","type":"int","optional":false,"format":257}}, + {"name":"decLiteral2","arguments":[],"returnType":{"kind":"simple","type":"int","optional":false,"format":257}}, + {"name":"hexLiteral1","arguments":[],"returnType":{"kind":"simple","type":"int","optional":false,"format":257}}, + {"name":"hexLiteral2","arguments":[],"returnType":{"kind":"simple","type":"int","optional":false,"format":257}}, + {"name":"binLiteral1","arguments":[],"returnType":{"kind":"simple","type":"int","optional":false,"format":257}}, + {"name":"binLiteral2","arguments":[],"returnType":{"kind":"simple","type":"int","optional":false,"format":257}}, +] + +const IntegerLiteralsTester_receivers: ABIReceiver[] = [ + {"receiver":"internal","message":{"kind":"empty"}}, +] + +export class IntegerLiteralsTester implements Contract { + + static async init() { + return await IntegerLiteralsTester_init(); + } + + static async fromInit() { + const init = await IntegerLiteralsTester_init(); + const address = contractAddress(0, init); + return new IntegerLiteralsTester(address, init); + } + + static fromAddress(address: Address) { + return new IntegerLiteralsTester(address); + } + + readonly address: Address; + readonly init?: { code: Cell, data: Cell }; + readonly abi: ContractABI = { + types: IntegerLiteralsTester_types, + getters: IntegerLiteralsTester_getters, + receivers: IntegerLiteralsTester_receivers, + errors: IntegerLiteralsTester_errors, + }; + + private constructor(address: Address, init?: { code: Cell, data: Cell }) { + this.address = address; + this.init = init; + } + + async send(provider: ContractProvider, via: Sender, args: { value: bigint, bounce?: boolean| null | undefined }, message: null) { + + let body: Cell | null = null; + if (message === null) { + body = new Cell(); + } + if (body === null) { throw new Error('Invalid message type'); } + + await provider.internal(via, { ...args, body: body }); + + } + + async getDecLiteral1(provider: ContractProvider) { + let builder = new TupleBuilder(); + let source = (await provider.get('decLiteral1', builder.build())).stack; + let result = source.readBigNumber(); + return result; + } + + async getDecLiteral2(provider: ContractProvider) { + let builder = new TupleBuilder(); + let source = (await provider.get('decLiteral2', builder.build())).stack; + let result = source.readBigNumber(); + return result; + } + + async getHexLiteral1(provider: ContractProvider) { + let builder = new TupleBuilder(); + let source = (await provider.get('hexLiteral1', builder.build())).stack; + let result = source.readBigNumber(); + return result; + } + + async getHexLiteral2(provider: ContractProvider) { + let builder = new TupleBuilder(); + let source = (await provider.get('hexLiteral2', builder.build())).stack; + let result = source.readBigNumber(); + return result; + } + + async getBinLiteral1(provider: ContractProvider) { + let builder = new TupleBuilder(); + let source = (await provider.get('binLiteral1', builder.build())).stack; + let result = source.readBigNumber(); + return result; + } + + async getBinLiteral2(provider: ContractProvider) { + let builder = new TupleBuilder(); + let source = (await provider.get('binLiteral2', builder.build())).stack; + let result = source.readBigNumber(); + return result; + } + +} \ No newline at end of file diff --git a/tact.config.json b/tact.config.json index 5908e1820..0239e61be 100644 --- a/tact.config.json +++ b/tact.config.json @@ -148,6 +148,14 @@ "debug": true } }, + { + "name": "integer-literals", + "path": "./src/test/features/integer-literals.tact", + "output": "./src/test/features/output", + "options": { + "debug": true + } + }, { "name": "random", "path": "./src/test/features/random.tact", From 377db1681d58e1bb6122818df083453882189db2 Mon Sep 17 00:00:00 2001 From: Gusarich Date: Thu, 30 Nov 2023 16:28:50 +0300 Subject: [PATCH 02/11] allow `_` in integer literals --- src/grammar/grammar.ohm | 10 ++--- src/grammar/grammar.ohm-bundle.d.ts | 6 +-- src/grammar/grammar.ts | 2 +- src/test/feature-integer-literals.spec.ts | 3 ++ src/test/features/integer-literals.tact | 12 ++++++ ...integer-literals_IntegerLiteralsTester.abi | 2 +- ...er-literals_IntegerLiteralsTester.code.boc | Bin 472 -> 545 bytes ...ger-literals_IntegerLiteralsTester.code.fc | 35 +++++++++++++++++- ...er-literals_IntegerLiteralsTester.code.fif | 32 +++++++++++++++- ...iterals_IntegerLiteralsTester.code.rev.fif | 32 +++++++++++++++- ...-literals_IntegerLiteralsTester.headers.fc | 9 +++++ .../integer-literals_IntegerLiteralsTester.md | 10 ++++- ...integer-literals_IntegerLiteralsTester.pkg | 2 +- .../integer-literals_IntegerLiteralsTester.ts | 28 +++++++++++++- 14 files changed, 165 insertions(+), 18 deletions(-) diff --git a/src/grammar/grammar.ohm b/src/grammar/grammar.ohm index a6989057f..af57f57c9 100644 --- a/src/grammar/grammar.ohm +++ b/src/grammar/grammar.ohm @@ -185,11 +185,11 @@ Tact { // hexDigit defined in Ohm's built-in rules (otherwise: hexDigit = "0".."9" | "a".."f" | "A".."F") // digit defined in Ohm's built-in rules (otherwise: digit = "0".."9") integerLiteral = integerLiteralHex | integerLiteralBin | integerLiteralDec // Order is important - integerLiteralDec = digit+ - integerLiteralHex = "0x" hexDigit+ - | "0X" hexDigit+ - integerLiteralBin = "0b" binDigit+ - | "0B" binDigit+ + integerLiteralDec = digit+ ("_" | digit)* + integerLiteralHex = "0x" hexDigit+ ("_" | hexDigit)* + | "0X" hexDigit+ ("_" | hexDigit)* + integerLiteralBin = "0b" binDigit+ ("_" | binDigit)* + | "0B" binDigit+ ("_" | binDigit)* binDigit = "0" | "1" // Letters diff --git a/src/grammar/grammar.ohm-bundle.d.ts b/src/grammar/grammar.ohm-bundle.d.ts index 715de4e16..a9238292f 100644 --- a/src/grammar/grammar.ohm-bundle.d.ts +++ b/src/grammar/grammar.ohm-bundle.d.ts @@ -141,9 +141,9 @@ export interface TactActionDict extends ActionDict { typeLiteral?: (this: NonterminalNode, arg0: NonterminalNode, arg1: IterationNode) => T; typeLiteralPart?: (this: NonterminalNode, arg0: NonterminalNode | TerminalNode) => T; integerLiteral?: (this: NonterminalNode, arg0: NonterminalNode) => T; - integerLiteralDec?: (this: NonterminalNode, arg0: IterationNode) => T; - integerLiteralHex?: (this: NonterminalNode, arg0: TerminalNode, arg1: IterationNode) => T; - integerLiteralBin?: (this: NonterminalNode, arg0: TerminalNode, arg1: IterationNode) => T; + integerLiteralDec?: (this: NonterminalNode, arg0: IterationNode, arg1: IterationNode) => T; + integerLiteralHex?: (this: NonterminalNode, arg0: TerminalNode, arg1: IterationNode, arg2: IterationNode) => T; + integerLiteralBin?: (this: NonterminalNode, arg0: TerminalNode, arg1: IterationNode, arg2: IterationNode) => T; binDigit?: (this: NonterminalNode, arg0: TerminalNode) => T; letterAsciiLC?: (this: NonterminalNode, arg0: TerminalNode) => T; letterAsciiUC?: (this: NonterminalNode, arg0: TerminalNode) => T; diff --git a/src/grammar/grammar.ts b/src/grammar/grammar.ts index 2b9a1d980..c3b385acc 100644 --- a/src/grammar/grammar.ts +++ b/src/grammar/grammar.ts @@ -592,7 +592,7 @@ semantics.addOperation('resolve_expression', { // Literals integerLiteral(n) { - return createNode({ kind: 'number', value: BigInt(n.sourceString), ref: createRef(this) }); // Parses dec-based integer and hex-based integers + return createNode({ kind: 'number', value: BigInt(n.sourceString.replaceAll('_', '')), ref: createRef(this) }); // Parses dec, hex, and bin numbers }, boolLiteral(arg0) { return createNode({ kind: 'boolean', value: arg0.sourceString === 'true', ref: createRef(this) }); diff --git a/src/test/feature-integer-literals.spec.ts b/src/test/feature-integer-literals.spec.ts index efb14c0b8..684785f9c 100644 --- a/src/test/feature-integer-literals.spec.ts +++ b/src/test/feature-integer-literals.spec.ts @@ -18,11 +18,14 @@ describe('feature-integer-literals', () => { // Check methods expect(await contract.getDecLiteral1()).toEqual(123n); expect(await contract.getDecLiteral2()).toEqual(-123n); + expect(await contract.getDecLiteral3()).toEqual(1012300000n) expect(await contract.getHexLiteral1()).toEqual(0x123n); expect(await contract.getHexLiteral2()).toEqual(-0x123n); + expect(await contract.getHexLiteral3()).toEqual(0x1012300000n); expect(await contract.getBinLiteral1()).toEqual(0b101010n); expect(await contract.getBinLiteral2()).toEqual(-0b101010n); + expect(await contract.getBinLiteral3()).toEqual(0b1010100000n); }); }); diff --git a/src/test/features/integer-literals.tact b/src/test/features/integer-literals.tact index fcf4d5bff..9be4fd9ec 100644 --- a/src/test/features/integer-literals.tact +++ b/src/test/features/integer-literals.tact @@ -16,6 +16,10 @@ contract IntegerLiteralsTester { return -123; } + get fun decLiteral3(): Int { + return 1_0123_00__000; + } + get fun hexLiteral1(): Int { return 0x123; } @@ -24,6 +28,10 @@ contract IntegerLiteralsTester { return -0x123; } + get fun hexLiteral3(): Int { + return 0x1_0123_00__000; + } + get fun binLiteral1(): Int { return 0b101010; } @@ -31,4 +39,8 @@ contract IntegerLiteralsTester { get fun binLiteral2(): Int { return -0b101010; } + + get fun binLiteral3(): Int { + return 0b1_0101_00__000; + } } \ No newline at end of file diff --git a/src/test/features/output/integer-literals_IntegerLiteralsTester.abi b/src/test/features/output/integer-literals_IntegerLiteralsTester.abi index 8952bb3b9..43ee3a03b 100644 --- a/src/test/features/output/integer-literals_IntegerLiteralsTester.abi +++ b/src/test/features/output/integer-literals_IntegerLiteralsTester.abi @@ -1 +1 @@ -{"name":"IntegerLiteralsTester","types":[{"name":"StateInit","header":null,"fields":[{"name":"code","type":{"kind":"simple","type":"cell","optional":false}},{"name":"data","type":{"kind":"simple","type":"cell","optional":false}}]},{"name":"Context","header":null,"fields":[{"name":"bounced","type":{"kind":"simple","type":"bool","optional":false}},{"name":"sender","type":{"kind":"simple","type":"address","optional":false}},{"name":"value","type":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"raw","type":{"kind":"simple","type":"slice","optional":false}}]},{"name":"SendParameters","header":null,"fields":[{"name":"bounce","type":{"kind":"simple","type":"bool","optional":false}},{"name":"to","type":{"kind":"simple","type":"address","optional":false}},{"name":"value","type":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"mode","type":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"body","type":{"kind":"simple","type":"cell","optional":true}},{"name":"code","type":{"kind":"simple","type":"cell","optional":true}},{"name":"data","type":{"kind":"simple","type":"cell","optional":true}}]}],"receivers":[{"receiver":"internal","message":{"kind":"empty"}}],"getters":[{"name":"decLiteral1","arguments":[],"returnType":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"decLiteral2","arguments":[],"returnType":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"hexLiteral1","arguments":[],"returnType":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"hexLiteral2","arguments":[],"returnType":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"binLiteral1","arguments":[],"returnType":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"binLiteral2","arguments":[],"returnType":{"kind":"simple","type":"int","optional":false,"format":257}}],"errors":{"2":{"message":"Stack undeflow"},"3":{"message":"Stack overflow"},"4":{"message":"Integer overflow"},"5":{"message":"Integer out of expected range"},"6":{"message":"Invalid opcode"},"7":{"message":"Type check error"},"8":{"message":"Cell overflow"},"9":{"message":"Cell underflow"},"10":{"message":"Dictionary error"},"13":{"message":"Out of gas error"},"32":{"message":"Method ID not found"},"34":{"message":"Action is invalid or not supported"},"37":{"message":"Not enough TON"},"38":{"message":"Not enough extra-currencies"},"128":{"message":"Null reference exception"},"129":{"message":"Invalid serialization prefix"},"130":{"message":"Invalid incoming message"},"131":{"message":"Constraints error"},"132":{"message":"Access denied"},"133":{"message":"Contract stopped"},"134":{"message":"Invalid argument"},"135":{"message":"Code of a contract was not found"},"136":{"message":"Invalid address"},"137":{"message":"Masterchain support is not enabled for this contract"}},"interfaces":["org.ton.introspection.v0","org.ton.abi.ipfs.v0","org.ton.deploy.lazy.v0","org.ton.debug.v0","org.ton.chain.workchain.v0"]} \ No newline at end of file +{"name":"IntegerLiteralsTester","types":[{"name":"StateInit","header":null,"fields":[{"name":"code","type":{"kind":"simple","type":"cell","optional":false}},{"name":"data","type":{"kind":"simple","type":"cell","optional":false}}]},{"name":"Context","header":null,"fields":[{"name":"bounced","type":{"kind":"simple","type":"bool","optional":false}},{"name":"sender","type":{"kind":"simple","type":"address","optional":false}},{"name":"value","type":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"raw","type":{"kind":"simple","type":"slice","optional":false}}]},{"name":"SendParameters","header":null,"fields":[{"name":"bounce","type":{"kind":"simple","type":"bool","optional":false}},{"name":"to","type":{"kind":"simple","type":"address","optional":false}},{"name":"value","type":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"mode","type":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"body","type":{"kind":"simple","type":"cell","optional":true}},{"name":"code","type":{"kind":"simple","type":"cell","optional":true}},{"name":"data","type":{"kind":"simple","type":"cell","optional":true}}]}],"receivers":[{"receiver":"internal","message":{"kind":"empty"}}],"getters":[{"name":"decLiteral1","arguments":[],"returnType":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"decLiteral2","arguments":[],"returnType":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"decLiteral3","arguments":[],"returnType":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"hexLiteral1","arguments":[],"returnType":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"hexLiteral2","arguments":[],"returnType":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"hexLiteral3","arguments":[],"returnType":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"binLiteral1","arguments":[],"returnType":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"binLiteral2","arguments":[],"returnType":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"binLiteral3","arguments":[],"returnType":{"kind":"simple","type":"int","optional":false,"format":257}}],"errors":{"2":{"message":"Stack undeflow"},"3":{"message":"Stack overflow"},"4":{"message":"Integer overflow"},"5":{"message":"Integer out of expected range"},"6":{"message":"Invalid opcode"},"7":{"message":"Type check error"},"8":{"message":"Cell overflow"},"9":{"message":"Cell underflow"},"10":{"message":"Dictionary error"},"13":{"message":"Out of gas error"},"32":{"message":"Method ID not found"},"34":{"message":"Action is invalid or not supported"},"37":{"message":"Not enough TON"},"38":{"message":"Not enough extra-currencies"},"128":{"message":"Null reference exception"},"129":{"message":"Invalid serialization prefix"},"130":{"message":"Invalid incoming message"},"131":{"message":"Constraints error"},"132":{"message":"Access denied"},"133":{"message":"Contract stopped"},"134":{"message":"Invalid argument"},"135":{"message":"Code of a contract was not found"},"136":{"message":"Invalid address"},"137":{"message":"Masterchain support is not enabled for this contract"}},"interfaces":["org.ton.introspection.v0","org.ton.abi.ipfs.v0","org.ton.deploy.lazy.v0","org.ton.debug.v0","org.ton.chain.workchain.v0"]} \ No newline at end of file diff --git a/src/test/features/output/integer-literals_IntegerLiteralsTester.code.boc b/src/test/features/output/integer-literals_IntegerLiteralsTester.code.boc index 7b671de23fff923d099c3752a78087d13a33f1c9..e5eb55d2af822d07a3310a84d71dce1e026471c0 100644 GIT binary patch delta 329 zcmcb?ypV-^>$^Ecj7(~b3{0XEx#Jj>CuZr@^YJq=DsXZ!@o#myojyCg%|Mx#iGR~n zv-4)>c@mVlf$X_u5H=43Uz3D@kO2b&16$+2yFh|b8K_r45J*T$0S&ku4KY9nC?G7t zz|v67#J_nP)Fe?R#t1QS2A(DXo3M%p3_Dg|Y$}L(V>|IlT)nacP;Dzvle7$wP*7xI z^pKTfDBYCz*g0%ETe|V0PhZ8Zx~44q)+!?EuFkf+vG`|10xgPD&^ZYw`~lS<$;!HG4XGl0rid&kUat9 xI9;GWRe-)>TEJ)m)O3aMNAe{GgNeBherR0h=4$5L_31(9Z5vgf_G=7Gxd4RiY>xl{ delta 237 zcmZ3;a)X(B>$^Ecj7+kO42)+ca>p@BP0Z4B=H_AI-|n|NeRg`AffOeb|5m5l5H=SB zTjRgGK!Q=3iBW-<4@d}$0Oc=7L*)6H81n=K8CV*sC-X6;*GmZjnXN!YqGC+^+fGPB z6iG8NdWcIfly1s<>>M_oE!}w0r>|mH)2>hZoX+;WJZ!P^6cxA6CeO>ZhL?R05p6Y| zz9dyu&2({^ySliu$> 128, @@ -105,7 +138,7 @@ _ supported_interfaces() method_id { } _ get_abi_ipfs() method_id { - return "ipfs://QmVmyo6powuj49BDo3NwkUwouAXS9zFRRcZ6drqt3LUcot"; + return "ipfs://QmTVJohQATrpjwL6CWMTknc5g3GMfbPLjwd28io5hPjK1m"; } _ lazy_deployment_completed() method_id { diff --git a/src/test/features/output/integer-literals_IntegerLiteralsTester.code.fif b/src/test/features/output/integer-literals_IntegerLiteralsTester.code.fif index c76a3ee0a..9f17ddedf 100644 --- a/src/test/features/output/integer-literals_IntegerLiteralsTester.code.fif +++ b/src/test/features/output/integer-literals_IntegerLiteralsTester.code.fif @@ -5,17 +5,23 @@ PROGRAM{ DECLPROC $IntegerLiteralsTester$_contract_store DECLPROC $IntegerLiteralsTester$_fun_decLiteral1 DECLPROC $IntegerLiteralsTester$_fun_decLiteral2 + DECLPROC $IntegerLiteralsTester$_fun_decLiteral3 DECLPROC $IntegerLiteralsTester$_fun_hexLiteral1 DECLPROC $IntegerLiteralsTester$_fun_hexLiteral2 + DECLPROC $IntegerLiteralsTester$_fun_hexLiteral3 DECLPROC $IntegerLiteralsTester$_fun_binLiteral1 DECLPROC $IntegerLiteralsTester$_fun_binLiteral2 + DECLPROC $IntegerLiteralsTester$_fun_binLiteral3 DECLPROC %$IntegerLiteralsTester$_internal_empty 102042 DECLMETHOD %decLiteral1 114425 DECLMETHOD %decLiteral2 + 110296 DECLMETHOD %decLiteral3 76310 DECLMETHOD %hexLiteral1 72309 DECLMETHOD %hexLiteral2 + 68180 DECLMETHOD %hexLiteral3 116259 DECLMETHOD %binLiteral1 128576 DECLMETHOD %binLiteral2 + 124513 DECLMETHOD %binLiteral3 113617 DECLMETHOD supported_interfaces 121275 DECLMETHOD get_abi_ipfs 115390 DECLMETHOD lazy_deployment_completed @@ -80,18 +86,27 @@ PROGRAM{ $IntegerLiteralsTester$_fun_decLiteral2 PROCREF:<{ -123 PUSHINT }> + $IntegerLiteralsTester$_fun_decLiteral3 PROCREF:<{ + 1012300000 PUSHINT + }> $IntegerLiteralsTester$_fun_hexLiteral1 PROCREF:<{ 291 PUSHINT }> $IntegerLiteralsTester$_fun_hexLiteral2 PROCREF:<{ -291 PUSHINT }> + $IntegerLiteralsTester$_fun_hexLiteral3 PROCREF:<{ + 69024612352 PUSHINT + }> $IntegerLiteralsTester$_fun_binLiteral1 PROCREF:<{ 42 PUSHINT }> $IntegerLiteralsTester$_fun_binLiteral2 PROCREF:<{ -42 PUSHINT }> + $IntegerLiteralsTester$_fun_binLiteral3 PROCREF:<{ + 672 PUSHINT + }> %$IntegerLiteralsTester$_internal_empty PROCINLINE:<{ }> %decLiteral1 PROC:<{ @@ -104,6 +119,11 @@ PROGRAM{ $IntegerLiteralsTester$_fun_decLiteral2 INLINECALLDICT NIP }> + %decLiteral3 PROC:<{ + $IntegerLiteralsTester$_contract_load INLINECALLDICT + $IntegerLiteralsTester$_fun_decLiteral3 INLINECALLDICT + NIP + }> %hexLiteral1 PROC:<{ $IntegerLiteralsTester$_contract_load INLINECALLDICT $IntegerLiteralsTester$_fun_hexLiteral1 INLINECALLDICT @@ -114,6 +134,11 @@ PROGRAM{ $IntegerLiteralsTester$_fun_hexLiteral2 INLINECALLDICT NIP }> + %hexLiteral3 PROC:<{ + $IntegerLiteralsTester$_contract_load INLINECALLDICT + $IntegerLiteralsTester$_fun_hexLiteral3 INLINECALLDICT + NIP + }> %binLiteral1 PROC:<{ $IntegerLiteralsTester$_contract_load INLINECALLDICT $IntegerLiteralsTester$_fun_binLiteral1 INLINECALLDICT @@ -124,6 +149,11 @@ PROGRAM{ $IntegerLiteralsTester$_fun_binLiteral2 INLINECALLDICT NIP }> + %binLiteral3 PROC:<{ + $IntegerLiteralsTester$_contract_load INLINECALLDICT + $IntegerLiteralsTester$_fun_binLiteral3 INLINECALLDICT + NIP + }> supported_interfaces PROC:<{ 123515602279859691144772641439386770278 PUSHINT 209801025412363888721030803524359905849 PUSHINT @@ -132,7 +162,7 @@ PROGRAM{ 209474421377847335869795010607481022628 PUSHINT }> get_abi_ipfs PROC:<{ - x{697066733a2f2f516d566d796f36706f77756a343942446f334e776b55776f75415853397a465252635a3664727174334c55636f74} PUSHSLICE + x{697066733a2f2f516d54564a6f6851415472706a774c3643574d546b6e63356733474d6662504c6a77643238696f3568506a4b316d} PUSHSLICE }> lazy_deployment_completed PROC:<{ c4 PUSH diff --git a/src/test/features/output/integer-literals_IntegerLiteralsTester.code.rev.fif b/src/test/features/output/integer-literals_IntegerLiteralsTester.code.rev.fif index d94dd5fe9..9b5b35e85 100644 --- a/src/test/features/output/integer-literals_IntegerLiteralsTester.code.rev.fif +++ b/src/test/features/output/integer-literals_IntegerLiteralsTester.code.rev.fif @@ -1,20 +1,26 @@ PROGRAM{ DECLPROC recv_internal; + DECLPROC ?fun_68180; DECLPROC ?fun_72309; DECLPROC ?fun_76310; DECLPROC ?fun_102042; + DECLPROC ?fun_110296; DECLPROC supported_interfaces; DECLPROC ?fun_114425; DECLPROC lazy_deployment_completed; DECLPROC ?fun_116259; DECLPROC get_abi_ipfs; + DECLPROC ?fun_124513; DECLPROC ?fun_128576; DECLPROC ?fun_ref_026cdd3ff17e82bb; DECLPROC ?fun_ref_26dd4850c2973b9d; DECLPROC ?fun_ref_32a8f017ec2ceafb; DECLPROC ?fun_ref_364de9562794919e; DECLPROC ?fun_ref_4065f3bb1951fe13; + DECLPROC ?fun_ref_4ed57fb2f9d4e6ca; DECLPROC ?fun_ref_553f7869b01170d9; + DECLPROC ?fun_ref_5bdfe841fa412a76; + DECLPROC ?fun_ref_684a8c99db9474e5; DECLPROC ?fun_ref_7a4cfefa28b39727; DECLPROC ?fun_ref_a05e0042bce184fb; DECLPROC ?fun_ref_c0ca23818e24f3c9; @@ -64,6 +70,11 @@ PROGRAM{ ENDC c4 POP }> + ?fun_68180 PROC:<{ + ?fun_ref_a05e0042bce184fb INLINECALLDICT + ?fun_ref_684a8c99db9474e5 INLINECALLDICT + s1 POP + }> ?fun_72309 PROC:<{ ?fun_ref_a05e0042bce184fb INLINECALLDICT ?fun_ref_26dd4850c2973b9d INLINECALLDICT @@ -79,6 +90,11 @@ PROGRAM{ ?fun_ref_553f7869b01170d9 INLINECALLDICT s1 POP }> + ?fun_110296 PROC:<{ + ?fun_ref_a05e0042bce184fb INLINECALLDICT + ?fun_ref_4ed57fb2f9d4e6ca INLINECALLDICT + s1 POP + }> supported_interfaces PROC:<{ 123515602279859691144772641439386770278 PUSHINT 209801025412363888721030803524359905849 PUSHINT @@ -103,7 +119,12 @@ PROGRAM{ s1 POP }> get_abi_ipfs PROC:<{ - x{697066733A2F2F516D566D796F36706F77756A343942446F334E776B55776F75415853397A465252635A3664727174334C55636F7482_} PUSHSLICE + x{697066733A2F2F516D54564A6F6851415472706A774C3643574D546B6E63356733474D6662504C6A77643238696F3568506A4B316D82_} PUSHSLICE + }> + ?fun_124513 PROC:<{ + ?fun_ref_a05e0042bce184fb INLINECALLDICT + ?fun_ref_5bdfe841fa412a76 INLINECALLDICT + s1 POP }> ?fun_128576 PROC:<{ ?fun_ref_a05e0042bce184fb INLINECALLDICT @@ -150,9 +171,18 @@ PROGRAM{ ?fun_ref_4065f3bb1951fe13 PROCREF:<{ -42 PUSHINT }> + ?fun_ref_4ed57fb2f9d4e6ca PROCREF:<{ + 1012300000 PUSHINT + }> ?fun_ref_553f7869b01170d9 PROCREF:<{ 123 PUSHINT }> + ?fun_ref_5bdfe841fa412a76 PROCREF:<{ + 672 PUSHINT + }> + ?fun_ref_684a8c99db9474e5 PROCREF:<{ + 69024612352 PUSHINT + }> ?fun_ref_7a4cfefa28b39727 PROCREF:<{ 291 PUSHINT }> diff --git a/src/test/features/output/integer-literals_IntegerLiteralsTester.headers.fc b/src/test/features/output/integer-literals_IntegerLiteralsTester.headers.fc index 212cd1070..385aad478 100644 --- a/src/test/features/output/integer-literals_IntegerLiteralsTester.headers.fc +++ b/src/test/features/output/integer-literals_IntegerLiteralsTester.headers.fc @@ -21,14 +21,23 @@ tuple $IntegerLiteralsTester$_contract_load() impure inline_ref; ;; $IntegerLiteralsTester$_fun_decLiteral2 (tuple, int) $IntegerLiteralsTester$_fun_decLiteral2(tuple $self) impure inline_ref; +;; $IntegerLiteralsTester$_fun_decLiteral3 +(tuple, int) $IntegerLiteralsTester$_fun_decLiteral3(tuple $self) impure inline_ref; + ;; $IntegerLiteralsTester$_fun_hexLiteral1 (tuple, int) $IntegerLiteralsTester$_fun_hexLiteral1(tuple $self) impure inline_ref; ;; $IntegerLiteralsTester$_fun_hexLiteral2 (tuple, int) $IntegerLiteralsTester$_fun_hexLiteral2(tuple $self) impure inline_ref; +;; $IntegerLiteralsTester$_fun_hexLiteral3 +(tuple, int) $IntegerLiteralsTester$_fun_hexLiteral3(tuple $self) impure inline_ref; + ;; $IntegerLiteralsTester$_fun_binLiteral1 (tuple, int) $IntegerLiteralsTester$_fun_binLiteral1(tuple $self) impure inline_ref; ;; $IntegerLiteralsTester$_fun_binLiteral2 (tuple, int) $IntegerLiteralsTester$_fun_binLiteral2(tuple $self) impure inline_ref; + +;; $IntegerLiteralsTester$_fun_binLiteral3 +(tuple, int) $IntegerLiteralsTester$_fun_binLiteral3(tuple $self) impure inline_ref; diff --git a/src/test/features/output/integer-literals_IntegerLiteralsTester.md b/src/test/features/output/integer-literals_IntegerLiteralsTester.md index d2eb7aff4..87a39d0a4 100644 --- a/src/test/features/output/integer-literals_IntegerLiteralsTester.md +++ b/src/test/features/output/integer-literals_IntegerLiteralsTester.md @@ -1,6 +1,6 @@ # TACT Compilation Report Contract: IntegerLiteralsTester -BOC Size: 472 bytes +BOC Size: 545 bytes # Types Total Types: 3 @@ -18,20 +18,26 @@ TLB: `_ bounce:bool to:address value:int257 mode:int257 body:Maybe ^cell code:Ma Signature: `SendParameters{bounce:bool,to:address,value:int257,mode:int257,body:Maybe ^cell,code:Maybe ^cell,data:Maybe ^cell}` # Get Methods -Total Get Methods: 6 +Total Get Methods: 9 ## decLiteral1 ## decLiteral2 +## decLiteral3 + ## hexLiteral1 ## hexLiteral2 +## hexLiteral3 + ## binLiteral1 ## binLiteral2 +## binLiteral3 + # Error Codes 2: Stack undeflow 3: Stack overflow diff --git a/src/test/features/output/integer-literals_IntegerLiteralsTester.pkg b/src/test/features/output/integer-literals_IntegerLiteralsTester.pkg index 11bef1f0a..91f239db9 100644 --- a/src/test/features/output/integer-literals_IntegerLiteralsTester.pkg +++ b/src/test/features/output/integer-literals_IntegerLiteralsTester.pkg @@ -1 +1 @@ -{"name":"IntegerLiteralsTester","code":"te6ccgECHQEAAcwAART/APSkE/S88sgLAQIBYgIDApLQAdDTAwFxsKMB+kABINdJgQELuvLgiCDXCwoggQT/uvLQiYMJuvLgiFRQUwNvBPhhAvhi2zxZ2zzy4IIwyPhDAcx/AcoAye1UGgQCASAFBgA8AZIwf+BwIddJwh+VMCDXCx/ewAAB10nBIbCRf+BwAgFIBwgCASALDAIPt067Z5tnhjAaCQIPtULbZ5tnhjAaCgAGgf7dAAaBASMCASANDgIBIBMUAg+101tnm2eGMBoPAgFuEBEABIB7ALir0YJwXOw9XSyuex6E7DnWSoUbZoJwndY1LStkfLMi068t/fFiOYJwIFXAG4BnY5TOWDquRyWyw4JwG9Sd75VFlvHHU9PeBVnDJoJwnZdOWrNOy3M6DpZtlGbopAIOqvnbPNs8MRoSAASAhQIBIBUWAg+2yBtnm2eGMBobAgFIFxgAdbJu40NWlwZnM6Ly9RbVZteW82cG93dWo0OUJEbzNOd2tVd291QVhTOXpGUlJjWjZkcnF0M0xVY290ggABCqvu1E0NIAAQIOqiPbPNs8MRoZAASAKgE07UTQ1AH4Y9IAMJFt4Pgo1wsKgwm68uCJ2zwcAASA1gACbQ==","abi":"{\"name\":\"IntegerLiteralsTester\",\"types\":[{\"name\":\"StateInit\",\"header\":null,\"fields\":[{\"name\":\"code\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":false}},{\"name\":\"data\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":false}}]},{\"name\":\"Context\",\"header\":null,\"fields\":[{\"name\":\"bounced\",\"type\":{\"kind\":\"simple\",\"type\":\"bool\",\"optional\":false}},{\"name\":\"sender\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":false}},{\"name\":\"value\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"raw\",\"type\":{\"kind\":\"simple\",\"type\":\"slice\",\"optional\":false}}]},{\"name\":\"SendParameters\",\"header\":null,\"fields\":[{\"name\":\"bounce\",\"type\":{\"kind\":\"simple\",\"type\":\"bool\",\"optional\":false}},{\"name\":\"to\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":false}},{\"name\":\"value\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"mode\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"body\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":true}},{\"name\":\"code\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":true}},{\"name\":\"data\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":true}}]}],\"receivers\":[{\"receiver\":\"internal\",\"message\":{\"kind\":\"empty\"}}],\"getters\":[{\"name\":\"decLiteral1\",\"arguments\":[],\"returnType\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"decLiteral2\",\"arguments\":[],\"returnType\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"hexLiteral1\",\"arguments\":[],\"returnType\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"hexLiteral2\",\"arguments\":[],\"returnType\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"binLiteral1\",\"arguments\":[],\"returnType\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"binLiteral2\",\"arguments\":[],\"returnType\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}}],\"errors\":{\"2\":{\"message\":\"Stack undeflow\"},\"3\":{\"message\":\"Stack overflow\"},\"4\":{\"message\":\"Integer overflow\"},\"5\":{\"message\":\"Integer out of expected range\"},\"6\":{\"message\":\"Invalid opcode\"},\"7\":{\"message\":\"Type check error\"},\"8\":{\"message\":\"Cell overflow\"},\"9\":{\"message\":\"Cell underflow\"},\"10\":{\"message\":\"Dictionary error\"},\"13\":{\"message\":\"Out of gas error\"},\"32\":{\"message\":\"Method ID not found\"},\"34\":{\"message\":\"Action is invalid or not supported\"},\"37\":{\"message\":\"Not enough TON\"},\"38\":{\"message\":\"Not enough extra-currencies\"},\"128\":{\"message\":\"Null reference exception\"},\"129\":{\"message\":\"Invalid serialization prefix\"},\"130\":{\"message\":\"Invalid incoming message\"},\"131\":{\"message\":\"Constraints error\"},\"132\":{\"message\":\"Access denied\"},\"133\":{\"message\":\"Contract stopped\"},\"134\":{\"message\":\"Invalid argument\"},\"135\":{\"message\":\"Code of a contract was not found\"},\"136\":{\"message\":\"Invalid address\"},\"137\":{\"message\":\"Masterchain support is not enabled for this contract\"}},\"interfaces\":[\"org.ton.introspection.v0\",\"org.ton.abi.ipfs.v0\",\"org.ton.deploy.lazy.v0\",\"org.ton.debug.v0\",\"org.ton.chain.workchain.v0\"]}","init":{"kind":"direct","args":[],"prefix":{"bits":1,"value":0},"deployment":{"kind":"system-cell","system":"te6cckECHwEAAdYAAQHAAQEFobyzAgEU/wD0pBP0vPLICwMCAWIbBAIBIBYFAgEgDwYCASAJBwIPtsgbZ5tnhjAdCAAEgNYCASALCgB1sm7jQ1aXBmczovL1FtVm15bzZwb3d1ajQ5QkRvM053a1V3b3VBWFM5ekZSUmNaNmRycXQzTFVjb3SCACAUgODAIOqiPbPNs8MR0NAASAKgAQqr7tRNDSAAECASAUEAIBbhMRAg6q+ds82zwxHRIABICFALir0YJwXOw9XSyuex6E7DnWSoUbZoJwndY1LStkfLMi068t/fFiOYJwIFXAG4BnY5TOWDquRyWyw4JwG9Sd75VFlvHHU9PeBVnDJoJwnZdOWrNOy3M6DpZtlGbopAIPtdNbZ5tnhjAdFQAEgHsCAUgZFwIPtULbZ5tnhjAdGAAGgQEjAg+3Trtnm2eGMB0aAAaB/t0CktAB0NMDAXGwowH6QAEg10mBAQu68uCIINcLCiCBBP+68tCJgwm68uCIVFBTA28E+GEC+GLbPFnbPPLggjDI+EMBzH8BygDJ7VQdHAA8AZIwf+BwIddJwh+VMCDXCx/ewAAB10nBIbCRf+BwATTtRNDUAfhj0gAwkW3g+CjXCwqDCbry4InbPB4AAm0QTcC0"}},"sources":{"src/test/features/integer-literals.tact":"Y29udHJhY3QgSW50ZWdlckxpdGVyYWxzVGVzdGVyIHsKCiAgICBpbml0KCkgewogICAgICAgIAogICAgfQogICAgCiAgICByZWNlaXZlKCkgewogICAgICAgIC8vIERlcGxveQogICAgfQoKICAgIGdldCBmdW4gZGVjTGl0ZXJhbDEoKTogSW50IHsKICAgICAgICByZXR1cm4gMTIzOwogICAgfQoKICAgIGdldCBmdW4gZGVjTGl0ZXJhbDIoKTogSW50IHsKICAgICAgICByZXR1cm4gLTEyMzsKICAgIH0KCiAgICBnZXQgZnVuIGhleExpdGVyYWwxKCk6IEludCB7CiAgICAgICAgcmV0dXJuIDB4MTIzOwogICAgfQoKICAgIGdldCBmdW4gaGV4TGl0ZXJhbDIoKTogSW50IHsKICAgICAgICByZXR1cm4gLTB4MTIzOwogICAgfQoKICAgIGdldCBmdW4gYmluTGl0ZXJhbDEoKTogSW50IHsKICAgICAgICByZXR1cm4gMGIxMDEwMTA7CiAgICB9CgogICAgZ2V0IGZ1biBiaW5MaXRlcmFsMigpOiBJbnQgewogICAgICAgIHJldHVybiAtMGIxMDEwMTA7CiAgICB9Cn0="},"compiler":{"name":"tact","version":"invalid","parameters":"{\"entrypoint\":\"./src/test/features/integer-literals.tact\",\"options\":{\"debug\":true}}"}} \ No newline at end of file +{"name":"IntegerLiteralsTester","code":"te6ccgECJgEAAhUAART/APSkE/S88sgLAQIBYgIDApLQAdDTAwFxsKMB+kABINdJgQELuvLgiCDXCwoggQT/uvLQiYMJuvLgiFRQUwNvBPhhAvhi2zxZ2zzy4IIwyPhDAcx/AcoAye1UIwQCASAFBgA8AZIwf+BwIddJwh+VMCDXCx/ewAAB10nBIbCRf+BwAgFIBwgCASAODwIBIAkKAg+1Qttnm2eGMCMNAg+ylTbPNs8MYCMLAg+ynXbPNs8MYCMMAA6CGBASMAAAAAaB/t0ABoEBIwIBIBARAgEgGRoCD7XTW2ebZ4YwIxICASATFAAEgHsCD7O2Ns82zwxgIxUCAVgWFwAMghA8VnjgALir0YJwXOw9XSyuex6E7DnWSoUbZoJwndY1LStkfLMi068t/fFiOYJwIFXAG4BnY5TOWDquRyWyw4JwG9Sd75VFlvHHU9PeBVnDJoJwnZdOWrNOy3M6DpZtlGbopAIOqvnbPNs8MSMYAASAhQIBIBscAgEgICECAUgdHgB1sm7jQ1aXBmczovL1FtVFZKb2hRQVRycGp3TDZDV01Ua25jNWczR01mYlBMandkMjhpbzVoUGpLMW2CAAEKq+7UTQ0gABAg6qI9s82zwxIx8ABIAqAg+xmHbPNs8MYCMiAg+xkDbPNs8MYCMkAAaBAqABNO1E0NQB+GPSADCRbeD4KNcLCoMJuvLgids8JQAEgNYAAm0=","abi":"{\"name\":\"IntegerLiteralsTester\",\"types\":[{\"name\":\"StateInit\",\"header\":null,\"fields\":[{\"name\":\"code\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":false}},{\"name\":\"data\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":false}}]},{\"name\":\"Context\",\"header\":null,\"fields\":[{\"name\":\"bounced\",\"type\":{\"kind\":\"simple\",\"type\":\"bool\",\"optional\":false}},{\"name\":\"sender\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":false}},{\"name\":\"value\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"raw\",\"type\":{\"kind\":\"simple\",\"type\":\"slice\",\"optional\":false}}]},{\"name\":\"SendParameters\",\"header\":null,\"fields\":[{\"name\":\"bounce\",\"type\":{\"kind\":\"simple\",\"type\":\"bool\",\"optional\":false}},{\"name\":\"to\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":false}},{\"name\":\"value\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"mode\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"body\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":true}},{\"name\":\"code\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":true}},{\"name\":\"data\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":true}}]}],\"receivers\":[{\"receiver\":\"internal\",\"message\":{\"kind\":\"empty\"}}],\"getters\":[{\"name\":\"decLiteral1\",\"arguments\":[],\"returnType\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"decLiteral2\",\"arguments\":[],\"returnType\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"decLiteral3\",\"arguments\":[],\"returnType\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"hexLiteral1\",\"arguments\":[],\"returnType\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"hexLiteral2\",\"arguments\":[],\"returnType\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"hexLiteral3\",\"arguments\":[],\"returnType\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"binLiteral1\",\"arguments\":[],\"returnType\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"binLiteral2\",\"arguments\":[],\"returnType\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"binLiteral3\",\"arguments\":[],\"returnType\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}}],\"errors\":{\"2\":{\"message\":\"Stack undeflow\"},\"3\":{\"message\":\"Stack overflow\"},\"4\":{\"message\":\"Integer overflow\"},\"5\":{\"message\":\"Integer out of expected range\"},\"6\":{\"message\":\"Invalid opcode\"},\"7\":{\"message\":\"Type check error\"},\"8\":{\"message\":\"Cell overflow\"},\"9\":{\"message\":\"Cell underflow\"},\"10\":{\"message\":\"Dictionary error\"},\"13\":{\"message\":\"Out of gas error\"},\"32\":{\"message\":\"Method ID not found\"},\"34\":{\"message\":\"Action is invalid or not supported\"},\"37\":{\"message\":\"Not enough TON\"},\"38\":{\"message\":\"Not enough extra-currencies\"},\"128\":{\"message\":\"Null reference exception\"},\"129\":{\"message\":\"Invalid serialization prefix\"},\"130\":{\"message\":\"Invalid incoming message\"},\"131\":{\"message\":\"Constraints error\"},\"132\":{\"message\":\"Access denied\"},\"133\":{\"message\":\"Contract stopped\"},\"134\":{\"message\":\"Invalid argument\"},\"135\":{\"message\":\"Code of a contract was not found\"},\"136\":{\"message\":\"Invalid address\"},\"137\":{\"message\":\"Masterchain support is not enabled for this contract\"}},\"interfaces\":[\"org.ton.introspection.v0\",\"org.ton.abi.ipfs.v0\",\"org.ton.deploy.lazy.v0\",\"org.ton.debug.v0\",\"org.ton.chain.workchain.v0\"]}","init":{"kind":"direct","args":[],"prefix":{"bits":1,"value":0},"deployment":{"kind":"system-cell","system":"te6cckECKAEAAh8AAQHAAQEFobyzAgEU/wD0pBP0vPLICwMCAWIkBAIBIBwFAgEgEgYCASAMBwIBIAoIAg+xkDbPNs8MYCYJAASA1gIPsZh2zzbPDGAmCwAGgQKgAgEgDg0AdbJu40NWlwZnM6Ly9RbVRWSm9oUUFUcnBqd0w2Q1dNVGtuYzVnM0dNZmJQTGp3ZDI4aW81aFBqSzFtggAgFIEQ8CDqoj2zzbPDEmEAAEgCoAEKq+7UTQ0gABAgEgGhMCASAYFAIBWBcVAg6q+ds82zwxJhYABICFALir0YJwXOw9XSyuex6E7DnWSoUbZoJwndY1LStkfLMi068t/fFiOYJwIFXAG4BnY5TOWDquRyWyw4JwG9Sd75VFlvHHU9PeBVnDJoJwnZdOWrNOy3M6DpZtlGbopAIPs7Y2zzbPDGAmGQAMghA8VnjgAg+101tnm2eGMCYbAASAewIBSB8dAg+1Qttnm2eGMCYeAAaBASMCASAiIAIPsp12zzbPDGAmIQAGgf7dAg+ylTbPNs8MYCYjAA6CGBASMAAAApLQAdDTAwFxsKMB+kABINdJgQELuvLgiCDXCwoggQT/uvLQiYMJuvLgiFRQUwNvBPhhAvhi2zxZ2zzy4IIwyPhDAcx/AcoAye1UJiUAPAGSMH/gcCHXScIflTAg1wsf3sAAAddJwSGwkX/gcAE07UTQ1AH4Y9IAMJFt4Pgo1wsKgwm68uCJ2zwnAAJtwEbooQ=="}},"sources":{"src/test/features/integer-literals.tact":"Y29udHJhY3QgSW50ZWdlckxpdGVyYWxzVGVzdGVyIHsKCiAgICBpbml0KCkgewogICAgICAgIAogICAgfQogICAgCiAgICByZWNlaXZlKCkgewogICAgICAgIC8vIERlcGxveQogICAgfQoKICAgIGdldCBmdW4gZGVjTGl0ZXJhbDEoKTogSW50IHsKICAgICAgICByZXR1cm4gMTIzOwogICAgfQoKICAgIGdldCBmdW4gZGVjTGl0ZXJhbDIoKTogSW50IHsKICAgICAgICByZXR1cm4gLTEyMzsKICAgIH0KCiAgICBnZXQgZnVuIGRlY0xpdGVyYWwzKCk6IEludCB7CiAgICAgICAgcmV0dXJuIDFfMDEyM18wMF9fMDAwOwogICAgfQoKICAgIGdldCBmdW4gaGV4TGl0ZXJhbDEoKTogSW50IHsKICAgICAgICByZXR1cm4gMHgxMjM7CiAgICB9CgogICAgZ2V0IGZ1biBoZXhMaXRlcmFsMigpOiBJbnQgewogICAgICAgIHJldHVybiAtMHgxMjM7CiAgICB9CgogICAgZ2V0IGZ1biBoZXhMaXRlcmFsMygpOiBJbnQgewogICAgICAgIHJldHVybiAweDFfMDEyM18wMF9fMDAwOwogICAgfQoKICAgIGdldCBmdW4gYmluTGl0ZXJhbDEoKTogSW50IHsKICAgICAgICByZXR1cm4gMGIxMDEwMTA7CiAgICB9CgogICAgZ2V0IGZ1biBiaW5MaXRlcmFsMigpOiBJbnQgewogICAgICAgIHJldHVybiAtMGIxMDEwMTA7CiAgICB9CgogICAgZ2V0IGZ1biBiaW5MaXRlcmFsMygpOiBJbnQgewogICAgICAgIHJldHVybiAwYjFfMDEwMV8wMF9fMDAwOwogICAgfQp9"},"compiler":{"name":"tact","version":"invalid","parameters":"{\"entrypoint\":\"./src/test/features/integer-literals.tact\",\"options\":{\"debug\":true}}"}} \ No newline at end of file diff --git a/src/test/features/output/integer-literals_IntegerLiteralsTester.ts b/src/test/features/output/integer-literals_IntegerLiteralsTester.ts index cbac06fe3..06e81c9de 100644 --- a/src/test/features/output/integer-literals_IntegerLiteralsTester.ts +++ b/src/test/features/output/integer-literals_IntegerLiteralsTester.ts @@ -201,8 +201,8 @@ function initIntegerLiteralsTester_init_args(src: IntegerLiteralsTester_init_arg } async function IntegerLiteralsTester_init() { - const __code = Cell.fromBase64('te6ccgECHQEAAcwAART/APSkE/S88sgLAQIBYgIDApLQAdDTAwFxsKMB+kABINdJgQELuvLgiCDXCwoggQT/uvLQiYMJuvLgiFRQUwNvBPhhAvhi2zxZ2zzy4IIwyPhDAcx/AcoAye1UGgQCASAFBgA8AZIwf+BwIddJwh+VMCDXCx/ewAAB10nBIbCRf+BwAgFIBwgCASALDAIPt067Z5tnhjAaCQIPtULbZ5tnhjAaCgAGgf7dAAaBASMCASANDgIBIBMUAg+101tnm2eGMBoPAgFuEBEABIB7ALir0YJwXOw9XSyuex6E7DnWSoUbZoJwndY1LStkfLMi068t/fFiOYJwIFXAG4BnY5TOWDquRyWyw4JwG9Sd75VFlvHHU9PeBVnDJoJwnZdOWrNOy3M6DpZtlGbopAIOqvnbPNs8MRoSAASAhQIBIBUWAg+2yBtnm2eGMBobAgFIFxgAdbJu40NWlwZnM6Ly9RbVZteW82cG93dWo0OUJEbzNOd2tVd291QVhTOXpGUlJjWjZkcnF0M0xVY290ggABCqvu1E0NIAAQIOqiPbPNs8MRoZAASAKgE07UTQ1AH4Y9IAMJFt4Pgo1wsKgwm68uCJ2zwcAASA1gACbQ=='); - const __system = Cell.fromBase64('te6cckECHwEAAdYAAQHAAQEFobyzAgEU/wD0pBP0vPLICwMCAWIbBAIBIBYFAgEgDwYCASAJBwIPtsgbZ5tnhjAdCAAEgNYCASALCgB1sm7jQ1aXBmczovL1FtVm15bzZwb3d1ajQ5QkRvM053a1V3b3VBWFM5ekZSUmNaNmRycXQzTFVjb3SCACAUgODAIOqiPbPNs8MR0NAASAKgAQqr7tRNDSAAECASAUEAIBbhMRAg6q+ds82zwxHRIABICFALir0YJwXOw9XSyuex6E7DnWSoUbZoJwndY1LStkfLMi068t/fFiOYJwIFXAG4BnY5TOWDquRyWyw4JwG9Sd75VFlvHHU9PeBVnDJoJwnZdOWrNOy3M6DpZtlGbopAIPtdNbZ5tnhjAdFQAEgHsCAUgZFwIPtULbZ5tnhjAdGAAGgQEjAg+3Trtnm2eGMB0aAAaB/t0CktAB0NMDAXGwowH6QAEg10mBAQu68uCIINcLCiCBBP+68tCJgwm68uCIVFBTA28E+GEC+GLbPFnbPPLggjDI+EMBzH8BygDJ7VQdHAA8AZIwf+BwIddJwh+VMCDXCx/ewAAB10nBIbCRf+BwATTtRNDUAfhj0gAwkW3g+CjXCwqDCbry4InbPB4AAm0QTcC0'); + const __code = Cell.fromBase64('te6ccgECJgEAAhUAART/APSkE/S88sgLAQIBYgIDApLQAdDTAwFxsKMB+kABINdJgQELuvLgiCDXCwoggQT/uvLQiYMJuvLgiFRQUwNvBPhhAvhi2zxZ2zzy4IIwyPhDAcx/AcoAye1UIwQCASAFBgA8AZIwf+BwIddJwh+VMCDXCx/ewAAB10nBIbCRf+BwAgFIBwgCASAODwIBIAkKAg+1Qttnm2eGMCMNAg+ylTbPNs8MYCMLAg+ynXbPNs8MYCMMAA6CGBASMAAAAAaB/t0ABoEBIwIBIBARAgEgGRoCD7XTW2ebZ4YwIxICASATFAAEgHsCD7O2Ns82zwxgIxUCAVgWFwAMghA8VnjgALir0YJwXOw9XSyuex6E7DnWSoUbZoJwndY1LStkfLMi068t/fFiOYJwIFXAG4BnY5TOWDquRyWyw4JwG9Sd75VFlvHHU9PeBVnDJoJwnZdOWrNOy3M6DpZtlGbopAIOqvnbPNs8MSMYAASAhQIBIBscAgEgICECAUgdHgB1sm7jQ1aXBmczovL1FtVFZKb2hRQVRycGp3TDZDV01Ua25jNWczR01mYlBMandkMjhpbzVoUGpLMW2CAAEKq+7UTQ0gABAg6qI9s82zwxIx8ABIAqAg+xmHbPNs8MYCMiAg+xkDbPNs8MYCMkAAaBAqABNO1E0NQB+GPSADCRbeD4KNcLCoMJuvLgids8JQAEgNYAAm0='); + const __system = Cell.fromBase64('te6cckECKAEAAh8AAQHAAQEFobyzAgEU/wD0pBP0vPLICwMCAWIkBAIBIBwFAgEgEgYCASAMBwIBIAoIAg+xkDbPNs8MYCYJAASA1gIPsZh2zzbPDGAmCwAGgQKgAgEgDg0AdbJu40NWlwZnM6Ly9RbVRWSm9oUUFUcnBqd0w2Q1dNVGtuYzVnM0dNZmJQTGp3ZDI4aW81aFBqSzFtggAgFIEQ8CDqoj2zzbPDEmEAAEgCoAEKq+7UTQ0gABAgEgGhMCASAYFAIBWBcVAg6q+ds82zwxJhYABICFALir0YJwXOw9XSyuex6E7DnWSoUbZoJwndY1LStkfLMi068t/fFiOYJwIFXAG4BnY5TOWDquRyWyw4JwG9Sd75VFlvHHU9PeBVnDJoJwnZdOWrNOy3M6DpZtlGbopAIPs7Y2zzbPDGAmGQAMghA8VnjgAg+101tnm2eGMCYbAASAewIBSB8dAg+1Qttnm2eGMCYeAAaBASMCASAiIAIPsp12zzbPDGAmIQAGgf7dAg+ylTbPNs8MYCYjAA6CGBASMAAAApLQAdDTAwFxsKMB+kABINdJgQELuvLgiCDXCwoggQT/uvLQiYMJuvLgiFRQUwNvBPhhAvhi2zxZ2zzy4IIwyPhDAcx/AcoAye1UJiUAPAGSMH/gcCHXScIflTAg1wsf3sAAAddJwSGwkX/gcAE07UTQ1AH4Y9IAMJFt4Pgo1wsKgwm68uCJ2zwnAAJtwEbooQ=='); let builder = beginCell(); builder.storeRef(__system); builder.storeUint(0, 1); @@ -247,10 +247,13 @@ const IntegerLiteralsTester_types: ABIType[] = [ const IntegerLiteralsTester_getters: ABIGetter[] = [ {"name":"decLiteral1","arguments":[],"returnType":{"kind":"simple","type":"int","optional":false,"format":257}}, {"name":"decLiteral2","arguments":[],"returnType":{"kind":"simple","type":"int","optional":false,"format":257}}, + {"name":"decLiteral3","arguments":[],"returnType":{"kind":"simple","type":"int","optional":false,"format":257}}, {"name":"hexLiteral1","arguments":[],"returnType":{"kind":"simple","type":"int","optional":false,"format":257}}, {"name":"hexLiteral2","arguments":[],"returnType":{"kind":"simple","type":"int","optional":false,"format":257}}, + {"name":"hexLiteral3","arguments":[],"returnType":{"kind":"simple","type":"int","optional":false,"format":257}}, {"name":"binLiteral1","arguments":[],"returnType":{"kind":"simple","type":"int","optional":false,"format":257}}, {"name":"binLiteral2","arguments":[],"returnType":{"kind":"simple","type":"int","optional":false,"format":257}}, + {"name":"binLiteral3","arguments":[],"returnType":{"kind":"simple","type":"int","optional":false,"format":257}}, ] const IntegerLiteralsTester_receivers: ABIReceiver[] = [ @@ -313,6 +316,13 @@ export class IntegerLiteralsTester implements Contract { return result; } + async getDecLiteral3(provider: ContractProvider) { + let builder = new TupleBuilder(); + let source = (await provider.get('decLiteral3', builder.build())).stack; + let result = source.readBigNumber(); + return result; + } + async getHexLiteral1(provider: ContractProvider) { let builder = new TupleBuilder(); let source = (await provider.get('hexLiteral1', builder.build())).stack; @@ -327,6 +337,13 @@ export class IntegerLiteralsTester implements Contract { return result; } + async getHexLiteral3(provider: ContractProvider) { + let builder = new TupleBuilder(); + let source = (await provider.get('hexLiteral3', builder.build())).stack; + let result = source.readBigNumber(); + return result; + } + async getBinLiteral1(provider: ContractProvider) { let builder = new TupleBuilder(); let source = (await provider.get('binLiteral1', builder.build())).stack; @@ -341,4 +358,11 @@ export class IntegerLiteralsTester implements Contract { return result; } + async getBinLiteral3(provider: ContractProvider) { + let builder = new TupleBuilder(); + let source = (await provider.get('binLiteral3', builder.build())).stack; + let result = source.readBigNumber(); + return result; + } + } \ No newline at end of file From 38a36ef318e9d015ccb78dd46b373ea026239239 Mon Sep 17 00:00:00 2001 From: Gusarich Date: Thu, 30 Nov 2023 16:48:29 +0300 Subject: [PATCH 03/11] add oct base to integer literals --- src/grammar/grammar.ohm | 5 ++- src/grammar/grammar.ohm-bundle.d.ts | 2 + src/test/feature-integer-literals.spec.ts | 4 ++ src/test/features/integer-literals.tact | 12 ++++++ ...integer-literals_IntegerLiteralsTester.abi | 2 +- ...er-literals_IntegerLiteralsTester.code.boc | Bin 545 -> 607 bytes ...ger-literals_IntegerLiteralsTester.code.fc | 35 +++++++++++++++++- ...er-literals_IntegerLiteralsTester.code.fif | 32 +++++++++++++++- ...iterals_IntegerLiteralsTester.code.rev.fif | 32 +++++++++++++++- ...-literals_IntegerLiteralsTester.headers.fc | 9 +++++ .../integer-literals_IntegerLiteralsTester.md | 10 ++++- ...integer-literals_IntegerLiteralsTester.pkg | 2 +- .../integer-literals_IntegerLiteralsTester.ts | 28 +++++++++++++- 13 files changed, 163 insertions(+), 10 deletions(-) diff --git a/src/grammar/grammar.ohm b/src/grammar/grammar.ohm index af57f57c9..e375d2d51 100644 --- a/src/grammar/grammar.ohm +++ b/src/grammar/grammar.ohm @@ -184,13 +184,16 @@ Tact { // Integer Literal // hexDigit defined in Ohm's built-in rules (otherwise: hexDigit = "0".."9" | "a".."f" | "A".."F") // digit defined in Ohm's built-in rules (otherwise: digit = "0".."9") - integerLiteral = integerLiteralHex | integerLiteralBin | integerLiteralDec // Order is important + integerLiteral = integerLiteralHex | integerLiteralBin | integerLiteralOct | integerLiteralDec // Order is important integerLiteralDec = digit+ ("_" | digit)* integerLiteralHex = "0x" hexDigit+ ("_" | hexDigit)* | "0X" hexDigit+ ("_" | hexDigit)* integerLiteralBin = "0b" binDigit+ ("_" | binDigit)* | "0B" binDigit+ ("_" | binDigit)* + integerLiteralOct = "0o" octDigit+ ("_" | octDigit)* + | "0O" octDigit+ ("_" | octDigit)* binDigit = "0" | "1" + octDigit = "0".."7" // Letters letterAsciiLC = "a".."z" diff --git a/src/grammar/grammar.ohm-bundle.d.ts b/src/grammar/grammar.ohm-bundle.d.ts index a9238292f..5912efaca 100644 --- a/src/grammar/grammar.ohm-bundle.d.ts +++ b/src/grammar/grammar.ohm-bundle.d.ts @@ -144,7 +144,9 @@ export interface TactActionDict extends ActionDict { integerLiteralDec?: (this: NonterminalNode, arg0: IterationNode, arg1: IterationNode) => T; integerLiteralHex?: (this: NonterminalNode, arg0: TerminalNode, arg1: IterationNode, arg2: IterationNode) => T; integerLiteralBin?: (this: NonterminalNode, arg0: TerminalNode, arg1: IterationNode, arg2: IterationNode) => T; + integerLiteralOct?: (this: NonterminalNode, arg0: TerminalNode, arg1: IterationNode, arg2: IterationNode) => T; binDigit?: (this: NonterminalNode, arg0: TerminalNode) => T; + octDigit?: (this: NonterminalNode, arg0: TerminalNode) => T; letterAsciiLC?: (this: NonterminalNode, arg0: TerminalNode) => T; letterAsciiUC?: (this: NonterminalNode, arg0: TerminalNode) => T; letterAscii?: (this: NonterminalNode, arg0: NonterminalNode) => T; diff --git a/src/test/feature-integer-literals.spec.ts b/src/test/feature-integer-literals.spec.ts index 684785f9c..505197759 100644 --- a/src/test/feature-integer-literals.spec.ts +++ b/src/test/feature-integer-literals.spec.ts @@ -27,5 +27,9 @@ describe('feature-integer-literals', () => { expect(await contract.getBinLiteral1()).toEqual(0b101010n); expect(await contract.getBinLiteral2()).toEqual(-0b101010n); expect(await contract.getBinLiteral3()).toEqual(0b1010100000n); + + expect(await contract.getOctLiteral1()).toEqual(0o123n); + expect(await contract.getOctLiteral2()).toEqual(-0o123n); + expect(await contract.getOctLiteral3()).toEqual(0o1012300000n); }); }); diff --git a/src/test/features/integer-literals.tact b/src/test/features/integer-literals.tact index 9be4fd9ec..65303cbe9 100644 --- a/src/test/features/integer-literals.tact +++ b/src/test/features/integer-literals.tact @@ -43,4 +43,16 @@ contract IntegerLiteralsTester { get fun binLiteral3(): Int { return 0b1_0101_00__000; } + + get fun octLiteral1(): Int { + return 0o123; + } + + get fun octLiteral2(): Int { + return -0o123; + } + + get fun octLiteral3(): Int { + return 0o1_0123_00__000; + } } \ No newline at end of file diff --git a/src/test/features/output/integer-literals_IntegerLiteralsTester.abi b/src/test/features/output/integer-literals_IntegerLiteralsTester.abi index 43ee3a03b..c1e8e9196 100644 --- a/src/test/features/output/integer-literals_IntegerLiteralsTester.abi +++ b/src/test/features/output/integer-literals_IntegerLiteralsTester.abi @@ -1 +1 @@ -{"name":"IntegerLiteralsTester","types":[{"name":"StateInit","header":null,"fields":[{"name":"code","type":{"kind":"simple","type":"cell","optional":false}},{"name":"data","type":{"kind":"simple","type":"cell","optional":false}}]},{"name":"Context","header":null,"fields":[{"name":"bounced","type":{"kind":"simple","type":"bool","optional":false}},{"name":"sender","type":{"kind":"simple","type":"address","optional":false}},{"name":"value","type":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"raw","type":{"kind":"simple","type":"slice","optional":false}}]},{"name":"SendParameters","header":null,"fields":[{"name":"bounce","type":{"kind":"simple","type":"bool","optional":false}},{"name":"to","type":{"kind":"simple","type":"address","optional":false}},{"name":"value","type":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"mode","type":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"body","type":{"kind":"simple","type":"cell","optional":true}},{"name":"code","type":{"kind":"simple","type":"cell","optional":true}},{"name":"data","type":{"kind":"simple","type":"cell","optional":true}}]}],"receivers":[{"receiver":"internal","message":{"kind":"empty"}}],"getters":[{"name":"decLiteral1","arguments":[],"returnType":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"decLiteral2","arguments":[],"returnType":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"decLiteral3","arguments":[],"returnType":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"hexLiteral1","arguments":[],"returnType":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"hexLiteral2","arguments":[],"returnType":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"hexLiteral3","arguments":[],"returnType":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"binLiteral1","arguments":[],"returnType":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"binLiteral2","arguments":[],"returnType":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"binLiteral3","arguments":[],"returnType":{"kind":"simple","type":"int","optional":false,"format":257}}],"errors":{"2":{"message":"Stack undeflow"},"3":{"message":"Stack overflow"},"4":{"message":"Integer overflow"},"5":{"message":"Integer out of expected range"},"6":{"message":"Invalid opcode"},"7":{"message":"Type check error"},"8":{"message":"Cell overflow"},"9":{"message":"Cell underflow"},"10":{"message":"Dictionary error"},"13":{"message":"Out of gas error"},"32":{"message":"Method ID not found"},"34":{"message":"Action is invalid or not supported"},"37":{"message":"Not enough TON"},"38":{"message":"Not enough extra-currencies"},"128":{"message":"Null reference exception"},"129":{"message":"Invalid serialization prefix"},"130":{"message":"Invalid incoming message"},"131":{"message":"Constraints error"},"132":{"message":"Access denied"},"133":{"message":"Contract stopped"},"134":{"message":"Invalid argument"},"135":{"message":"Code of a contract was not found"},"136":{"message":"Invalid address"},"137":{"message":"Masterchain support is not enabled for this contract"}},"interfaces":["org.ton.introspection.v0","org.ton.abi.ipfs.v0","org.ton.deploy.lazy.v0","org.ton.debug.v0","org.ton.chain.workchain.v0"]} \ No newline at end of file +{"name":"IntegerLiteralsTester","types":[{"name":"StateInit","header":null,"fields":[{"name":"code","type":{"kind":"simple","type":"cell","optional":false}},{"name":"data","type":{"kind":"simple","type":"cell","optional":false}}]},{"name":"Context","header":null,"fields":[{"name":"bounced","type":{"kind":"simple","type":"bool","optional":false}},{"name":"sender","type":{"kind":"simple","type":"address","optional":false}},{"name":"value","type":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"raw","type":{"kind":"simple","type":"slice","optional":false}}]},{"name":"SendParameters","header":null,"fields":[{"name":"bounce","type":{"kind":"simple","type":"bool","optional":false}},{"name":"to","type":{"kind":"simple","type":"address","optional":false}},{"name":"value","type":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"mode","type":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"body","type":{"kind":"simple","type":"cell","optional":true}},{"name":"code","type":{"kind":"simple","type":"cell","optional":true}},{"name":"data","type":{"kind":"simple","type":"cell","optional":true}}]}],"receivers":[{"receiver":"internal","message":{"kind":"empty"}}],"getters":[{"name":"decLiteral1","arguments":[],"returnType":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"decLiteral2","arguments":[],"returnType":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"decLiteral3","arguments":[],"returnType":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"hexLiteral1","arguments":[],"returnType":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"hexLiteral2","arguments":[],"returnType":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"hexLiteral3","arguments":[],"returnType":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"binLiteral1","arguments":[],"returnType":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"binLiteral2","arguments":[],"returnType":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"binLiteral3","arguments":[],"returnType":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"octLiteral1","arguments":[],"returnType":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"octLiteral2","arguments":[],"returnType":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"octLiteral3","arguments":[],"returnType":{"kind":"simple","type":"int","optional":false,"format":257}}],"errors":{"2":{"message":"Stack undeflow"},"3":{"message":"Stack overflow"},"4":{"message":"Integer overflow"},"5":{"message":"Integer out of expected range"},"6":{"message":"Invalid opcode"},"7":{"message":"Type check error"},"8":{"message":"Cell overflow"},"9":{"message":"Cell underflow"},"10":{"message":"Dictionary error"},"13":{"message":"Out of gas error"},"32":{"message":"Method ID not found"},"34":{"message":"Action is invalid or not supported"},"37":{"message":"Not enough TON"},"38":{"message":"Not enough extra-currencies"},"128":{"message":"Null reference exception"},"129":{"message":"Invalid serialization prefix"},"130":{"message":"Invalid incoming message"},"131":{"message":"Constraints error"},"132":{"message":"Access denied"},"133":{"message":"Contract stopped"},"134":{"message":"Invalid argument"},"135":{"message":"Code of a contract was not found"},"136":{"message":"Invalid address"},"137":{"message":"Masterchain support is not enabled for this contract"}},"interfaces":["org.ton.introspection.v0","org.ton.abi.ipfs.v0","org.ton.deploy.lazy.v0","org.ton.debug.v0","org.ton.chain.workchain.v0"]} \ No newline at end of file diff --git a/src/test/features/output/integer-literals_IntegerLiteralsTester.code.boc b/src/test/features/output/integer-literals_IntegerLiteralsTester.code.boc index e5eb55d2af822d07a3310a84d71dce1e026471c0..9bd27b7bcaea3f1cf00e22c73ed51c118709066e 100644 GIT binary patch delta 292 zcmZ3;a-W5J>$^Ecj7<8B3{1fjx#JjhCT7`7>hLo0Z<=a$-t0V2f(|#3J+}SAY;Bjw_vtf6L~RZ7g;r#Y*KHK&LNt4?orYfo1%^-y3C zSher1%Y{n}j6ehB6_|LJac-;JR*|fu$i%zE9l}%sS{e+*TJB7YX{u^KLQ@N$^Ecj7(~b3{0XEx#Jj>CuZ48D)Tb&Z<=a$-t0V2f-*OdJ+}vG`|10xgPD&^ZYw`~lS<$;!HG4XGl0d> 128, @@ -138,7 +171,7 @@ _ supported_interfaces() method_id { } _ get_abi_ipfs() method_id { - return "ipfs://QmTVJohQATrpjwL6CWMTknc5g3GMfbPLjwd28io5hPjK1m"; + return "ipfs://QmNsM6dTeFnXrmZ43LGqqPUSo2GCxyd2uh6Au2Yx4hvrwT"; } _ lazy_deployment_completed() method_id { diff --git a/src/test/features/output/integer-literals_IntegerLiteralsTester.code.fif b/src/test/features/output/integer-literals_IntegerLiteralsTester.code.fif index 9f17ddedf..9190c321a 100644 --- a/src/test/features/output/integer-literals_IntegerLiteralsTester.code.fif +++ b/src/test/features/output/integer-literals_IntegerLiteralsTester.code.fif @@ -12,6 +12,9 @@ PROGRAM{ DECLPROC $IntegerLiteralsTester$_fun_binLiteral1 DECLPROC $IntegerLiteralsTester$_fun_binLiteral2 DECLPROC $IntegerLiteralsTester$_fun_binLiteral3 + DECLPROC $IntegerLiteralsTester$_fun_octLiteral1 + DECLPROC $IntegerLiteralsTester$_fun_octLiteral2 + DECLPROC $IntegerLiteralsTester$_fun_octLiteral3 DECLPROC %$IntegerLiteralsTester$_internal_empty 102042 DECLMETHOD %decLiteral1 114425 DECLMETHOD %decLiteral2 @@ -22,6 +25,9 @@ PROGRAM{ 116259 DECLMETHOD %binLiteral1 128576 DECLMETHOD %binLiteral2 124513 DECLMETHOD %binLiteral3 + 115972 DECLMETHOD %octLiteral1 + 128359 DECLMETHOD %octLiteral2 + 124230 DECLMETHOD %octLiteral3 113617 DECLMETHOD supported_interfaces 121275 DECLMETHOD get_abi_ipfs 115390 DECLMETHOD lazy_deployment_completed @@ -107,6 +113,15 @@ PROGRAM{ $IntegerLiteralsTester$_fun_binLiteral3 PROCREF:<{ 672 PUSHINT }> + $IntegerLiteralsTester$_fun_octLiteral1 PROCREF:<{ + 83 PUSHINT + }> + $IntegerLiteralsTester$_fun_octLiteral2 PROCREF:<{ + -83 PUSHINT + }> + $IntegerLiteralsTester$_fun_octLiteral3 PROCREF:<{ + 136937472 PUSHINT + }> %$IntegerLiteralsTester$_internal_empty PROCINLINE:<{ }> %decLiteral1 PROC:<{ @@ -154,6 +169,21 @@ PROGRAM{ $IntegerLiteralsTester$_fun_binLiteral3 INLINECALLDICT NIP }> + %octLiteral1 PROC:<{ + $IntegerLiteralsTester$_contract_load INLINECALLDICT + $IntegerLiteralsTester$_fun_octLiteral1 INLINECALLDICT + NIP + }> + %octLiteral2 PROC:<{ + $IntegerLiteralsTester$_contract_load INLINECALLDICT + $IntegerLiteralsTester$_fun_octLiteral2 INLINECALLDICT + NIP + }> + %octLiteral3 PROC:<{ + $IntegerLiteralsTester$_contract_load INLINECALLDICT + $IntegerLiteralsTester$_fun_octLiteral3 INLINECALLDICT + NIP + }> supported_interfaces PROC:<{ 123515602279859691144772641439386770278 PUSHINT 209801025412363888721030803524359905849 PUSHINT @@ -162,7 +192,7 @@ PROGRAM{ 209474421377847335869795010607481022628 PUSHINT }> get_abi_ipfs PROC:<{ - x{697066733a2f2f516d54564a6f6851415472706a774c3643574d546b6e63356733474d6662504c6a77643238696f3568506a4b316d} PUSHSLICE + x{697066733a2f2f516d4e734d36645465466e58726d5a34334c4771715055536f324743787964327568364175325978346876727754} PUSHSLICE }> lazy_deployment_completed PROC:<{ c4 PUSH diff --git a/src/test/features/output/integer-literals_IntegerLiteralsTester.code.rev.fif b/src/test/features/output/integer-literals_IntegerLiteralsTester.code.rev.fif index 9b5b35e85..eb6f60797 100644 --- a/src/test/features/output/integer-literals_IntegerLiteralsTester.code.rev.fif +++ b/src/test/features/output/integer-literals_IntegerLiteralsTester.code.rev.fif @@ -8,9 +8,12 @@ PROGRAM{ DECLPROC supported_interfaces; DECLPROC ?fun_114425; DECLPROC lazy_deployment_completed; + DECLPROC ?fun_115972; DECLPROC ?fun_116259; DECLPROC get_abi_ipfs; + DECLPROC ?fun_124230; DECLPROC ?fun_124513; + DECLPROC ?fun_128359; DECLPROC ?fun_128576; DECLPROC ?fun_ref_026cdd3ff17e82bb; DECLPROC ?fun_ref_26dd4850c2973b9d; @@ -21,9 +24,12 @@ PROGRAM{ DECLPROC ?fun_ref_553f7869b01170d9; DECLPROC ?fun_ref_5bdfe841fa412a76; DECLPROC ?fun_ref_684a8c99db9474e5; + DECLPROC ?fun_ref_7366f20a31928e43; DECLPROC ?fun_ref_7a4cfefa28b39727; DECLPROC ?fun_ref_a05e0042bce184fb; + DECLPROC ?fun_ref_b5b9e67d57f2dcce; DECLPROC ?fun_ref_c0ca23818e24f3c9; + DECLPROC ?fun_ref_f0101fa3fb0bc1f5; recv_internal PROC:<{ s0 s1 XCHG CTOS @@ -113,19 +119,34 @@ PROGRAM{ 1 LDI s0 s1 XCHG }> + ?fun_115972 PROC:<{ + ?fun_ref_a05e0042bce184fb INLINECALLDICT + ?fun_ref_7366f20a31928e43 INLINECALLDICT + s1 POP + }> ?fun_116259 PROC:<{ ?fun_ref_a05e0042bce184fb INLINECALLDICT ?fun_ref_026cdd3ff17e82bb INLINECALLDICT s1 POP }> get_abi_ipfs PROC:<{ - x{697066733A2F2F516D54564A6F6851415472706A774C3643574D546B6E63356733474D6662504C6A77643238696F3568506A4B316D82_} PUSHSLICE + x{697066733A2F2F516D4E734D36645465466E58726D5A34334C4771715055536F32474378796432756836417532597834687672775482_} PUSHSLICE + }> + ?fun_124230 PROC:<{ + ?fun_ref_a05e0042bce184fb INLINECALLDICT + ?fun_ref_b5b9e67d57f2dcce INLINECALLDICT + s1 POP }> ?fun_124513 PROC:<{ ?fun_ref_a05e0042bce184fb INLINECALLDICT ?fun_ref_5bdfe841fa412a76 INLINECALLDICT s1 POP }> + ?fun_128359 PROC:<{ + ?fun_ref_a05e0042bce184fb INLINECALLDICT + ?fun_ref_f0101fa3fb0bc1f5 INLINECALLDICT + s1 POP + }> ?fun_128576 PROC:<{ ?fun_ref_a05e0042bce184fb INLINECALLDICT ?fun_ref_4065f3bb1951fe13 INLINECALLDICT @@ -183,6 +204,9 @@ PROGRAM{ ?fun_ref_684a8c99db9474e5 PROCREF:<{ 69024612352 PUSHINT }> + ?fun_ref_7366f20a31928e43 PROCREF:<{ + 83 PUSHINT + }> ?fun_ref_7a4cfefa28b39727 PROCREF:<{ 291 PUSHINT }> @@ -205,7 +229,13 @@ PROGRAM{ 137 THROWIFNOT ?fun_ref_c0ca23818e24f3c9 INLINECALLDICT }> + ?fun_ref_b5b9e67d57f2dcce PROCREF:<{ + 136937472 PUSHINT + }> ?fun_ref_c0ca23818e24f3c9 PROCREF:<{ NULL }> + ?fun_ref_f0101fa3fb0bc1f5 PROCREF:<{ + -83 PUSHINT + }> }END>c \ No newline at end of file diff --git a/src/test/features/output/integer-literals_IntegerLiteralsTester.headers.fc b/src/test/features/output/integer-literals_IntegerLiteralsTester.headers.fc index 385aad478..1e13de2f8 100644 --- a/src/test/features/output/integer-literals_IntegerLiteralsTester.headers.fc +++ b/src/test/features/output/integer-literals_IntegerLiteralsTester.headers.fc @@ -41,3 +41,12 @@ tuple $IntegerLiteralsTester$_contract_load() impure inline_ref; ;; $IntegerLiteralsTester$_fun_binLiteral3 (tuple, int) $IntegerLiteralsTester$_fun_binLiteral3(tuple $self) impure inline_ref; + +;; $IntegerLiteralsTester$_fun_octLiteral1 +(tuple, int) $IntegerLiteralsTester$_fun_octLiteral1(tuple $self) impure inline_ref; + +;; $IntegerLiteralsTester$_fun_octLiteral2 +(tuple, int) $IntegerLiteralsTester$_fun_octLiteral2(tuple $self) impure inline_ref; + +;; $IntegerLiteralsTester$_fun_octLiteral3 +(tuple, int) $IntegerLiteralsTester$_fun_octLiteral3(tuple $self) impure inline_ref; diff --git a/src/test/features/output/integer-literals_IntegerLiteralsTester.md b/src/test/features/output/integer-literals_IntegerLiteralsTester.md index 87a39d0a4..d6658a46c 100644 --- a/src/test/features/output/integer-literals_IntegerLiteralsTester.md +++ b/src/test/features/output/integer-literals_IntegerLiteralsTester.md @@ -1,6 +1,6 @@ # TACT Compilation Report Contract: IntegerLiteralsTester -BOC Size: 545 bytes +BOC Size: 607 bytes # Types Total Types: 3 @@ -18,7 +18,7 @@ TLB: `_ bounce:bool to:address value:int257 mode:int257 body:Maybe ^cell code:Ma Signature: `SendParameters{bounce:bool,to:address,value:int257,mode:int257,body:Maybe ^cell,code:Maybe ^cell,data:Maybe ^cell}` # Get Methods -Total Get Methods: 9 +Total Get Methods: 12 ## decLiteral1 @@ -38,6 +38,12 @@ Total Get Methods: 9 ## binLiteral3 +## octLiteral1 + +## octLiteral2 + +## octLiteral3 + # Error Codes 2: Stack undeflow 3: Stack overflow diff --git a/src/test/features/output/integer-literals_IntegerLiteralsTester.pkg b/src/test/features/output/integer-literals_IntegerLiteralsTester.pkg index 91f239db9..84bd8cca5 100644 --- a/src/test/features/output/integer-literals_IntegerLiteralsTester.pkg +++ b/src/test/features/output/integer-literals_IntegerLiteralsTester.pkg @@ -1 +1 @@ -{"name":"IntegerLiteralsTester","code":"te6ccgECJgEAAhUAART/APSkE/S88sgLAQIBYgIDApLQAdDTAwFxsKMB+kABINdJgQELuvLgiCDXCwoggQT/uvLQiYMJuvLgiFRQUwNvBPhhAvhi2zxZ2zzy4IIwyPhDAcx/AcoAye1UIwQCASAFBgA8AZIwf+BwIddJwh+VMCDXCx/ewAAB10nBIbCRf+BwAgFIBwgCASAODwIBIAkKAg+1Qttnm2eGMCMNAg+ylTbPNs8MYCMLAg+ynXbPNs8MYCMMAA6CGBASMAAAAAaB/t0ABoEBIwIBIBARAgEgGRoCD7XTW2ebZ4YwIxICASATFAAEgHsCD7O2Ns82zwxgIxUCAVgWFwAMghA8VnjgALir0YJwXOw9XSyuex6E7DnWSoUbZoJwndY1LStkfLMi068t/fFiOYJwIFXAG4BnY5TOWDquRyWyw4JwG9Sd75VFlvHHU9PeBVnDJoJwnZdOWrNOy3M6DpZtlGbopAIOqvnbPNs8MSMYAASAhQIBIBscAgEgICECAUgdHgB1sm7jQ1aXBmczovL1FtVFZKb2hRQVRycGp3TDZDV01Ua25jNWczR01mYlBMandkMjhpbzVoUGpLMW2CAAEKq+7UTQ0gABAg6qI9s82zwxIx8ABIAqAg+xmHbPNs8MYCMiAg+xkDbPNs8MYCMkAAaBAqABNO1E0NQB+GPSADCRbeD4KNcLCoMJuvLgids8JQAEgNYAAm0=","abi":"{\"name\":\"IntegerLiteralsTester\",\"types\":[{\"name\":\"StateInit\",\"header\":null,\"fields\":[{\"name\":\"code\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":false}},{\"name\":\"data\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":false}}]},{\"name\":\"Context\",\"header\":null,\"fields\":[{\"name\":\"bounced\",\"type\":{\"kind\":\"simple\",\"type\":\"bool\",\"optional\":false}},{\"name\":\"sender\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":false}},{\"name\":\"value\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"raw\",\"type\":{\"kind\":\"simple\",\"type\":\"slice\",\"optional\":false}}]},{\"name\":\"SendParameters\",\"header\":null,\"fields\":[{\"name\":\"bounce\",\"type\":{\"kind\":\"simple\",\"type\":\"bool\",\"optional\":false}},{\"name\":\"to\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":false}},{\"name\":\"value\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"mode\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"body\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":true}},{\"name\":\"code\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":true}},{\"name\":\"data\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":true}}]}],\"receivers\":[{\"receiver\":\"internal\",\"message\":{\"kind\":\"empty\"}}],\"getters\":[{\"name\":\"decLiteral1\",\"arguments\":[],\"returnType\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"decLiteral2\",\"arguments\":[],\"returnType\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"decLiteral3\",\"arguments\":[],\"returnType\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"hexLiteral1\",\"arguments\":[],\"returnType\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"hexLiteral2\",\"arguments\":[],\"returnType\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"hexLiteral3\",\"arguments\":[],\"returnType\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"binLiteral1\",\"arguments\":[],\"returnType\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"binLiteral2\",\"arguments\":[],\"returnType\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"binLiteral3\",\"arguments\":[],\"returnType\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}}],\"errors\":{\"2\":{\"message\":\"Stack undeflow\"},\"3\":{\"message\":\"Stack overflow\"},\"4\":{\"message\":\"Integer overflow\"},\"5\":{\"message\":\"Integer out of expected range\"},\"6\":{\"message\":\"Invalid opcode\"},\"7\":{\"message\":\"Type check error\"},\"8\":{\"message\":\"Cell overflow\"},\"9\":{\"message\":\"Cell underflow\"},\"10\":{\"message\":\"Dictionary error\"},\"13\":{\"message\":\"Out of gas error\"},\"32\":{\"message\":\"Method ID not found\"},\"34\":{\"message\":\"Action is invalid or not supported\"},\"37\":{\"message\":\"Not enough TON\"},\"38\":{\"message\":\"Not enough extra-currencies\"},\"128\":{\"message\":\"Null reference exception\"},\"129\":{\"message\":\"Invalid serialization prefix\"},\"130\":{\"message\":\"Invalid incoming message\"},\"131\":{\"message\":\"Constraints error\"},\"132\":{\"message\":\"Access denied\"},\"133\":{\"message\":\"Contract stopped\"},\"134\":{\"message\":\"Invalid argument\"},\"135\":{\"message\":\"Code of a contract was not found\"},\"136\":{\"message\":\"Invalid address\"},\"137\":{\"message\":\"Masterchain support is not enabled for this contract\"}},\"interfaces\":[\"org.ton.introspection.v0\",\"org.ton.abi.ipfs.v0\",\"org.ton.deploy.lazy.v0\",\"org.ton.debug.v0\",\"org.ton.chain.workchain.v0\"]}","init":{"kind":"direct","args":[],"prefix":{"bits":1,"value":0},"deployment":{"kind":"system-cell","system":"te6cckECKAEAAh8AAQHAAQEFobyzAgEU/wD0pBP0vPLICwMCAWIkBAIBIBwFAgEgEgYCASAMBwIBIAoIAg+xkDbPNs8MYCYJAASA1gIPsZh2zzbPDGAmCwAGgQKgAgEgDg0AdbJu40NWlwZnM6Ly9RbVRWSm9oUUFUcnBqd0w2Q1dNVGtuYzVnM0dNZmJQTGp3ZDI4aW81aFBqSzFtggAgFIEQ8CDqoj2zzbPDEmEAAEgCoAEKq+7UTQ0gABAgEgGhMCASAYFAIBWBcVAg6q+ds82zwxJhYABICFALir0YJwXOw9XSyuex6E7DnWSoUbZoJwndY1LStkfLMi068t/fFiOYJwIFXAG4BnY5TOWDquRyWyw4JwG9Sd75VFlvHHU9PeBVnDJoJwnZdOWrNOy3M6DpZtlGbopAIPs7Y2zzbPDGAmGQAMghA8VnjgAg+101tnm2eGMCYbAASAewIBSB8dAg+1Qttnm2eGMCYeAAaBASMCASAiIAIPsp12zzbPDGAmIQAGgf7dAg+ylTbPNs8MYCYjAA6CGBASMAAAApLQAdDTAwFxsKMB+kABINdJgQELuvLgiCDXCwoggQT/uvLQiYMJuvLgiFRQUwNvBPhhAvhi2zxZ2zzy4IIwyPhDAcx/AcoAye1UJiUAPAGSMH/gcCHXScIflTAg1wsf3sAAAddJwSGwkX/gcAE07UTQ1AH4Y9IAMJFt4Pgo1wsKgwm68uCJ2zwnAAJtwEbooQ=="}},"sources":{"src/test/features/integer-literals.tact":"Y29udHJhY3QgSW50ZWdlckxpdGVyYWxzVGVzdGVyIHsKCiAgICBpbml0KCkgewogICAgICAgIAogICAgfQogICAgCiAgICByZWNlaXZlKCkgewogICAgICAgIC8vIERlcGxveQogICAgfQoKICAgIGdldCBmdW4gZGVjTGl0ZXJhbDEoKTogSW50IHsKICAgICAgICByZXR1cm4gMTIzOwogICAgfQoKICAgIGdldCBmdW4gZGVjTGl0ZXJhbDIoKTogSW50IHsKICAgICAgICByZXR1cm4gLTEyMzsKICAgIH0KCiAgICBnZXQgZnVuIGRlY0xpdGVyYWwzKCk6IEludCB7CiAgICAgICAgcmV0dXJuIDFfMDEyM18wMF9fMDAwOwogICAgfQoKICAgIGdldCBmdW4gaGV4TGl0ZXJhbDEoKTogSW50IHsKICAgICAgICByZXR1cm4gMHgxMjM7CiAgICB9CgogICAgZ2V0IGZ1biBoZXhMaXRlcmFsMigpOiBJbnQgewogICAgICAgIHJldHVybiAtMHgxMjM7CiAgICB9CgogICAgZ2V0IGZ1biBoZXhMaXRlcmFsMygpOiBJbnQgewogICAgICAgIHJldHVybiAweDFfMDEyM18wMF9fMDAwOwogICAgfQoKICAgIGdldCBmdW4gYmluTGl0ZXJhbDEoKTogSW50IHsKICAgICAgICByZXR1cm4gMGIxMDEwMTA7CiAgICB9CgogICAgZ2V0IGZ1biBiaW5MaXRlcmFsMigpOiBJbnQgewogICAgICAgIHJldHVybiAtMGIxMDEwMTA7CiAgICB9CgogICAgZ2V0IGZ1biBiaW5MaXRlcmFsMygpOiBJbnQgewogICAgICAgIHJldHVybiAwYjFfMDEwMV8wMF9fMDAwOwogICAgfQp9"},"compiler":{"name":"tact","version":"invalid","parameters":"{\"entrypoint\":\"./src/test/features/integer-literals.tact\",\"options\":{\"debug\":true}}"}} \ No newline at end of file +{"name":"IntegerLiteralsTester","code":"te6ccgECLwEAAlMAART/APSkE/S88sgLAQIBYgIDApLQAdDTAwFxsKMB+kABINdJgQELuvLgiCDXCwoggQT/uvLQiYMJuvLgiFRQUwNvBPhhAvhi2zxZ2zzy4IIwyPhDAcx/AcoAye1ULAQCASAFBgA8AZIwf+BwIddJwh+VMCDXCx/ewAAB10nBIbCRf+BwAgFIBwgCASAODwIBIAkKAg+1Qttnm2eGMCwNAg+ylTbPNs8MYCwLAg+ynXbPNs8MYCwMAA6CGBASMAAAAAaB/t0ABoEBIwIBIBARAgEgGRoCD7XTW2ebZ4YwLBICASATFAAEgHsCD7O2Ns82zwxgLBUCAVgWFwAMghA8VnjgALir0YJwXOw9XSyuex6E7DnWSoUbZoJwndY1LStkfLMi068t/fFiOYJwIFXAG4BnY5TOWDquRyWyw4JwG9Sd75VFlvHHU9PeBVnDJoJwnZdOWrNOy3M6DpZtlGbopAIOqvnbPNs8MSwYAASAhQIBIBscAgEgIyQCAUgdHgB1sm7jQ1aXBmczovL1FtTnNNNmRUZUZuWHJtWjQzTEdxcVBVU28yR0N4eWQydWg2QXUyWXg0aHZyd1SCAAEKq+7UTQ0gABAgEgHyACDaYJtnm2eGMsIQINpEe2ebZ4YywiAASAUwAEgCoCAWYlJgIBZikqAg2mjbZ5tnhjLCcCDaTDtnm2eGMsKAAMghAIKYAAAAaBAqACDabPtnm2eGMsKwINpIG2ebZ4YywtAASArQE07UTQ1AH4Y9IAMJFt4Pgo1wsKgwm68uCJ2zwuAASA1gACbQ==","abi":"{\"name\":\"IntegerLiteralsTester\",\"types\":[{\"name\":\"StateInit\",\"header\":null,\"fields\":[{\"name\":\"code\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":false}},{\"name\":\"data\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":false}}]},{\"name\":\"Context\",\"header\":null,\"fields\":[{\"name\":\"bounced\",\"type\":{\"kind\":\"simple\",\"type\":\"bool\",\"optional\":false}},{\"name\":\"sender\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":false}},{\"name\":\"value\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"raw\",\"type\":{\"kind\":\"simple\",\"type\":\"slice\",\"optional\":false}}]},{\"name\":\"SendParameters\",\"header\":null,\"fields\":[{\"name\":\"bounce\",\"type\":{\"kind\":\"simple\",\"type\":\"bool\",\"optional\":false}},{\"name\":\"to\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":false}},{\"name\":\"value\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"mode\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"body\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":true}},{\"name\":\"code\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":true}},{\"name\":\"data\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":true}}]}],\"receivers\":[{\"receiver\":\"internal\",\"message\":{\"kind\":\"empty\"}}],\"getters\":[{\"name\":\"decLiteral1\",\"arguments\":[],\"returnType\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"decLiteral2\",\"arguments\":[],\"returnType\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"decLiteral3\",\"arguments\":[],\"returnType\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"hexLiteral1\",\"arguments\":[],\"returnType\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"hexLiteral2\",\"arguments\":[],\"returnType\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"hexLiteral3\",\"arguments\":[],\"returnType\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"binLiteral1\",\"arguments\":[],\"returnType\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"binLiteral2\",\"arguments\":[],\"returnType\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"binLiteral3\",\"arguments\":[],\"returnType\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"octLiteral1\",\"arguments\":[],\"returnType\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"octLiteral2\",\"arguments\":[],\"returnType\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"octLiteral3\",\"arguments\":[],\"returnType\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}}],\"errors\":{\"2\":{\"message\":\"Stack undeflow\"},\"3\":{\"message\":\"Stack overflow\"},\"4\":{\"message\":\"Integer overflow\"},\"5\":{\"message\":\"Integer out of expected range\"},\"6\":{\"message\":\"Invalid opcode\"},\"7\":{\"message\":\"Type check error\"},\"8\":{\"message\":\"Cell overflow\"},\"9\":{\"message\":\"Cell underflow\"},\"10\":{\"message\":\"Dictionary error\"},\"13\":{\"message\":\"Out of gas error\"},\"32\":{\"message\":\"Method ID not found\"},\"34\":{\"message\":\"Action is invalid or not supported\"},\"37\":{\"message\":\"Not enough TON\"},\"38\":{\"message\":\"Not enough extra-currencies\"},\"128\":{\"message\":\"Null reference exception\"},\"129\":{\"message\":\"Invalid serialization prefix\"},\"130\":{\"message\":\"Invalid incoming message\"},\"131\":{\"message\":\"Constraints error\"},\"132\":{\"message\":\"Access denied\"},\"133\":{\"message\":\"Contract stopped\"},\"134\":{\"message\":\"Invalid argument\"},\"135\":{\"message\":\"Code of a contract was not found\"},\"136\":{\"message\":\"Invalid address\"},\"137\":{\"message\":\"Masterchain support is not enabled for this contract\"}},\"interfaces\":[\"org.ton.introspection.v0\",\"org.ton.abi.ipfs.v0\",\"org.ton.deploy.lazy.v0\",\"org.ton.debug.v0\",\"org.ton.chain.workchain.v0\"]}","init":{"kind":"direct","args":[],"prefix":{"bits":1,"value":0},"deployment":{"kind":"system-cell","system":"te6cckECMQEAAl0AAQHAAQEFobyzAgEU/wD0pBP0vPLICwMCAWItBAIBICUFAgEgGwYCASASBwIBIA0IAgFmCwkCDaSBtnm2eGMvCgAEgNYCDabPtnm2eGMvDAAEgK0CAWYQDgINpMO2ebZ4Yy8PAAaBAqACDaaNtnm2eGMvEQAMghAIKYAAAgEgFBMAdbJu40NWlwZnM6Ly9RbU5zTTZkVGVGblhybVo0M0xHcXFQVVNvMkdDeHlkMnVoNkF1Mll4NGh2cndUggAgFIGhUCASAYFgINpEe2ebZ4Yy8XAASAKgINpgm2ebZ4Yy8ZAASAUwAQqr7tRNDSAAECASAjHAIBICEdAgFYIB4CDqr52zzbPDEvHwAEgIUAuKvRgnBc7D1dLK57HoTsOdZKhRtmgnCd1jUtK2R8syLTry398WI5gnAgVcAbgGdjlM5YOq5HJbLDgnAb1J3vlUWW8cdT094FWcMmgnCdl05as07LczoOlm2UZuikAg+ztjbPNs8MYC8iAAyCEDxWeOACD7XTW2ebZ4YwLyQABIB7AgFIKCYCD7VC22ebZ4YwLycABoEBIwIBICspAg+ynXbPNs8MYC8qAAaB/t0CD7KVNs82zwxgLywADoIYEBIwAAACktAB0NMDAXGwowH6QAEg10mBAQu68uCIINcLCiCBBP+68tCJgwm68uCIVFBTA28E+GEC+GLbPFnbPPLggjDI+EMBzH8BygDJ7VQvLgA8AZIwf+BwIddJwh+VMCDXCx/ewAAB10nBIbCRf+BwATTtRNDUAfhj0gAwkW3g+CjXCwqDCbry4InbPDAAAm3lCWAT"}},"sources":{"src/test/features/integer-literals.tact":"Y29udHJhY3QgSW50ZWdlckxpdGVyYWxzVGVzdGVyIHsKCiAgICBpbml0KCkgewogICAgICAgIAogICAgfQogICAgCiAgICByZWNlaXZlKCkgewogICAgICAgIC8vIERlcGxveQogICAgfQoKICAgIGdldCBmdW4gZGVjTGl0ZXJhbDEoKTogSW50IHsKICAgICAgICByZXR1cm4gMTIzOwogICAgfQoKICAgIGdldCBmdW4gZGVjTGl0ZXJhbDIoKTogSW50IHsKICAgICAgICByZXR1cm4gLTEyMzsKICAgIH0KCiAgICBnZXQgZnVuIGRlY0xpdGVyYWwzKCk6IEludCB7CiAgICAgICAgcmV0dXJuIDFfMDEyM18wMF9fMDAwOwogICAgfQoKICAgIGdldCBmdW4gaGV4TGl0ZXJhbDEoKTogSW50IHsKICAgICAgICByZXR1cm4gMHgxMjM7CiAgICB9CgogICAgZ2V0IGZ1biBoZXhMaXRlcmFsMigpOiBJbnQgewogICAgICAgIHJldHVybiAtMHgxMjM7CiAgICB9CgogICAgZ2V0IGZ1biBoZXhMaXRlcmFsMygpOiBJbnQgewogICAgICAgIHJldHVybiAweDFfMDEyM18wMF9fMDAwOwogICAgfQoKICAgIGdldCBmdW4gYmluTGl0ZXJhbDEoKTogSW50IHsKICAgICAgICByZXR1cm4gMGIxMDEwMTA7CiAgICB9CgogICAgZ2V0IGZ1biBiaW5MaXRlcmFsMigpOiBJbnQgewogICAgICAgIHJldHVybiAtMGIxMDEwMTA7CiAgICB9CgogICAgZ2V0IGZ1biBiaW5MaXRlcmFsMygpOiBJbnQgewogICAgICAgIHJldHVybiAwYjFfMDEwMV8wMF9fMDAwOwogICAgfQoKICAgIGdldCBmdW4gb2N0TGl0ZXJhbDEoKTogSW50IHsKICAgICAgICByZXR1cm4gMG8xMjM7CiAgICB9CgogICAgZ2V0IGZ1biBvY3RMaXRlcmFsMigpOiBJbnQgewogICAgICAgIHJldHVybiAtMG8xMjM7CiAgICB9CgogICAgZ2V0IGZ1biBvY3RMaXRlcmFsMygpOiBJbnQgewogICAgICAgIHJldHVybiAwbzFfMDEyM18wMF9fMDAwOwogICAgfQp9"},"compiler":{"name":"tact","version":"invalid","parameters":"{\"entrypoint\":\"./src/test/features/integer-literals.tact\",\"options\":{\"debug\":true}}"}} \ No newline at end of file diff --git a/src/test/features/output/integer-literals_IntegerLiteralsTester.ts b/src/test/features/output/integer-literals_IntegerLiteralsTester.ts index 06e81c9de..c28fe9212 100644 --- a/src/test/features/output/integer-literals_IntegerLiteralsTester.ts +++ b/src/test/features/output/integer-literals_IntegerLiteralsTester.ts @@ -201,8 +201,8 @@ function initIntegerLiteralsTester_init_args(src: IntegerLiteralsTester_init_arg } async function IntegerLiteralsTester_init() { - const __code = Cell.fromBase64('te6ccgECJgEAAhUAART/APSkE/S88sgLAQIBYgIDApLQAdDTAwFxsKMB+kABINdJgQELuvLgiCDXCwoggQT/uvLQiYMJuvLgiFRQUwNvBPhhAvhi2zxZ2zzy4IIwyPhDAcx/AcoAye1UIwQCASAFBgA8AZIwf+BwIddJwh+VMCDXCx/ewAAB10nBIbCRf+BwAgFIBwgCASAODwIBIAkKAg+1Qttnm2eGMCMNAg+ylTbPNs8MYCMLAg+ynXbPNs8MYCMMAA6CGBASMAAAAAaB/t0ABoEBIwIBIBARAgEgGRoCD7XTW2ebZ4YwIxICASATFAAEgHsCD7O2Ns82zwxgIxUCAVgWFwAMghA8VnjgALir0YJwXOw9XSyuex6E7DnWSoUbZoJwndY1LStkfLMi068t/fFiOYJwIFXAG4BnY5TOWDquRyWyw4JwG9Sd75VFlvHHU9PeBVnDJoJwnZdOWrNOy3M6DpZtlGbopAIOqvnbPNs8MSMYAASAhQIBIBscAgEgICECAUgdHgB1sm7jQ1aXBmczovL1FtVFZKb2hRQVRycGp3TDZDV01Ua25jNWczR01mYlBMandkMjhpbzVoUGpLMW2CAAEKq+7UTQ0gABAg6qI9s82zwxIx8ABIAqAg+xmHbPNs8MYCMiAg+xkDbPNs8MYCMkAAaBAqABNO1E0NQB+GPSADCRbeD4KNcLCoMJuvLgids8JQAEgNYAAm0='); - const __system = Cell.fromBase64('te6cckECKAEAAh8AAQHAAQEFobyzAgEU/wD0pBP0vPLICwMCAWIkBAIBIBwFAgEgEgYCASAMBwIBIAoIAg+xkDbPNs8MYCYJAASA1gIPsZh2zzbPDGAmCwAGgQKgAgEgDg0AdbJu40NWlwZnM6Ly9RbVRWSm9oUUFUcnBqd0w2Q1dNVGtuYzVnM0dNZmJQTGp3ZDI4aW81aFBqSzFtggAgFIEQ8CDqoj2zzbPDEmEAAEgCoAEKq+7UTQ0gABAgEgGhMCASAYFAIBWBcVAg6q+ds82zwxJhYABICFALir0YJwXOw9XSyuex6E7DnWSoUbZoJwndY1LStkfLMi068t/fFiOYJwIFXAG4BnY5TOWDquRyWyw4JwG9Sd75VFlvHHU9PeBVnDJoJwnZdOWrNOy3M6DpZtlGbopAIPs7Y2zzbPDGAmGQAMghA8VnjgAg+101tnm2eGMCYbAASAewIBSB8dAg+1Qttnm2eGMCYeAAaBASMCASAiIAIPsp12zzbPDGAmIQAGgf7dAg+ylTbPNs8MYCYjAA6CGBASMAAAApLQAdDTAwFxsKMB+kABINdJgQELuvLgiCDXCwoggQT/uvLQiYMJuvLgiFRQUwNvBPhhAvhi2zxZ2zzy4IIwyPhDAcx/AcoAye1UJiUAPAGSMH/gcCHXScIflTAg1wsf3sAAAddJwSGwkX/gcAE07UTQ1AH4Y9IAMJFt4Pgo1wsKgwm68uCJ2zwnAAJtwEbooQ=='); + const __code = Cell.fromBase64('te6ccgECLwEAAlMAART/APSkE/S88sgLAQIBYgIDApLQAdDTAwFxsKMB+kABINdJgQELuvLgiCDXCwoggQT/uvLQiYMJuvLgiFRQUwNvBPhhAvhi2zxZ2zzy4IIwyPhDAcx/AcoAye1ULAQCASAFBgA8AZIwf+BwIddJwh+VMCDXCx/ewAAB10nBIbCRf+BwAgFIBwgCASAODwIBIAkKAg+1Qttnm2eGMCwNAg+ylTbPNs8MYCwLAg+ynXbPNs8MYCwMAA6CGBASMAAAAAaB/t0ABoEBIwIBIBARAgEgGRoCD7XTW2ebZ4YwLBICASATFAAEgHsCD7O2Ns82zwxgLBUCAVgWFwAMghA8VnjgALir0YJwXOw9XSyuex6E7DnWSoUbZoJwndY1LStkfLMi068t/fFiOYJwIFXAG4BnY5TOWDquRyWyw4JwG9Sd75VFlvHHU9PeBVnDJoJwnZdOWrNOy3M6DpZtlGbopAIOqvnbPNs8MSwYAASAhQIBIBscAgEgIyQCAUgdHgB1sm7jQ1aXBmczovL1FtTnNNNmRUZUZuWHJtWjQzTEdxcVBVU28yR0N4eWQydWg2QXUyWXg0aHZyd1SCAAEKq+7UTQ0gABAgEgHyACDaYJtnm2eGMsIQINpEe2ebZ4YywiAASAUwAEgCoCAWYlJgIBZikqAg2mjbZ5tnhjLCcCDaTDtnm2eGMsKAAMghAIKYAAAAaBAqACDabPtnm2eGMsKwINpIG2ebZ4YywtAASArQE07UTQ1AH4Y9IAMJFt4Pgo1wsKgwm68uCJ2zwuAASA1gACbQ=='); + const __system = Cell.fromBase64('te6cckECMQEAAl0AAQHAAQEFobyzAgEU/wD0pBP0vPLICwMCAWItBAIBICUFAgEgGwYCASASBwIBIA0IAgFmCwkCDaSBtnm2eGMvCgAEgNYCDabPtnm2eGMvDAAEgK0CAWYQDgINpMO2ebZ4Yy8PAAaBAqACDaaNtnm2eGMvEQAMghAIKYAAAgEgFBMAdbJu40NWlwZnM6Ly9RbU5zTTZkVGVGblhybVo0M0xHcXFQVVNvMkdDeHlkMnVoNkF1Mll4NGh2cndUggAgFIGhUCASAYFgINpEe2ebZ4Yy8XAASAKgINpgm2ebZ4Yy8ZAASAUwAQqr7tRNDSAAECASAjHAIBICEdAgFYIB4CDqr52zzbPDEvHwAEgIUAuKvRgnBc7D1dLK57HoTsOdZKhRtmgnCd1jUtK2R8syLTry398WI5gnAgVcAbgGdjlM5YOq5HJbLDgnAb1J3vlUWW8cdT094FWcMmgnCdl05as07LczoOlm2UZuikAg+ztjbPNs8MYC8iAAyCEDxWeOACD7XTW2ebZ4YwLyQABIB7AgFIKCYCD7VC22ebZ4YwLycABoEBIwIBICspAg+ynXbPNs8MYC8qAAaB/t0CD7KVNs82zwxgLywADoIYEBIwAAACktAB0NMDAXGwowH6QAEg10mBAQu68uCIINcLCiCBBP+68tCJgwm68uCIVFBTA28E+GEC+GLbPFnbPPLggjDI+EMBzH8BygDJ7VQvLgA8AZIwf+BwIddJwh+VMCDXCx/ewAAB10nBIbCRf+BwATTtRNDUAfhj0gAwkW3g+CjXCwqDCbry4InbPDAAAm3lCWAT'); let builder = beginCell(); builder.storeRef(__system); builder.storeUint(0, 1); @@ -254,6 +254,9 @@ const IntegerLiteralsTester_getters: ABIGetter[] = [ {"name":"binLiteral1","arguments":[],"returnType":{"kind":"simple","type":"int","optional":false,"format":257}}, {"name":"binLiteral2","arguments":[],"returnType":{"kind":"simple","type":"int","optional":false,"format":257}}, {"name":"binLiteral3","arguments":[],"returnType":{"kind":"simple","type":"int","optional":false,"format":257}}, + {"name":"octLiteral1","arguments":[],"returnType":{"kind":"simple","type":"int","optional":false,"format":257}}, + {"name":"octLiteral2","arguments":[],"returnType":{"kind":"simple","type":"int","optional":false,"format":257}}, + {"name":"octLiteral3","arguments":[],"returnType":{"kind":"simple","type":"int","optional":false,"format":257}}, ] const IntegerLiteralsTester_receivers: ABIReceiver[] = [ @@ -365,4 +368,25 @@ export class IntegerLiteralsTester implements Contract { return result; } + async getOctLiteral1(provider: ContractProvider) { + let builder = new TupleBuilder(); + let source = (await provider.get('octLiteral1', builder.build())).stack; + let result = source.readBigNumber(); + return result; + } + + async getOctLiteral2(provider: ContractProvider) { + let builder = new TupleBuilder(); + let source = (await provider.get('octLiteral2', builder.build())).stack; + let result = source.readBigNumber(); + return result; + } + + async getOctLiteral3(provider: ContractProvider) { + let builder = new TupleBuilder(); + let source = (await provider.get('octLiteral3', builder.build())).stack; + let result = source.readBigNumber(); + return result; + } + } \ No newline at end of file From 0c75d26a7eec3c4824c26aa52c153f9517d1837b Mon Sep 17 00:00:00 2001 From: Gusarich Date: Fri, 1 Dec 2023 01:52:23 +0300 Subject: [PATCH 04/11] add integer literal test cases --- .../__snapshots__/grammar.spec.ts.snap | 20 +++++++++++++++++++ src/grammar/test-failed/case-12.tact | 3 +++ src/grammar/test-failed/case-13.tact | 3 +++ 3 files changed, 26 insertions(+) create mode 100644 src/grammar/test-failed/case-12.tact create mode 100644 src/grammar/test-failed/case-13.tact diff --git a/src/grammar/__snapshots__/grammar.spec.ts.snap b/src/grammar/__snapshots__/grammar.spec.ts.snap index 66292b62a..d5479be64 100644 --- a/src/grammar/__snapshots__/grammar.spec.ts.snap +++ b/src/grammar/__snapshots__/grammar.spec.ts.snap @@ -112,6 +112,26 @@ Line 1, col 14: " `; +exports[`grammar should fail case-12 1`] = ` +":2:14: Syntax error: expected "1" or "0" +Line 2, col 14: + 1 | fun test_fun(): Int { +> 2 | return 0b_00101010; + ^ + 3 | } +" +`; + +exports[`grammar should fail case-13 1`] = ` +":2:15: Syntax error: expected ";" +Line 2, col 15: + 1 | fun test_fun(): Int { +> 2 | return 0b123; + ^ + 3 | } +" +`; + exports[`grammar should parse case-0 1`] = ` { "entries": [ diff --git a/src/grammar/test-failed/case-12.tact b/src/grammar/test-failed/case-12.tact new file mode 100644 index 000000000..788e39efa --- /dev/null +++ b/src/grammar/test-failed/case-12.tact @@ -0,0 +1,3 @@ +fun test_fun(): Int { + return 0b_00101010; +} \ No newline at end of file diff --git a/src/grammar/test-failed/case-13.tact b/src/grammar/test-failed/case-13.tact new file mode 100644 index 000000000..e15201b91 --- /dev/null +++ b/src/grammar/test-failed/case-13.tact @@ -0,0 +1,3 @@ +fun test_fun(): Int { + return 0b123; +} \ No newline at end of file From 061c510a5f4947a1105abb05021181bd5196e935 Mon Sep 17 00:00:00 2001 From: Gusarich Date: Mon, 12 Feb 2024 11:29:39 +0300 Subject: [PATCH 05/11] add test case 28 --- src/grammar/test/case-28.tact | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 src/grammar/test/case-28.tact 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 From 556b184223f25e074279601364cf1502a2ee8fb1 Mon Sep 17 00:00:00 2001 From: Gusarich Date: Mon, 12 Feb 2024 11:39:01 +0300 Subject: [PATCH 06/11] rebuild grammar and test snapshot --- .../__snapshots__/grammar.spec.ts.snap | 436 ++++++++++++++++++ src/grammar/grammar.ohm-bundle.js | 2 +- .../integer-literals_IntegerLiteralsTester.ts | 2 +- 3 files changed, 438 insertions(+), 2 deletions(-) diff --git a/src/grammar/__snapshots__/grammar.spec.ts.snap b/src/grammar/__snapshots__/grammar.spec.ts.snap index d5479be64..cff3730b5 100644 --- a/src/grammar/__snapshots__/grammar.spec.ts.snap +++ b/src/grammar/__snapshots__/grammar.spec.ts.snap @@ -3380,3 +3380,439 @@ exports[`grammar should parse case-27 1`] = ` "kind": "program", } `; + +exports[`grammar should parse case-28 1`] = ` +{ + "entries": [ + { + "args": [], + "attributes": [], + "id": 66, + "kind": "def_function", + "name": "test_fun", + "origin": "user", + "ref": 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; +}, + "return": { + "id": 1, + "kind": "type_ref_simple", + "name": "Int", + "optional": false, + "ref": Int, + }, + "statements": [ + { + "expression": { + "id": 3, + "kind": "number", + "ref": 123, + "value": 123n, + }, + "id": 4, + "kind": "statement_let", + "name": "a", + "ref": let a: Int = 123;, + "type": { + "id": 2, + "kind": "type_ref_simple", + "name": "Int", + "optional": false, + "ref": Int, + }, + }, + { + "expression": { + "id": 7, + "kind": "op_unary", + "op": "-", + "ref": -123, + "right": { + "id": 6, + "kind": "number", + "ref": 123, + "value": 123n, + }, + }, + "id": 8, + "kind": "statement_let", + "name": "b", + "ref": let b: Int = -123;, + "type": { + "id": 5, + "kind": "type_ref_simple", + "name": "Int", + "optional": false, + "ref": Int, + }, + }, + { + "expression": { + "id": 10, + "kind": "number", + "ref": 1_0123_00__000, + "value": 1012300000n, + }, + "id": 11, + "kind": "statement_let", + "name": "c", + "ref": let c: Int = 1_0123_00__000;, + "type": { + "id": 9, + "kind": "type_ref_simple", + "name": "Int", + "optional": false, + "ref": Int, + }, + }, + { + "expression": { + "id": 13, + "kind": "number", + "ref": 0x123, + "value": 291n, + }, + "id": 14, + "kind": "statement_let", + "name": "d", + "ref": let d: Int = 0x123;, + "type": { + "id": 12, + "kind": "type_ref_simple", + "name": "Int", + "optional": false, + "ref": Int, + }, + }, + { + "expression": { + "id": 17, + "kind": "op_unary", + "op": "-", + "ref": -0x123, + "right": { + "id": 16, + "kind": "number", + "ref": 0x123, + "value": 291n, + }, + }, + "id": 18, + "kind": "statement_let", + "name": "e", + "ref": let e: Int = -0x123;, + "type": { + "id": 15, + "kind": "type_ref_simple", + "name": "Int", + "optional": false, + "ref": Int, + }, + }, + { + "expression": { + "id": 20, + "kind": "number", + "ref": 0x1_0123_00__000, + "value": 69024612352n, + }, + "id": 21, + "kind": "statement_let", + "name": "f", + "ref": let f: Int = 0x1_0123_00__000;, + "type": { + "id": 19, + "kind": "type_ref_simple", + "name": "Int", + "optional": false, + "ref": Int, + }, + }, + { + "expression": { + "id": 23, + "kind": "number", + "ref": 0b101010, + "value": 42n, + }, + "id": 24, + "kind": "statement_let", + "name": "g", + "ref": let g: Int = 0b101010;, + "type": { + "id": 22, + "kind": "type_ref_simple", + "name": "Int", + "optional": false, + "ref": Int, + }, + }, + { + "expression": { + "id": 27, + "kind": "op_unary", + "op": "-", + "ref": -0b101010, + "right": { + "id": 26, + "kind": "number", + "ref": 0b101010, + "value": 42n, + }, + }, + "id": 28, + "kind": "statement_let", + "name": "h", + "ref": let h: Int = -0b101010;, + "type": { + "id": 25, + "kind": "type_ref_simple", + "name": "Int", + "optional": false, + "ref": Int, + }, + }, + { + "expression": { + "id": 30, + "kind": "number", + "ref": 0b1_0101_00__000, + "value": 672n, + }, + "id": 31, + "kind": "statement_let", + "name": "i", + "ref": let i: Int = 0b1_0101_00__000;, + "type": { + "id": 29, + "kind": "type_ref_simple", + "name": "Int", + "optional": false, + "ref": Int, + }, + }, + { + "expression": { + "id": 33, + "kind": "number", + "ref": 0o123, + "value": 83n, + }, + "id": 34, + "kind": "statement_let", + "name": "j", + "ref": let j: Int = 0o123;, + "type": { + "id": 32, + "kind": "type_ref_simple", + "name": "Int", + "optional": false, + "ref": Int, + }, + }, + { + "expression": { + "id": 37, + "kind": "op_unary", + "op": "-", + "ref": -0o123, + "right": { + "id": 36, + "kind": "number", + "ref": 0o123, + "value": 83n, + }, + }, + "id": 38, + "kind": "statement_let", + "name": "k", + "ref": let k: Int = -0o123;, + "type": { + "id": 35, + "kind": "type_ref_simple", + "name": "Int", + "optional": false, + "ref": Int, + }, + }, + { + "expression": { + "id": 40, + "kind": "number", + "ref": 0o1_0123_00__000, + "value": 136937472n, + }, + "id": 41, + "kind": "statement_let", + "name": "l", + "ref": let l: Int = 0o1_0123_00__000;, + "type": { + "id": 39, + "kind": "type_ref_simple", + "name": "Int", + "optional": false, + "ref": Int, + }, + }, + { + "expression": { + "id": 64, + "kind": "op_binary", + "left": { + "id": 62, + "kind": "op_binary", + "left": { + "id": 60, + "kind": "op_binary", + "left": { + "id": 58, + "kind": "op_binary", + "left": { + "id": 56, + "kind": "op_binary", + "left": { + "id": 54, + "kind": "op_binary", + "left": { + "id": 52, + "kind": "op_binary", + "left": { + "id": 50, + "kind": "op_binary", + "left": { + "id": 48, + "kind": "op_binary", + "left": { + "id": 46, + "kind": "op_binary", + "left": { + "id": 44, + "kind": "op_binary", + "left": { + "id": 42, + "kind": "id", + "ref": a, + "value": "a", + }, + "op": "+", + "ref": a + b, + "right": { + "id": 43, + "kind": "id", + "ref": b, + "value": "b", + }, + }, + "op": "+", + "ref": a + b + c, + "right": { + "id": 45, + "kind": "id", + "ref": c, + "value": "c", + }, + }, + "op": "+", + "ref": a + b + c + d, + "right": { + "id": 47, + "kind": "id", + "ref": d, + "value": "d", + }, + }, + "op": "+", + "ref": a + b + c + d + e, + "right": { + "id": 49, + "kind": "id", + "ref": e, + "value": "e", + }, + }, + "op": "+", + "ref": a + b + c + d + e + f, + "right": { + "id": 51, + "kind": "id", + "ref": f, + "value": "f", + }, + }, + "op": "+", + "ref": a + b + c + d + e + f + g, + "right": { + "id": 53, + "kind": "id", + "ref": g, + "value": "g", + }, + }, + "op": "+", + "ref": a + b + c + d + e + f + g + h, + "right": { + "id": 55, + "kind": "id", + "ref": h, + "value": "h", + }, + }, + "op": "+", + "ref": a + b + c + d + e + f + g + h + i, + "right": { + "id": 57, + "kind": "id", + "ref": i, + "value": "i", + }, + }, + "op": "+", + "ref": a + b + c + d + e + f + g + h + i + j, + "right": { + "id": 59, + "kind": "id", + "ref": j, + "value": "j", + }, + }, + "op": "+", + "ref": a + b + c + d + e + f + g + h + i + j + k, + "right": { + "id": 61, + "kind": "id", + "ref": k, + "value": "k", + }, + }, + "op": "+", + "ref": a + b + c + d + e + f + g + h + i + j + k + l, + "right": { + "id": 63, + "kind": "id", + "ref": l, + "value": "l", + }, + }, + "id": 65, + "kind": "statement_return", + "ref": return a + b + c + d + e + f + g + h + i + j + k + l;, + }, + ], + }, + ], + "id": 67, + "kind": "program", +} +`; diff --git a/src/grammar/grammar.ohm-bundle.js b/src/grammar/grammar.ohm-bundle.js index 013d280ba..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 | 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 | integerLiteralDec // Order is important\n integerLiteralDec = digit+\n integerLiteralHex = \"0x\" hexDigit+\n | \"0X\" hexDigit+\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,8621]},null,[],["alt",{"sourceInterval":[8584,8621]},["app",{"sourceInterval":[8584,8601]},"integerLiteralHex",[]],["app",{"sourceInterval":[8604,8621]},"integerLiteralDec",[]]]],"integerLiteralDec":["define",{"sourceInterval":[8648,8674]},null,[],["plus",{"sourceInterval":[8668,8674]},["app",{"sourceInterval":[8668,8673]},"digit",[]]]],"integerLiteralHex":["define",{"sourceInterval":[8679,8752]},null,[],["alt",{"sourceInterval":[8699,8752]},["seq",{"sourceInterval":[8699,8713]},["terminal",{"sourceInterval":[8699,8703]},"0x"],["plus",{"sourceInterval":[8704,8713]},["app",{"sourceInterval":[8704,8712]},"hexDigit",[]]]],["seq",{"sourceInterval":[8738,8752]},["terminal",{"sourceInterval":[8738,8742]},"0X"],["plus",{"sourceInterval":[8743,8752]},["app",{"sourceInterval":[8743,8751]},"hexDigit",[]]]]]],"letterAsciiLC":["define",{"sourceInterval":[8773,8797]},null,[],["range",{"sourceInterval":[8789,8797]},"a","z"]],"letterAsciiUC":["define",{"sourceInterval":[8802,8826]},null,[],["range",{"sourceInterval":[8818,8826]},"A","Z"]],"letterAscii":["define",{"sourceInterval":[8831,8874]},null,[],["alt",{"sourceInterval":[8845,8874]},["app",{"sourceInterval":[8845,8858]},"letterAsciiLC",[]],["app",{"sourceInterval":[8861,8874]},"letterAsciiUC",[]]]],"letterComment":["define",{"sourceInterval":[8879,8938]},null,[],["alt",{"sourceInterval":[8895,8938]},["app",{"sourceInterval":[8895,8908]},"letterAsciiLC",[]],["app",{"sourceInterval":[8911,8924]},"letterAsciiUC",[]],["app",{"sourceInterval":[8927,8932]},"digit",[]],["terminal",{"sourceInterval":[8935,8938]},"_"]]],"idStart":["define",{"sourceInterval":[8962,8989]},null,[],["alt",{"sourceInterval":[8972,8989]},["app",{"sourceInterval":[8972,8983]},"letterAscii",[]],["terminal",{"sourceInterval":[8986,8989]},"_"]]],"idPart":["define",{"sourceInterval":[8994,9028]},null,[],["alt",{"sourceInterval":[9003,9028]},["app",{"sourceInterval":[9003,9014]},"letterAscii",[]],["app",{"sourceInterval":[9017,9022]},"digit",[]],["terminal",{"sourceInterval":[9025,9028]},"_"]]],"id":["define",{"sourceInterval":[9033,9071]},null,[],["seq",{"sourceInterval":[9038,9071]},["not",{"sourceInterval":[9038,9051]},["app",{"sourceInterval":[9039,9051]},"reservedWord",[]]],["lex",{"sourceInterval":[9052,9060]},["app",{"sourceInterval":[9053,9060]},"idStart",[]]],["lex",{"sourceInterval":[9061,9071]},["star",{"sourceInterval":[9063,9070]},["app",{"sourceInterval":[9063,9069]},"idPart",[]]]]]],"funcLetter":["define",{"sourceInterval":[9092,9153]},null,[],["alt",{"sourceInterval":[9105,9153]},["app",{"sourceInterval":[9105,9116]},"letterAscii",[]],["terminal",{"sourceInterval":[9119,9122]},"_"],["terminal",{"sourceInterval":[9125,9128]},"'"],["terminal",{"sourceInterval":[9131,9134]},"?"],["terminal",{"sourceInterval":[9137,9140]},"!"],["terminal",{"sourceInterval":[9143,9147]},"::"],["terminal",{"sourceInterval":[9150,9153]},"&"]]],"funcId":["define",{"sourceInterval":[9158,9200]},null,[],["seq",{"sourceInterval":[9167,9200]},["app",{"sourceInterval":[9167,9177]},"funcLetter",[]],["star",{"sourceInterval":[9178,9200]},["lex",{"sourceInterval":[9178,9199]},["alt",{"sourceInterval":[9180,9198]},["app",{"sourceInterval":[9180,9190]},"funcLetter",[]],["app",{"sourceInterval":[9193,9198]},"digit",[]]]]]]],"boolLiteral":["define",{"sourceInterval":[9226,9266]},null,[],["seq",{"sourceInterval":[9240,9266]},["alt",{"sourceInterval":[9241,9257]},["terminal",{"sourceInterval":[9241,9247]},"true"],["terminal",{"sourceInterval":[9250,9257]},"false"]],["not",{"sourceInterval":[9259,9266]},["app",{"sourceInterval":[9260,9266]},"idPart",[]]]]],"stringLiteralCharacter":["define",{"sourceInterval":[9294,9354]},null,[],["seq",{"sourceInterval":[9319,9354]},["not",{"sourceInterval":[9319,9350]},["alt",{"sourceInterval":[9321,9349]},["terminal",{"sourceInterval":[9321,9325]},"\""],["terminal",{"sourceInterval":[9328,9332]},"\\"],["app",{"sourceInterval":[9335,9349]},"lineTerminator",[]]]],["app",{"sourceInterval":[9351,9354]},"any",[]]]],"stringLiteral":["define",{"sourceInterval":[9359,9408]},null,[],["seq",{"sourceInterval":[9375,9408]},["terminal",{"sourceInterval":[9375,9379]},"\""],["star",{"sourceInterval":[9380,9403]},["app",{"sourceInterval":[9380,9402]},"stringLiteralCharacter",[]]],["terminal",{"sourceInterval":[9404,9408]},"\""]]],"keyword":["define",{"sourceInterval":[9461,9974]},null,[],["alt",{"sourceInterval":[9471,9974]},["app",{"sourceInterval":[9471,9474]},"fun",[]],["app",{"sourceInterval":[9490,9493]},"let",[]],["app",{"sourceInterval":[9508,9514]},"return",[]],["app",{"sourceInterval":[9530,9536]},"extend",[]],["app",{"sourceInterval":[9552,9558]},"native",[]],["app",{"sourceInterval":[9574,9580]},"public",[]],["app",{"sourceInterval":[9596,9600]},"null",[]],["app",{"sourceInterval":[9616,9618]},"if",[]],["app",{"sourceInterval":[9634,9638]},"else",[]],["app",{"sourceInterval":[9654,9659]},"while",[]],["app",{"sourceInterval":[9675,9681]},"repeat",[]],["app",{"sourceInterval":[9697,9699]},"do",[]],["app",{"sourceInterval":[9715,9720]},"until",[]],["app",{"sourceInterval":[9736,9738]},"as",[]],["app",{"sourceInterval":[9755,9762]},"mutates",[]],["app",{"sourceInterval":[9777,9784]},"extends",[]],["app",{"sourceInterval":[9799,9805]},"import",[]],["app",{"sourceInterval":[9820,9824]},"with",[]],["app",{"sourceInterval":[9839,9844]},"trait",[]],["app",{"sourceInterval":[9859,9865]},"initOf",[]],["app",{"sourceInterval":[9880,9888]},"override",[]],["app",{"sourceInterval":[9903,9911]},"abstract",[]],["app",{"sourceInterval":[9926,9933]},"virtual",[]],["app",{"sourceInterval":[9948,9954]},"inline",[]],["app",{"sourceInterval":[9969,9974]},"const",[]]]],"contract":["define",{"sourceInterval":[9979,10008]},null,[],["seq",{"sourceInterval":[9990,10008]},["terminal",{"sourceInterval":[9990,10000]},"contract"],["not",{"sourceInterval":[10001,10008]},["app",{"sourceInterval":[10002,10008]},"idPart",[]]]]],"let":["define",{"sourceInterval":[10013,10032]},null,[],["seq",{"sourceInterval":[10019,10032]},["terminal",{"sourceInterval":[10019,10024]},"let"],["not",{"sourceInterval":[10025,10032]},["app",{"sourceInterval":[10026,10032]},"idPart",[]]]]],"fun":["define",{"sourceInterval":[10037,10056]},null,[],["seq",{"sourceInterval":[10043,10056]},["terminal",{"sourceInterval":[10043,10048]},"fun"],["not",{"sourceInterval":[10049,10056]},["app",{"sourceInterval":[10050,10056]},"idPart",[]]]]],"return":["define",{"sourceInterval":[10061,10086]},null,[],["seq",{"sourceInterval":[10070,10086]},["terminal",{"sourceInterval":[10070,10078]},"return"],["not",{"sourceInterval":[10079,10086]},["app",{"sourceInterval":[10080,10086]},"idPart",[]]]]],"extend":["define",{"sourceInterval":[10091,10116]},null,[],["seq",{"sourceInterval":[10100,10116]},["terminal",{"sourceInterval":[10100,10108]},"extend"],["not",{"sourceInterval":[10109,10116]},["app",{"sourceInterval":[10110,10116]},"idPart",[]]]]],"native":["define",{"sourceInterval":[10121,10146]},null,[],["seq",{"sourceInterval":[10130,10146]},["terminal",{"sourceInterval":[10130,10138]},"native"],["not",{"sourceInterval":[10139,10146]},["app",{"sourceInterval":[10140,10146]},"idPart",[]]]]],"public":["define",{"sourceInterval":[10151,10176]},null,[],["seq",{"sourceInterval":[10160,10176]},["terminal",{"sourceInterval":[10160,10168]},"public"],["not",{"sourceInterval":[10169,10176]},["app",{"sourceInterval":[10170,10176]},"idPart",[]]]]],"null":["define",{"sourceInterval":[10181,10202]},null,[],["seq",{"sourceInterval":[10188,10202]},["terminal",{"sourceInterval":[10188,10194]},"null"],["not",{"sourceInterval":[10195,10202]},["app",{"sourceInterval":[10196,10202]},"idPart",[]]]]],"if":["define",{"sourceInterval":[10207,10224]},null,[],["seq",{"sourceInterval":[10212,10224]},["terminal",{"sourceInterval":[10212,10216]},"if"],["not",{"sourceInterval":[10217,10224]},["app",{"sourceInterval":[10218,10224]},"idPart",[]]]]],"else":["define",{"sourceInterval":[10229,10250]},null,[],["seq",{"sourceInterval":[10236,10250]},["terminal",{"sourceInterval":[10236,10242]},"else"],["not",{"sourceInterval":[10243,10250]},["app",{"sourceInterval":[10244,10250]},"idPart",[]]]]],"while":["define",{"sourceInterval":[10255,10278]},null,[],["seq",{"sourceInterval":[10263,10278]},["terminal",{"sourceInterval":[10263,10270]},"while"],["not",{"sourceInterval":[10271,10278]},["app",{"sourceInterval":[10272,10278]},"idPart",[]]]]],"repeat":["define",{"sourceInterval":[10283,10308]},null,[],["seq",{"sourceInterval":[10292,10308]},["terminal",{"sourceInterval":[10292,10300]},"repeat"],["not",{"sourceInterval":[10301,10308]},["app",{"sourceInterval":[10302,10308]},"idPart",[]]]]],"do":["define",{"sourceInterval":[10313,10330]},null,[],["seq",{"sourceInterval":[10318,10330]},["terminal",{"sourceInterval":[10318,10322]},"do"],["not",{"sourceInterval":[10323,10330]},["app",{"sourceInterval":[10324,10330]},"idPart",[]]]]],"until":["define",{"sourceInterval":[10335,10358]},null,[],["seq",{"sourceInterval":[10343,10358]},["terminal",{"sourceInterval":[10343,10350]},"until"],["not",{"sourceInterval":[10351,10358]},["app",{"sourceInterval":[10352,10358]},"idPart",[]]]]],"as":["define",{"sourceInterval":[10363,10380]},null,[],["seq",{"sourceInterval":[10368,10380]},["terminal",{"sourceInterval":[10368,10372]},"as"],["not",{"sourceInterval":[10373,10380]},["app",{"sourceInterval":[10374,10380]},"idPart",[]]]]],"mutates":["define",{"sourceInterval":[10385,10412]},null,[],["seq",{"sourceInterval":[10395,10412]},["terminal",{"sourceInterval":[10395,10404]},"mutates"],["not",{"sourceInterval":[10405,10412]},["app",{"sourceInterval":[10406,10412]},"idPart",[]]]]],"extends":["define",{"sourceInterval":[10417,10444]},null,[],["seq",{"sourceInterval":[10427,10444]},["terminal",{"sourceInterval":[10427,10436]},"extends"],["not",{"sourceInterval":[10437,10444]},["app",{"sourceInterval":[10438,10444]},"idPart",[]]]]],"import":["define",{"sourceInterval":[10449,10474]},null,[],["seq",{"sourceInterval":[10458,10474]},["terminal",{"sourceInterval":[10458,10466]},"import"],["not",{"sourceInterval":[10467,10474]},["app",{"sourceInterval":[10468,10474]},"idPart",[]]]]],"with":["define",{"sourceInterval":[10479,10500]},null,[],["seq",{"sourceInterval":[10486,10500]},["terminal",{"sourceInterval":[10486,10492]},"with"],["not",{"sourceInterval":[10493,10500]},["app",{"sourceInterval":[10494,10500]},"idPart",[]]]]],"trait":["define",{"sourceInterval":[10505,10528]},null,[],["seq",{"sourceInterval":[10513,10528]},["terminal",{"sourceInterval":[10513,10520]},"trait"],["not",{"sourceInterval":[10521,10528]},["app",{"sourceInterval":[10522,10528]},"idPart",[]]]]],"initOf":["define",{"sourceInterval":[10533,10558]},null,[],["seq",{"sourceInterval":[10542,10558]},["terminal",{"sourceInterval":[10542,10550]},"initOf"],["not",{"sourceInterval":[10551,10558]},["app",{"sourceInterval":[10552,10558]},"idPart",[]]]]],"virtual":["define",{"sourceInterval":[10563,10590]},null,[],["seq",{"sourceInterval":[10573,10590]},["terminal",{"sourceInterval":[10573,10582]},"virtual"],["not",{"sourceInterval":[10583,10590]},["app",{"sourceInterval":[10584,10590]},"idPart",[]]]]],"override":["define",{"sourceInterval":[10595,10624]},null,[],["seq",{"sourceInterval":[10606,10624]},["terminal",{"sourceInterval":[10606,10616]},"override"],["not",{"sourceInterval":[10617,10624]},["app",{"sourceInterval":[10618,10624]},"idPart",[]]]]],"inline":["define",{"sourceInterval":[10629,10654]},null,[],["seq",{"sourceInterval":[10638,10654]},["terminal",{"sourceInterval":[10638,10646]},"inline"],["not",{"sourceInterval":[10647,10654]},["app",{"sourceInterval":[10648,10654]},"idPart",[]]]]],"const":["define",{"sourceInterval":[10659,10682]},null,[],["seq",{"sourceInterval":[10667,10682]},["terminal",{"sourceInterval":[10667,10674]},"const"],["not",{"sourceInterval":[10675,10682]},["app",{"sourceInterval":[10676,10682]},"idPart",[]]]]],"abstract":["define",{"sourceInterval":[10687,10716]},null,[],["seq",{"sourceInterval":[10698,10716]},["terminal",{"sourceInterval":[10698,10708]},"abstract"],["not",{"sourceInterval":[10709,10716]},["app",{"sourceInterval":[10710,10716]},"idPart",[]]]]],"nameAttribute":["define",{"sourceInterval":[10740,10763]},null,[],["terminal",{"sourceInterval":[10756,10763]},"@name"]],"reservedWord":["define",{"sourceInterval":[10785,10807]},null,[],["app",{"sourceInterval":[10800,10807]},"keyword",[]]],"space":["extend",{"sourceInterval":[10829,10862]},null,[],["alt",{"sourceInterval":[10838,10862]},["app",{"sourceInterval":[10838,10845]},"comment",[]],["app",{"sourceInterval":[10848,10862]},"lineTerminator",[]]]],"comment":["define",{"sourceInterval":[10867,10913]},null,[],["alt",{"sourceInterval":[10877,10913]},["app",{"sourceInterval":[10877,10893]},"multiLineComment",[]],["app",{"sourceInterval":[10896,10913]},"singleLineComment",[]]]],"lineTerminator":["define",{"sourceInterval":[10918,10968]},null,[],["alt",{"sourceInterval":[10935,10968]},["terminal",{"sourceInterval":[10935,10939]},"\n"],["terminal",{"sourceInterval":[10942,10946]},"\r"],["terminal",{"sourceInterval":[10949,10957]},"\u2028"],["terminal",{"sourceInterval":[10960,10968]},"\u2029"]]],"multiLineComment":["define",{"sourceInterval":[10973,11014]},null,[],["seq",{"sourceInterval":[10992,11014]},["terminal",{"sourceInterval":[10992,10996]},"/*"],["star",{"sourceInterval":[10997,11009]},["seq",{"sourceInterval":[10998,11007]},["not",{"sourceInterval":[10998,11003]},["terminal",{"sourceInterval":[10999,11003]},"*/"]],["app",{"sourceInterval":[11004,11007]},"any",[]]]],["terminal",{"sourceInterval":[11010,11014]},"*/"]]],"singleLineComment":["define",{"sourceInterval":[11019,11066]},null,[],["seq",{"sourceInterval":[11039,11066]},["terminal",{"sourceInterval":[11039,11043]},"//"],["star",{"sourceInterval":[11044,11066]},["seq",{"sourceInterval":[11045,11064]},["not",{"sourceInterval":[11045,11060]},["app",{"sourceInterval":[11046,11060]},"lineTerminator",[]]],["app",{"sourceInterval":[11061,11064]},"any",[]]]]]]}]);module.exports=result; +'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/test/features/output/integer-literals_IntegerLiteralsTester.ts b/src/test/features/output/integer-literals_IntegerLiteralsTester.ts index c28fe9212..4ca7369b3 100644 --- a/src/test/features/output/integer-literals_IntegerLiteralsTester.ts +++ b/src/test/features/output/integer-literals_IntegerLiteralsTester.ts @@ -18,7 +18,7 @@ import { ABIReceiver, TupleBuilder, DictionaryValue -} from 'ton-core'; +} from '@ton/core'; export type StateInit = { $$type: 'StateInit'; From 305578db0a78c85d99d2dd339fda095784e95705 Mon Sep 17 00:00:00 2001 From: Gusarich Date: Mon, 12 Feb 2024 11:47:34 +0300 Subject: [PATCH 07/11] fix import --- src/test/feature-integer-literals.spec.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/test/feature-integer-literals.spec.ts b/src/test/feature-integer-literals.spec.ts index 505197759..faa204ffc 100644 --- a/src/test/feature-integer-literals.spec.ts +++ b/src/test/feature-integer-literals.spec.ts @@ -1,4 +1,4 @@ -import { toNano } from 'ton-core'; +import { toNano } from '@ton/core'; import { ContractSystem } from '@tact-lang/emulator'; import { __DANGER_resetNodeId } from '../grammar/ast'; import { IntegerLiteralsTester } from './features/output/integer-literals_IntegerLiteralsTester'; @@ -18,7 +18,7 @@ describe('feature-integer-literals', () => { // Check methods expect(await contract.getDecLiteral1()).toEqual(123n); expect(await contract.getDecLiteral2()).toEqual(-123n); - expect(await contract.getDecLiteral3()).toEqual(1012300000n) + expect(await contract.getDecLiteral3()).toEqual(1012300000n); expect(await contract.getHexLiteral1()).toEqual(0x123n); expect(await contract.getHexLiteral2()).toEqual(-0x123n); From 353b58519a09869e3957fd335785b351b74abfa8 Mon Sep 17 00:00:00 2001 From: Gusarich Date: Wed, 14 Feb 2024 15:20:59 +0300 Subject: [PATCH 08/11] rework number literals grammar and add more test cases --- .../__snapshots__/grammar.spec.ts.snap | 74 ++++++++++++++++--- src/grammar/grammar.ohm | 16 ++-- src/grammar/grammar.ohm-bundle.d.ts | 9 ++- src/grammar/grammar.ohm-bundle.js | 2 +- src/grammar/test-failed/case-14.tact | 3 + src/grammar/test-failed/case-15.tact | 3 + src/grammar/test-failed/case-16.tact | 3 + src/grammar/test-failed/case-17.tact | 3 + src/grammar/test-failed/case-18.tact | 3 + src/grammar/test/case-28.tact | 8 +- 10 files changed, 96 insertions(+), 28 deletions(-) create mode 100644 src/grammar/test-failed/case-14.tact create mode 100644 src/grammar/test-failed/case-15.tact create mode 100644 src/grammar/test-failed/case-16.tact create mode 100644 src/grammar/test-failed/case-17.tact create mode 100644 src/grammar/test-failed/case-18.tact diff --git a/src/grammar/__snapshots__/grammar.spec.ts.snap b/src/grammar/__snapshots__/grammar.spec.ts.snap index cff3730b5..0d3cd9207 100644 --- a/src/grammar/__snapshots__/grammar.spec.ts.snap +++ b/src/grammar/__snapshots__/grammar.spec.ts.snap @@ -132,6 +132,56 @@ Line 2, col 15: " `; +exports[`grammar should fail case-14 1`] = ` +":2:16: Syntax error: expected a digit +Line 2, col 16: + 1 | fun test_fun(): Int { +> 2 | return 123_; + ^ + 3 | } +" +`; + +exports[`grammar should fail case-15 1`] = ` +":2:18: Syntax error: expected a hexadecimal digit +Line 2, col 18: + 1 | fun test_fun(): Int { +> 2 | return 0x123_; + ^ + 3 | } +" +`; + +exports[`grammar should fail case-16 1`] = ` +":2:13: Syntax error: expected ";" +Line 2, col 13: + 1 | fun test_fun(): Int { +> 2 | return 0_123; + ^ + 3 | } +" +`; + +exports[`grammar should fail case-17 1`] = ` +":2:20: Syntax error: expected a digit +Line 2, col 20: + 1 | fun test_fun(): Int { +> 2 | return 123_123__123; + ^ + 3 | } +" +`; + +exports[`grammar should fail case-18 1`] = ` +":2:15: Syntax error: expected ";" +Line 2, col 15: + 1 | fun test_fun(): Int { +> 2 | return 012_3; + ^ + 3 | } +" +`; + exports[`grammar should parse case-0 1`] = ` { "entries": [ @@ -3394,16 +3444,16 @@ exports[`grammar should parse case-28 1`] = ` "ref": fun test_fun(): Int { let a: Int = 123; let b: Int = -123; - let c: Int = 1_0123_00__000; + let c: Int = 1_0123_00_000; let d: Int = 0x123; let e: Int = -0x123; - let f: Int = 0x1_0123_00__000; + let f: Int = 0x1_0123_00_000; let g: Int = 0b101010; let h: Int = -0b101010; - let i: Int = 0b1_0101_00__000; + let i: Int = 0b1_0101_00_000; let j: Int = 0o123; let k: Int = -0o123; - let l: Int = 0o1_0123_00__000; + let l: Int = 0o1_0123_00_000; return a + b + c + d + e + f + g + h + i + j + k + l; }, "return": { @@ -3462,13 +3512,13 @@ exports[`grammar should parse case-28 1`] = ` "expression": { "id": 10, "kind": "number", - "ref": 1_0123_00__000, + "ref": 1_0123_00_000, "value": 1012300000n, }, "id": 11, "kind": "statement_let", "name": "c", - "ref": let c: Int = 1_0123_00__000;, + "ref": let c: Int = 1_0123_00_000;, "type": { "id": 9, "kind": "type_ref_simple", @@ -3525,13 +3575,13 @@ exports[`grammar should parse case-28 1`] = ` "expression": { "id": 20, "kind": "number", - "ref": 0x1_0123_00__000, + "ref": 0x1_0123_00_000, "value": 69024612352n, }, "id": 21, "kind": "statement_let", "name": "f", - "ref": let f: Int = 0x1_0123_00__000;, + "ref": let f: Int = 0x1_0123_00_000;, "type": { "id": 19, "kind": "type_ref_simple", @@ -3588,13 +3638,13 @@ exports[`grammar should parse case-28 1`] = ` "expression": { "id": 30, "kind": "number", - "ref": 0b1_0101_00__000, + "ref": 0b1_0101_00_000, "value": 672n, }, "id": 31, "kind": "statement_let", "name": "i", - "ref": let i: Int = 0b1_0101_00__000;, + "ref": let i: Int = 0b1_0101_00_000;, "type": { "id": 29, "kind": "type_ref_simple", @@ -3651,13 +3701,13 @@ exports[`grammar should parse case-28 1`] = ` "expression": { "id": 40, "kind": "number", - "ref": 0o1_0123_00__000, + "ref": 0o1_0123_00_000, "value": 136937472n, }, "id": 41, "kind": "statement_let", "name": "l", - "ref": let l: Int = 0o1_0123_00__000;, + "ref": let l: Int = 0o1_0123_00_000;, "type": { "id": 39, "kind": "type_ref_simple", diff --git a/src/grammar/grammar.ohm b/src/grammar/grammar.ohm index e375d2d51..40924d5bc 100644 --- a/src/grammar/grammar.ohm +++ b/src/grammar/grammar.ohm @@ -185,15 +185,17 @@ Tact { // hexDigit defined in Ohm's built-in rules (otherwise: hexDigit = "0".."9" | "a".."f" | "A".."F") // digit defined in Ohm's built-in rules (otherwise: digit = "0".."9") integerLiteral = integerLiteralHex | integerLiteralBin | integerLiteralOct | integerLiteralDec // Order is important - integerLiteralDec = digit+ ("_" | digit)* - integerLiteralHex = "0x" hexDigit+ ("_" | hexDigit)* - | "0X" hexDigit+ ("_" | hexDigit)* - integerLiteralBin = "0b" binDigit+ ("_" | binDigit)* - | "0B" binDigit+ ("_" | binDigit)* - integerLiteralOct = "0o" octDigit+ ("_" | octDigit)* - | "0O" octDigit+ ("_" | octDigit)* + integerLiteralDec = nonZeroDigit digit* ("_" digit+)* + | "0" digit* digit* digit* + integerLiteralHex = "0x" hexDigit+ ("_" hexDigit+)* + | "0X" hexDigit+ ("_" hexDigit+)* + integerLiteralBin = "0b" binDigit+ ("_" binDigit+)* + | "0B" binDigit+ ("_" binDigit+)* + integerLiteralOct = "0o" octDigit+ ("_" octDigit+)* + | "0O" octDigit+ ("_" octDigit+)* binDigit = "0" | "1" octDigit = "0".."7" + nonZeroDigit = "1".."9" // Letters letterAsciiLC = "a".."z" diff --git a/src/grammar/grammar.ohm-bundle.d.ts b/src/grammar/grammar.ohm-bundle.d.ts index 5912efaca..dd3c83693 100644 --- a/src/grammar/grammar.ohm-bundle.d.ts +++ b/src/grammar/grammar.ohm-bundle.d.ts @@ -141,12 +141,13 @@ export interface TactActionDict extends ActionDict { typeLiteral?: (this: NonterminalNode, arg0: NonterminalNode, arg1: IterationNode) => T; typeLiteralPart?: (this: NonterminalNode, arg0: NonterminalNode | TerminalNode) => T; integerLiteral?: (this: NonterminalNode, arg0: NonterminalNode) => T; - integerLiteralDec?: (this: NonterminalNode, arg0: IterationNode, arg1: IterationNode) => T; - integerLiteralHex?: (this: NonterminalNode, arg0: TerminalNode, arg1: IterationNode, arg2: IterationNode) => T; - integerLiteralBin?: (this: NonterminalNode, arg0: TerminalNode, arg1: IterationNode, arg2: IterationNode) => T; - integerLiteralOct?: (this: NonterminalNode, arg0: TerminalNode, arg1: IterationNode, arg2: IterationNode) => T; + integerLiteralDec?: (this: NonterminalNode, arg0: NonterminalNode | TerminalNode, arg1: IterationNode, arg2: IterationNode, arg3: IterationNode) => T; + integerLiteralHex?: (this: NonterminalNode, arg0: TerminalNode, arg1: IterationNode, arg2: IterationNode, arg3: IterationNode) => T; + integerLiteralBin?: (this: NonterminalNode, arg0: TerminalNode, arg1: IterationNode, arg2: IterationNode, arg3: IterationNode) => T; + integerLiteralOct?: (this: NonterminalNode, arg0: TerminalNode, arg1: IterationNode, arg2: IterationNode, arg3: IterationNode) => T; binDigit?: (this: NonterminalNode, arg0: TerminalNode) => T; octDigit?: (this: NonterminalNode, arg0: TerminalNode) => T; + nonZeroDigit?: (this: NonterminalNode, arg0: TerminalNode) => T; letterAsciiLC?: (this: NonterminalNode, arg0: TerminalNode) => T; letterAsciiUC?: (this: NonterminalNode, arg0: TerminalNode) => T; letterAscii?: (this: NonterminalNode, arg0: NonterminalNode) => T; diff --git a/src/grammar/grammar.ohm-bundle.js b/src/grammar/grammar.ohm-bundle.js index 911d21942..27dc71c76 100644 --- a/src/grammar/grammar.ohm-bundle.js +++ b/src/grammar/grammar.ohm-bundle.js @@ -1 +1 @@ -'use strict';const ohm=(require('ohm-js').default || require('ohm-js'));const result=ohm.makeRecipe(["grammar",{"source":"Tact {\n\n // Starting point of the program\n Program = ProgramItem*\n ProgramItem = Struct\n | Contract\n | Primitive\n | StaticFunction\n | NativeFunction\n | ProgramImport\n | Trait\n | Constant\n ProgramImport = import stringLiteral \";\"\n\n // Built-in declarations\n Primitive = \"primitive\" Type \";\"\n\n // Static function\n StaticFunction = Function\n NativeFunction = nameAttribute \"(\" funcId \")\" FunctionAttribute* native id \"(\" ListOf \")\" \";\" --withVoid\n | nameAttribute \"(\" funcId \")\" FunctionAttribute* native id \"(\" ListOf \")\" \":\" Type \";\" --withType\n \n // Field declarations\n Type = typeLiteral \"?\" --optional\n | typeLiteral --required\n | \"map\" \"<\" typeLiteral (as id)? \",\" typeLiteral (as id)? \">\" --map\n | \"bounced\" \"<\" typeLiteral \">\" --bounced\n Field = id \":\" Type \";\" --default\n | id \":\" Type \"=\" Expression \";\" --defaultWithInit\n | id \":\" Type as id \";\" --withSerialization\n | id \":\" Type as id \"=\" Expression \";\" --withSerializationAndInit\n \n // Constant\n ConstantAttribute = virtual --virtual\n | override --override\n | abstract --abstract\n Constant = ConstantAttribute* ~fun const id \":\" Type \"=\" Expression \";\" --withValue\n | ConstantAttribute* ~fun const id \":\" Type \";\" --withEmpty\n\n // Struct\n Struct = \"struct\" typeLiteral \"{\" StructBody* \"}\" --originary\n | \"message\" typeLiteral \"{\" StructBody* \"}\" --message\n | \"message\" \"(\" integerLiteral \")\" typeLiteral \"{\" StructBody* \"}\" --messageWithId\n StructBody = Field\n\n // Contract\n Contract = ContractAttribute* contract id \"{\" ContractBody* \"}\" --simple\n | ContractAttribute* contract id with ListOf \"{\" ContractBody* \"}\" --withTraits\n ContractInit = \"init\" \"(\" ListOf \")\" \"{\" Statement* \"}\"\n ContractBody = Field\n | ContractInit\n | ReceiveFunction\n | Function\n | Constant\n \n // Trait\n Trait = ContractAttribute* trait id \"{\" TraitBody* \"}\" --originary\n | ContractAttribute* trait id with ListOf \"{\" TraitBody* \"}\" --withTraits\n TraitBody = Field\n | ReceiveFunction\n | Function\n | Constant\n\n // Contract attributes\n ContractAttribute = \"@interface\" \"(\" stringLiteral \")\" --interface\n\n // Function\n FunctionAttribute = \"get\" --getter\n | mutates --mutates\n | extends --extends\n | virtual --virtual\n | override --override\n | inline --inline\n | abstract --abstract\n Function = FunctionAttribute* fun id \"(\" ListOf \")\" \"{\" Statement* \"}\" --withVoid\n | FunctionAttribute* fun id \"(\" ListOf \")\" \":\" Type \"{\" Statement* \"}\" --withType\n | FunctionAttribute* fun id \"(\" ListOf \")\" \";\" --abstractVoid\n | FunctionAttribute* fun id \"(\" ListOf \")\" \":\" Type \";\" --abstractType\n FunctionArg = id \":\" Type\n \n ReceiveFunction = \"receive\" \"(\" FunctionArg \")\" \"{\" Statement* \"}\" --simple\n | \"receive\" \"(\" \")\" \"{\" Statement* \"}\" --empty\n | \"receive\" \"(\" stringLiteral \")\" \"{\" Statement* \"}\" --comment\n | \"bounced\" \"(\" FunctionArg \")\" \"{\" Statement* \"}\" --bounced\n | \"external\" \"(\" FunctionArg \")\" \"{\" Statement* \"}\" --externalSimple\n | \"external\" \"(\" stringLiteral \")\" \"{\" Statement* \"}\" --externalComment\n | \"external\" \"(\" \")\" \"{\" Statement* \"}\" --externalEmpty\n\n // Statements\n Statement = StatementLet\n | StatementBlock\n | StatementReturn\n | StatementExpression\n | StatementAssign\n | StatementAugmentedAssign\n | StatementCondition\n | StatementWhile\n | StatementRepeat\n | StatementUntil\n StatementBlock = \"{\" Statement* \"}\"\n StatementLet = let id \":\" Type \"=\" Expression \";\"\n StatementReturn = return Expression \";\" --withExpression\n | return \";\" --withoutExpression \n StatementExpression = Expression \";\"\n StatementAssign = LValue \"=\" Expression \";\"\n StatementAugmentedAssign = StatementAugmentedAssignAdd\n | StatementAugmentedAssignSub\n | StatementAugmentedAssignMul\n | StatementAugmentedAssignDiv\n | StatementAugmentedAssignRem\n StatementAugmentedAssignAdd = LValue \"+=\" Expression \";\"\n StatementAugmentedAssignSub = LValue \"-=\" Expression \";\"\n StatementAugmentedAssignMul = LValue \"*=\" Expression \";\"\n StatementAugmentedAssignDiv = LValue \"/=\" Expression \";\"\n StatementAugmentedAssignRem = LValue \"%=\" Expression \";\"\n StatementCondition = if Expression \"{\" Statement* \"}\" ~else --simple\n | if Expression \"{\" Statement* \"}\" else \"{\" Statement* \"}\" --withElse\n | if Expression \"{\" Statement* \"}\" else StatementCondition --withElseIf\n StatementWhile = while \"(\" Expression \")\" \"{\" Statement* \"}\"\n StatementRepeat = repeat \"(\" Expression \")\" \"{\" Statement* \"}\"\n StatementUntil = do \"{\" Statement* \"}\" until \"(\" Expression \")\" \";\"\n\n // L-value\n LValue = id \".\" LValue --more\n | id --single\n\n // Expressions\n Expression = 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 +'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 = nonZeroDigit digit* (\"_\" digit+)*\n | \"0\" digit* 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 nonZeroDigit = \"1\"..\"9\"\n\n // Letters\n letterAsciiLC = \"a\"..\"z\"\n letterAsciiUC = \"A\"..\"Z\"\n letterAscii = letterAsciiLC | letterAsciiUC\n letterComment = letterAsciiLC | letterAsciiUC | digit | \"_\"\n\n // ID Literal\n idStart = letterAscii | \"_\"\n idPart = letterAscii | digit | \"_\"\n id = ~reservedWord #idStart #(idPart*)\n\n // FunC id\n funcLetter = letterAscii | \"_\" | \"'\" | \"?\" | \"!\" | \"::\" | \"&\"\n funcId = funcLetter #(funcLetter | digit)*\n\n // Bool Literal\n boolLiteral = (\"true\" | \"false\") ~idPart\n\n // String literal\n 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,8790]},null,[],["alt",{"sourceInterval":[8708,8790]},["seq",{"sourceInterval":[8708,8741]},["app",{"sourceInterval":[8708,8720]},"nonZeroDigit",[]],["star",{"sourceInterval":[8721,8727]},["app",{"sourceInterval":[8721,8726]},"digit",[]]],["star",{"sourceInterval":[8728,8741]},["seq",{"sourceInterval":[8729,8739]},["terminal",{"sourceInterval":[8729,8732]},"_"],["plus",{"sourceInterval":[8733,8739]},["app",{"sourceInterval":[8733,8738]},"digit",[]]]]]],["seq",{"sourceInterval":[8766,8790]},["terminal",{"sourceInterval":[8766,8769]},"0"],["star",{"sourceInterval":[8770,8776]},["app",{"sourceInterval":[8770,8775]},"digit",[]]],["star",{"sourceInterval":[8777,8783]},["app",{"sourceInterval":[8777,8782]},"digit",[]]],["star",{"sourceInterval":[8784,8790]},["app",{"sourceInterval":[8784,8789]},"digit",[]]]]]],"integerLiteralHex":["define",{"sourceInterval":[8795,8902]},null,[],["alt",{"sourceInterval":[8815,8902]},["seq",{"sourceInterval":[8815,8846]},["terminal",{"sourceInterval":[8815,8819]},"0x"],["plus",{"sourceInterval":[8820,8829]},["app",{"sourceInterval":[8820,8828]},"hexDigit",[]]],["star",{"sourceInterval":[8830,8846]},["seq",{"sourceInterval":[8831,8844]},["terminal",{"sourceInterval":[8831,8834]},"_"],["plus",{"sourceInterval":[8835,8844]},["app",{"sourceInterval":[8835,8843]},"hexDigit",[]]]]]],["seq",{"sourceInterval":[8871,8902]},["terminal",{"sourceInterval":[8871,8875]},"0X"],["plus",{"sourceInterval":[8876,8885]},["app",{"sourceInterval":[8876,8884]},"hexDigit",[]]],["star",{"sourceInterval":[8886,8902]},["seq",{"sourceInterval":[8887,8900]},["terminal",{"sourceInterval":[8887,8890]},"_"],["plus",{"sourceInterval":[8891,8900]},["app",{"sourceInterval":[8891,8899]},"hexDigit",[]]]]]]]],"integerLiteralBin":["define",{"sourceInterval":[8907,9014]},null,[],["alt",{"sourceInterval":[8927,9014]},["seq",{"sourceInterval":[8927,8958]},["terminal",{"sourceInterval":[8927,8931]},"0b"],["plus",{"sourceInterval":[8932,8941]},["app",{"sourceInterval":[8932,8940]},"binDigit",[]]],["star",{"sourceInterval":[8942,8958]},["seq",{"sourceInterval":[8943,8956]},["terminal",{"sourceInterval":[8943,8946]},"_"],["plus",{"sourceInterval":[8947,8956]},["app",{"sourceInterval":[8947,8955]},"binDigit",[]]]]]],["seq",{"sourceInterval":[8983,9014]},["terminal",{"sourceInterval":[8983,8987]},"0B"],["plus",{"sourceInterval":[8988,8997]},["app",{"sourceInterval":[8988,8996]},"binDigit",[]]],["star",{"sourceInterval":[8998,9014]},["seq",{"sourceInterval":[8999,9012]},["terminal",{"sourceInterval":[8999,9002]},"_"],["plus",{"sourceInterval":[9003,9012]},["app",{"sourceInterval":[9003,9011]},"binDigit",[]]]]]]]],"integerLiteralOct":["define",{"sourceInterval":[9019,9126]},null,[],["alt",{"sourceInterval":[9039,9126]},["seq",{"sourceInterval":[9039,9070]},["terminal",{"sourceInterval":[9039,9043]},"0o"],["plus",{"sourceInterval":[9044,9053]},["app",{"sourceInterval":[9044,9052]},"octDigit",[]]],["star",{"sourceInterval":[9054,9070]},["seq",{"sourceInterval":[9055,9068]},["terminal",{"sourceInterval":[9055,9058]},"_"],["plus",{"sourceInterval":[9059,9068]},["app",{"sourceInterval":[9059,9067]},"octDigit",[]]]]]],["seq",{"sourceInterval":[9095,9126]},["terminal",{"sourceInterval":[9095,9099]},"0O"],["plus",{"sourceInterval":[9100,9109]},["app",{"sourceInterval":[9100,9108]},"octDigit",[]]],["star",{"sourceInterval":[9110,9126]},["seq",{"sourceInterval":[9111,9124]},["terminal",{"sourceInterval":[9111,9114]},"_"],["plus",{"sourceInterval":[9115,9124]},["app",{"sourceInterval":[9115,9123]},"octDigit",[]]]]]]]],"binDigit":["define",{"sourceInterval":[9131,9151]},null,[],["alt",{"sourceInterval":[9142,9151]},["terminal",{"sourceInterval":[9142,9145]},"0"],["terminal",{"sourceInterval":[9148,9151]},"1"]]],"octDigit":["define",{"sourceInterval":[9156,9175]},null,[],["range",{"sourceInterval":[9167,9175]},"0","7"]],"nonZeroDigit":["define",{"sourceInterval":[9180,9203]},null,[],["range",{"sourceInterval":[9195,9203]},"1","9"]],"letterAsciiLC":["define",{"sourceInterval":[9224,9248]},null,[],["range",{"sourceInterval":[9240,9248]},"a","z"]],"letterAsciiUC":["define",{"sourceInterval":[9253,9277]},null,[],["range",{"sourceInterval":[9269,9277]},"A","Z"]],"letterAscii":["define",{"sourceInterval":[9282,9325]},null,[],["alt",{"sourceInterval":[9296,9325]},["app",{"sourceInterval":[9296,9309]},"letterAsciiLC",[]],["app",{"sourceInterval":[9312,9325]},"letterAsciiUC",[]]]],"letterComment":["define",{"sourceInterval":[9330,9389]},null,[],["alt",{"sourceInterval":[9346,9389]},["app",{"sourceInterval":[9346,9359]},"letterAsciiLC",[]],["app",{"sourceInterval":[9362,9375]},"letterAsciiUC",[]],["app",{"sourceInterval":[9378,9383]},"digit",[]],["terminal",{"sourceInterval":[9386,9389]},"_"]]],"idStart":["define",{"sourceInterval":[9413,9440]},null,[],["alt",{"sourceInterval":[9423,9440]},["app",{"sourceInterval":[9423,9434]},"letterAscii",[]],["terminal",{"sourceInterval":[9437,9440]},"_"]]],"idPart":["define",{"sourceInterval":[9445,9479]},null,[],["alt",{"sourceInterval":[9454,9479]},["app",{"sourceInterval":[9454,9465]},"letterAscii",[]],["app",{"sourceInterval":[9468,9473]},"digit",[]],["terminal",{"sourceInterval":[9476,9479]},"_"]]],"id":["define",{"sourceInterval":[9484,9522]},null,[],["seq",{"sourceInterval":[9489,9522]},["not",{"sourceInterval":[9489,9502]},["app",{"sourceInterval":[9490,9502]},"reservedWord",[]]],["lex",{"sourceInterval":[9503,9511]},["app",{"sourceInterval":[9504,9511]},"idStart",[]]],["lex",{"sourceInterval":[9512,9522]},["star",{"sourceInterval":[9514,9521]},["app",{"sourceInterval":[9514,9520]},"idPart",[]]]]]],"funcLetter":["define",{"sourceInterval":[9543,9604]},null,[],["alt",{"sourceInterval":[9556,9604]},["app",{"sourceInterval":[9556,9567]},"letterAscii",[]],["terminal",{"sourceInterval":[9570,9573]},"_"],["terminal",{"sourceInterval":[9576,9579]},"'"],["terminal",{"sourceInterval":[9582,9585]},"?"],["terminal",{"sourceInterval":[9588,9591]},"!"],["terminal",{"sourceInterval":[9594,9598]},"::"],["terminal",{"sourceInterval":[9601,9604]},"&"]]],"funcId":["define",{"sourceInterval":[9609,9651]},null,[],["seq",{"sourceInterval":[9618,9651]},["app",{"sourceInterval":[9618,9628]},"funcLetter",[]],["star",{"sourceInterval":[9629,9651]},["lex",{"sourceInterval":[9629,9650]},["alt",{"sourceInterval":[9631,9649]},["app",{"sourceInterval":[9631,9641]},"funcLetter",[]],["app",{"sourceInterval":[9644,9649]},"digit",[]]]]]]],"boolLiteral":["define",{"sourceInterval":[9677,9717]},null,[],["seq",{"sourceInterval":[9691,9717]},["alt",{"sourceInterval":[9692,9708]},["terminal",{"sourceInterval":[9692,9698]},"true"],["terminal",{"sourceInterval":[9701,9708]},"false"]],["not",{"sourceInterval":[9710,9717]},["app",{"sourceInterval":[9711,9717]},"idPart",[]]]]],"stringLiteralCharacter":["define",{"sourceInterval":[9745,9805]},null,[],["seq",{"sourceInterval":[9770,9805]},["not",{"sourceInterval":[9770,9801]},["alt",{"sourceInterval":[9772,9800]},["terminal",{"sourceInterval":[9772,9776]},"\""],["terminal",{"sourceInterval":[9779,9783]},"\\"],["app",{"sourceInterval":[9786,9800]},"lineTerminator",[]]]],["app",{"sourceInterval":[9802,9805]},"any",[]]]],"stringLiteral":["define",{"sourceInterval":[9810,9859]},null,[],["seq",{"sourceInterval":[9826,9859]},["terminal",{"sourceInterval":[9826,9830]},"\""],["star",{"sourceInterval":[9831,9854]},["app",{"sourceInterval":[9831,9853]},"stringLiteralCharacter",[]]],["terminal",{"sourceInterval":[9855,9859]},"\""]]],"keyword":["define",{"sourceInterval":[9912,10425]},null,[],["alt",{"sourceInterval":[9922,10425]},["app",{"sourceInterval":[9922,9925]},"fun",[]],["app",{"sourceInterval":[9941,9944]},"let",[]],["app",{"sourceInterval":[9959,9965]},"return",[]],["app",{"sourceInterval":[9981,9987]},"extend",[]],["app",{"sourceInterval":[10003,10009]},"native",[]],["app",{"sourceInterval":[10025,10031]},"public",[]],["app",{"sourceInterval":[10047,10051]},"null",[]],["app",{"sourceInterval":[10067,10069]},"if",[]],["app",{"sourceInterval":[10085,10089]},"else",[]],["app",{"sourceInterval":[10105,10110]},"while",[]],["app",{"sourceInterval":[10126,10132]},"repeat",[]],["app",{"sourceInterval":[10148,10150]},"do",[]],["app",{"sourceInterval":[10166,10171]},"until",[]],["app",{"sourceInterval":[10187,10189]},"as",[]],["app",{"sourceInterval":[10206,10213]},"mutates",[]],["app",{"sourceInterval":[10228,10235]},"extends",[]],["app",{"sourceInterval":[10250,10256]},"import",[]],["app",{"sourceInterval":[10271,10275]},"with",[]],["app",{"sourceInterval":[10290,10295]},"trait",[]],["app",{"sourceInterval":[10310,10316]},"initOf",[]],["app",{"sourceInterval":[10331,10339]},"override",[]],["app",{"sourceInterval":[10354,10362]},"abstract",[]],["app",{"sourceInterval":[10377,10384]},"virtual",[]],["app",{"sourceInterval":[10399,10405]},"inline",[]],["app",{"sourceInterval":[10420,10425]},"const",[]]]],"contract":["define",{"sourceInterval":[10430,10459]},null,[],["seq",{"sourceInterval":[10441,10459]},["terminal",{"sourceInterval":[10441,10451]},"contract"],["not",{"sourceInterval":[10452,10459]},["app",{"sourceInterval":[10453,10459]},"idPart",[]]]]],"let":["define",{"sourceInterval":[10464,10483]},null,[],["seq",{"sourceInterval":[10470,10483]},["terminal",{"sourceInterval":[10470,10475]},"let"],["not",{"sourceInterval":[10476,10483]},["app",{"sourceInterval":[10477,10483]},"idPart",[]]]]],"fun":["define",{"sourceInterval":[10488,10507]},null,[],["seq",{"sourceInterval":[10494,10507]},["terminal",{"sourceInterval":[10494,10499]},"fun"],["not",{"sourceInterval":[10500,10507]},["app",{"sourceInterval":[10501,10507]},"idPart",[]]]]],"return":["define",{"sourceInterval":[10512,10537]},null,[],["seq",{"sourceInterval":[10521,10537]},["terminal",{"sourceInterval":[10521,10529]},"return"],["not",{"sourceInterval":[10530,10537]},["app",{"sourceInterval":[10531,10537]},"idPart",[]]]]],"extend":["define",{"sourceInterval":[10542,10567]},null,[],["seq",{"sourceInterval":[10551,10567]},["terminal",{"sourceInterval":[10551,10559]},"extend"],["not",{"sourceInterval":[10560,10567]},["app",{"sourceInterval":[10561,10567]},"idPart",[]]]]],"native":["define",{"sourceInterval":[10572,10597]},null,[],["seq",{"sourceInterval":[10581,10597]},["terminal",{"sourceInterval":[10581,10589]},"native"],["not",{"sourceInterval":[10590,10597]},["app",{"sourceInterval":[10591,10597]},"idPart",[]]]]],"public":["define",{"sourceInterval":[10602,10627]},null,[],["seq",{"sourceInterval":[10611,10627]},["terminal",{"sourceInterval":[10611,10619]},"public"],["not",{"sourceInterval":[10620,10627]},["app",{"sourceInterval":[10621,10627]},"idPart",[]]]]],"null":["define",{"sourceInterval":[10632,10653]},null,[],["seq",{"sourceInterval":[10639,10653]},["terminal",{"sourceInterval":[10639,10645]},"null"],["not",{"sourceInterval":[10646,10653]},["app",{"sourceInterval":[10647,10653]},"idPart",[]]]]],"if":["define",{"sourceInterval":[10658,10675]},null,[],["seq",{"sourceInterval":[10663,10675]},["terminal",{"sourceInterval":[10663,10667]},"if"],["not",{"sourceInterval":[10668,10675]},["app",{"sourceInterval":[10669,10675]},"idPart",[]]]]],"else":["define",{"sourceInterval":[10680,10701]},null,[],["seq",{"sourceInterval":[10687,10701]},["terminal",{"sourceInterval":[10687,10693]},"else"],["not",{"sourceInterval":[10694,10701]},["app",{"sourceInterval":[10695,10701]},"idPart",[]]]]],"while":["define",{"sourceInterval":[10706,10729]},null,[],["seq",{"sourceInterval":[10714,10729]},["terminal",{"sourceInterval":[10714,10721]},"while"],["not",{"sourceInterval":[10722,10729]},["app",{"sourceInterval":[10723,10729]},"idPart",[]]]]],"repeat":["define",{"sourceInterval":[10734,10759]},null,[],["seq",{"sourceInterval":[10743,10759]},["terminal",{"sourceInterval":[10743,10751]},"repeat"],["not",{"sourceInterval":[10752,10759]},["app",{"sourceInterval":[10753,10759]},"idPart",[]]]]],"do":["define",{"sourceInterval":[10764,10781]},null,[],["seq",{"sourceInterval":[10769,10781]},["terminal",{"sourceInterval":[10769,10773]},"do"],["not",{"sourceInterval":[10774,10781]},["app",{"sourceInterval":[10775,10781]},"idPart",[]]]]],"until":["define",{"sourceInterval":[10786,10809]},null,[],["seq",{"sourceInterval":[10794,10809]},["terminal",{"sourceInterval":[10794,10801]},"until"],["not",{"sourceInterval":[10802,10809]},["app",{"sourceInterval":[10803,10809]},"idPart",[]]]]],"as":["define",{"sourceInterval":[10814,10831]},null,[],["seq",{"sourceInterval":[10819,10831]},["terminal",{"sourceInterval":[10819,10823]},"as"],["not",{"sourceInterval":[10824,10831]},["app",{"sourceInterval":[10825,10831]},"idPart",[]]]]],"mutates":["define",{"sourceInterval":[10836,10863]},null,[],["seq",{"sourceInterval":[10846,10863]},["terminal",{"sourceInterval":[10846,10855]},"mutates"],["not",{"sourceInterval":[10856,10863]},["app",{"sourceInterval":[10857,10863]},"idPart",[]]]]],"extends":["define",{"sourceInterval":[10868,10895]},null,[],["seq",{"sourceInterval":[10878,10895]},["terminal",{"sourceInterval":[10878,10887]},"extends"],["not",{"sourceInterval":[10888,10895]},["app",{"sourceInterval":[10889,10895]},"idPart",[]]]]],"import":["define",{"sourceInterval":[10900,10925]},null,[],["seq",{"sourceInterval":[10909,10925]},["terminal",{"sourceInterval":[10909,10917]},"import"],["not",{"sourceInterval":[10918,10925]},["app",{"sourceInterval":[10919,10925]},"idPart",[]]]]],"with":["define",{"sourceInterval":[10930,10951]},null,[],["seq",{"sourceInterval":[10937,10951]},["terminal",{"sourceInterval":[10937,10943]},"with"],["not",{"sourceInterval":[10944,10951]},["app",{"sourceInterval":[10945,10951]},"idPart",[]]]]],"trait":["define",{"sourceInterval":[10956,10979]},null,[],["seq",{"sourceInterval":[10964,10979]},["terminal",{"sourceInterval":[10964,10971]},"trait"],["not",{"sourceInterval":[10972,10979]},["app",{"sourceInterval":[10973,10979]},"idPart",[]]]]],"initOf":["define",{"sourceInterval":[10984,11009]},null,[],["seq",{"sourceInterval":[10993,11009]},["terminal",{"sourceInterval":[10993,11001]},"initOf"],["not",{"sourceInterval":[11002,11009]},["app",{"sourceInterval":[11003,11009]},"idPart",[]]]]],"virtual":["define",{"sourceInterval":[11014,11041]},null,[],["seq",{"sourceInterval":[11024,11041]},["terminal",{"sourceInterval":[11024,11033]},"virtual"],["not",{"sourceInterval":[11034,11041]},["app",{"sourceInterval":[11035,11041]},"idPart",[]]]]],"override":["define",{"sourceInterval":[11046,11075]},null,[],["seq",{"sourceInterval":[11057,11075]},["terminal",{"sourceInterval":[11057,11067]},"override"],["not",{"sourceInterval":[11068,11075]},["app",{"sourceInterval":[11069,11075]},"idPart",[]]]]],"inline":["define",{"sourceInterval":[11080,11105]},null,[],["seq",{"sourceInterval":[11089,11105]},["terminal",{"sourceInterval":[11089,11097]},"inline"],["not",{"sourceInterval":[11098,11105]},["app",{"sourceInterval":[11099,11105]},"idPart",[]]]]],"const":["define",{"sourceInterval":[11110,11133]},null,[],["seq",{"sourceInterval":[11118,11133]},["terminal",{"sourceInterval":[11118,11125]},"const"],["not",{"sourceInterval":[11126,11133]},["app",{"sourceInterval":[11127,11133]},"idPart",[]]]]],"abstract":["define",{"sourceInterval":[11138,11167]},null,[],["seq",{"sourceInterval":[11149,11167]},["terminal",{"sourceInterval":[11149,11159]},"abstract"],["not",{"sourceInterval":[11160,11167]},["app",{"sourceInterval":[11161,11167]},"idPart",[]]]]],"nameAttribute":["define",{"sourceInterval":[11191,11214]},null,[],["terminal",{"sourceInterval":[11207,11214]},"@name"]],"reservedWord":["define",{"sourceInterval":[11236,11258]},null,[],["app",{"sourceInterval":[11251,11258]},"keyword",[]]],"space":["extend",{"sourceInterval":[11280,11313]},null,[],["alt",{"sourceInterval":[11289,11313]},["app",{"sourceInterval":[11289,11296]},"comment",[]],["app",{"sourceInterval":[11299,11313]},"lineTerminator",[]]]],"comment":["define",{"sourceInterval":[11318,11364]},null,[],["alt",{"sourceInterval":[11328,11364]},["app",{"sourceInterval":[11328,11344]},"multiLineComment",[]],["app",{"sourceInterval":[11347,11364]},"singleLineComment",[]]]],"lineTerminator":["define",{"sourceInterval":[11369,11419]},null,[],["alt",{"sourceInterval":[11386,11419]},["terminal",{"sourceInterval":[11386,11390]},"\n"],["terminal",{"sourceInterval":[11393,11397]},"\r"],["terminal",{"sourceInterval":[11400,11408]},"\u2028"],["terminal",{"sourceInterval":[11411,11419]},"\u2029"]]],"multiLineComment":["define",{"sourceInterval":[11424,11465]},null,[],["seq",{"sourceInterval":[11443,11465]},["terminal",{"sourceInterval":[11443,11447]},"/*"],["star",{"sourceInterval":[11448,11460]},["seq",{"sourceInterval":[11449,11458]},["not",{"sourceInterval":[11449,11454]},["terminal",{"sourceInterval":[11450,11454]},"*/"]],["app",{"sourceInterval":[11455,11458]},"any",[]]]],["terminal",{"sourceInterval":[11461,11465]},"*/"]]],"singleLineComment":["define",{"sourceInterval":[11470,11517]},null,[],["seq",{"sourceInterval":[11490,11517]},["terminal",{"sourceInterval":[11490,11494]},"//"],["star",{"sourceInterval":[11495,11517]},["seq",{"sourceInterval":[11496,11515]},["not",{"sourceInterval":[11496,11511]},["app",{"sourceInterval":[11497,11511]},"lineTerminator",[]]],["app",{"sourceInterval":[11512,11515]},"any",[]]]]]]}]);module.exports=result; \ No newline at end of file diff --git a/src/grammar/test-failed/case-14.tact b/src/grammar/test-failed/case-14.tact new file mode 100644 index 000000000..fc79e99eb --- /dev/null +++ b/src/grammar/test-failed/case-14.tact @@ -0,0 +1,3 @@ +fun test_fun(): Int { + return 123_; +} \ No newline at end of file diff --git a/src/grammar/test-failed/case-15.tact b/src/grammar/test-failed/case-15.tact new file mode 100644 index 000000000..d28be4ac6 --- /dev/null +++ b/src/grammar/test-failed/case-15.tact @@ -0,0 +1,3 @@ +fun test_fun(): Int { + return 0x123_; +} \ No newline at end of file diff --git a/src/grammar/test-failed/case-16.tact b/src/grammar/test-failed/case-16.tact new file mode 100644 index 000000000..feccd0d82 --- /dev/null +++ b/src/grammar/test-failed/case-16.tact @@ -0,0 +1,3 @@ +fun test_fun(): Int { + return 0_123; +} \ No newline at end of file diff --git a/src/grammar/test-failed/case-17.tact b/src/grammar/test-failed/case-17.tact new file mode 100644 index 000000000..d313e6e7d --- /dev/null +++ b/src/grammar/test-failed/case-17.tact @@ -0,0 +1,3 @@ +fun test_fun(): Int { + return 123_123__123; +} \ No newline at end of file diff --git a/src/grammar/test-failed/case-18.tact b/src/grammar/test-failed/case-18.tact new file mode 100644 index 000000000..f7e5a0f25 --- /dev/null +++ b/src/grammar/test-failed/case-18.tact @@ -0,0 +1,3 @@ +fun test_fun(): Int { + return 012_3; +} \ No newline at end of file diff --git a/src/grammar/test/case-28.tact b/src/grammar/test/case-28.tact index d6cf98949..a3f1619bd 100644 --- a/src/grammar/test/case-28.tact +++ b/src/grammar/test/case-28.tact @@ -1,15 +1,15 @@ fun test_fun(): Int { let a: Int = 123; let b: Int = -123; - let c: Int = 1_0123_00__000; + let c: Int = 1_0123_00_000; let d: Int = 0x123; let e: Int = -0x123; - let f: Int = 0x1_0123_00__000; + let f: Int = 0x1_0123_00_000; let g: Int = 0b101010; let h: Int = -0b101010; - let i: Int = 0b1_0101_00__000; + let i: Int = 0b1_0101_00_000; let j: Int = 0o123; let k: Int = -0o123; - let l: Int = 0o1_0123_00__000; + 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 From 39d61d2b79a7c29921540d3cb513d647b100491f Mon Sep 17 00:00:00 2001 From: Anton Trunov Date: Wed, 14 Feb 2024 22:47:56 +0400 Subject: [PATCH 09/11] refactor lexical grammar for numerical literals --foobar gives an intermediate name to a production thereby resolving the arity conflicts, see https://github.com/ohmjs/ohm/blob/39ccead882ad35dad73d99dea854ff60e7146291/examples/math/index.html#L180 --- src/grammar/grammar.ohm | 13 +++++-------- src/grammar/grammar.ohm-bundle.d.ts | 10 ++++++---- src/grammar/grammar.ohm-bundle.js | 2 +- 3 files changed, 12 insertions(+), 13 deletions(-) diff --git a/src/grammar/grammar.ohm b/src/grammar/grammar.ohm index 40924d5bc..52041b52c 100644 --- a/src/grammar/grammar.ohm +++ b/src/grammar/grammar.ohm @@ -185,14 +185,11 @@ Tact { // hexDigit defined in Ohm's built-in rules (otherwise: hexDigit = "0".."9" | "a".."f" | "A".."F") // digit defined in Ohm's built-in rules (otherwise: digit = "0".."9") integerLiteral = integerLiteralHex | integerLiteralBin | integerLiteralOct | integerLiteralDec // Order is important - integerLiteralDec = nonZeroDigit digit* ("_" digit+)* - | "0" digit* digit* digit* - integerLiteralHex = "0x" hexDigit+ ("_" hexDigit+)* - | "0X" hexDigit+ ("_" hexDigit+)* - integerLiteralBin = "0b" binDigit+ ("_" binDigit+)* - | "0B" binDigit+ ("_" binDigit+)* - integerLiteralOct = "0o" octDigit+ ("_" octDigit+)* - | "0O" octDigit+ ("_" octDigit+)* + integerLiteralDec = nonZeroDigit ("_"? digit)* --nonZeroIntegerLiteralDec + | "0" digit* --integerLiteralWithLeadingZero + integerLiteralHex = ("0x" | "0X") hexDigit ("_"? hexDigit)* + integerLiteralBin = ("0b" | "0B") binDigit ("_"? binDigit)* + integerLiteralOct = ("0o" | "0O") octDigit ("_"? octDigit)* binDigit = "0" | "1" octDigit = "0".."7" nonZeroDigit = "1".."9" diff --git a/src/grammar/grammar.ohm-bundle.d.ts b/src/grammar/grammar.ohm-bundle.d.ts index dd3c83693..4c34f5bc9 100644 --- a/src/grammar/grammar.ohm-bundle.d.ts +++ b/src/grammar/grammar.ohm-bundle.d.ts @@ -141,10 +141,12 @@ export interface TactActionDict extends ActionDict { typeLiteral?: (this: NonterminalNode, arg0: NonterminalNode, arg1: IterationNode) => T; typeLiteralPart?: (this: NonterminalNode, arg0: NonterminalNode | TerminalNode) => T; integerLiteral?: (this: NonterminalNode, arg0: NonterminalNode) => T; - integerLiteralDec?: (this: NonterminalNode, arg0: NonterminalNode | TerminalNode, arg1: IterationNode, arg2: IterationNode, arg3: IterationNode) => T; - integerLiteralHex?: (this: NonterminalNode, arg0: TerminalNode, arg1: IterationNode, arg2: IterationNode, arg3: IterationNode) => T; - integerLiteralBin?: (this: NonterminalNode, arg0: TerminalNode, arg1: IterationNode, arg2: IterationNode, arg3: IterationNode) => T; - integerLiteralOct?: (this: NonterminalNode, arg0: TerminalNode, arg1: IterationNode, arg2: IterationNode, arg3: IterationNode) => T; + integerLiteralDec_nonZeroIntegerLiteralDec?: (this: NonterminalNode, arg0: NonterminalNode, arg1: IterationNode, arg2: IterationNode) => T; + integerLiteralDec_integerLiteralWithLeadingZero?: (this: NonterminalNode, arg0: TerminalNode, arg1: IterationNode) => T; + integerLiteralDec?: (this: NonterminalNode, arg0: NonterminalNode) => T; + integerLiteralHex?: (this: NonterminalNode, arg0: TerminalNode, arg1: NonterminalNode, arg2: IterationNode, arg3: IterationNode) => T; + integerLiteralBin?: (this: NonterminalNode, arg0: TerminalNode, arg1: NonterminalNode, arg2: IterationNode, arg3: IterationNode) => T; + integerLiteralOct?: (this: NonterminalNode, arg0: TerminalNode, arg1: NonterminalNode, arg2: IterationNode, arg3: IterationNode) => T; binDigit?: (this: NonterminalNode, arg0: TerminalNode) => T; octDigit?: (this: NonterminalNode, arg0: TerminalNode) => T; nonZeroDigit?: (this: NonterminalNode, arg0: TerminalNode) => T; diff --git a/src/grammar/grammar.ohm-bundle.js b/src/grammar/grammar.ohm-bundle.js index 27dc71c76..719c8bd44 100644 --- a/src/grammar/grammar.ohm-bundle.js +++ b/src/grammar/grammar.ohm-bundle.js @@ -1 +1 @@ -'use strict';const ohm=(require('ohm-js').default || require('ohm-js'));const result=ohm.makeRecipe(["grammar",{"source":"Tact {\n\n // Starting point of the program\n Program = ProgramItem*\n ProgramItem = Struct\n | Contract\n | Primitive\n | StaticFunction\n | NativeFunction\n | ProgramImport\n | Trait\n | Constant\n ProgramImport = import stringLiteral \";\"\n\n // Built-in declarations\n Primitive = \"primitive\" Type \";\"\n\n // Static function\n StaticFunction = Function\n NativeFunction = nameAttribute \"(\" funcId \")\" FunctionAttribute* native id \"(\" ListOf \")\" \";\" --withVoid\n | nameAttribute \"(\" funcId \")\" FunctionAttribute* native id \"(\" ListOf \")\" \":\" Type \";\" --withType\n \n // Field declarations\n Type = typeLiteral \"?\" --optional\n | typeLiteral --required\n | \"map\" \"<\" typeLiteral (as id)? \",\" typeLiteral (as id)? \">\" --map\n | \"bounced\" \"<\" typeLiteral \">\" --bounced\n Field = id \":\" Type \";\" --default\n | id \":\" Type \"=\" Expression \";\" --defaultWithInit\n | id \":\" Type as id \";\" --withSerialization\n | id \":\" Type as id \"=\" Expression \";\" --withSerializationAndInit\n \n // Constant\n ConstantAttribute = virtual --virtual\n | override --override\n | abstract --abstract\n Constant = ConstantAttribute* ~fun const id \":\" Type \"=\" Expression \";\" --withValue\n | ConstantAttribute* ~fun const id \":\" Type \";\" --withEmpty\n\n // Struct\n Struct = \"struct\" typeLiteral \"{\" StructBody* \"}\" --originary\n | \"message\" typeLiteral \"{\" StructBody* \"}\" --message\n | \"message\" \"(\" integerLiteral \")\" typeLiteral \"{\" StructBody* \"}\" --messageWithId\n StructBody = Field\n\n // Contract\n Contract = ContractAttribute* contract id \"{\" ContractBody* \"}\" --simple\n | ContractAttribute* contract id with ListOf \"{\" ContractBody* \"}\" --withTraits\n ContractInit = \"init\" \"(\" ListOf \")\" \"{\" Statement* \"}\"\n ContractBody = Field\n | ContractInit\n | ReceiveFunction\n | Function\n | Constant\n \n // Trait\n Trait = ContractAttribute* trait id \"{\" TraitBody* \"}\" --originary\n | ContractAttribute* trait id with ListOf \"{\" TraitBody* \"}\" --withTraits\n TraitBody = Field\n | ReceiveFunction\n | Function\n | Constant\n\n // Contract attributes\n ContractAttribute = \"@interface\" \"(\" stringLiteral \")\" --interface\n\n // Function\n FunctionAttribute = \"get\" --getter\n | mutates --mutates\n | extends --extends\n | virtual --virtual\n | override --override\n | inline --inline\n | abstract --abstract\n Function = FunctionAttribute* fun id \"(\" ListOf \")\" \"{\" Statement* \"}\" --withVoid\n | FunctionAttribute* fun id \"(\" ListOf \")\" \":\" Type \"{\" Statement* \"}\" --withType\n | FunctionAttribute* fun id \"(\" ListOf \")\" \";\" --abstractVoid\n | FunctionAttribute* fun id \"(\" ListOf \")\" \":\" Type \";\" --abstractType\n FunctionArg = id \":\" Type\n \n ReceiveFunction = \"receive\" \"(\" FunctionArg \")\" \"{\" Statement* \"}\" --simple\n | \"receive\" \"(\" \")\" \"{\" Statement* \"}\" --empty\n | \"receive\" \"(\" stringLiteral \")\" \"{\" Statement* \"}\" --comment\n | \"bounced\" \"(\" FunctionArg \")\" \"{\" Statement* \"}\" --bounced\n | \"external\" \"(\" FunctionArg \")\" \"{\" Statement* \"}\" --externalSimple\n | \"external\" \"(\" stringLiteral \")\" \"{\" Statement* \"}\" --externalComment\n | \"external\" \"(\" \")\" \"{\" Statement* \"}\" --externalEmpty\n\n // Statements\n Statement = StatementLet\n | StatementBlock\n | StatementReturn\n | StatementExpression\n | StatementAssign\n | StatementAugmentedAssign\n | StatementCondition\n | StatementWhile\n | StatementRepeat\n | StatementUntil\n StatementBlock = \"{\" Statement* \"}\"\n StatementLet = let id \":\" Type \"=\" Expression \";\"\n StatementReturn = return Expression \";\" --withExpression\n | return \";\" --withoutExpression \n StatementExpression = Expression \";\"\n StatementAssign = LValue \"=\" Expression \";\"\n StatementAugmentedAssign = StatementAugmentedAssignAdd\n | StatementAugmentedAssignSub\n | StatementAugmentedAssignMul\n | StatementAugmentedAssignDiv\n | StatementAugmentedAssignRem\n StatementAugmentedAssignAdd = LValue \"+=\" Expression \";\"\n StatementAugmentedAssignSub = LValue \"-=\" Expression \";\"\n StatementAugmentedAssignMul = LValue \"*=\" Expression \";\"\n StatementAugmentedAssignDiv = LValue \"/=\" Expression \";\"\n StatementAugmentedAssignRem = LValue \"%=\" Expression \";\"\n StatementCondition = if Expression \"{\" Statement* \"}\" ~else --simple\n | if Expression \"{\" Statement* \"}\" else \"{\" Statement* \"}\" --withElse\n | if Expression \"{\" Statement* \"}\" else StatementCondition --withElseIf\n StatementWhile = while \"(\" Expression \")\" \"{\" Statement* \"}\"\n StatementRepeat = repeat \"(\" Expression \")\" \"{\" Statement* \"}\"\n StatementUntil = do \"{\" Statement* \"}\" until \"(\" Expression \")\" \";\"\n\n // L-value\n LValue = id \".\" LValue --more\n | id --single\n\n // Expressions\n Expression = ExpressionOr\n ExpressionOr = ExpressionOr \"||\" ExpressionAnd --or\n | ExpressionAnd\n ExpressionAnd = ExpressionAnd \"&&\" ExpressionCompare --and\n | ExpressionCompare\n ExpressionCompare = ExpressionCompare \"!=\" ExpressionBinary --not\n | ExpressionCompare \"==\" ExpressionBinary --eq\n | ExpressionCompare \">\" ExpressionBinary --gt\n | ExpressionCompare \">=\" ExpressionBinary --gte\n | ExpressionCompare \"<\" ExpressionBinary --lt\n | ExpressionCompare \"<=\" ExpressionBinary --lte\n | ExpressionBinary\n ExpressionBinary = ExpressionBinary \">>\" ExpressionAdd --shr\n | ExpressionBinary \"<<\" ExpressionAdd --shl\n | ExpressionBinary \"&\" ExpressionAdd --bin_and\n | ExpressionBinary \"|\" ExpressionAdd --bin_or\n | ExpressionAdd\n ExpressionAdd = ExpressionAdd \"+\" ~\"+\" ExpressionMul --add\n | ExpressionAdd \"-\" ~\"-\" ExpressionMul --sub\n | ExpressionMul\n ExpressionMul = ExpressionMul \"*\" ExpressionUnary --mul\n | ExpressionMul \"/\" ExpressionUnary --div\n | ExpressionMul \"%\" ExpressionUnary --rem\n | ExpressionUnary\n ExpressionUnary = \"-\" ExpressionUnarySuffix --neg\n | \"+\" ExpressionUnarySuffix --add\n | \"!\" ExpressionUnarySuffix --not\n | ExpressionUnarySuffix\n ExpressionUnarySuffix = ExpressionValue \"!!\" --notNull\n | ExpressionValue\n ExpressionBracket = \"(\" Expression \")\"\n\n // Order is important\n ExpressionValue = ExpressionCall\n | ExpressionField\n | ExpressionStaticCall\n | ExpressionBracket\n | ExpressionNew\n | integerLiteral\n | boolLiteral\n | id\n | null\n | ExpressionInitOf\n | ExpressionString\n ExpressionString = stringLiteral\n ExpressionField = ExpressionValue \".\" id ~\"(\"\n ExpressionCall = ExpressionValue \".\" id \"(\" ListOf \")\"\n ExpressionNew = id \"{\" ListOf \"}\"\n NewParameter = id \":\" Expression\n ExpressionStaticCall = id \"(\" ListOf \")\"\n ExpressionInitOf = initOf id \"(\" ListOf \")\"\n\n // Type Literal\n typeLiteral = letterAsciiUC typeLiteralPart*\n typeLiteralPart = letterAscii | digit | \"_\"\n\n // Integer Literal\n // hexDigit defined in Ohm's built-in rules (otherwise: hexDigit = \"0\"..\"9\" | \"a\"..\"f\" | \"A\"..\"F\")\n // digit defined in Ohm's built-in rules (otherwise: digit = \"0\"..\"9\")\n integerLiteral = integerLiteralHex | integerLiteralBin | integerLiteralOct | integerLiteralDec // Order is important\n integerLiteralDec = nonZeroDigit digit* (\"_\" digit+)*\n | \"0\" digit* 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 nonZeroDigit = \"1\"..\"9\"\n\n // Letters\n letterAsciiLC = \"a\"..\"z\"\n letterAsciiUC = \"A\"..\"Z\"\n letterAscii = letterAsciiLC | letterAsciiUC\n letterComment = letterAsciiLC | letterAsciiUC | digit | \"_\"\n\n // ID Literal\n idStart = letterAscii | \"_\"\n idPart = letterAscii | digit | \"_\"\n id = ~reservedWord #idStart #(idPart*)\n\n // FunC id\n funcLetter = letterAscii | \"_\" | \"'\" | \"?\" | \"!\" | \"::\" | \"&\"\n funcId = funcLetter #(funcLetter | digit)*\n\n // Bool Literal\n boolLiteral = (\"true\" | \"false\") ~idPart\n\n // String literal\n 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,8790]},null,[],["alt",{"sourceInterval":[8708,8790]},["seq",{"sourceInterval":[8708,8741]},["app",{"sourceInterval":[8708,8720]},"nonZeroDigit",[]],["star",{"sourceInterval":[8721,8727]},["app",{"sourceInterval":[8721,8726]},"digit",[]]],["star",{"sourceInterval":[8728,8741]},["seq",{"sourceInterval":[8729,8739]},["terminal",{"sourceInterval":[8729,8732]},"_"],["plus",{"sourceInterval":[8733,8739]},["app",{"sourceInterval":[8733,8738]},"digit",[]]]]]],["seq",{"sourceInterval":[8766,8790]},["terminal",{"sourceInterval":[8766,8769]},"0"],["star",{"sourceInterval":[8770,8776]},["app",{"sourceInterval":[8770,8775]},"digit",[]]],["star",{"sourceInterval":[8777,8783]},["app",{"sourceInterval":[8777,8782]},"digit",[]]],["star",{"sourceInterval":[8784,8790]},["app",{"sourceInterval":[8784,8789]},"digit",[]]]]]],"integerLiteralHex":["define",{"sourceInterval":[8795,8902]},null,[],["alt",{"sourceInterval":[8815,8902]},["seq",{"sourceInterval":[8815,8846]},["terminal",{"sourceInterval":[8815,8819]},"0x"],["plus",{"sourceInterval":[8820,8829]},["app",{"sourceInterval":[8820,8828]},"hexDigit",[]]],["star",{"sourceInterval":[8830,8846]},["seq",{"sourceInterval":[8831,8844]},["terminal",{"sourceInterval":[8831,8834]},"_"],["plus",{"sourceInterval":[8835,8844]},["app",{"sourceInterval":[8835,8843]},"hexDigit",[]]]]]],["seq",{"sourceInterval":[8871,8902]},["terminal",{"sourceInterval":[8871,8875]},"0X"],["plus",{"sourceInterval":[8876,8885]},["app",{"sourceInterval":[8876,8884]},"hexDigit",[]]],["star",{"sourceInterval":[8886,8902]},["seq",{"sourceInterval":[8887,8900]},["terminal",{"sourceInterval":[8887,8890]},"_"],["plus",{"sourceInterval":[8891,8900]},["app",{"sourceInterval":[8891,8899]},"hexDigit",[]]]]]]]],"integerLiteralBin":["define",{"sourceInterval":[8907,9014]},null,[],["alt",{"sourceInterval":[8927,9014]},["seq",{"sourceInterval":[8927,8958]},["terminal",{"sourceInterval":[8927,8931]},"0b"],["plus",{"sourceInterval":[8932,8941]},["app",{"sourceInterval":[8932,8940]},"binDigit",[]]],["star",{"sourceInterval":[8942,8958]},["seq",{"sourceInterval":[8943,8956]},["terminal",{"sourceInterval":[8943,8946]},"_"],["plus",{"sourceInterval":[8947,8956]},["app",{"sourceInterval":[8947,8955]},"binDigit",[]]]]]],["seq",{"sourceInterval":[8983,9014]},["terminal",{"sourceInterval":[8983,8987]},"0B"],["plus",{"sourceInterval":[8988,8997]},["app",{"sourceInterval":[8988,8996]},"binDigit",[]]],["star",{"sourceInterval":[8998,9014]},["seq",{"sourceInterval":[8999,9012]},["terminal",{"sourceInterval":[8999,9002]},"_"],["plus",{"sourceInterval":[9003,9012]},["app",{"sourceInterval":[9003,9011]},"binDigit",[]]]]]]]],"integerLiteralOct":["define",{"sourceInterval":[9019,9126]},null,[],["alt",{"sourceInterval":[9039,9126]},["seq",{"sourceInterval":[9039,9070]},["terminal",{"sourceInterval":[9039,9043]},"0o"],["plus",{"sourceInterval":[9044,9053]},["app",{"sourceInterval":[9044,9052]},"octDigit",[]]],["star",{"sourceInterval":[9054,9070]},["seq",{"sourceInterval":[9055,9068]},["terminal",{"sourceInterval":[9055,9058]},"_"],["plus",{"sourceInterval":[9059,9068]},["app",{"sourceInterval":[9059,9067]},"octDigit",[]]]]]],["seq",{"sourceInterval":[9095,9126]},["terminal",{"sourceInterval":[9095,9099]},"0O"],["plus",{"sourceInterval":[9100,9109]},["app",{"sourceInterval":[9100,9108]},"octDigit",[]]],["star",{"sourceInterval":[9110,9126]},["seq",{"sourceInterval":[9111,9124]},["terminal",{"sourceInterval":[9111,9114]},"_"],["plus",{"sourceInterval":[9115,9124]},["app",{"sourceInterval":[9115,9123]},"octDigit",[]]]]]]]],"binDigit":["define",{"sourceInterval":[9131,9151]},null,[],["alt",{"sourceInterval":[9142,9151]},["terminal",{"sourceInterval":[9142,9145]},"0"],["terminal",{"sourceInterval":[9148,9151]},"1"]]],"octDigit":["define",{"sourceInterval":[9156,9175]},null,[],["range",{"sourceInterval":[9167,9175]},"0","7"]],"nonZeroDigit":["define",{"sourceInterval":[9180,9203]},null,[],["range",{"sourceInterval":[9195,9203]},"1","9"]],"letterAsciiLC":["define",{"sourceInterval":[9224,9248]},null,[],["range",{"sourceInterval":[9240,9248]},"a","z"]],"letterAsciiUC":["define",{"sourceInterval":[9253,9277]},null,[],["range",{"sourceInterval":[9269,9277]},"A","Z"]],"letterAscii":["define",{"sourceInterval":[9282,9325]},null,[],["alt",{"sourceInterval":[9296,9325]},["app",{"sourceInterval":[9296,9309]},"letterAsciiLC",[]],["app",{"sourceInterval":[9312,9325]},"letterAsciiUC",[]]]],"letterComment":["define",{"sourceInterval":[9330,9389]},null,[],["alt",{"sourceInterval":[9346,9389]},["app",{"sourceInterval":[9346,9359]},"letterAsciiLC",[]],["app",{"sourceInterval":[9362,9375]},"letterAsciiUC",[]],["app",{"sourceInterval":[9378,9383]},"digit",[]],["terminal",{"sourceInterval":[9386,9389]},"_"]]],"idStart":["define",{"sourceInterval":[9413,9440]},null,[],["alt",{"sourceInterval":[9423,9440]},["app",{"sourceInterval":[9423,9434]},"letterAscii",[]],["terminal",{"sourceInterval":[9437,9440]},"_"]]],"idPart":["define",{"sourceInterval":[9445,9479]},null,[],["alt",{"sourceInterval":[9454,9479]},["app",{"sourceInterval":[9454,9465]},"letterAscii",[]],["app",{"sourceInterval":[9468,9473]},"digit",[]],["terminal",{"sourceInterval":[9476,9479]},"_"]]],"id":["define",{"sourceInterval":[9484,9522]},null,[],["seq",{"sourceInterval":[9489,9522]},["not",{"sourceInterval":[9489,9502]},["app",{"sourceInterval":[9490,9502]},"reservedWord",[]]],["lex",{"sourceInterval":[9503,9511]},["app",{"sourceInterval":[9504,9511]},"idStart",[]]],["lex",{"sourceInterval":[9512,9522]},["star",{"sourceInterval":[9514,9521]},["app",{"sourceInterval":[9514,9520]},"idPart",[]]]]]],"funcLetter":["define",{"sourceInterval":[9543,9604]},null,[],["alt",{"sourceInterval":[9556,9604]},["app",{"sourceInterval":[9556,9567]},"letterAscii",[]],["terminal",{"sourceInterval":[9570,9573]},"_"],["terminal",{"sourceInterval":[9576,9579]},"'"],["terminal",{"sourceInterval":[9582,9585]},"?"],["terminal",{"sourceInterval":[9588,9591]},"!"],["terminal",{"sourceInterval":[9594,9598]},"::"],["terminal",{"sourceInterval":[9601,9604]},"&"]]],"funcId":["define",{"sourceInterval":[9609,9651]},null,[],["seq",{"sourceInterval":[9618,9651]},["app",{"sourceInterval":[9618,9628]},"funcLetter",[]],["star",{"sourceInterval":[9629,9651]},["lex",{"sourceInterval":[9629,9650]},["alt",{"sourceInterval":[9631,9649]},["app",{"sourceInterval":[9631,9641]},"funcLetter",[]],["app",{"sourceInterval":[9644,9649]},"digit",[]]]]]]],"boolLiteral":["define",{"sourceInterval":[9677,9717]},null,[],["seq",{"sourceInterval":[9691,9717]},["alt",{"sourceInterval":[9692,9708]},["terminal",{"sourceInterval":[9692,9698]},"true"],["terminal",{"sourceInterval":[9701,9708]},"false"]],["not",{"sourceInterval":[9710,9717]},["app",{"sourceInterval":[9711,9717]},"idPart",[]]]]],"stringLiteralCharacter":["define",{"sourceInterval":[9745,9805]},null,[],["seq",{"sourceInterval":[9770,9805]},["not",{"sourceInterval":[9770,9801]},["alt",{"sourceInterval":[9772,9800]},["terminal",{"sourceInterval":[9772,9776]},"\""],["terminal",{"sourceInterval":[9779,9783]},"\\"],["app",{"sourceInterval":[9786,9800]},"lineTerminator",[]]]],["app",{"sourceInterval":[9802,9805]},"any",[]]]],"stringLiteral":["define",{"sourceInterval":[9810,9859]},null,[],["seq",{"sourceInterval":[9826,9859]},["terminal",{"sourceInterval":[9826,9830]},"\""],["star",{"sourceInterval":[9831,9854]},["app",{"sourceInterval":[9831,9853]},"stringLiteralCharacter",[]]],["terminal",{"sourceInterval":[9855,9859]},"\""]]],"keyword":["define",{"sourceInterval":[9912,10425]},null,[],["alt",{"sourceInterval":[9922,10425]},["app",{"sourceInterval":[9922,9925]},"fun",[]],["app",{"sourceInterval":[9941,9944]},"let",[]],["app",{"sourceInterval":[9959,9965]},"return",[]],["app",{"sourceInterval":[9981,9987]},"extend",[]],["app",{"sourceInterval":[10003,10009]},"native",[]],["app",{"sourceInterval":[10025,10031]},"public",[]],["app",{"sourceInterval":[10047,10051]},"null",[]],["app",{"sourceInterval":[10067,10069]},"if",[]],["app",{"sourceInterval":[10085,10089]},"else",[]],["app",{"sourceInterval":[10105,10110]},"while",[]],["app",{"sourceInterval":[10126,10132]},"repeat",[]],["app",{"sourceInterval":[10148,10150]},"do",[]],["app",{"sourceInterval":[10166,10171]},"until",[]],["app",{"sourceInterval":[10187,10189]},"as",[]],["app",{"sourceInterval":[10206,10213]},"mutates",[]],["app",{"sourceInterval":[10228,10235]},"extends",[]],["app",{"sourceInterval":[10250,10256]},"import",[]],["app",{"sourceInterval":[10271,10275]},"with",[]],["app",{"sourceInterval":[10290,10295]},"trait",[]],["app",{"sourceInterval":[10310,10316]},"initOf",[]],["app",{"sourceInterval":[10331,10339]},"override",[]],["app",{"sourceInterval":[10354,10362]},"abstract",[]],["app",{"sourceInterval":[10377,10384]},"virtual",[]],["app",{"sourceInterval":[10399,10405]},"inline",[]],["app",{"sourceInterval":[10420,10425]},"const",[]]]],"contract":["define",{"sourceInterval":[10430,10459]},null,[],["seq",{"sourceInterval":[10441,10459]},["terminal",{"sourceInterval":[10441,10451]},"contract"],["not",{"sourceInterval":[10452,10459]},["app",{"sourceInterval":[10453,10459]},"idPart",[]]]]],"let":["define",{"sourceInterval":[10464,10483]},null,[],["seq",{"sourceInterval":[10470,10483]},["terminal",{"sourceInterval":[10470,10475]},"let"],["not",{"sourceInterval":[10476,10483]},["app",{"sourceInterval":[10477,10483]},"idPart",[]]]]],"fun":["define",{"sourceInterval":[10488,10507]},null,[],["seq",{"sourceInterval":[10494,10507]},["terminal",{"sourceInterval":[10494,10499]},"fun"],["not",{"sourceInterval":[10500,10507]},["app",{"sourceInterval":[10501,10507]},"idPart",[]]]]],"return":["define",{"sourceInterval":[10512,10537]},null,[],["seq",{"sourceInterval":[10521,10537]},["terminal",{"sourceInterval":[10521,10529]},"return"],["not",{"sourceInterval":[10530,10537]},["app",{"sourceInterval":[10531,10537]},"idPart",[]]]]],"extend":["define",{"sourceInterval":[10542,10567]},null,[],["seq",{"sourceInterval":[10551,10567]},["terminal",{"sourceInterval":[10551,10559]},"extend"],["not",{"sourceInterval":[10560,10567]},["app",{"sourceInterval":[10561,10567]},"idPart",[]]]]],"native":["define",{"sourceInterval":[10572,10597]},null,[],["seq",{"sourceInterval":[10581,10597]},["terminal",{"sourceInterval":[10581,10589]},"native"],["not",{"sourceInterval":[10590,10597]},["app",{"sourceInterval":[10591,10597]},"idPart",[]]]]],"public":["define",{"sourceInterval":[10602,10627]},null,[],["seq",{"sourceInterval":[10611,10627]},["terminal",{"sourceInterval":[10611,10619]},"public"],["not",{"sourceInterval":[10620,10627]},["app",{"sourceInterval":[10621,10627]},"idPart",[]]]]],"null":["define",{"sourceInterval":[10632,10653]},null,[],["seq",{"sourceInterval":[10639,10653]},["terminal",{"sourceInterval":[10639,10645]},"null"],["not",{"sourceInterval":[10646,10653]},["app",{"sourceInterval":[10647,10653]},"idPart",[]]]]],"if":["define",{"sourceInterval":[10658,10675]},null,[],["seq",{"sourceInterval":[10663,10675]},["terminal",{"sourceInterval":[10663,10667]},"if"],["not",{"sourceInterval":[10668,10675]},["app",{"sourceInterval":[10669,10675]},"idPart",[]]]]],"else":["define",{"sourceInterval":[10680,10701]},null,[],["seq",{"sourceInterval":[10687,10701]},["terminal",{"sourceInterval":[10687,10693]},"else"],["not",{"sourceInterval":[10694,10701]},["app",{"sourceInterval":[10695,10701]},"idPart",[]]]]],"while":["define",{"sourceInterval":[10706,10729]},null,[],["seq",{"sourceInterval":[10714,10729]},["terminal",{"sourceInterval":[10714,10721]},"while"],["not",{"sourceInterval":[10722,10729]},["app",{"sourceInterval":[10723,10729]},"idPart",[]]]]],"repeat":["define",{"sourceInterval":[10734,10759]},null,[],["seq",{"sourceInterval":[10743,10759]},["terminal",{"sourceInterval":[10743,10751]},"repeat"],["not",{"sourceInterval":[10752,10759]},["app",{"sourceInterval":[10753,10759]},"idPart",[]]]]],"do":["define",{"sourceInterval":[10764,10781]},null,[],["seq",{"sourceInterval":[10769,10781]},["terminal",{"sourceInterval":[10769,10773]},"do"],["not",{"sourceInterval":[10774,10781]},["app",{"sourceInterval":[10775,10781]},"idPart",[]]]]],"until":["define",{"sourceInterval":[10786,10809]},null,[],["seq",{"sourceInterval":[10794,10809]},["terminal",{"sourceInterval":[10794,10801]},"until"],["not",{"sourceInterval":[10802,10809]},["app",{"sourceInterval":[10803,10809]},"idPart",[]]]]],"as":["define",{"sourceInterval":[10814,10831]},null,[],["seq",{"sourceInterval":[10819,10831]},["terminal",{"sourceInterval":[10819,10823]},"as"],["not",{"sourceInterval":[10824,10831]},["app",{"sourceInterval":[10825,10831]},"idPart",[]]]]],"mutates":["define",{"sourceInterval":[10836,10863]},null,[],["seq",{"sourceInterval":[10846,10863]},["terminal",{"sourceInterval":[10846,10855]},"mutates"],["not",{"sourceInterval":[10856,10863]},["app",{"sourceInterval":[10857,10863]},"idPart",[]]]]],"extends":["define",{"sourceInterval":[10868,10895]},null,[],["seq",{"sourceInterval":[10878,10895]},["terminal",{"sourceInterval":[10878,10887]},"extends"],["not",{"sourceInterval":[10888,10895]},["app",{"sourceInterval":[10889,10895]},"idPart",[]]]]],"import":["define",{"sourceInterval":[10900,10925]},null,[],["seq",{"sourceInterval":[10909,10925]},["terminal",{"sourceInterval":[10909,10917]},"import"],["not",{"sourceInterval":[10918,10925]},["app",{"sourceInterval":[10919,10925]},"idPart",[]]]]],"with":["define",{"sourceInterval":[10930,10951]},null,[],["seq",{"sourceInterval":[10937,10951]},["terminal",{"sourceInterval":[10937,10943]},"with"],["not",{"sourceInterval":[10944,10951]},["app",{"sourceInterval":[10945,10951]},"idPart",[]]]]],"trait":["define",{"sourceInterval":[10956,10979]},null,[],["seq",{"sourceInterval":[10964,10979]},["terminal",{"sourceInterval":[10964,10971]},"trait"],["not",{"sourceInterval":[10972,10979]},["app",{"sourceInterval":[10973,10979]},"idPart",[]]]]],"initOf":["define",{"sourceInterval":[10984,11009]},null,[],["seq",{"sourceInterval":[10993,11009]},["terminal",{"sourceInterval":[10993,11001]},"initOf"],["not",{"sourceInterval":[11002,11009]},["app",{"sourceInterval":[11003,11009]},"idPart",[]]]]],"virtual":["define",{"sourceInterval":[11014,11041]},null,[],["seq",{"sourceInterval":[11024,11041]},["terminal",{"sourceInterval":[11024,11033]},"virtual"],["not",{"sourceInterval":[11034,11041]},["app",{"sourceInterval":[11035,11041]},"idPart",[]]]]],"override":["define",{"sourceInterval":[11046,11075]},null,[],["seq",{"sourceInterval":[11057,11075]},["terminal",{"sourceInterval":[11057,11067]},"override"],["not",{"sourceInterval":[11068,11075]},["app",{"sourceInterval":[11069,11075]},"idPart",[]]]]],"inline":["define",{"sourceInterval":[11080,11105]},null,[],["seq",{"sourceInterval":[11089,11105]},["terminal",{"sourceInterval":[11089,11097]},"inline"],["not",{"sourceInterval":[11098,11105]},["app",{"sourceInterval":[11099,11105]},"idPart",[]]]]],"const":["define",{"sourceInterval":[11110,11133]},null,[],["seq",{"sourceInterval":[11118,11133]},["terminal",{"sourceInterval":[11118,11125]},"const"],["not",{"sourceInterval":[11126,11133]},["app",{"sourceInterval":[11127,11133]},"idPart",[]]]]],"abstract":["define",{"sourceInterval":[11138,11167]},null,[],["seq",{"sourceInterval":[11149,11167]},["terminal",{"sourceInterval":[11149,11159]},"abstract"],["not",{"sourceInterval":[11160,11167]},["app",{"sourceInterval":[11161,11167]},"idPart",[]]]]],"nameAttribute":["define",{"sourceInterval":[11191,11214]},null,[],["terminal",{"sourceInterval":[11207,11214]},"@name"]],"reservedWord":["define",{"sourceInterval":[11236,11258]},null,[],["app",{"sourceInterval":[11251,11258]},"keyword",[]]],"space":["extend",{"sourceInterval":[11280,11313]},null,[],["alt",{"sourceInterval":[11289,11313]},["app",{"sourceInterval":[11289,11296]},"comment",[]],["app",{"sourceInterval":[11299,11313]},"lineTerminator",[]]]],"comment":["define",{"sourceInterval":[11318,11364]},null,[],["alt",{"sourceInterval":[11328,11364]},["app",{"sourceInterval":[11328,11344]},"multiLineComment",[]],["app",{"sourceInterval":[11347,11364]},"singleLineComment",[]]]],"lineTerminator":["define",{"sourceInterval":[11369,11419]},null,[],["alt",{"sourceInterval":[11386,11419]},["terminal",{"sourceInterval":[11386,11390]},"\n"],["terminal",{"sourceInterval":[11393,11397]},"\r"],["terminal",{"sourceInterval":[11400,11408]},"\u2028"],["terminal",{"sourceInterval":[11411,11419]},"\u2029"]]],"multiLineComment":["define",{"sourceInterval":[11424,11465]},null,[],["seq",{"sourceInterval":[11443,11465]},["terminal",{"sourceInterval":[11443,11447]},"/*"],["star",{"sourceInterval":[11448,11460]},["seq",{"sourceInterval":[11449,11458]},["not",{"sourceInterval":[11449,11454]},["terminal",{"sourceInterval":[11450,11454]},"*/"]],["app",{"sourceInterval":[11455,11458]},"any",[]]]],["terminal",{"sourceInterval":[11461,11465]},"*/"]]],"singleLineComment":["define",{"sourceInterval":[11470,11517]},null,[],["seq",{"sourceInterval":[11490,11517]},["terminal",{"sourceInterval":[11490,11494]},"//"],["star",{"sourceInterval":[11495,11517]},["seq",{"sourceInterval":[11496,11515]},["not",{"sourceInterval":[11496,11511]},["app",{"sourceInterval":[11497,11511]},"lineTerminator",[]]],["app",{"sourceInterval":[11512,11515]},"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 = nonZeroDigit (\"_\"? digit)* --nonZeroIntegerLiteralDec\n | \"0\" digit* --integerLiteralWithLeadingZero\n integerLiteralHex = (\"0x\" | \"0X\") hexDigit (\"_\"? hexDigit)*\n integerLiteralBin = (\"0b\" | \"0B\") binDigit (\"_\"? binDigit)*\n integerLiteralOct = (\"0o\" | \"0O\") octDigit (\"_\"? octDigit)*\n binDigit = \"0\" | \"1\"\n octDigit = \"0\"..\"7\"\n nonZeroDigit = \"1\"..\"9\"\n\n // Letters\n letterAsciiLC = \"a\"..\"z\"\n letterAsciiUC = \"A\"..\"Z\"\n letterAscii = letterAsciiLC | letterAsciiUC\n letterComment = letterAsciiLC | letterAsciiUC | digit | \"_\"\n\n // ID Literal\n idStart = letterAscii | \"_\"\n idPart = letterAscii | digit | \"_\"\n id = ~reservedWord #idStart #(idPart*)\n\n // FunC id\n funcLetter = letterAscii | \"_\" | \"'\" | \"?\" | \"!\" | \"::\" | \"&\"\n funcId = funcLetter #(funcLetter | digit)*\n\n // Bool Literal\n boolLiteral = (\"true\" | \"false\") ~idPart\n\n // String literal\n 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_nonZeroIntegerLiteralDec":["define",{"sourceInterval":[8708,8762]},null,[],["seq",{"sourceInterval":[8708,8734]},["app",{"sourceInterval":[8708,8720]},"nonZeroDigit",[]],["star",{"sourceInterval":[8721,8734]},["seq",{"sourceInterval":[8722,8732]},["opt",{"sourceInterval":[8722,8726]},["terminal",{"sourceInterval":[8722,8725]},"_"]],["app",{"sourceInterval":[8727,8732]},"digit",[]]]]]],"integerLiteralDec_integerLiteralWithLeadingZero":["define",{"sourceInterval":[8787,8846]},null,[],["seq",{"sourceInterval":[8787,8797]},["terminal",{"sourceInterval":[8787,8790]},"0"],["star",{"sourceInterval":[8791,8797]},["app",{"sourceInterval":[8791,8796]},"digit",[]]]]],"integerLiteralDec":["define",{"sourceInterval":[8688,8846]},null,[],["alt",{"sourceInterval":[8708,8846]},["app",{"sourceInterval":[8708,8734]},"integerLiteralDec_nonZeroIntegerLiteralDec",[]],["app",{"sourceInterval":[8787,8797]},"integerLiteralDec_integerLiteralWithLeadingZero",[]]]],"integerLiteralHex":["define",{"sourceInterval":[8851,8910]},null,[],["seq",{"sourceInterval":[8871,8910]},["alt",{"sourceInterval":[8872,8883]},["terminal",{"sourceInterval":[8872,8876]},"0x"],["terminal",{"sourceInterval":[8879,8883]},"0X"]],["app",{"sourceInterval":[8885,8893]},"hexDigit",[]],["star",{"sourceInterval":[8894,8910]},["seq",{"sourceInterval":[8895,8908]},["opt",{"sourceInterval":[8895,8899]},["terminal",{"sourceInterval":[8895,8898]},"_"]],["app",{"sourceInterval":[8900,8908]},"hexDigit",[]]]]]],"integerLiteralBin":["define",{"sourceInterval":[8915,8974]},null,[],["seq",{"sourceInterval":[8935,8974]},["alt",{"sourceInterval":[8936,8947]},["terminal",{"sourceInterval":[8936,8940]},"0b"],["terminal",{"sourceInterval":[8943,8947]},"0B"]],["app",{"sourceInterval":[8949,8957]},"binDigit",[]],["star",{"sourceInterval":[8958,8974]},["seq",{"sourceInterval":[8959,8972]},["opt",{"sourceInterval":[8959,8963]},["terminal",{"sourceInterval":[8959,8962]},"_"]],["app",{"sourceInterval":[8964,8972]},"binDigit",[]]]]]],"integerLiteralOct":["define",{"sourceInterval":[8979,9038]},null,[],["seq",{"sourceInterval":[8999,9038]},["alt",{"sourceInterval":[9000,9011]},["terminal",{"sourceInterval":[9000,9004]},"0o"],["terminal",{"sourceInterval":[9007,9011]},"0O"]],["app",{"sourceInterval":[9013,9021]},"octDigit",[]],["star",{"sourceInterval":[9022,9038]},["seq",{"sourceInterval":[9023,9036]},["opt",{"sourceInterval":[9023,9027]},["terminal",{"sourceInterval":[9023,9026]},"_"]],["app",{"sourceInterval":[9028,9036]},"octDigit",[]]]]]],"binDigit":["define",{"sourceInterval":[9043,9063]},null,[],["alt",{"sourceInterval":[9054,9063]},["terminal",{"sourceInterval":[9054,9057]},"0"],["terminal",{"sourceInterval":[9060,9063]},"1"]]],"octDigit":["define",{"sourceInterval":[9068,9087]},null,[],["range",{"sourceInterval":[9079,9087]},"0","7"]],"nonZeroDigit":["define",{"sourceInterval":[9092,9115]},null,[],["range",{"sourceInterval":[9107,9115]},"1","9"]],"letterAsciiLC":["define",{"sourceInterval":[9136,9160]},null,[],["range",{"sourceInterval":[9152,9160]},"a","z"]],"letterAsciiUC":["define",{"sourceInterval":[9165,9189]},null,[],["range",{"sourceInterval":[9181,9189]},"A","Z"]],"letterAscii":["define",{"sourceInterval":[9194,9237]},null,[],["alt",{"sourceInterval":[9208,9237]},["app",{"sourceInterval":[9208,9221]},"letterAsciiLC",[]],["app",{"sourceInterval":[9224,9237]},"letterAsciiUC",[]]]],"letterComment":["define",{"sourceInterval":[9242,9301]},null,[],["alt",{"sourceInterval":[9258,9301]},["app",{"sourceInterval":[9258,9271]},"letterAsciiLC",[]],["app",{"sourceInterval":[9274,9287]},"letterAsciiUC",[]],["app",{"sourceInterval":[9290,9295]},"digit",[]],["terminal",{"sourceInterval":[9298,9301]},"_"]]],"idStart":["define",{"sourceInterval":[9325,9352]},null,[],["alt",{"sourceInterval":[9335,9352]},["app",{"sourceInterval":[9335,9346]},"letterAscii",[]],["terminal",{"sourceInterval":[9349,9352]},"_"]]],"idPart":["define",{"sourceInterval":[9357,9391]},null,[],["alt",{"sourceInterval":[9366,9391]},["app",{"sourceInterval":[9366,9377]},"letterAscii",[]],["app",{"sourceInterval":[9380,9385]},"digit",[]],["terminal",{"sourceInterval":[9388,9391]},"_"]]],"id":["define",{"sourceInterval":[9396,9434]},null,[],["seq",{"sourceInterval":[9401,9434]},["not",{"sourceInterval":[9401,9414]},["app",{"sourceInterval":[9402,9414]},"reservedWord",[]]],["lex",{"sourceInterval":[9415,9423]},["app",{"sourceInterval":[9416,9423]},"idStart",[]]],["lex",{"sourceInterval":[9424,9434]},["star",{"sourceInterval":[9426,9433]},["app",{"sourceInterval":[9426,9432]},"idPart",[]]]]]],"funcLetter":["define",{"sourceInterval":[9455,9516]},null,[],["alt",{"sourceInterval":[9468,9516]},["app",{"sourceInterval":[9468,9479]},"letterAscii",[]],["terminal",{"sourceInterval":[9482,9485]},"_"],["terminal",{"sourceInterval":[9488,9491]},"'"],["terminal",{"sourceInterval":[9494,9497]},"?"],["terminal",{"sourceInterval":[9500,9503]},"!"],["terminal",{"sourceInterval":[9506,9510]},"::"],["terminal",{"sourceInterval":[9513,9516]},"&"]]],"funcId":["define",{"sourceInterval":[9521,9563]},null,[],["seq",{"sourceInterval":[9530,9563]},["app",{"sourceInterval":[9530,9540]},"funcLetter",[]],["star",{"sourceInterval":[9541,9563]},["lex",{"sourceInterval":[9541,9562]},["alt",{"sourceInterval":[9543,9561]},["app",{"sourceInterval":[9543,9553]},"funcLetter",[]],["app",{"sourceInterval":[9556,9561]},"digit",[]]]]]]],"boolLiteral":["define",{"sourceInterval":[9589,9629]},null,[],["seq",{"sourceInterval":[9603,9629]},["alt",{"sourceInterval":[9604,9620]},["terminal",{"sourceInterval":[9604,9610]},"true"],["terminal",{"sourceInterval":[9613,9620]},"false"]],["not",{"sourceInterval":[9622,9629]},["app",{"sourceInterval":[9623,9629]},"idPart",[]]]]],"stringLiteralCharacter":["define",{"sourceInterval":[9657,9717]},null,[],["seq",{"sourceInterval":[9682,9717]},["not",{"sourceInterval":[9682,9713]},["alt",{"sourceInterval":[9684,9712]},["terminal",{"sourceInterval":[9684,9688]},"\""],["terminal",{"sourceInterval":[9691,9695]},"\\"],["app",{"sourceInterval":[9698,9712]},"lineTerminator",[]]]],["app",{"sourceInterval":[9714,9717]},"any",[]]]],"stringLiteral":["define",{"sourceInterval":[9722,9771]},null,[],["seq",{"sourceInterval":[9738,9771]},["terminal",{"sourceInterval":[9738,9742]},"\""],["star",{"sourceInterval":[9743,9766]},["app",{"sourceInterval":[9743,9765]},"stringLiteralCharacter",[]]],["terminal",{"sourceInterval":[9767,9771]},"\""]]],"keyword":["define",{"sourceInterval":[9824,10337]},null,[],["alt",{"sourceInterval":[9834,10337]},["app",{"sourceInterval":[9834,9837]},"fun",[]],["app",{"sourceInterval":[9853,9856]},"let",[]],["app",{"sourceInterval":[9871,9877]},"return",[]],["app",{"sourceInterval":[9893,9899]},"extend",[]],["app",{"sourceInterval":[9915,9921]},"native",[]],["app",{"sourceInterval":[9937,9943]},"public",[]],["app",{"sourceInterval":[9959,9963]},"null",[]],["app",{"sourceInterval":[9979,9981]},"if",[]],["app",{"sourceInterval":[9997,10001]},"else",[]],["app",{"sourceInterval":[10017,10022]},"while",[]],["app",{"sourceInterval":[10038,10044]},"repeat",[]],["app",{"sourceInterval":[10060,10062]},"do",[]],["app",{"sourceInterval":[10078,10083]},"until",[]],["app",{"sourceInterval":[10099,10101]},"as",[]],["app",{"sourceInterval":[10118,10125]},"mutates",[]],["app",{"sourceInterval":[10140,10147]},"extends",[]],["app",{"sourceInterval":[10162,10168]},"import",[]],["app",{"sourceInterval":[10183,10187]},"with",[]],["app",{"sourceInterval":[10202,10207]},"trait",[]],["app",{"sourceInterval":[10222,10228]},"initOf",[]],["app",{"sourceInterval":[10243,10251]},"override",[]],["app",{"sourceInterval":[10266,10274]},"abstract",[]],["app",{"sourceInterval":[10289,10296]},"virtual",[]],["app",{"sourceInterval":[10311,10317]},"inline",[]],["app",{"sourceInterval":[10332,10337]},"const",[]]]],"contract":["define",{"sourceInterval":[10342,10371]},null,[],["seq",{"sourceInterval":[10353,10371]},["terminal",{"sourceInterval":[10353,10363]},"contract"],["not",{"sourceInterval":[10364,10371]},["app",{"sourceInterval":[10365,10371]},"idPart",[]]]]],"let":["define",{"sourceInterval":[10376,10395]},null,[],["seq",{"sourceInterval":[10382,10395]},["terminal",{"sourceInterval":[10382,10387]},"let"],["not",{"sourceInterval":[10388,10395]},["app",{"sourceInterval":[10389,10395]},"idPart",[]]]]],"fun":["define",{"sourceInterval":[10400,10419]},null,[],["seq",{"sourceInterval":[10406,10419]},["terminal",{"sourceInterval":[10406,10411]},"fun"],["not",{"sourceInterval":[10412,10419]},["app",{"sourceInterval":[10413,10419]},"idPart",[]]]]],"return":["define",{"sourceInterval":[10424,10449]},null,[],["seq",{"sourceInterval":[10433,10449]},["terminal",{"sourceInterval":[10433,10441]},"return"],["not",{"sourceInterval":[10442,10449]},["app",{"sourceInterval":[10443,10449]},"idPart",[]]]]],"extend":["define",{"sourceInterval":[10454,10479]},null,[],["seq",{"sourceInterval":[10463,10479]},["terminal",{"sourceInterval":[10463,10471]},"extend"],["not",{"sourceInterval":[10472,10479]},["app",{"sourceInterval":[10473,10479]},"idPart",[]]]]],"native":["define",{"sourceInterval":[10484,10509]},null,[],["seq",{"sourceInterval":[10493,10509]},["terminal",{"sourceInterval":[10493,10501]},"native"],["not",{"sourceInterval":[10502,10509]},["app",{"sourceInterval":[10503,10509]},"idPart",[]]]]],"public":["define",{"sourceInterval":[10514,10539]},null,[],["seq",{"sourceInterval":[10523,10539]},["terminal",{"sourceInterval":[10523,10531]},"public"],["not",{"sourceInterval":[10532,10539]},["app",{"sourceInterval":[10533,10539]},"idPart",[]]]]],"null":["define",{"sourceInterval":[10544,10565]},null,[],["seq",{"sourceInterval":[10551,10565]},["terminal",{"sourceInterval":[10551,10557]},"null"],["not",{"sourceInterval":[10558,10565]},["app",{"sourceInterval":[10559,10565]},"idPart",[]]]]],"if":["define",{"sourceInterval":[10570,10587]},null,[],["seq",{"sourceInterval":[10575,10587]},["terminal",{"sourceInterval":[10575,10579]},"if"],["not",{"sourceInterval":[10580,10587]},["app",{"sourceInterval":[10581,10587]},"idPart",[]]]]],"else":["define",{"sourceInterval":[10592,10613]},null,[],["seq",{"sourceInterval":[10599,10613]},["terminal",{"sourceInterval":[10599,10605]},"else"],["not",{"sourceInterval":[10606,10613]},["app",{"sourceInterval":[10607,10613]},"idPart",[]]]]],"while":["define",{"sourceInterval":[10618,10641]},null,[],["seq",{"sourceInterval":[10626,10641]},["terminal",{"sourceInterval":[10626,10633]},"while"],["not",{"sourceInterval":[10634,10641]},["app",{"sourceInterval":[10635,10641]},"idPart",[]]]]],"repeat":["define",{"sourceInterval":[10646,10671]},null,[],["seq",{"sourceInterval":[10655,10671]},["terminal",{"sourceInterval":[10655,10663]},"repeat"],["not",{"sourceInterval":[10664,10671]},["app",{"sourceInterval":[10665,10671]},"idPart",[]]]]],"do":["define",{"sourceInterval":[10676,10693]},null,[],["seq",{"sourceInterval":[10681,10693]},["terminal",{"sourceInterval":[10681,10685]},"do"],["not",{"sourceInterval":[10686,10693]},["app",{"sourceInterval":[10687,10693]},"idPart",[]]]]],"until":["define",{"sourceInterval":[10698,10721]},null,[],["seq",{"sourceInterval":[10706,10721]},["terminal",{"sourceInterval":[10706,10713]},"until"],["not",{"sourceInterval":[10714,10721]},["app",{"sourceInterval":[10715,10721]},"idPart",[]]]]],"as":["define",{"sourceInterval":[10726,10743]},null,[],["seq",{"sourceInterval":[10731,10743]},["terminal",{"sourceInterval":[10731,10735]},"as"],["not",{"sourceInterval":[10736,10743]},["app",{"sourceInterval":[10737,10743]},"idPart",[]]]]],"mutates":["define",{"sourceInterval":[10748,10775]},null,[],["seq",{"sourceInterval":[10758,10775]},["terminal",{"sourceInterval":[10758,10767]},"mutates"],["not",{"sourceInterval":[10768,10775]},["app",{"sourceInterval":[10769,10775]},"idPart",[]]]]],"extends":["define",{"sourceInterval":[10780,10807]},null,[],["seq",{"sourceInterval":[10790,10807]},["terminal",{"sourceInterval":[10790,10799]},"extends"],["not",{"sourceInterval":[10800,10807]},["app",{"sourceInterval":[10801,10807]},"idPart",[]]]]],"import":["define",{"sourceInterval":[10812,10837]},null,[],["seq",{"sourceInterval":[10821,10837]},["terminal",{"sourceInterval":[10821,10829]},"import"],["not",{"sourceInterval":[10830,10837]},["app",{"sourceInterval":[10831,10837]},"idPart",[]]]]],"with":["define",{"sourceInterval":[10842,10863]},null,[],["seq",{"sourceInterval":[10849,10863]},["terminal",{"sourceInterval":[10849,10855]},"with"],["not",{"sourceInterval":[10856,10863]},["app",{"sourceInterval":[10857,10863]},"idPart",[]]]]],"trait":["define",{"sourceInterval":[10868,10891]},null,[],["seq",{"sourceInterval":[10876,10891]},["terminal",{"sourceInterval":[10876,10883]},"trait"],["not",{"sourceInterval":[10884,10891]},["app",{"sourceInterval":[10885,10891]},"idPart",[]]]]],"initOf":["define",{"sourceInterval":[10896,10921]},null,[],["seq",{"sourceInterval":[10905,10921]},["terminal",{"sourceInterval":[10905,10913]},"initOf"],["not",{"sourceInterval":[10914,10921]},["app",{"sourceInterval":[10915,10921]},"idPart",[]]]]],"virtual":["define",{"sourceInterval":[10926,10953]},null,[],["seq",{"sourceInterval":[10936,10953]},["terminal",{"sourceInterval":[10936,10945]},"virtual"],["not",{"sourceInterval":[10946,10953]},["app",{"sourceInterval":[10947,10953]},"idPart",[]]]]],"override":["define",{"sourceInterval":[10958,10987]},null,[],["seq",{"sourceInterval":[10969,10987]},["terminal",{"sourceInterval":[10969,10979]},"override"],["not",{"sourceInterval":[10980,10987]},["app",{"sourceInterval":[10981,10987]},"idPart",[]]]]],"inline":["define",{"sourceInterval":[10992,11017]},null,[],["seq",{"sourceInterval":[11001,11017]},["terminal",{"sourceInterval":[11001,11009]},"inline"],["not",{"sourceInterval":[11010,11017]},["app",{"sourceInterval":[11011,11017]},"idPart",[]]]]],"const":["define",{"sourceInterval":[11022,11045]},null,[],["seq",{"sourceInterval":[11030,11045]},["terminal",{"sourceInterval":[11030,11037]},"const"],["not",{"sourceInterval":[11038,11045]},["app",{"sourceInterval":[11039,11045]},"idPart",[]]]]],"abstract":["define",{"sourceInterval":[11050,11079]},null,[],["seq",{"sourceInterval":[11061,11079]},["terminal",{"sourceInterval":[11061,11071]},"abstract"],["not",{"sourceInterval":[11072,11079]},["app",{"sourceInterval":[11073,11079]},"idPart",[]]]]],"nameAttribute":["define",{"sourceInterval":[11103,11126]},null,[],["terminal",{"sourceInterval":[11119,11126]},"@name"]],"reservedWord":["define",{"sourceInterval":[11148,11170]},null,[],["app",{"sourceInterval":[11163,11170]},"keyword",[]]],"space":["extend",{"sourceInterval":[11192,11225]},null,[],["alt",{"sourceInterval":[11201,11225]},["app",{"sourceInterval":[11201,11208]},"comment",[]],["app",{"sourceInterval":[11211,11225]},"lineTerminator",[]]]],"comment":["define",{"sourceInterval":[11230,11276]},null,[],["alt",{"sourceInterval":[11240,11276]},["app",{"sourceInterval":[11240,11256]},"multiLineComment",[]],["app",{"sourceInterval":[11259,11276]},"singleLineComment",[]]]],"lineTerminator":["define",{"sourceInterval":[11281,11331]},null,[],["alt",{"sourceInterval":[11298,11331]},["terminal",{"sourceInterval":[11298,11302]},"\n"],["terminal",{"sourceInterval":[11305,11309]},"\r"],["terminal",{"sourceInterval":[11312,11320]},"\u2028"],["terminal",{"sourceInterval":[11323,11331]},"\u2029"]]],"multiLineComment":["define",{"sourceInterval":[11336,11377]},null,[],["seq",{"sourceInterval":[11355,11377]},["terminal",{"sourceInterval":[11355,11359]},"/*"],["star",{"sourceInterval":[11360,11372]},["seq",{"sourceInterval":[11361,11370]},["not",{"sourceInterval":[11361,11366]},["terminal",{"sourceInterval":[11362,11366]},"*/"]],["app",{"sourceInterval":[11367,11370]},"any",[]]]],["terminal",{"sourceInterval":[11373,11377]},"*/"]]],"singleLineComment":["define",{"sourceInterval":[11382,11429]},null,[],["seq",{"sourceInterval":[11402,11429]},["terminal",{"sourceInterval":[11402,11406]},"//"],["star",{"sourceInterval":[11407,11429]},["seq",{"sourceInterval":[11408,11427]},["not",{"sourceInterval":[11408,11423]},["app",{"sourceInterval":[11409,11423]},"lineTerminator",[]]],["app",{"sourceInterval":[11424,11427]},"any",[]]]]]]}]);module.exports=result; \ No newline at end of file From 7c6a091fcd60ce5a259dc7f125a897680fe230da Mon Sep 17 00:00:00 2001 From: Anton Trunov Date: Wed, 14 Feb 2024 23:29:30 +0400 Subject: [PATCH 10/11] changelog.md --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 10266a359..600271c43 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added - Augmented assignment operators (`+=`, `-=`, `*=`, `/=` and `%=`): PR [#87](https://github.com/tact-lang/tact/pull/87) +- Binary and octal literals with underscores as numerical separators): PR [#99](https://github.com/tact-lang/tact/pull/99) + +### Changed +- Decimal and hexadecimal literals now allow underscores as numerical separators: PR [#99](https://github.com/tact-lang/tact/pull/99) ### Fixed - Relative imports from parent directories: PR [#125](https://github.com/tact-lang/tact/pull/125) From 3ba958630cae39adabb42757780d0022be71db6b Mon Sep 17 00:00:00 2001 From: Anton Trunov Date: Wed, 14 Feb 2024 23:30:31 +0400 Subject: [PATCH 11/11] fix changelog --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 600271c43..d4619a4a1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,7 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added - Augmented assignment operators (`+=`, `-=`, `*=`, `/=` and `%=`): PR [#87](https://github.com/tact-lang/tact/pull/87) -- Binary and octal literals with underscores as numerical separators): PR [#99](https://github.com/tact-lang/tact/pull/99) +- Binary and octal literals with underscores as numerical separators: PR [#99](https://github.com/tact-lang/tact/pull/99) ### Changed - Decimal and hexadecimal literals now allow underscores as numerical separators: PR [#99](https://github.com/tact-lang/tact/pull/99)