From 1c3d633d04b581652d585e2895bd85a41b10d7fa Mon Sep 17 00:00:00 2001 From: Vitor Py Braga <12871+vitorpy@users.noreply.github.com> Date: Wed, 20 Mar 2024 15:19:26 +0100 Subject: [PATCH 01/22] Restore the closed commit --- src/grammar/grammar.ohm | 3 ++- src/grammar/grammar.ohm-bundle.d.ts | 4 +++- src/grammar/grammar.ohm-bundle.js | 2 +- src/grammar/grammar.ts | 5 ++++- src/grammar/test/case-17.tact | 22 +++++++++++++++++++++- src/test/features/serialization-2.tact | 10 ++++++++-- 6 files changed, 39 insertions(+), 7 deletions(-) diff --git a/src/grammar/grammar.ohm b/src/grammar/grammar.ohm index 1daf08d45..7d63532ce 100644 --- a/src/grammar/grammar.ohm +++ b/src/grammar/grammar.ohm @@ -174,7 +174,8 @@ Tact { ExpressionString = stringLiteral ExpressionField = ExpressionValue "." id ~"(" ExpressionCall = ExpressionValue "." id "(" ListOf ")" - ExpressionNew = id "{" ListOf "}" + ExpressionNew = id "{" ListOf "}" --noTrailing + | id "{" ListOf "," "}" --withTrailing NewParameter = id ":" Expression ExpressionStaticCall = id "(" ListOf ")" ExpressionInitOf = initOf id "(" ListOf ")" diff --git a/src/grammar/grammar.ohm-bundle.d.ts b/src/grammar/grammar.ohm-bundle.d.ts index 9c26303a7..9c22ae7f7 100644 --- a/src/grammar/grammar.ohm-bundle.d.ts +++ b/src/grammar/grammar.ohm-bundle.d.ts @@ -136,7 +136,9 @@ export interface TactActionDict extends ActionDict { ExpressionString?: (this: NonterminalNode, arg0: NonterminalNode) => T; ExpressionField?: (this: NonterminalNode, arg0: NonterminalNode, arg1: TerminalNode, arg2: NonterminalNode) => T; ExpressionCall?: (this: NonterminalNode, arg0: NonterminalNode, arg1: TerminalNode, arg2: NonterminalNode, arg3: TerminalNode, arg4: NonterminalNode, arg5: TerminalNode) => T; - ExpressionNew?: (this: NonterminalNode, arg0: NonterminalNode, arg1: TerminalNode, arg2: NonterminalNode, arg3: TerminalNode) => T; + ExpressionNew_noTrailing?: (this: NonterminalNode, arg0: NonterminalNode, arg1: TerminalNode, arg2: NonterminalNode, arg3: TerminalNode) => T; + ExpressionNew_withTrailing?: (this: NonterminalNode, arg0: NonterminalNode, arg1: TerminalNode, arg2: NonterminalNode, arg3: TerminalNode, arg4: TerminalNode) => T; + ExpressionNew?: (this: NonterminalNode, arg0: NonterminalNode) => T; NewParameter?: (this: NonterminalNode, arg0: NonterminalNode, arg1: TerminalNode, arg2: NonterminalNode) => T; ExpressionStaticCall?: (this: NonterminalNode, arg0: NonterminalNode, arg1: TerminalNode, arg2: NonterminalNode, arg3: TerminalNode) => T; ExpressionInitOf?: (this: NonterminalNode, arg0: NonterminalNode, arg1: NonterminalNode, arg2: TerminalNode, arg3: NonterminalNode, arg4: TerminalNode) => T; diff --git a/src/grammar/grammar.ohm-bundle.js b/src/grammar/grammar.ohm-bundle.js index ef536397a..59c1d250a 100644 --- a/src/grammar/grammar.ohm-bundle.js +++ b/src/grammar/grammar.ohm-bundle.js @@ -1 +1 @@ -'use strict';const ohm=(require('ohm-js').default || require('ohm-js'));const result=ohm.makeRecipe(["grammar",{"source":"Tact {\n\n // Starting point of the program\n Program = ProgramItem*\n ProgramItem = Struct\n | Contract\n | Primitive\n | StaticFunction\n | NativeFunction\n | ProgramImport\n | Trait\n | Constant\n ProgramImport = import stringLiteral \";\"\n\n // Built-in declarations\n Primitive = \"primitive\" Type \";\"\n\n // Static function\n StaticFunction = Function\n NativeFunction = nameAttribute \"(\" funcId \")\" FunctionAttribute* native id \"(\" ListOf \")\" \";\" --withVoid\n | nameAttribute \"(\" funcId \")\" FunctionAttribute* native id \"(\" ListOf \")\" \":\" Type \";\" --withType\n \n // Field declarations\n Type = typeLiteral \"?\" --optional\n | typeLiteral --required\n | \"map\" \"<\" typeLiteral (as id)? \",\" typeLiteral (as id)? \">\" --map\n | \"bounced\" \"<\" typeLiteral \">\" --bounced\n Field = id \":\" Type \";\" --default\n | id \":\" Type \"=\" Expression \";\" --defaultWithInit\n | id \":\" Type as id \";\" --withSerialization\n | id \":\" Type as id \"=\" Expression \";\" --withSerializationAndInit\n \n // Constant\n ConstantAttribute = virtual --virtual\n | override --override\n | abstract --abstract\n Constant = ConstantAttribute* ~fun const id \":\" Type \"=\" Expression \";\" --withValue\n | ConstantAttribute* ~fun const id \":\" Type \";\" --withEmpty\n\n // Struct\n Struct = \"struct\" typeLiteral \"{\" StructBody* \"}\" --originary\n | \"message\" typeLiteral \"{\" StructBody* \"}\" --message\n | \"message\" \"(\" integerLiteral \")\" typeLiteral \"{\" StructBody* \"}\" --messageWithId\n StructBody = Field\n\n // Contract\n Contract = ContractAttribute* contract id \"{\" ContractBody* \"}\" --simple\n | ContractAttribute* contract id with ListOf \"{\" ContractBody* \"}\" --withTraits\n ContractInit = \"init\" \"(\" ListOf \")\" \"{\" Statement* \"}\"\n ContractBody = Field\n | ContractInit\n | ReceiveFunction\n | Function\n | Constant\n \n // Trait\n Trait = ContractAttribute* trait id \"{\" TraitBody* \"}\" --originary\n | ContractAttribute* trait id with ListOf \"{\" TraitBody* \"}\" --withTraits\n TraitBody = Field\n | ReceiveFunction\n | Function\n | Constant\n\n // Contract attributes\n ContractAttribute = \"@interface\" \"(\" stringLiteral \")\" --interface\n\n // Function\n FunctionAttribute = \"get\" --getter\n | mutates --mutates\n | extends --extends\n | virtual --virtual\n | override --override\n | inline --inline\n | abstract --abstract\n Function = FunctionAttribute* fun id \"(\" ListOf \")\" \"{\" Statement* \"}\" --withVoid\n | FunctionAttribute* fun id \"(\" ListOf \")\" \":\" Type \"{\" Statement* \"}\" --withType\n | FunctionAttribute* fun id \"(\" ListOf \")\" \";\" --abstractVoid\n | FunctionAttribute* fun id \"(\" ListOf \")\" \":\" Type \";\" --abstractType\n FunctionArg = id \":\" Type\n \n ReceiveFunction = \"receive\" \"(\" FunctionArg \")\" \"{\" Statement* \"}\" --simple\n | \"receive\" \"(\" \")\" \"{\" Statement* \"}\" --empty\n | \"receive\" \"(\" stringLiteral \")\" \"{\" Statement* \"}\" --comment\n | \"bounced\" \"(\" FunctionArg \")\" \"{\" Statement* \"}\" --bounced\n | \"external\" \"(\" FunctionArg \")\" \"{\" Statement* \"}\" --externalSimple\n | \"external\" \"(\" stringLiteral \")\" \"{\" Statement* \"}\" --externalComment\n | \"external\" \"(\" \")\" \"{\" Statement* \"}\" --externalEmpty\n\n // Statements\n Statement = StatementLet\n | StatementBlock\n | StatementReturn\n | StatementExpression\n | StatementAssign\n | StatementAugmentedAssign\n | StatementCondition\n | StatementWhile\n | StatementRepeat\n | StatementUntil\n StatementBlock = \"{\" Statement* \"}\"\n StatementLet = let id \":\" Type \"=\" Expression \";\"\n StatementReturn = return Expression \";\" --withExpression\n | return \";\" --withoutExpression \n StatementExpression = Expression \";\"\n StatementAssign = LValue \"=\" Expression \";\"\n StatementAugmentedAssign = StatementAugmentedAssignAdd\n | StatementAugmentedAssignSub\n | StatementAugmentedAssignMul\n | StatementAugmentedAssignDiv\n | StatementAugmentedAssignRem\n StatementAugmentedAssignAdd = LValue \"+=\" Expression \";\"\n StatementAugmentedAssignSub = LValue \"-=\" Expression \";\"\n StatementAugmentedAssignMul = LValue \"*=\" Expression \";\"\n StatementAugmentedAssignDiv = LValue \"/=\" Expression \";\"\n StatementAugmentedAssignRem = LValue \"%=\" Expression \";\"\n StatementCondition = if Expression \"{\" Statement* \"}\" ~else --simple\n | if Expression \"{\" Statement* \"}\" else \"{\" Statement* \"}\" --withElse\n | if Expression \"{\" Statement* \"}\" else StatementCondition --withElseIf\n StatementWhile = while \"(\" Expression \")\" \"{\" Statement* \"}\"\n StatementRepeat = repeat \"(\" Expression \")\" \"{\" Statement* \"}\"\n StatementUntil = do \"{\" Statement* \"}\" until \"(\" Expression \")\" \";\"\n\n // L-value\n LValue = id \".\" LValue --more\n | id --single\n\n // Expressions\n Expression = ExpressionConditional\n ExpressionConditional = ExpressionOr \"?\" ExpressionOr \":\" ExpressionConditional --ternary\n | ExpressionOr\n ExpressionOr = ExpressionOr \"||\" ExpressionAnd --or\n | ExpressionAnd\n ExpressionAnd = ExpressionAnd \"&&\" ExpressionCompare --and\n | ExpressionCompare\n ExpressionCompare = ExpressionCompare \"!=\" ExpressionBinary --not\n | ExpressionCompare \"==\" ExpressionBinary --eq\n | ExpressionCompare \">\" ExpressionBinary --gt\n | ExpressionCompare \">=\" ExpressionBinary --gte\n | ExpressionCompare \"<\" ExpressionBinary --lt\n | ExpressionCompare \"<=\" ExpressionBinary --lte\n | ExpressionBinary\n ExpressionBinary = ExpressionBinary \">>\" ExpressionAdd --shr\n | ExpressionBinary \"<<\" ExpressionAdd --shl\n | ExpressionBinary \"&\" ExpressionAdd --bin_and\n | ExpressionBinary \"|\" ExpressionAdd --bin_or\n | ExpressionAdd\n ExpressionAdd = ExpressionAdd \"+\" ~\"+\" ExpressionMul --add\n | ExpressionAdd \"-\" ~\"-\" ExpressionMul --sub\n | ExpressionMul\n ExpressionMul = ExpressionMul \"*\" ExpressionUnary --mul\n | ExpressionMul \"/\" ExpressionUnary --div\n | ExpressionMul \"%\" ExpressionUnary --rem\n | ExpressionUnary\n ExpressionUnary = \"-\" ExpressionUnarySuffix --neg\n | \"+\" ExpressionUnarySuffix --add\n | \"!\" ExpressionUnarySuffix --not\n | ExpressionUnarySuffix\n ExpressionUnarySuffix = ExpressionValue \"!!\" --notNull\n | ExpressionValue\n ExpressionBracket = \"(\" Expression \")\"\n\n // Order is important\n ExpressionValue = ExpressionCall\n | ExpressionField\n | ExpressionStaticCall\n | ExpressionBracket\n | ExpressionNew\n | integerLiteral\n | boolLiteral\n | id\n | null\n | ExpressionInitOf\n | ExpressionString\n ExpressionString = stringLiteral\n ExpressionField = ExpressionValue \".\" id ~\"(\"\n ExpressionCall = ExpressionValue \".\" id \"(\" ListOf \")\"\n ExpressionNew = id \"{\" ListOf \"}\"\n NewParameter = id \":\" Expression\n ExpressionStaticCall = id \"(\" ListOf \")\"\n ExpressionInitOf = initOf id \"(\" ListOf \")\"\n\n // Type Literal\n typeLiteral = letterAsciiUC typeLiteralPart*\n typeLiteralPart = letterAscii | digit | \"_\"\n\n // Integer Literal\n // hexDigit defined in Ohm's built-in rules (otherwise: hexDigit = \"0\"..\"9\" | \"a\"..\"f\" | \"A\"..\"F\")\n // digit defined in Ohm's built-in rules (otherwise: digit = \"0\"..\"9\")\n integerLiteral = integerLiteralHex | integerLiteralBin | integerLiteralOct | integerLiteralDec // Order is important\n integerLiteralDec = nonZeroDigit (\"_\"? digit)* --nonZeroIntegerLiteralDec\n | \"0\" digit* --integerLiteralWithLeadingZero\n integerLiteralHex = (\"0x\" | \"0X\") hexDigit (\"_\"? hexDigit)*\n integerLiteralBin = (\"0b\" | \"0B\") binDigit (\"_\"? binDigit)*\n integerLiteralOct = (\"0o\" | \"0O\") octDigit (\"_\"? octDigit)*\n binDigit = \"0\" | \"1\"\n octDigit = \"0\"..\"7\"\n nonZeroDigit = \"1\"..\"9\"\n\n // Letters\n letterAsciiLC = \"a\"..\"z\"\n letterAsciiUC = \"A\"..\"Z\"\n letterAscii = letterAsciiLC | letterAsciiUC\n letterComment = letterAsciiLC | letterAsciiUC | digit | \"_\"\n\n // ID Literal\n idStart = letterAscii | \"_\"\n idPart = letterAscii | digit | \"_\"\n id = ~reservedWord #idStart #(idPart*)\n\n // FunC id\n funcLetter = letterAscii | \"_\" | \"'\" | \"?\" | \"!\" | \"::\" | \"&\"\n funcId = funcLetter #(funcLetter | digit)*\n\n // Bool Literal\n boolLiteral = (\"true\" | \"false\") ~idPart\n\n // String literal\n 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,5773]},null,[],["app",{"sourceInterval":[5752,5773]},"ExpressionConditional",[]]],"ExpressionConditional_ternary":["define",{"sourceInterval":[5802,5867]},null,[],["seq",{"sourceInterval":[5802,5857]},["app",{"sourceInterval":[5802,5814]},"ExpressionOr",[]],["terminal",{"sourceInterval":[5815,5818]},"?"],["app",{"sourceInterval":[5819,5831]},"ExpressionOr",[]],["terminal",{"sourceInterval":[5832,5835]},":"],["app",{"sourceInterval":[5836,5857]},"ExpressionConditional",[]]]],"ExpressionConditional":["define",{"sourceInterval":[5778,5908]},null,[],["alt",{"sourceInterval":[5802,5908]},["app",{"sourceInterval":[5802,5857]},"ExpressionConditional_ternary",[]],["app",{"sourceInterval":[5896,5908]},"ExpressionOr",[]]]],"ExpressionOr_or":["define",{"sourceInterval":[5928,5964]},null,[],["seq",{"sourceInterval":[5928,5959]},["app",{"sourceInterval":[5928,5940]},"ExpressionOr",[]],["terminal",{"sourceInterval":[5941,5945]},"||"],["app",{"sourceInterval":[5946,5959]},"ExpressionAnd",[]]]],"ExpressionOr":["define",{"sourceInterval":[5913,5997]},null,[],["alt",{"sourceInterval":[5928,5997]},["app",{"sourceInterval":[5928,5959]},"ExpressionOr_or",[]],["app",{"sourceInterval":[5984,5997]},"ExpressionAnd",[]]]],"ExpressionAnd_and":["define",{"sourceInterval":[6018,6060]},null,[],["seq",{"sourceInterval":[6018,6054]},["app",{"sourceInterval":[6018,6031]},"ExpressionAnd",[]],["terminal",{"sourceInterval":[6032,6036]},"&&"],["app",{"sourceInterval":[6037,6054]},"ExpressionCompare",[]]]],"ExpressionAnd":["define",{"sourceInterval":[6002,6098]},null,[],["alt",{"sourceInterval":[6018,6098]},["app",{"sourceInterval":[6018,6054]},"ExpressionAnd_and",[]],["app",{"sourceInterval":[6081,6098]},"ExpressionCompare",[]]]],"ExpressionCompare_not":["define",{"sourceInterval":[6123,6168]},null,[],["seq",{"sourceInterval":[6123,6162]},["app",{"sourceInterval":[6123,6140]},"ExpressionCompare",[]],["terminal",{"sourceInterval":[6141,6145]},"!="],["app",{"sourceInterval":[6146,6162]},"ExpressionBinary",[]]]],"ExpressionCompare_eq":["define",{"sourceInterval":[6193,6237]},null,[],["seq",{"sourceInterval":[6193,6232]},["app",{"sourceInterval":[6193,6210]},"ExpressionCompare",[]],["terminal",{"sourceInterval":[6211,6215]},"=="],["app",{"sourceInterval":[6216,6232]},"ExpressionBinary",[]]]],"ExpressionCompare_gt":["define",{"sourceInterval":[6262,6305]},null,[],["seq",{"sourceInterval":[6262,6300]},["app",{"sourceInterval":[6262,6279]},"ExpressionCompare",[]],["terminal",{"sourceInterval":[6280,6283]},">"],["app",{"sourceInterval":[6284,6300]},"ExpressionBinary",[]]]],"ExpressionCompare_gte":["define",{"sourceInterval":[6330,6375]},null,[],["seq",{"sourceInterval":[6330,6369]},["app",{"sourceInterval":[6330,6347]},"ExpressionCompare",[]],["terminal",{"sourceInterval":[6348,6352]},">="],["app",{"sourceInterval":[6353,6369]},"ExpressionBinary",[]]]],"ExpressionCompare_lt":["define",{"sourceInterval":[6400,6443]},null,[],["seq",{"sourceInterval":[6400,6438]},["app",{"sourceInterval":[6400,6417]},"ExpressionCompare",[]],["terminal",{"sourceInterval":[6418,6421]},"<"],["app",{"sourceInterval":[6422,6438]},"ExpressionBinary",[]]]],"ExpressionCompare_lte":["define",{"sourceInterval":[6468,6513]},null,[],["seq",{"sourceInterval":[6468,6507]},["app",{"sourceInterval":[6468,6485]},"ExpressionCompare",[]],["terminal",{"sourceInterval":[6486,6490]},"<="],["app",{"sourceInterval":[6491,6507]},"ExpressionBinary",[]]]],"ExpressionCompare":["define",{"sourceInterval":[6103,6554]},null,[],["alt",{"sourceInterval":[6123,6554]},["app",{"sourceInterval":[6123,6162]},"ExpressionCompare_not",[]],["app",{"sourceInterval":[6193,6232]},"ExpressionCompare_eq",[]],["app",{"sourceInterval":[6262,6300]},"ExpressionCompare_gt",[]],["app",{"sourceInterval":[6330,6369]},"ExpressionCompare_gte",[]],["app",{"sourceInterval":[6400,6438]},"ExpressionCompare_lt",[]],["app",{"sourceInterval":[6468,6507]},"ExpressionCompare_lte",[]],["app",{"sourceInterval":[6538,6554]},"ExpressionBinary",[]]]],"ExpressionBinary_shr":["define",{"sourceInterval":[6578,6619]},null,[],["seq",{"sourceInterval":[6578,6613]},["app",{"sourceInterval":[6578,6594]},"ExpressionBinary",[]],["terminal",{"sourceInterval":[6595,6599]},">>"],["app",{"sourceInterval":[6600,6613]},"ExpressionAdd",[]]]],"ExpressionBinary_shl":["define",{"sourceInterval":[6642,6683]},null,[],["seq",{"sourceInterval":[6642,6677]},["app",{"sourceInterval":[6642,6658]},"ExpressionBinary",[]],["terminal",{"sourceInterval":[6659,6663]},"<<"],["app",{"sourceInterval":[6664,6677]},"ExpressionAdd",[]]]],"ExpressionBinary_bin_and":["define",{"sourceInterval":[6706,6750]},null,[],["seq",{"sourceInterval":[6706,6740]},["app",{"sourceInterval":[6706,6722]},"ExpressionBinary",[]],["terminal",{"sourceInterval":[6723,6726]},"&"],["app",{"sourceInterval":[6727,6740]},"ExpressionAdd",[]]]],"ExpressionBinary_bin_or":["define",{"sourceInterval":[6773,6816]},null,[],["seq",{"sourceInterval":[6773,6807]},["app",{"sourceInterval":[6773,6789]},"ExpressionBinary",[]],["terminal",{"sourceInterval":[6790,6793]},"|"],["app",{"sourceInterval":[6794,6807]},"ExpressionAdd",[]]]],"ExpressionBinary":["define",{"sourceInterval":[6559,6852]},null,[],["alt",{"sourceInterval":[6578,6852]},["app",{"sourceInterval":[6578,6613]},"ExpressionBinary_shr",[]],["app",{"sourceInterval":[6642,6677]},"ExpressionBinary_shl",[]],["app",{"sourceInterval":[6706,6740]},"ExpressionBinary_bin_and",[]],["app",{"sourceInterval":[6773,6807]},"ExpressionBinary_bin_or",[]],["app",{"sourceInterval":[6839,6852]},"ExpressionAdd",[]]]],"ExpressionAdd_add":["define",{"sourceInterval":[6873,6915]},null,[],["seq",{"sourceInterval":[6873,6909]},["app",{"sourceInterval":[6873,6886]},"ExpressionAdd",[]],["terminal",{"sourceInterval":[6887,6890]},"+"],["not",{"sourceInterval":[6891,6895]},["terminal",{"sourceInterval":[6892,6895]},"+"]],["app",{"sourceInterval":[6896,6909]},"ExpressionMul",[]]]],"ExpressionAdd_sub":["define",{"sourceInterval":[6936,6978]},null,[],["seq",{"sourceInterval":[6936,6972]},["app",{"sourceInterval":[6936,6949]},"ExpressionAdd",[]],["terminal",{"sourceInterval":[6950,6953]},"-"],["not",{"sourceInterval":[6954,6958]},["terminal",{"sourceInterval":[6955,6958]},"-"]],["app",{"sourceInterval":[6959,6972]},"ExpressionMul",[]]]],"ExpressionAdd":["define",{"sourceInterval":[6857,7012]},null,[],["alt",{"sourceInterval":[6873,7012]},["app",{"sourceInterval":[6873,6909]},"ExpressionAdd_add",[]],["app",{"sourceInterval":[6936,6972]},"ExpressionAdd_sub",[]],["app",{"sourceInterval":[6999,7012]},"ExpressionMul",[]]]],"ExpressionMul_mul":["define",{"sourceInterval":[7033,7072]},null,[],["seq",{"sourceInterval":[7033,7066]},["app",{"sourceInterval":[7033,7046]},"ExpressionMul",[]],["terminal",{"sourceInterval":[7047,7050]},"*"],["app",{"sourceInterval":[7051,7066]},"ExpressionUnary",[]]]],"ExpressionMul_div":["define",{"sourceInterval":[7093,7132]},null,[],["seq",{"sourceInterval":[7093,7126]},["app",{"sourceInterval":[7093,7106]},"ExpressionMul",[]],["terminal",{"sourceInterval":[7107,7110]},"/"],["app",{"sourceInterval":[7111,7126]},"ExpressionUnary",[]]]],"ExpressionMul_rem":["define",{"sourceInterval":[7153,7192]},null,[],["seq",{"sourceInterval":[7153,7186]},["app",{"sourceInterval":[7153,7166]},"ExpressionMul",[]],["terminal",{"sourceInterval":[7167,7170]},"%"],["app",{"sourceInterval":[7171,7186]},"ExpressionUnary",[]]]],"ExpressionMul":["define",{"sourceInterval":[7017,7228]},null,[],["alt",{"sourceInterval":[7033,7228]},["app",{"sourceInterval":[7033,7066]},"ExpressionMul_mul",[]],["app",{"sourceInterval":[7093,7126]},"ExpressionMul_div",[]],["app",{"sourceInterval":[7153,7186]},"ExpressionMul_rem",[]],["app",{"sourceInterval":[7213,7228]},"ExpressionUnary",[]]]],"ExpressionUnary_neg":["define",{"sourceInterval":[7251,7282]},null,[],["seq",{"sourceInterval":[7251,7276]},["terminal",{"sourceInterval":[7251,7254]},"-"],["app",{"sourceInterval":[7255,7276]},"ExpressionUnarySuffix",[]]]],"ExpressionUnary_add":["define",{"sourceInterval":[7305,7336]},null,[],["seq",{"sourceInterval":[7305,7330]},["terminal",{"sourceInterval":[7305,7308]},"+"],["app",{"sourceInterval":[7309,7330]},"ExpressionUnarySuffix",[]]]],"ExpressionUnary_not":["define",{"sourceInterval":[7359,7390]},null,[],["seq",{"sourceInterval":[7359,7384]},["terminal",{"sourceInterval":[7359,7362]},"!"],["app",{"sourceInterval":[7363,7384]},"ExpressionUnarySuffix",[]]]],"ExpressionUnary":["define",{"sourceInterval":[7233,7434]},null,[],["alt",{"sourceInterval":[7251,7434]},["app",{"sourceInterval":[7251,7276]},"ExpressionUnary_neg",[]],["app",{"sourceInterval":[7305,7330]},"ExpressionUnary_add",[]],["app",{"sourceInterval":[7359,7384]},"ExpressionUnary_not",[]],["app",{"sourceInterval":[7413,7434]},"ExpressionUnarySuffix",[]]]],"ExpressionUnarySuffix_notNull":["define",{"sourceInterval":[7463,7493]},null,[],["seq",{"sourceInterval":[7463,7483]},["app",{"sourceInterval":[7463,7478]},"ExpressionValue",[]],["terminal",{"sourceInterval":[7479,7483]},"!!"]]],"ExpressionUnarySuffix":["define",{"sourceInterval":[7439,7537]},null,[],["alt",{"sourceInterval":[7463,7537]},["app",{"sourceInterval":[7463,7483]},"ExpressionUnarySuffix_notNull",[]],["app",{"sourceInterval":[7522,7537]},"ExpressionValue",[]]]],"ExpressionBracket":["define",{"sourceInterval":[7542,7580]},null,[],["seq",{"sourceInterval":[7562,7580]},["terminal",{"sourceInterval":[7562,7565]},"("],["app",{"sourceInterval":[7566,7576]},"Expression",[]],["terminal",{"sourceInterval":[7577,7580]},")"]]],"ExpressionValue":["define",{"sourceInterval":[7612,8002]},null,[],["alt",{"sourceInterval":[7630,8002]},["app",{"sourceInterval":[7630,7644]},"ExpressionCall",[]],["app",{"sourceInterval":[7667,7682]},"ExpressionField",[]],["app",{"sourceInterval":[7705,7725]},"ExpressionStaticCall",[]],["app",{"sourceInterval":[7748,7765]},"ExpressionBracket",[]],["app",{"sourceInterval":[7788,7801]},"ExpressionNew",[]],["app",{"sourceInterval":[7824,7838]},"integerLiteral",[]],["app",{"sourceInterval":[7861,7872]},"boolLiteral",[]],["app",{"sourceInterval":[7895,7897]},"id",[]],["app",{"sourceInterval":[7920,7924]},"null",[]],["app",{"sourceInterval":[7947,7963]},"ExpressionInitOf",[]],["app",{"sourceInterval":[7986,8002]},"ExpressionString",[]]]],"ExpressionString":["define",{"sourceInterval":[8007,8039]},null,[],["app",{"sourceInterval":[8026,8039]},"stringLiteral",[]]],"ExpressionField":["define",{"sourceInterval":[8044,8089]},null,[],["seq",{"sourceInterval":[8062,8089]},["app",{"sourceInterval":[8062,8077]},"ExpressionValue",[]],["terminal",{"sourceInterval":[8078,8081]},"."],["app",{"sourceInterval":[8082,8084]},"id",[]],["not",{"sourceInterval":[8085,8089]},["terminal",{"sourceInterval":[8086,8089]},"("]]]],"ExpressionCall":["define",{"sourceInterval":[8094,8165]},null,[],["seq",{"sourceInterval":[8111,8165]},["app",{"sourceInterval":[8111,8126]},"ExpressionValue",[]],["terminal",{"sourceInterval":[8127,8130]},"."],["app",{"sourceInterval":[8131,8133]},"id",[]],["terminal",{"sourceInterval":[8134,8137]},"("],["app",{"sourceInterval":[8138,8161]},"ListOf",[["app",{"sourceInterval":[8145,8155]},"Expression",[]],["terminal",{"sourceInterval":[8157,8160]},","]]],["terminal",{"sourceInterval":[8162,8165]},")"]]],"ExpressionNew":["define",{"sourceInterval":[8170,8222]},null,[],["seq",{"sourceInterval":[8186,8222]},["app",{"sourceInterval":[8186,8188]},"id",[]],["terminal",{"sourceInterval":[8189,8192]},"{"],["app",{"sourceInterval":[8193,8218]},"ListOf",[["app",{"sourceInterval":[8200,8212]},"NewParameter",[]],["terminal",{"sourceInterval":[8214,8217]},","]]],["terminal",{"sourceInterval":[8219,8222]},"}"]]],"NewParameter":["define",{"sourceInterval":[8227,8259]},null,[],["seq",{"sourceInterval":[8242,8259]},["app",{"sourceInterval":[8242,8244]},"id",[]],["terminal",{"sourceInterval":[8245,8248]},":"],["app",{"sourceInterval":[8249,8259]},"Expression",[]]]],"ExpressionStaticCall":["define",{"sourceInterval":[8264,8321]},null,[],["seq",{"sourceInterval":[8287,8321]},["app",{"sourceInterval":[8287,8289]},"id",[]],["terminal",{"sourceInterval":[8290,8293]},"("],["app",{"sourceInterval":[8294,8317]},"ListOf",[["app",{"sourceInterval":[8301,8311]},"Expression",[]],["terminal",{"sourceInterval":[8313,8316]},","]]],["terminal",{"sourceInterval":[8318,8321]},")"]]],"ExpressionInitOf":["define",{"sourceInterval":[8326,8386]},null,[],["seq",{"sourceInterval":[8345,8386]},["app",{"sourceInterval":[8345,8351]},"initOf",[]],["app",{"sourceInterval":[8352,8354]},"id",[]],["terminal",{"sourceInterval":[8355,8358]},"("],["app",{"sourceInterval":[8359,8382]},"ListOf",[["app",{"sourceInterval":[8366,8376]},"Expression",[]],["terminal",{"sourceInterval":[8378,8381]},","]]],["terminal",{"sourceInterval":[8383,8386]},")"]]],"typeLiteral":["define",{"sourceInterval":[8412,8456]},null,[],["seq",{"sourceInterval":[8426,8456]},["app",{"sourceInterval":[8426,8439]},"letterAsciiUC",[]],["star",{"sourceInterval":[8440,8456]},["app",{"sourceInterval":[8440,8455]},"typeLiteralPart",[]]]]],"typeLiteralPart":["define",{"sourceInterval":[8461,8504]},null,[],["alt",{"sourceInterval":[8479,8504]},["app",{"sourceInterval":[8479,8490]},"letterAscii",[]],["app",{"sourceInterval":[8493,8498]},"digit",[]],["terminal",{"sourceInterval":[8501,8504]},"_"]]],"integerLiteral":["define",{"sourceInterval":[8711,8805]},null,[],["alt",{"sourceInterval":[8728,8805]},["app",{"sourceInterval":[8728,8745]},"integerLiteralHex",[]],["app",{"sourceInterval":[8748,8765]},"integerLiteralBin",[]],["app",{"sourceInterval":[8768,8785]},"integerLiteralOct",[]],["app",{"sourceInterval":[8788,8805]},"integerLiteralDec",[]]]],"integerLiteralDec_nonZeroIntegerLiteralDec":["define",{"sourceInterval":[8852,8906]},null,[],["seq",{"sourceInterval":[8852,8878]},["app",{"sourceInterval":[8852,8864]},"nonZeroDigit",[]],["star",{"sourceInterval":[8865,8878]},["seq",{"sourceInterval":[8866,8876]},["opt",{"sourceInterval":[8866,8870]},["terminal",{"sourceInterval":[8866,8869]},"_"]],["app",{"sourceInterval":[8871,8876]},"digit",[]]]]]],"integerLiteralDec_integerLiteralWithLeadingZero":["define",{"sourceInterval":[8931,8990]},null,[],["seq",{"sourceInterval":[8931,8941]},["terminal",{"sourceInterval":[8931,8934]},"0"],["star",{"sourceInterval":[8935,8941]},["app",{"sourceInterval":[8935,8940]},"digit",[]]]]],"integerLiteralDec":["define",{"sourceInterval":[8832,8990]},null,[],["alt",{"sourceInterval":[8852,8990]},["app",{"sourceInterval":[8852,8878]},"integerLiteralDec_nonZeroIntegerLiteralDec",[]],["app",{"sourceInterval":[8931,8941]},"integerLiteralDec_integerLiteralWithLeadingZero",[]]]],"integerLiteralHex":["define",{"sourceInterval":[8995,9054]},null,[],["seq",{"sourceInterval":[9015,9054]},["alt",{"sourceInterval":[9016,9027]},["terminal",{"sourceInterval":[9016,9020]},"0x"],["terminal",{"sourceInterval":[9023,9027]},"0X"]],["app",{"sourceInterval":[9029,9037]},"hexDigit",[]],["star",{"sourceInterval":[9038,9054]},["seq",{"sourceInterval":[9039,9052]},["opt",{"sourceInterval":[9039,9043]},["terminal",{"sourceInterval":[9039,9042]},"_"]],["app",{"sourceInterval":[9044,9052]},"hexDigit",[]]]]]],"integerLiteralBin":["define",{"sourceInterval":[9059,9118]},null,[],["seq",{"sourceInterval":[9079,9118]},["alt",{"sourceInterval":[9080,9091]},["terminal",{"sourceInterval":[9080,9084]},"0b"],["terminal",{"sourceInterval":[9087,9091]},"0B"]],["app",{"sourceInterval":[9093,9101]},"binDigit",[]],["star",{"sourceInterval":[9102,9118]},["seq",{"sourceInterval":[9103,9116]},["opt",{"sourceInterval":[9103,9107]},["terminal",{"sourceInterval":[9103,9106]},"_"]],["app",{"sourceInterval":[9108,9116]},"binDigit",[]]]]]],"integerLiteralOct":["define",{"sourceInterval":[9123,9182]},null,[],["seq",{"sourceInterval":[9143,9182]},["alt",{"sourceInterval":[9144,9155]},["terminal",{"sourceInterval":[9144,9148]},"0o"],["terminal",{"sourceInterval":[9151,9155]},"0O"]],["app",{"sourceInterval":[9157,9165]},"octDigit",[]],["star",{"sourceInterval":[9166,9182]},["seq",{"sourceInterval":[9167,9180]},["opt",{"sourceInterval":[9167,9171]},["terminal",{"sourceInterval":[9167,9170]},"_"]],["app",{"sourceInterval":[9172,9180]},"octDigit",[]]]]]],"binDigit":["define",{"sourceInterval":[9187,9207]},null,[],["alt",{"sourceInterval":[9198,9207]},["terminal",{"sourceInterval":[9198,9201]},"0"],["terminal",{"sourceInterval":[9204,9207]},"1"]]],"octDigit":["define",{"sourceInterval":[9212,9231]},null,[],["range",{"sourceInterval":[9223,9231]},"0","7"]],"nonZeroDigit":["define",{"sourceInterval":[9236,9259]},null,[],["range",{"sourceInterval":[9251,9259]},"1","9"]],"letterAsciiLC":["define",{"sourceInterval":[9280,9304]},null,[],["range",{"sourceInterval":[9296,9304]},"a","z"]],"letterAsciiUC":["define",{"sourceInterval":[9309,9333]},null,[],["range",{"sourceInterval":[9325,9333]},"A","Z"]],"letterAscii":["define",{"sourceInterval":[9338,9381]},null,[],["alt",{"sourceInterval":[9352,9381]},["app",{"sourceInterval":[9352,9365]},"letterAsciiLC",[]],["app",{"sourceInterval":[9368,9381]},"letterAsciiUC",[]]]],"letterComment":["define",{"sourceInterval":[9386,9445]},null,[],["alt",{"sourceInterval":[9402,9445]},["app",{"sourceInterval":[9402,9415]},"letterAsciiLC",[]],["app",{"sourceInterval":[9418,9431]},"letterAsciiUC",[]],["app",{"sourceInterval":[9434,9439]},"digit",[]],["terminal",{"sourceInterval":[9442,9445]},"_"]]],"idStart":["define",{"sourceInterval":[9469,9496]},null,[],["alt",{"sourceInterval":[9479,9496]},["app",{"sourceInterval":[9479,9490]},"letterAscii",[]],["terminal",{"sourceInterval":[9493,9496]},"_"]]],"idPart":["define",{"sourceInterval":[9501,9535]},null,[],["alt",{"sourceInterval":[9510,9535]},["app",{"sourceInterval":[9510,9521]},"letterAscii",[]],["app",{"sourceInterval":[9524,9529]},"digit",[]],["terminal",{"sourceInterval":[9532,9535]},"_"]]],"id":["define",{"sourceInterval":[9540,9578]},null,[],["seq",{"sourceInterval":[9545,9578]},["not",{"sourceInterval":[9545,9558]},["app",{"sourceInterval":[9546,9558]},"reservedWord",[]]],["lex",{"sourceInterval":[9559,9567]},["app",{"sourceInterval":[9560,9567]},"idStart",[]]],["lex",{"sourceInterval":[9568,9578]},["star",{"sourceInterval":[9570,9577]},["app",{"sourceInterval":[9570,9576]},"idPart",[]]]]]],"funcLetter":["define",{"sourceInterval":[9599,9660]},null,[],["alt",{"sourceInterval":[9612,9660]},["app",{"sourceInterval":[9612,9623]},"letterAscii",[]],["terminal",{"sourceInterval":[9626,9629]},"_"],["terminal",{"sourceInterval":[9632,9635]},"'"],["terminal",{"sourceInterval":[9638,9641]},"?"],["terminal",{"sourceInterval":[9644,9647]},"!"],["terminal",{"sourceInterval":[9650,9654]},"::"],["terminal",{"sourceInterval":[9657,9660]},"&"]]],"funcId":["define",{"sourceInterval":[9665,9707]},null,[],["seq",{"sourceInterval":[9674,9707]},["app",{"sourceInterval":[9674,9684]},"funcLetter",[]],["star",{"sourceInterval":[9685,9707]},["lex",{"sourceInterval":[9685,9706]},["alt",{"sourceInterval":[9687,9705]},["app",{"sourceInterval":[9687,9697]},"funcLetter",[]],["app",{"sourceInterval":[9700,9705]},"digit",[]]]]]]],"boolLiteral":["define",{"sourceInterval":[9733,9773]},null,[],["seq",{"sourceInterval":[9747,9773]},["alt",{"sourceInterval":[9748,9764]},["terminal",{"sourceInterval":[9748,9754]},"true"],["terminal",{"sourceInterval":[9757,9764]},"false"]],["not",{"sourceInterval":[9766,9773]},["app",{"sourceInterval":[9767,9773]},"idPart",[]]]]],"stringLiteralCharacter":["define",{"sourceInterval":[9801,9861]},null,[],["seq",{"sourceInterval":[9826,9861]},["not",{"sourceInterval":[9826,9857]},["alt",{"sourceInterval":[9828,9856]},["terminal",{"sourceInterval":[9828,9832]},"\""],["terminal",{"sourceInterval":[9835,9839]},"\\"],["app",{"sourceInterval":[9842,9856]},"lineTerminator",[]]]],["app",{"sourceInterval":[9858,9861]},"any",[]]]],"stringLiteral":["define",{"sourceInterval":[9866,9915]},null,[],["seq",{"sourceInterval":[9882,9915]},["terminal",{"sourceInterval":[9882,9886]},"\""],["star",{"sourceInterval":[9887,9910]},["app",{"sourceInterval":[9887,9909]},"stringLiteralCharacter",[]]],["terminal",{"sourceInterval":[9911,9915]},"\""]]],"keyword":["define",{"sourceInterval":[9968,10481]},null,[],["alt",{"sourceInterval":[9978,10481]},["app",{"sourceInterval":[9978,9981]},"fun",[]],["app",{"sourceInterval":[9997,10000]},"let",[]],["app",{"sourceInterval":[10015,10021]},"return",[]],["app",{"sourceInterval":[10037,10043]},"extend",[]],["app",{"sourceInterval":[10059,10065]},"native",[]],["app",{"sourceInterval":[10081,10087]},"public",[]],["app",{"sourceInterval":[10103,10107]},"null",[]],["app",{"sourceInterval":[10123,10125]},"if",[]],["app",{"sourceInterval":[10141,10145]},"else",[]],["app",{"sourceInterval":[10161,10166]},"while",[]],["app",{"sourceInterval":[10182,10188]},"repeat",[]],["app",{"sourceInterval":[10204,10206]},"do",[]],["app",{"sourceInterval":[10222,10227]},"until",[]],["app",{"sourceInterval":[10243,10245]},"as",[]],["app",{"sourceInterval":[10262,10269]},"mutates",[]],["app",{"sourceInterval":[10284,10291]},"extends",[]],["app",{"sourceInterval":[10306,10312]},"import",[]],["app",{"sourceInterval":[10327,10331]},"with",[]],["app",{"sourceInterval":[10346,10351]},"trait",[]],["app",{"sourceInterval":[10366,10372]},"initOf",[]],["app",{"sourceInterval":[10387,10395]},"override",[]],["app",{"sourceInterval":[10410,10418]},"abstract",[]],["app",{"sourceInterval":[10433,10440]},"virtual",[]],["app",{"sourceInterval":[10455,10461]},"inline",[]],["app",{"sourceInterval":[10476,10481]},"const",[]]]],"contract":["define",{"sourceInterval":[10486,10515]},null,[],["seq",{"sourceInterval":[10497,10515]},["terminal",{"sourceInterval":[10497,10507]},"contract"],["not",{"sourceInterval":[10508,10515]},["app",{"sourceInterval":[10509,10515]},"idPart",[]]]]],"let":["define",{"sourceInterval":[10520,10539]},null,[],["seq",{"sourceInterval":[10526,10539]},["terminal",{"sourceInterval":[10526,10531]},"let"],["not",{"sourceInterval":[10532,10539]},["app",{"sourceInterval":[10533,10539]},"idPart",[]]]]],"fun":["define",{"sourceInterval":[10544,10563]},null,[],["seq",{"sourceInterval":[10550,10563]},["terminal",{"sourceInterval":[10550,10555]},"fun"],["not",{"sourceInterval":[10556,10563]},["app",{"sourceInterval":[10557,10563]},"idPart",[]]]]],"return":["define",{"sourceInterval":[10568,10593]},null,[],["seq",{"sourceInterval":[10577,10593]},["terminal",{"sourceInterval":[10577,10585]},"return"],["not",{"sourceInterval":[10586,10593]},["app",{"sourceInterval":[10587,10593]},"idPart",[]]]]],"extend":["define",{"sourceInterval":[10598,10623]},null,[],["seq",{"sourceInterval":[10607,10623]},["terminal",{"sourceInterval":[10607,10615]},"extend"],["not",{"sourceInterval":[10616,10623]},["app",{"sourceInterval":[10617,10623]},"idPart",[]]]]],"native":["define",{"sourceInterval":[10628,10653]},null,[],["seq",{"sourceInterval":[10637,10653]},["terminal",{"sourceInterval":[10637,10645]},"native"],["not",{"sourceInterval":[10646,10653]},["app",{"sourceInterval":[10647,10653]},"idPart",[]]]]],"public":["define",{"sourceInterval":[10658,10683]},null,[],["seq",{"sourceInterval":[10667,10683]},["terminal",{"sourceInterval":[10667,10675]},"public"],["not",{"sourceInterval":[10676,10683]},["app",{"sourceInterval":[10677,10683]},"idPart",[]]]]],"null":["define",{"sourceInterval":[10688,10709]},null,[],["seq",{"sourceInterval":[10695,10709]},["terminal",{"sourceInterval":[10695,10701]},"null"],["not",{"sourceInterval":[10702,10709]},["app",{"sourceInterval":[10703,10709]},"idPart",[]]]]],"if":["define",{"sourceInterval":[10714,10731]},null,[],["seq",{"sourceInterval":[10719,10731]},["terminal",{"sourceInterval":[10719,10723]},"if"],["not",{"sourceInterval":[10724,10731]},["app",{"sourceInterval":[10725,10731]},"idPart",[]]]]],"else":["define",{"sourceInterval":[10736,10757]},null,[],["seq",{"sourceInterval":[10743,10757]},["terminal",{"sourceInterval":[10743,10749]},"else"],["not",{"sourceInterval":[10750,10757]},["app",{"sourceInterval":[10751,10757]},"idPart",[]]]]],"while":["define",{"sourceInterval":[10762,10785]},null,[],["seq",{"sourceInterval":[10770,10785]},["terminal",{"sourceInterval":[10770,10777]},"while"],["not",{"sourceInterval":[10778,10785]},["app",{"sourceInterval":[10779,10785]},"idPart",[]]]]],"repeat":["define",{"sourceInterval":[10790,10815]},null,[],["seq",{"sourceInterval":[10799,10815]},["terminal",{"sourceInterval":[10799,10807]},"repeat"],["not",{"sourceInterval":[10808,10815]},["app",{"sourceInterval":[10809,10815]},"idPart",[]]]]],"do":["define",{"sourceInterval":[10820,10837]},null,[],["seq",{"sourceInterval":[10825,10837]},["terminal",{"sourceInterval":[10825,10829]},"do"],["not",{"sourceInterval":[10830,10837]},["app",{"sourceInterval":[10831,10837]},"idPart",[]]]]],"until":["define",{"sourceInterval":[10842,10865]},null,[],["seq",{"sourceInterval":[10850,10865]},["terminal",{"sourceInterval":[10850,10857]},"until"],["not",{"sourceInterval":[10858,10865]},["app",{"sourceInterval":[10859,10865]},"idPart",[]]]]],"as":["define",{"sourceInterval":[10870,10887]},null,[],["seq",{"sourceInterval":[10875,10887]},["terminal",{"sourceInterval":[10875,10879]},"as"],["not",{"sourceInterval":[10880,10887]},["app",{"sourceInterval":[10881,10887]},"idPart",[]]]]],"mutates":["define",{"sourceInterval":[10892,10919]},null,[],["seq",{"sourceInterval":[10902,10919]},["terminal",{"sourceInterval":[10902,10911]},"mutates"],["not",{"sourceInterval":[10912,10919]},["app",{"sourceInterval":[10913,10919]},"idPart",[]]]]],"extends":["define",{"sourceInterval":[10924,10951]},null,[],["seq",{"sourceInterval":[10934,10951]},["terminal",{"sourceInterval":[10934,10943]},"extends"],["not",{"sourceInterval":[10944,10951]},["app",{"sourceInterval":[10945,10951]},"idPart",[]]]]],"import":["define",{"sourceInterval":[10956,10981]},null,[],["seq",{"sourceInterval":[10965,10981]},["terminal",{"sourceInterval":[10965,10973]},"import"],["not",{"sourceInterval":[10974,10981]},["app",{"sourceInterval":[10975,10981]},"idPart",[]]]]],"with":["define",{"sourceInterval":[10986,11007]},null,[],["seq",{"sourceInterval":[10993,11007]},["terminal",{"sourceInterval":[10993,10999]},"with"],["not",{"sourceInterval":[11000,11007]},["app",{"sourceInterval":[11001,11007]},"idPart",[]]]]],"trait":["define",{"sourceInterval":[11012,11035]},null,[],["seq",{"sourceInterval":[11020,11035]},["terminal",{"sourceInterval":[11020,11027]},"trait"],["not",{"sourceInterval":[11028,11035]},["app",{"sourceInterval":[11029,11035]},"idPart",[]]]]],"initOf":["define",{"sourceInterval":[11040,11065]},null,[],["seq",{"sourceInterval":[11049,11065]},["terminal",{"sourceInterval":[11049,11057]},"initOf"],["not",{"sourceInterval":[11058,11065]},["app",{"sourceInterval":[11059,11065]},"idPart",[]]]]],"virtual":["define",{"sourceInterval":[11070,11097]},null,[],["seq",{"sourceInterval":[11080,11097]},["terminal",{"sourceInterval":[11080,11089]},"virtual"],["not",{"sourceInterval":[11090,11097]},["app",{"sourceInterval":[11091,11097]},"idPart",[]]]]],"override":["define",{"sourceInterval":[11102,11131]},null,[],["seq",{"sourceInterval":[11113,11131]},["terminal",{"sourceInterval":[11113,11123]},"override"],["not",{"sourceInterval":[11124,11131]},["app",{"sourceInterval":[11125,11131]},"idPart",[]]]]],"inline":["define",{"sourceInterval":[11136,11161]},null,[],["seq",{"sourceInterval":[11145,11161]},["terminal",{"sourceInterval":[11145,11153]},"inline"],["not",{"sourceInterval":[11154,11161]},["app",{"sourceInterval":[11155,11161]},"idPart",[]]]]],"const":["define",{"sourceInterval":[11166,11189]},null,[],["seq",{"sourceInterval":[11174,11189]},["terminal",{"sourceInterval":[11174,11181]},"const"],["not",{"sourceInterval":[11182,11189]},["app",{"sourceInterval":[11183,11189]},"idPart",[]]]]],"abstract":["define",{"sourceInterval":[11194,11223]},null,[],["seq",{"sourceInterval":[11205,11223]},["terminal",{"sourceInterval":[11205,11215]},"abstract"],["not",{"sourceInterval":[11216,11223]},["app",{"sourceInterval":[11217,11223]},"idPart",[]]]]],"nameAttribute":["define",{"sourceInterval":[11247,11270]},null,[],["terminal",{"sourceInterval":[11263,11270]},"@name"]],"reservedWord":["define",{"sourceInterval":[11292,11314]},null,[],["app",{"sourceInterval":[11307,11314]},"keyword",[]]],"space":["extend",{"sourceInterval":[11336,11369]},null,[],["alt",{"sourceInterval":[11345,11369]},["app",{"sourceInterval":[11345,11352]},"comment",[]],["app",{"sourceInterval":[11355,11369]},"lineTerminator",[]]]],"comment":["define",{"sourceInterval":[11374,11420]},null,[],["alt",{"sourceInterval":[11384,11420]},["app",{"sourceInterval":[11384,11400]},"multiLineComment",[]],["app",{"sourceInterval":[11403,11420]},"singleLineComment",[]]]],"lineTerminator":["define",{"sourceInterval":[11425,11475]},null,[],["alt",{"sourceInterval":[11442,11475]},["terminal",{"sourceInterval":[11442,11446]},"\n"],["terminal",{"sourceInterval":[11449,11453]},"\r"],["terminal",{"sourceInterval":[11456,11464]},"\u2028"],["terminal",{"sourceInterval":[11467,11475]},"\u2029"]]],"multiLineComment":["define",{"sourceInterval":[11480,11521]},null,[],["seq",{"sourceInterval":[11499,11521]},["terminal",{"sourceInterval":[11499,11503]},"/*"],["star",{"sourceInterval":[11504,11516]},["seq",{"sourceInterval":[11505,11514]},["not",{"sourceInterval":[11505,11510]},["terminal",{"sourceInterval":[11506,11510]},"*/"]],["app",{"sourceInterval":[11511,11514]},"any",[]]]],["terminal",{"sourceInterval":[11517,11521]},"*/"]]],"singleLineComment":["define",{"sourceInterval":[11526,11573]},null,[],["seq",{"sourceInterval":[11546,11573]},["terminal",{"sourceInterval":[11546,11550]},"//"],["star",{"sourceInterval":[11551,11573]},["seq",{"sourceInterval":[11552,11571]},["not",{"sourceInterval":[11552,11567]},["app",{"sourceInterval":[11553,11567]},"lineTerminator",[]]],["app",{"sourceInterval":[11568,11571]},"any",[]]]]]]}]);module.exports=result; \ No newline at end of file +'use strict';const ohm=(require('ohm-js').default || require('ohm-js'));const result=ohm.makeRecipe(["grammar",{"source":"Tact {\n\n // Starting point of the program\n Program = ProgramItem*\n ProgramItem = Struct\n | Contract\n | Primitive\n | StaticFunction\n | NativeFunction\n | ProgramImport\n | Trait\n | Constant\n ProgramImport = import stringLiteral \";\"\n\n // Built-in declarations\n Primitive = \"primitive\" Type \";\"\n\n // Static function\n StaticFunction = Function\n NativeFunction = nameAttribute \"(\" funcId \")\" FunctionAttribute* native id \"(\" ListOf \")\" \";\" --withVoid\n | nameAttribute \"(\" funcId \")\" FunctionAttribute* native id \"(\" ListOf \")\" \":\" Type \";\" --withType\n \n // Field declarations\n Type = typeLiteral \"?\" --optional\n | typeLiteral --required\n | \"map\" \"<\" typeLiteral (as id)? \",\" typeLiteral (as id)? \">\" --map\n | \"bounced\" \"<\" typeLiteral \">\" --bounced\n Field = id \":\" Type \";\" --default\n | id \":\" Type \"=\" Expression \";\" --defaultWithInit\n | id \":\" Type as id \";\" --withSerialization\n | id \":\" Type as id \"=\" Expression \";\" --withSerializationAndInit\n \n // Constant\n ConstantAttribute = virtual --virtual\n | override --override\n | abstract --abstract\n Constant = ConstantAttribute* ~fun const id \":\" Type \"=\" Expression \";\" --withValue\n | ConstantAttribute* ~fun const id \":\" Type \";\" --withEmpty\n\n // Struct\n Struct = \"struct\" typeLiteral \"{\" StructBody* \"}\" --originary\n | \"message\" typeLiteral \"{\" StructBody* \"}\" --message\n | \"message\" \"(\" integerLiteral \")\" typeLiteral \"{\" StructBody* \"}\" --messageWithId\n StructBody = Field\n\n // Contract\n Contract = ContractAttribute* contract id \"{\" ContractBody* \"}\" --simple\n | ContractAttribute* contract id with ListOf \"{\" ContractBody* \"}\" --withTraits\n ContractInit = \"init\" \"(\" ListOf \")\" \"{\" Statement* \"}\"\n ContractBody = Field\n | ContractInit\n | ReceiveFunction\n | Function\n | Constant\n \n // Trait\n Trait = ContractAttribute* trait id \"{\" TraitBody* \"}\" --originary\n | ContractAttribute* trait id with ListOf \"{\" TraitBody* \"}\" --withTraits\n TraitBody = Field\n | ReceiveFunction\n | Function\n | Constant\n\n // Contract attributes\n ContractAttribute = \"@interface\" \"(\" stringLiteral \")\" --interface\n\n // Function\n FunctionAttribute = \"get\" --getter\n | mutates --mutates\n | extends --extends\n | virtual --virtual\n | override --override\n | inline --inline\n | abstract --abstract\n Function = FunctionAttribute* fun id \"(\" ListOf \")\" \"{\" Statement* \"}\" --withVoid\n | FunctionAttribute* fun id \"(\" ListOf \")\" \":\" Type \"{\" Statement* \"}\" --withType\n | FunctionAttribute* fun id \"(\" ListOf \")\" \";\" --abstractVoid\n | FunctionAttribute* fun id \"(\" ListOf \")\" \":\" Type \";\" --abstractType\n FunctionArg = id \":\" Type\n \n ReceiveFunction = \"receive\" \"(\" FunctionArg \")\" \"{\" Statement* \"}\" --simple\n | \"receive\" \"(\" \")\" \"{\" Statement* \"}\" --empty\n | \"receive\" \"(\" stringLiteral \")\" \"{\" Statement* \"}\" --comment\n | \"bounced\" \"(\" FunctionArg \")\" \"{\" Statement* \"}\" --bounced\n | \"external\" \"(\" FunctionArg \")\" \"{\" Statement* \"}\" --externalSimple\n | \"external\" \"(\" stringLiteral \")\" \"{\" Statement* \"}\" --externalComment\n | \"external\" \"(\" \")\" \"{\" Statement* \"}\" --externalEmpty\n\n // Statements\n Statement = StatementLet\n | StatementBlock\n | StatementReturn\n | StatementExpression\n | StatementAssign\n | StatementAugmentedAssign\n | StatementCondition\n | StatementWhile\n | StatementRepeat\n | StatementUntil\n StatementBlock = \"{\" Statement* \"}\"\n StatementLet = let id \":\" Type \"=\" Expression \";\"\n StatementReturn = return Expression \";\" --withExpression\n | return \";\" --withoutExpression \n StatementExpression = Expression \";\"\n StatementAssign = LValue \"=\" Expression \";\"\n StatementAugmentedAssign = StatementAugmentedAssignAdd\n | StatementAugmentedAssignSub\n | StatementAugmentedAssignMul\n | StatementAugmentedAssignDiv\n | StatementAugmentedAssignRem\n StatementAugmentedAssignAdd = LValue \"+=\" Expression \";\"\n StatementAugmentedAssignSub = LValue \"-=\" Expression \";\"\n StatementAugmentedAssignMul = LValue \"*=\" Expression \";\"\n StatementAugmentedAssignDiv = LValue \"/=\" Expression \";\"\n StatementAugmentedAssignRem = LValue \"%=\" Expression \";\"\n StatementCondition = if Expression \"{\" Statement* \"}\" ~else --simple\n | if Expression \"{\" Statement* \"}\" else \"{\" Statement* \"}\" --withElse\n | if Expression \"{\" Statement* \"}\" else StatementCondition --withElseIf\n StatementWhile = while \"(\" Expression \")\" \"{\" Statement* \"}\"\n StatementRepeat = repeat \"(\" Expression \")\" \"{\" Statement* \"}\"\n StatementUntil = do \"{\" Statement* \"}\" until \"(\" Expression \")\" \";\"\n\n // L-value\n LValue = id \".\" LValue --more\n | id --single\n\n // Expressions\n Expression = ExpressionConditional\n ExpressionConditional = ExpressionOr \"?\" ExpressionOr \":\" ExpressionConditional --ternary\n | ExpressionOr\n ExpressionOr = ExpressionOr \"||\" ExpressionAnd --or\n | ExpressionAnd\n ExpressionAnd = ExpressionAnd \"&&\" ExpressionCompare --and\n | ExpressionCompare\n ExpressionCompare = ExpressionCompare \"!=\" ExpressionBinary --not\n | ExpressionCompare \"==\" ExpressionBinary --eq\n | ExpressionCompare \">\" ExpressionBinary --gt\n | ExpressionCompare \">=\" ExpressionBinary --gte\n | ExpressionCompare \"<\" ExpressionBinary --lt\n | ExpressionCompare \"<=\" ExpressionBinary --lte\n | ExpressionBinary\n ExpressionBinary = ExpressionBinary \">>\" ExpressionAdd --shr\n | ExpressionBinary \"<<\" ExpressionAdd --shl\n | ExpressionBinary \"&\" ExpressionAdd --bin_and\n | ExpressionBinary \"|\" ExpressionAdd --bin_or\n | ExpressionAdd\n ExpressionAdd = ExpressionAdd \"+\" ~\"+\" ExpressionMul --add\n | ExpressionAdd \"-\" ~\"-\" ExpressionMul --sub\n | ExpressionMul\n ExpressionMul = ExpressionMul \"*\" ExpressionUnary --mul\n | ExpressionMul \"/\" ExpressionUnary --div\n | ExpressionMul \"%\" ExpressionUnary --rem\n | ExpressionUnary\n ExpressionUnary = \"-\" ExpressionUnarySuffix --neg\n | \"+\" ExpressionUnarySuffix --add\n | \"!\" ExpressionUnarySuffix --not\n | ExpressionUnarySuffix\n ExpressionUnarySuffix = ExpressionValue \"!!\" --notNull\n | ExpressionValue\n ExpressionBracket = \"(\" Expression \")\"\n\n // Order is important\n ExpressionValue = ExpressionCall\n | ExpressionField\n | ExpressionStaticCall\n | ExpressionBracket\n | ExpressionNew\n | integerLiteral\n | boolLiteral\n | id\n | null\n | ExpressionInitOf\n | ExpressionString\n ExpressionString = stringLiteral\n ExpressionField = ExpressionValue \".\" id ~\"(\"\n ExpressionCall = ExpressionValue \".\" id \"(\" ListOf \")\"\n ExpressionNew = id \"{\" ListOf \"}\" --noTrailing\n | id \"{\" ListOf \",\" \"}\" --withTrailing\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,5773]},null,[],["app",{"sourceInterval":[5752,5773]},"ExpressionConditional",[]]],"ExpressionConditional_ternary":["define",{"sourceInterval":[5802,5867]},null,[],["seq",{"sourceInterval":[5802,5857]},["app",{"sourceInterval":[5802,5814]},"ExpressionOr",[]],["terminal",{"sourceInterval":[5815,5818]},"?"],["app",{"sourceInterval":[5819,5831]},"ExpressionOr",[]],["terminal",{"sourceInterval":[5832,5835]},":"],["app",{"sourceInterval":[5836,5857]},"ExpressionConditional",[]]]],"ExpressionConditional":["define",{"sourceInterval":[5778,5908]},null,[],["alt",{"sourceInterval":[5802,5908]},["app",{"sourceInterval":[5802,5857]},"ExpressionConditional_ternary",[]],["app",{"sourceInterval":[5896,5908]},"ExpressionOr",[]]]],"ExpressionOr_or":["define",{"sourceInterval":[5928,5964]},null,[],["seq",{"sourceInterval":[5928,5959]},["app",{"sourceInterval":[5928,5940]},"ExpressionOr",[]],["terminal",{"sourceInterval":[5941,5945]},"||"],["app",{"sourceInterval":[5946,5959]},"ExpressionAnd",[]]]],"ExpressionOr":["define",{"sourceInterval":[5913,5997]},null,[],["alt",{"sourceInterval":[5928,5997]},["app",{"sourceInterval":[5928,5959]},"ExpressionOr_or",[]],["app",{"sourceInterval":[5984,5997]},"ExpressionAnd",[]]]],"ExpressionAnd_and":["define",{"sourceInterval":[6018,6060]},null,[],["seq",{"sourceInterval":[6018,6054]},["app",{"sourceInterval":[6018,6031]},"ExpressionAnd",[]],["terminal",{"sourceInterval":[6032,6036]},"&&"],["app",{"sourceInterval":[6037,6054]},"ExpressionCompare",[]]]],"ExpressionAnd":["define",{"sourceInterval":[6002,6098]},null,[],["alt",{"sourceInterval":[6018,6098]},["app",{"sourceInterval":[6018,6054]},"ExpressionAnd_and",[]],["app",{"sourceInterval":[6081,6098]},"ExpressionCompare",[]]]],"ExpressionCompare_not":["define",{"sourceInterval":[6123,6168]},null,[],["seq",{"sourceInterval":[6123,6162]},["app",{"sourceInterval":[6123,6140]},"ExpressionCompare",[]],["terminal",{"sourceInterval":[6141,6145]},"!="],["app",{"sourceInterval":[6146,6162]},"ExpressionBinary",[]]]],"ExpressionCompare_eq":["define",{"sourceInterval":[6193,6237]},null,[],["seq",{"sourceInterval":[6193,6232]},["app",{"sourceInterval":[6193,6210]},"ExpressionCompare",[]],["terminal",{"sourceInterval":[6211,6215]},"=="],["app",{"sourceInterval":[6216,6232]},"ExpressionBinary",[]]]],"ExpressionCompare_gt":["define",{"sourceInterval":[6262,6305]},null,[],["seq",{"sourceInterval":[6262,6300]},["app",{"sourceInterval":[6262,6279]},"ExpressionCompare",[]],["terminal",{"sourceInterval":[6280,6283]},">"],["app",{"sourceInterval":[6284,6300]},"ExpressionBinary",[]]]],"ExpressionCompare_gte":["define",{"sourceInterval":[6330,6375]},null,[],["seq",{"sourceInterval":[6330,6369]},["app",{"sourceInterval":[6330,6347]},"ExpressionCompare",[]],["terminal",{"sourceInterval":[6348,6352]},">="],["app",{"sourceInterval":[6353,6369]},"ExpressionBinary",[]]]],"ExpressionCompare_lt":["define",{"sourceInterval":[6400,6443]},null,[],["seq",{"sourceInterval":[6400,6438]},["app",{"sourceInterval":[6400,6417]},"ExpressionCompare",[]],["terminal",{"sourceInterval":[6418,6421]},"<"],["app",{"sourceInterval":[6422,6438]},"ExpressionBinary",[]]]],"ExpressionCompare_lte":["define",{"sourceInterval":[6468,6513]},null,[],["seq",{"sourceInterval":[6468,6507]},["app",{"sourceInterval":[6468,6485]},"ExpressionCompare",[]],["terminal",{"sourceInterval":[6486,6490]},"<="],["app",{"sourceInterval":[6491,6507]},"ExpressionBinary",[]]]],"ExpressionCompare":["define",{"sourceInterval":[6103,6554]},null,[],["alt",{"sourceInterval":[6123,6554]},["app",{"sourceInterval":[6123,6162]},"ExpressionCompare_not",[]],["app",{"sourceInterval":[6193,6232]},"ExpressionCompare_eq",[]],["app",{"sourceInterval":[6262,6300]},"ExpressionCompare_gt",[]],["app",{"sourceInterval":[6330,6369]},"ExpressionCompare_gte",[]],["app",{"sourceInterval":[6400,6438]},"ExpressionCompare_lt",[]],["app",{"sourceInterval":[6468,6507]},"ExpressionCompare_lte",[]],["app",{"sourceInterval":[6538,6554]},"ExpressionBinary",[]]]],"ExpressionBinary_shr":["define",{"sourceInterval":[6578,6619]},null,[],["seq",{"sourceInterval":[6578,6613]},["app",{"sourceInterval":[6578,6594]},"ExpressionBinary",[]],["terminal",{"sourceInterval":[6595,6599]},">>"],["app",{"sourceInterval":[6600,6613]},"ExpressionAdd",[]]]],"ExpressionBinary_shl":["define",{"sourceInterval":[6642,6683]},null,[],["seq",{"sourceInterval":[6642,6677]},["app",{"sourceInterval":[6642,6658]},"ExpressionBinary",[]],["terminal",{"sourceInterval":[6659,6663]},"<<"],["app",{"sourceInterval":[6664,6677]},"ExpressionAdd",[]]]],"ExpressionBinary_bin_and":["define",{"sourceInterval":[6706,6750]},null,[],["seq",{"sourceInterval":[6706,6740]},["app",{"sourceInterval":[6706,6722]},"ExpressionBinary",[]],["terminal",{"sourceInterval":[6723,6726]},"&"],["app",{"sourceInterval":[6727,6740]},"ExpressionAdd",[]]]],"ExpressionBinary_bin_or":["define",{"sourceInterval":[6773,6816]},null,[],["seq",{"sourceInterval":[6773,6807]},["app",{"sourceInterval":[6773,6789]},"ExpressionBinary",[]],["terminal",{"sourceInterval":[6790,6793]},"|"],["app",{"sourceInterval":[6794,6807]},"ExpressionAdd",[]]]],"ExpressionBinary":["define",{"sourceInterval":[6559,6852]},null,[],["alt",{"sourceInterval":[6578,6852]},["app",{"sourceInterval":[6578,6613]},"ExpressionBinary_shr",[]],["app",{"sourceInterval":[6642,6677]},"ExpressionBinary_shl",[]],["app",{"sourceInterval":[6706,6740]},"ExpressionBinary_bin_and",[]],["app",{"sourceInterval":[6773,6807]},"ExpressionBinary_bin_or",[]],["app",{"sourceInterval":[6839,6852]},"ExpressionAdd",[]]]],"ExpressionAdd_add":["define",{"sourceInterval":[6873,6915]},null,[],["seq",{"sourceInterval":[6873,6909]},["app",{"sourceInterval":[6873,6886]},"ExpressionAdd",[]],["terminal",{"sourceInterval":[6887,6890]},"+"],["not",{"sourceInterval":[6891,6895]},["terminal",{"sourceInterval":[6892,6895]},"+"]],["app",{"sourceInterval":[6896,6909]},"ExpressionMul",[]]]],"ExpressionAdd_sub":["define",{"sourceInterval":[6936,6978]},null,[],["seq",{"sourceInterval":[6936,6972]},["app",{"sourceInterval":[6936,6949]},"ExpressionAdd",[]],["terminal",{"sourceInterval":[6950,6953]},"-"],["not",{"sourceInterval":[6954,6958]},["terminal",{"sourceInterval":[6955,6958]},"-"]],["app",{"sourceInterval":[6959,6972]},"ExpressionMul",[]]]],"ExpressionAdd":["define",{"sourceInterval":[6857,7012]},null,[],["alt",{"sourceInterval":[6873,7012]},["app",{"sourceInterval":[6873,6909]},"ExpressionAdd_add",[]],["app",{"sourceInterval":[6936,6972]},"ExpressionAdd_sub",[]],["app",{"sourceInterval":[6999,7012]},"ExpressionMul",[]]]],"ExpressionMul_mul":["define",{"sourceInterval":[7033,7072]},null,[],["seq",{"sourceInterval":[7033,7066]},["app",{"sourceInterval":[7033,7046]},"ExpressionMul",[]],["terminal",{"sourceInterval":[7047,7050]},"*"],["app",{"sourceInterval":[7051,7066]},"ExpressionUnary",[]]]],"ExpressionMul_div":["define",{"sourceInterval":[7093,7132]},null,[],["seq",{"sourceInterval":[7093,7126]},["app",{"sourceInterval":[7093,7106]},"ExpressionMul",[]],["terminal",{"sourceInterval":[7107,7110]},"/"],["app",{"sourceInterval":[7111,7126]},"ExpressionUnary",[]]]],"ExpressionMul_rem":["define",{"sourceInterval":[7153,7192]},null,[],["seq",{"sourceInterval":[7153,7186]},["app",{"sourceInterval":[7153,7166]},"ExpressionMul",[]],["terminal",{"sourceInterval":[7167,7170]},"%"],["app",{"sourceInterval":[7171,7186]},"ExpressionUnary",[]]]],"ExpressionMul":["define",{"sourceInterval":[7017,7228]},null,[],["alt",{"sourceInterval":[7033,7228]},["app",{"sourceInterval":[7033,7066]},"ExpressionMul_mul",[]],["app",{"sourceInterval":[7093,7126]},"ExpressionMul_div",[]],["app",{"sourceInterval":[7153,7186]},"ExpressionMul_rem",[]],["app",{"sourceInterval":[7213,7228]},"ExpressionUnary",[]]]],"ExpressionUnary_neg":["define",{"sourceInterval":[7251,7282]},null,[],["seq",{"sourceInterval":[7251,7276]},["terminal",{"sourceInterval":[7251,7254]},"-"],["app",{"sourceInterval":[7255,7276]},"ExpressionUnarySuffix",[]]]],"ExpressionUnary_add":["define",{"sourceInterval":[7305,7336]},null,[],["seq",{"sourceInterval":[7305,7330]},["terminal",{"sourceInterval":[7305,7308]},"+"],["app",{"sourceInterval":[7309,7330]},"ExpressionUnarySuffix",[]]]],"ExpressionUnary_not":["define",{"sourceInterval":[7359,7390]},null,[],["seq",{"sourceInterval":[7359,7384]},["terminal",{"sourceInterval":[7359,7362]},"!"],["app",{"sourceInterval":[7363,7384]},"ExpressionUnarySuffix",[]]]],"ExpressionUnary":["define",{"sourceInterval":[7233,7434]},null,[],["alt",{"sourceInterval":[7251,7434]},["app",{"sourceInterval":[7251,7276]},"ExpressionUnary_neg",[]],["app",{"sourceInterval":[7305,7330]},"ExpressionUnary_add",[]],["app",{"sourceInterval":[7359,7384]},"ExpressionUnary_not",[]],["app",{"sourceInterval":[7413,7434]},"ExpressionUnarySuffix",[]]]],"ExpressionUnarySuffix_notNull":["define",{"sourceInterval":[7463,7493]},null,[],["seq",{"sourceInterval":[7463,7483]},["app",{"sourceInterval":[7463,7478]},"ExpressionValue",[]],["terminal",{"sourceInterval":[7479,7483]},"!!"]]],"ExpressionUnarySuffix":["define",{"sourceInterval":[7439,7537]},null,[],["alt",{"sourceInterval":[7463,7537]},["app",{"sourceInterval":[7463,7483]},"ExpressionUnarySuffix_notNull",[]],["app",{"sourceInterval":[7522,7537]},"ExpressionValue",[]]]],"ExpressionBracket":["define",{"sourceInterval":[7542,7580]},null,[],["seq",{"sourceInterval":[7562,7580]},["terminal",{"sourceInterval":[7562,7565]},"("],["app",{"sourceInterval":[7566,7576]},"Expression",[]],["terminal",{"sourceInterval":[7577,7580]},")"]]],"ExpressionValue":["define",{"sourceInterval":[7612,8002]},null,[],["alt",{"sourceInterval":[7630,8002]},["app",{"sourceInterval":[7630,7644]},"ExpressionCall",[]],["app",{"sourceInterval":[7667,7682]},"ExpressionField",[]],["app",{"sourceInterval":[7705,7725]},"ExpressionStaticCall",[]],["app",{"sourceInterval":[7748,7765]},"ExpressionBracket",[]],["app",{"sourceInterval":[7788,7801]},"ExpressionNew",[]],["app",{"sourceInterval":[7824,7838]},"integerLiteral",[]],["app",{"sourceInterval":[7861,7872]},"boolLiteral",[]],["app",{"sourceInterval":[7895,7897]},"id",[]],["app",{"sourceInterval":[7920,7924]},"null",[]],["app",{"sourceInterval":[7947,7963]},"ExpressionInitOf",[]],["app",{"sourceInterval":[7986,8002]},"ExpressionString",[]]]],"ExpressionString":["define",{"sourceInterval":[8007,8039]},null,[],["app",{"sourceInterval":[8026,8039]},"stringLiteral",[]]],"ExpressionField":["define",{"sourceInterval":[8044,8089]},null,[],["seq",{"sourceInterval":[8062,8089]},["app",{"sourceInterval":[8062,8077]},"ExpressionValue",[]],["terminal",{"sourceInterval":[8078,8081]},"."],["app",{"sourceInterval":[8082,8084]},"id",[]],["not",{"sourceInterval":[8085,8089]},["terminal",{"sourceInterval":[8086,8089]},"("]]]],"ExpressionCall":["define",{"sourceInterval":[8094,8165]},null,[],["seq",{"sourceInterval":[8111,8165]},["app",{"sourceInterval":[8111,8126]},"ExpressionValue",[]],["terminal",{"sourceInterval":[8127,8130]},"."],["app",{"sourceInterval":[8131,8133]},"id",[]],["terminal",{"sourceInterval":[8134,8137]},"("],["app",{"sourceInterval":[8138,8161]},"ListOf",[["app",{"sourceInterval":[8145,8155]},"Expression",[]],["terminal",{"sourceInterval":[8157,8160]},","]]],["terminal",{"sourceInterval":[8162,8165]},")"]]],"ExpressionNew_noTrailing":["define",{"sourceInterval":[8186,8241]},null,[],["seq",{"sourceInterval":[8186,8222]},["app",{"sourceInterval":[8186,8188]},"id",[]],["terminal",{"sourceInterval":[8189,8192]},"{"],["app",{"sourceInterval":[8193,8218]},"ListOf",[["app",{"sourceInterval":[8200,8212]},"NewParameter",[]],["terminal",{"sourceInterval":[8214,8217]},","]]],["terminal",{"sourceInterval":[8219,8222]},"}"]]],"ExpressionNew_withTrailing":["define",{"sourceInterval":[8262,8319]},null,[],["seq",{"sourceInterval":[8262,8302]},["app",{"sourceInterval":[8262,8264]},"id",[]],["terminal",{"sourceInterval":[8265,8268]},"{"],["app",{"sourceInterval":[8269,8294]},"ListOf",[["app",{"sourceInterval":[8276,8288]},"NewParameter",[]],["terminal",{"sourceInterval":[8290,8293]},","]]],["terminal",{"sourceInterval":[8295,8298]},","],["terminal",{"sourceInterval":[8299,8302]},"}"]]],"ExpressionNew":["define",{"sourceInterval":[8170,8319]},null,[],["alt",{"sourceInterval":[8186,8319]},["app",{"sourceInterval":[8186,8222]},"ExpressionNew_noTrailing",[]],["app",{"sourceInterval":[8262,8302]},"ExpressionNew_withTrailing",[]]]],"NewParameter":["define",{"sourceInterval":[8324,8356]},null,[],["seq",{"sourceInterval":[8339,8356]},["app",{"sourceInterval":[8339,8341]},"id",[]],["terminal",{"sourceInterval":[8342,8345]},":"],["app",{"sourceInterval":[8346,8356]},"Expression",[]]]],"ExpressionStaticCall":["define",{"sourceInterval":[8361,8418]},null,[],["seq",{"sourceInterval":[8384,8418]},["app",{"sourceInterval":[8384,8386]},"id",[]],["terminal",{"sourceInterval":[8387,8390]},"("],["app",{"sourceInterval":[8391,8414]},"ListOf",[["app",{"sourceInterval":[8398,8408]},"Expression",[]],["terminal",{"sourceInterval":[8410,8413]},","]]],["terminal",{"sourceInterval":[8415,8418]},")"]]],"ExpressionInitOf":["define",{"sourceInterval":[8423,8483]},null,[],["seq",{"sourceInterval":[8442,8483]},["app",{"sourceInterval":[8442,8448]},"initOf",[]],["app",{"sourceInterval":[8449,8451]},"id",[]],["terminal",{"sourceInterval":[8452,8455]},"("],["app",{"sourceInterval":[8456,8479]},"ListOf",[["app",{"sourceInterval":[8463,8473]},"Expression",[]],["terminal",{"sourceInterval":[8475,8478]},","]]],["terminal",{"sourceInterval":[8480,8483]},")"]]],"typeLiteral":["define",{"sourceInterval":[8509,8553]},null,[],["seq",{"sourceInterval":[8523,8553]},["app",{"sourceInterval":[8523,8536]},"letterAsciiUC",[]],["star",{"sourceInterval":[8537,8553]},["app",{"sourceInterval":[8537,8552]},"typeLiteralPart",[]]]]],"typeLiteralPart":["define",{"sourceInterval":[8558,8601]},null,[],["alt",{"sourceInterval":[8576,8601]},["app",{"sourceInterval":[8576,8587]},"letterAscii",[]],["app",{"sourceInterval":[8590,8595]},"digit",[]],["terminal",{"sourceInterval":[8598,8601]},"_"]]],"integerLiteral":["define",{"sourceInterval":[8808,8902]},null,[],["alt",{"sourceInterval":[8825,8902]},["app",{"sourceInterval":[8825,8842]},"integerLiteralHex",[]],["app",{"sourceInterval":[8845,8862]},"integerLiteralBin",[]],["app",{"sourceInterval":[8865,8882]},"integerLiteralOct",[]],["app",{"sourceInterval":[8885,8902]},"integerLiteralDec",[]]]],"integerLiteralDec_nonZeroIntegerLiteralDec":["define",{"sourceInterval":[8949,9003]},null,[],["seq",{"sourceInterval":[8949,8975]},["app",{"sourceInterval":[8949,8961]},"nonZeroDigit",[]],["star",{"sourceInterval":[8962,8975]},["seq",{"sourceInterval":[8963,8973]},["opt",{"sourceInterval":[8963,8967]},["terminal",{"sourceInterval":[8963,8966]},"_"]],["app",{"sourceInterval":[8968,8973]},"digit",[]]]]]],"integerLiteralDec_integerLiteralWithLeadingZero":["define",{"sourceInterval":[9028,9087]},null,[],["seq",{"sourceInterval":[9028,9038]},["terminal",{"sourceInterval":[9028,9031]},"0"],["star",{"sourceInterval":[9032,9038]},["app",{"sourceInterval":[9032,9037]},"digit",[]]]]],"integerLiteralDec":["define",{"sourceInterval":[8929,9087]},null,[],["alt",{"sourceInterval":[8949,9087]},["app",{"sourceInterval":[8949,8975]},"integerLiteralDec_nonZeroIntegerLiteralDec",[]],["app",{"sourceInterval":[9028,9038]},"integerLiteralDec_integerLiteralWithLeadingZero",[]]]],"integerLiteralHex":["define",{"sourceInterval":[9092,9151]},null,[],["seq",{"sourceInterval":[9112,9151]},["alt",{"sourceInterval":[9113,9124]},["terminal",{"sourceInterval":[9113,9117]},"0x"],["terminal",{"sourceInterval":[9120,9124]},"0X"]],["app",{"sourceInterval":[9126,9134]},"hexDigit",[]],["star",{"sourceInterval":[9135,9151]},["seq",{"sourceInterval":[9136,9149]},["opt",{"sourceInterval":[9136,9140]},["terminal",{"sourceInterval":[9136,9139]},"_"]],["app",{"sourceInterval":[9141,9149]},"hexDigit",[]]]]]],"integerLiteralBin":["define",{"sourceInterval":[9156,9215]},null,[],["seq",{"sourceInterval":[9176,9215]},["alt",{"sourceInterval":[9177,9188]},["terminal",{"sourceInterval":[9177,9181]},"0b"],["terminal",{"sourceInterval":[9184,9188]},"0B"]],["app",{"sourceInterval":[9190,9198]},"binDigit",[]],["star",{"sourceInterval":[9199,9215]},["seq",{"sourceInterval":[9200,9213]},["opt",{"sourceInterval":[9200,9204]},["terminal",{"sourceInterval":[9200,9203]},"_"]],["app",{"sourceInterval":[9205,9213]},"binDigit",[]]]]]],"integerLiteralOct":["define",{"sourceInterval":[9220,9279]},null,[],["seq",{"sourceInterval":[9240,9279]},["alt",{"sourceInterval":[9241,9252]},["terminal",{"sourceInterval":[9241,9245]},"0o"],["terminal",{"sourceInterval":[9248,9252]},"0O"]],["app",{"sourceInterval":[9254,9262]},"octDigit",[]],["star",{"sourceInterval":[9263,9279]},["seq",{"sourceInterval":[9264,9277]},["opt",{"sourceInterval":[9264,9268]},["terminal",{"sourceInterval":[9264,9267]},"_"]],["app",{"sourceInterval":[9269,9277]},"octDigit",[]]]]]],"binDigit":["define",{"sourceInterval":[9284,9304]},null,[],["alt",{"sourceInterval":[9295,9304]},["terminal",{"sourceInterval":[9295,9298]},"0"],["terminal",{"sourceInterval":[9301,9304]},"1"]]],"octDigit":["define",{"sourceInterval":[9309,9328]},null,[],["range",{"sourceInterval":[9320,9328]},"0","7"]],"nonZeroDigit":["define",{"sourceInterval":[9333,9356]},null,[],["range",{"sourceInterval":[9348,9356]},"1","9"]],"letterAsciiLC":["define",{"sourceInterval":[9377,9401]},null,[],["range",{"sourceInterval":[9393,9401]},"a","z"]],"letterAsciiUC":["define",{"sourceInterval":[9406,9430]},null,[],["range",{"sourceInterval":[9422,9430]},"A","Z"]],"letterAscii":["define",{"sourceInterval":[9435,9478]},null,[],["alt",{"sourceInterval":[9449,9478]},["app",{"sourceInterval":[9449,9462]},"letterAsciiLC",[]],["app",{"sourceInterval":[9465,9478]},"letterAsciiUC",[]]]],"letterComment":["define",{"sourceInterval":[9483,9542]},null,[],["alt",{"sourceInterval":[9499,9542]},["app",{"sourceInterval":[9499,9512]},"letterAsciiLC",[]],["app",{"sourceInterval":[9515,9528]},"letterAsciiUC",[]],["app",{"sourceInterval":[9531,9536]},"digit",[]],["terminal",{"sourceInterval":[9539,9542]},"_"]]],"idStart":["define",{"sourceInterval":[9566,9593]},null,[],["alt",{"sourceInterval":[9576,9593]},["app",{"sourceInterval":[9576,9587]},"letterAscii",[]],["terminal",{"sourceInterval":[9590,9593]},"_"]]],"idPart":["define",{"sourceInterval":[9598,9632]},null,[],["alt",{"sourceInterval":[9607,9632]},["app",{"sourceInterval":[9607,9618]},"letterAscii",[]],["app",{"sourceInterval":[9621,9626]},"digit",[]],["terminal",{"sourceInterval":[9629,9632]},"_"]]],"id":["define",{"sourceInterval":[9637,9675]},null,[],["seq",{"sourceInterval":[9642,9675]},["not",{"sourceInterval":[9642,9655]},["app",{"sourceInterval":[9643,9655]},"reservedWord",[]]],["lex",{"sourceInterval":[9656,9664]},["app",{"sourceInterval":[9657,9664]},"idStart",[]]],["lex",{"sourceInterval":[9665,9675]},["star",{"sourceInterval":[9667,9674]},["app",{"sourceInterval":[9667,9673]},"idPart",[]]]]]],"funcLetter":["define",{"sourceInterval":[9696,9757]},null,[],["alt",{"sourceInterval":[9709,9757]},["app",{"sourceInterval":[9709,9720]},"letterAscii",[]],["terminal",{"sourceInterval":[9723,9726]},"_"],["terminal",{"sourceInterval":[9729,9732]},"'"],["terminal",{"sourceInterval":[9735,9738]},"?"],["terminal",{"sourceInterval":[9741,9744]},"!"],["terminal",{"sourceInterval":[9747,9751]},"::"],["terminal",{"sourceInterval":[9754,9757]},"&"]]],"funcId":["define",{"sourceInterval":[9762,9804]},null,[],["seq",{"sourceInterval":[9771,9804]},["app",{"sourceInterval":[9771,9781]},"funcLetter",[]],["star",{"sourceInterval":[9782,9804]},["lex",{"sourceInterval":[9782,9803]},["alt",{"sourceInterval":[9784,9802]},["app",{"sourceInterval":[9784,9794]},"funcLetter",[]],["app",{"sourceInterval":[9797,9802]},"digit",[]]]]]]],"boolLiteral":["define",{"sourceInterval":[9830,9870]},null,[],["seq",{"sourceInterval":[9844,9870]},["alt",{"sourceInterval":[9845,9861]},["terminal",{"sourceInterval":[9845,9851]},"true"],["terminal",{"sourceInterval":[9854,9861]},"false"]],["not",{"sourceInterval":[9863,9870]},["app",{"sourceInterval":[9864,9870]},"idPart",[]]]]],"stringLiteralCharacter":["define",{"sourceInterval":[9898,9958]},null,[],["seq",{"sourceInterval":[9923,9958]},["not",{"sourceInterval":[9923,9954]},["alt",{"sourceInterval":[9925,9953]},["terminal",{"sourceInterval":[9925,9929]},"\""],["terminal",{"sourceInterval":[9932,9936]},"\\"],["app",{"sourceInterval":[9939,9953]},"lineTerminator",[]]]],["app",{"sourceInterval":[9955,9958]},"any",[]]]],"stringLiteral":["define",{"sourceInterval":[9963,10012]},null,[],["seq",{"sourceInterval":[9979,10012]},["terminal",{"sourceInterval":[9979,9983]},"\""],["star",{"sourceInterval":[9984,10007]},["app",{"sourceInterval":[9984,10006]},"stringLiteralCharacter",[]]],["terminal",{"sourceInterval":[10008,10012]},"\""]]],"keyword":["define",{"sourceInterval":[10065,10578]},null,[],["alt",{"sourceInterval":[10075,10578]},["app",{"sourceInterval":[10075,10078]},"fun",[]],["app",{"sourceInterval":[10094,10097]},"let",[]],["app",{"sourceInterval":[10112,10118]},"return",[]],["app",{"sourceInterval":[10134,10140]},"extend",[]],["app",{"sourceInterval":[10156,10162]},"native",[]],["app",{"sourceInterval":[10178,10184]},"public",[]],["app",{"sourceInterval":[10200,10204]},"null",[]],["app",{"sourceInterval":[10220,10222]},"if",[]],["app",{"sourceInterval":[10238,10242]},"else",[]],["app",{"sourceInterval":[10258,10263]},"while",[]],["app",{"sourceInterval":[10279,10285]},"repeat",[]],["app",{"sourceInterval":[10301,10303]},"do",[]],["app",{"sourceInterval":[10319,10324]},"until",[]],["app",{"sourceInterval":[10340,10342]},"as",[]],["app",{"sourceInterval":[10359,10366]},"mutates",[]],["app",{"sourceInterval":[10381,10388]},"extends",[]],["app",{"sourceInterval":[10403,10409]},"import",[]],["app",{"sourceInterval":[10424,10428]},"with",[]],["app",{"sourceInterval":[10443,10448]},"trait",[]],["app",{"sourceInterval":[10463,10469]},"initOf",[]],["app",{"sourceInterval":[10484,10492]},"override",[]],["app",{"sourceInterval":[10507,10515]},"abstract",[]],["app",{"sourceInterval":[10530,10537]},"virtual",[]],["app",{"sourceInterval":[10552,10558]},"inline",[]],["app",{"sourceInterval":[10573,10578]},"const",[]]]],"contract":["define",{"sourceInterval":[10583,10612]},null,[],["seq",{"sourceInterval":[10594,10612]},["terminal",{"sourceInterval":[10594,10604]},"contract"],["not",{"sourceInterval":[10605,10612]},["app",{"sourceInterval":[10606,10612]},"idPart",[]]]]],"let":["define",{"sourceInterval":[10617,10636]},null,[],["seq",{"sourceInterval":[10623,10636]},["terminal",{"sourceInterval":[10623,10628]},"let"],["not",{"sourceInterval":[10629,10636]},["app",{"sourceInterval":[10630,10636]},"idPart",[]]]]],"fun":["define",{"sourceInterval":[10641,10660]},null,[],["seq",{"sourceInterval":[10647,10660]},["terminal",{"sourceInterval":[10647,10652]},"fun"],["not",{"sourceInterval":[10653,10660]},["app",{"sourceInterval":[10654,10660]},"idPart",[]]]]],"return":["define",{"sourceInterval":[10665,10690]},null,[],["seq",{"sourceInterval":[10674,10690]},["terminal",{"sourceInterval":[10674,10682]},"return"],["not",{"sourceInterval":[10683,10690]},["app",{"sourceInterval":[10684,10690]},"idPart",[]]]]],"extend":["define",{"sourceInterval":[10695,10720]},null,[],["seq",{"sourceInterval":[10704,10720]},["terminal",{"sourceInterval":[10704,10712]},"extend"],["not",{"sourceInterval":[10713,10720]},["app",{"sourceInterval":[10714,10720]},"idPart",[]]]]],"native":["define",{"sourceInterval":[10725,10750]},null,[],["seq",{"sourceInterval":[10734,10750]},["terminal",{"sourceInterval":[10734,10742]},"native"],["not",{"sourceInterval":[10743,10750]},["app",{"sourceInterval":[10744,10750]},"idPart",[]]]]],"public":["define",{"sourceInterval":[10755,10780]},null,[],["seq",{"sourceInterval":[10764,10780]},["terminal",{"sourceInterval":[10764,10772]},"public"],["not",{"sourceInterval":[10773,10780]},["app",{"sourceInterval":[10774,10780]},"idPart",[]]]]],"null":["define",{"sourceInterval":[10785,10806]},null,[],["seq",{"sourceInterval":[10792,10806]},["terminal",{"sourceInterval":[10792,10798]},"null"],["not",{"sourceInterval":[10799,10806]},["app",{"sourceInterval":[10800,10806]},"idPart",[]]]]],"if":["define",{"sourceInterval":[10811,10828]},null,[],["seq",{"sourceInterval":[10816,10828]},["terminal",{"sourceInterval":[10816,10820]},"if"],["not",{"sourceInterval":[10821,10828]},["app",{"sourceInterval":[10822,10828]},"idPart",[]]]]],"else":["define",{"sourceInterval":[10833,10854]},null,[],["seq",{"sourceInterval":[10840,10854]},["terminal",{"sourceInterval":[10840,10846]},"else"],["not",{"sourceInterval":[10847,10854]},["app",{"sourceInterval":[10848,10854]},"idPart",[]]]]],"while":["define",{"sourceInterval":[10859,10882]},null,[],["seq",{"sourceInterval":[10867,10882]},["terminal",{"sourceInterval":[10867,10874]},"while"],["not",{"sourceInterval":[10875,10882]},["app",{"sourceInterval":[10876,10882]},"idPart",[]]]]],"repeat":["define",{"sourceInterval":[10887,10912]},null,[],["seq",{"sourceInterval":[10896,10912]},["terminal",{"sourceInterval":[10896,10904]},"repeat"],["not",{"sourceInterval":[10905,10912]},["app",{"sourceInterval":[10906,10912]},"idPart",[]]]]],"do":["define",{"sourceInterval":[10917,10934]},null,[],["seq",{"sourceInterval":[10922,10934]},["terminal",{"sourceInterval":[10922,10926]},"do"],["not",{"sourceInterval":[10927,10934]},["app",{"sourceInterval":[10928,10934]},"idPart",[]]]]],"until":["define",{"sourceInterval":[10939,10962]},null,[],["seq",{"sourceInterval":[10947,10962]},["terminal",{"sourceInterval":[10947,10954]},"until"],["not",{"sourceInterval":[10955,10962]},["app",{"sourceInterval":[10956,10962]},"idPart",[]]]]],"as":["define",{"sourceInterval":[10967,10984]},null,[],["seq",{"sourceInterval":[10972,10984]},["terminal",{"sourceInterval":[10972,10976]},"as"],["not",{"sourceInterval":[10977,10984]},["app",{"sourceInterval":[10978,10984]},"idPart",[]]]]],"mutates":["define",{"sourceInterval":[10989,11016]},null,[],["seq",{"sourceInterval":[10999,11016]},["terminal",{"sourceInterval":[10999,11008]},"mutates"],["not",{"sourceInterval":[11009,11016]},["app",{"sourceInterval":[11010,11016]},"idPart",[]]]]],"extends":["define",{"sourceInterval":[11021,11048]},null,[],["seq",{"sourceInterval":[11031,11048]},["terminal",{"sourceInterval":[11031,11040]},"extends"],["not",{"sourceInterval":[11041,11048]},["app",{"sourceInterval":[11042,11048]},"idPart",[]]]]],"import":["define",{"sourceInterval":[11053,11078]},null,[],["seq",{"sourceInterval":[11062,11078]},["terminal",{"sourceInterval":[11062,11070]},"import"],["not",{"sourceInterval":[11071,11078]},["app",{"sourceInterval":[11072,11078]},"idPart",[]]]]],"with":["define",{"sourceInterval":[11083,11104]},null,[],["seq",{"sourceInterval":[11090,11104]},["terminal",{"sourceInterval":[11090,11096]},"with"],["not",{"sourceInterval":[11097,11104]},["app",{"sourceInterval":[11098,11104]},"idPart",[]]]]],"trait":["define",{"sourceInterval":[11109,11132]},null,[],["seq",{"sourceInterval":[11117,11132]},["terminal",{"sourceInterval":[11117,11124]},"trait"],["not",{"sourceInterval":[11125,11132]},["app",{"sourceInterval":[11126,11132]},"idPart",[]]]]],"initOf":["define",{"sourceInterval":[11137,11162]},null,[],["seq",{"sourceInterval":[11146,11162]},["terminal",{"sourceInterval":[11146,11154]},"initOf"],["not",{"sourceInterval":[11155,11162]},["app",{"sourceInterval":[11156,11162]},"idPart",[]]]]],"virtual":["define",{"sourceInterval":[11167,11194]},null,[],["seq",{"sourceInterval":[11177,11194]},["terminal",{"sourceInterval":[11177,11186]},"virtual"],["not",{"sourceInterval":[11187,11194]},["app",{"sourceInterval":[11188,11194]},"idPart",[]]]]],"override":["define",{"sourceInterval":[11199,11228]},null,[],["seq",{"sourceInterval":[11210,11228]},["terminal",{"sourceInterval":[11210,11220]},"override"],["not",{"sourceInterval":[11221,11228]},["app",{"sourceInterval":[11222,11228]},"idPart",[]]]]],"inline":["define",{"sourceInterval":[11233,11258]},null,[],["seq",{"sourceInterval":[11242,11258]},["terminal",{"sourceInterval":[11242,11250]},"inline"],["not",{"sourceInterval":[11251,11258]},["app",{"sourceInterval":[11252,11258]},"idPart",[]]]]],"const":["define",{"sourceInterval":[11263,11286]},null,[],["seq",{"sourceInterval":[11271,11286]},["terminal",{"sourceInterval":[11271,11278]},"const"],["not",{"sourceInterval":[11279,11286]},["app",{"sourceInterval":[11280,11286]},"idPart",[]]]]],"abstract":["define",{"sourceInterval":[11291,11320]},null,[],["seq",{"sourceInterval":[11302,11320]},["terminal",{"sourceInterval":[11302,11312]},"abstract"],["not",{"sourceInterval":[11313,11320]},["app",{"sourceInterval":[11314,11320]},"idPart",[]]]]],"nameAttribute":["define",{"sourceInterval":[11344,11367]},null,[],["terminal",{"sourceInterval":[11360,11367]},"@name"]],"reservedWord":["define",{"sourceInterval":[11389,11411]},null,[],["app",{"sourceInterval":[11404,11411]},"keyword",[]]],"space":["extend",{"sourceInterval":[11433,11466]},null,[],["alt",{"sourceInterval":[11442,11466]},["app",{"sourceInterval":[11442,11449]},"comment",[]],["app",{"sourceInterval":[11452,11466]},"lineTerminator",[]]]],"comment":["define",{"sourceInterval":[11471,11517]},null,[],["alt",{"sourceInterval":[11481,11517]},["app",{"sourceInterval":[11481,11497]},"multiLineComment",[]],["app",{"sourceInterval":[11500,11517]},"singleLineComment",[]]]],"lineTerminator":["define",{"sourceInterval":[11522,11572]},null,[],["alt",{"sourceInterval":[11539,11572]},["terminal",{"sourceInterval":[11539,11543]},"\n"],["terminal",{"sourceInterval":[11546,11550]},"\r"],["terminal",{"sourceInterval":[11553,11561]},"\u2028"],["terminal",{"sourceInterval":[11564,11572]},"\u2029"]]],"multiLineComment":["define",{"sourceInterval":[11577,11618]},null,[],["seq",{"sourceInterval":[11596,11618]},["terminal",{"sourceInterval":[11596,11600]},"/*"],["star",{"sourceInterval":[11601,11613]},["seq",{"sourceInterval":[11602,11611]},["not",{"sourceInterval":[11602,11607]},["terminal",{"sourceInterval":[11603,11607]},"*/"]],["app",{"sourceInterval":[11608,11611]},"any",[]]]],["terminal",{"sourceInterval":[11614,11618]},"*/"]]],"singleLineComment":["define",{"sourceInterval":[11623,11670]},null,[],["seq",{"sourceInterval":[11643,11670]},["terminal",{"sourceInterval":[11643,11647]},"//"],["star",{"sourceInterval":[11648,11670]},["seq",{"sourceInterval":[11649,11668]},["not",{"sourceInterval":[11649,11664]},["app",{"sourceInterval":[11650,11664]},"lineTerminator",[]]],["app",{"sourceInterval":[11665,11668]},"any",[]]]]]]}]);module.exports=result; \ No newline at end of file diff --git a/src/grammar/grammar.ts b/src/grammar/grammar.ts index e5d62213f..e89e62399 100644 --- a/src/grammar/grammar.ts +++ b/src/grammar/grammar.ts @@ -712,7 +712,10 @@ semantics.addOperation('resolve_expression', { ExpressionStaticCall(arg0, _arg1, arg2, _arg3) { return createNode({ kind: 'op_static_call', name: arg0.sourceString, args: arg2.asIteration().children.map((v) => v.resolve_expression()), ref: createRef(this) }); }, - ExpressionNew(arg0, _arg1, arg2, _arg3) { + ExpressionNew_withTrailing(arg0, _arg1, arg2, _arg3, _arg4) { + return createNode({ kind: 'op_new', type: arg0.sourceString, args: arg2.asIteration().children.map((v) => v.resolve_expression()), ref: createRef(this) }); + }, + ExpressionNew_noTrailing(arg0, _arg1, arg2, _arg3) { return createNode({ kind: 'op_new', type: arg0.sourceString, args: arg2.asIteration().children.map((v) => v.resolve_expression()), ref: createRef(this) }); }, NewParameter(arg0, _arg1, arg2) { diff --git a/src/grammar/test/case-17.tact b/src/grammar/test/case-17.tact index b1e810d25..b8e9af803 100644 --- a/src/grammar/test/case-17.tact +++ b/src/grammar/test/case-17.tact @@ -1,7 +1,27 @@ struct A { x: Int; + y: Int; +} + +const a: A = new { x: 1 }; + +fun getA(): A { + return A { + x: 1, + y: 2, + }; } message B { x: Int; -} \ No newline at end of file + y: Int; +} + +const b: B = new { + x: 2, + y: 3, +}; + +fun getB(): B { + return B { x = 1, y = 5, }; +} diff --git a/src/test/features/serialization-2.tact b/src/test/features/serialization-2.tact index a7b41d523..627b6a22f 100644 --- a/src/test/features/serialization-2.tact +++ b/src/test/features/serialization-2.tact @@ -74,11 +74,17 @@ contract SerializationTester2 { } get fun getBoth():Both { - return Both{a: self.a, b: self.b}; + return Both{ + a: self.a, + b: self.b + }; } get fun getBothOpt():Both? { - return Both{a: self.a, b: self.b}; + return Both{ + a: self.a, + b: self.b + }; } get fun process(src: Vars, both: Both, both2: Both?): Vars { From 4797e78711651addadae00ef33bab788a90b49be Mon Sep 17 00:00:00 2001 From: Vitor Py Braga <12871+vitorpy@users.noreply.github.com> Date: Wed, 20 Mar 2024 15:48:26 +0100 Subject: [PATCH 02/22] Add support for trailing commas in argument lists --- src/grammar/grammar.ohm | 2 ++ src/grammar/grammar.ohm-bundle.d.ts | 2 ++ src/grammar/grammar.ohm-bundle.js | 2 +- src/grammar/grammar.ts | 26 ++++++++++++++++++++++++++ src/grammar/test/case-25.tact | 7 +++++++ src/test/features/serialization-2.tact | 4 ++-- 6 files changed, 40 insertions(+), 3 deletions(-) diff --git a/src/grammar/grammar.ohm b/src/grammar/grammar.ohm index 7d63532ce..9a3ff2832 100644 --- a/src/grammar/grammar.ohm +++ b/src/grammar/grammar.ohm @@ -18,7 +18,9 @@ Tact { // Static function StaticFunction = Function NativeFunction = nameAttribute "(" funcId ")" FunctionAttribute* native id "(" ListOf ")" ";" --withVoid + | nameAttribute "(" funcId ")" FunctionAttribute* native id "(" ListOf "," ")" ";" --withVoidAndTrailingComma | nameAttribute "(" funcId ")" FunctionAttribute* native id "(" ListOf ")" ":" Type ";" --withType + | nameAttribute "(" funcId ")" FunctionAttribute* native id "(" ListOf "," ")" ":" Type ";" --withTypeAndTrailingComma // Field declarations Type = typeLiteral "?" --optional diff --git a/src/grammar/grammar.ohm-bundle.d.ts b/src/grammar/grammar.ohm-bundle.d.ts index 9c22ae7f7..076c17dee 100644 --- a/src/grammar/grammar.ohm-bundle.d.ts +++ b/src/grammar/grammar.ohm-bundle.d.ts @@ -18,7 +18,9 @@ export interface TactActionDict extends ActionDict { Primitive?: (this: NonterminalNode, arg0: TerminalNode, arg1: NonterminalNode, arg2: TerminalNode) => T; StaticFunction?: (this: NonterminalNode, arg0: NonterminalNode) => T; NativeFunction_withVoid?: (this: NonterminalNode, arg0: NonterminalNode, arg1: TerminalNode, arg2: NonterminalNode, arg3: TerminalNode, arg4: IterationNode, arg5: NonterminalNode, arg6: NonterminalNode, arg7: TerminalNode, arg8: NonterminalNode, arg9: TerminalNode, arg10: TerminalNode) => T; + NativeFunction_withVoidAndTrailingComma?: (this: NonterminalNode, arg0: NonterminalNode, arg1: TerminalNode, arg2: NonterminalNode, arg3: TerminalNode, arg4: IterationNode, arg5: NonterminalNode, arg6: NonterminalNode, arg7: TerminalNode, arg8: NonterminalNode, arg9: TerminalNode, arg10: TerminalNode, arg11: TerminalNode) => T; NativeFunction_withType?: (this: NonterminalNode, arg0: NonterminalNode, arg1: TerminalNode, arg2: NonterminalNode, arg3: TerminalNode, arg4: IterationNode, arg5: NonterminalNode, arg6: NonterminalNode, arg7: TerminalNode, arg8: NonterminalNode, arg9: TerminalNode, arg10: TerminalNode, arg11: NonterminalNode, arg12: TerminalNode) => T; + NativeFunction_withTypeAndTrailingComma?: (this: NonterminalNode, arg0: NonterminalNode, arg1: TerminalNode, arg2: NonterminalNode, arg3: TerminalNode, arg4: IterationNode, arg5: NonterminalNode, arg6: NonterminalNode, arg7: TerminalNode, arg8: NonterminalNode, arg9: TerminalNode, arg10: TerminalNode, arg11: TerminalNode, arg12: NonterminalNode, arg13: TerminalNode) => T; NativeFunction?: (this: NonterminalNode, arg0: NonterminalNode) => T; Type_optional?: (this: NonterminalNode, arg0: NonterminalNode, arg1: TerminalNode) => T; Type_required?: (this: NonterminalNode, arg0: NonterminalNode) => T; diff --git a/src/grammar/grammar.ohm-bundle.js b/src/grammar/grammar.ohm-bundle.js index 59c1d250a..99d35fd5d 100644 --- a/src/grammar/grammar.ohm-bundle.js +++ b/src/grammar/grammar.ohm-bundle.js @@ -1 +1 @@ -'use strict';const ohm=(require('ohm-js').default || require('ohm-js'));const result=ohm.makeRecipe(["grammar",{"source":"Tact {\n\n // Starting point of the program\n Program = ProgramItem*\n ProgramItem = Struct\n | Contract\n | Primitive\n | StaticFunction\n | NativeFunction\n | ProgramImport\n | Trait\n | Constant\n ProgramImport = import stringLiteral \";\"\n\n // Built-in declarations\n Primitive = \"primitive\" Type \";\"\n\n // Static function\n StaticFunction = Function\n NativeFunction = nameAttribute \"(\" funcId \")\" FunctionAttribute* native id \"(\" ListOf \")\" \";\" --withVoid\n | nameAttribute \"(\" funcId \")\" FunctionAttribute* native id \"(\" ListOf \")\" \":\" Type \";\" --withType\n \n // Field declarations\n Type = typeLiteral \"?\" --optional\n | typeLiteral --required\n | \"map\" \"<\" typeLiteral (as id)? \",\" typeLiteral (as id)? \">\" --map\n | \"bounced\" \"<\" typeLiteral \">\" --bounced\n Field = id \":\" Type \";\" --default\n | id \":\" Type \"=\" Expression \";\" --defaultWithInit\n | id \":\" Type as id \";\" --withSerialization\n | id \":\" Type as id \"=\" Expression \";\" --withSerializationAndInit\n \n // Constant\n ConstantAttribute = virtual --virtual\n | override --override\n | abstract --abstract\n Constant = ConstantAttribute* ~fun const id \":\" Type \"=\" Expression \";\" --withValue\n | ConstantAttribute* ~fun const id \":\" Type \";\" --withEmpty\n\n // Struct\n Struct = \"struct\" typeLiteral \"{\" StructBody* \"}\" --originary\n | \"message\" typeLiteral \"{\" StructBody* \"}\" --message\n | \"message\" \"(\" integerLiteral \")\" typeLiteral \"{\" StructBody* \"}\" --messageWithId\n StructBody = Field\n\n // Contract\n Contract = ContractAttribute* contract id \"{\" ContractBody* \"}\" --simple\n | ContractAttribute* contract id with ListOf \"{\" ContractBody* \"}\" --withTraits\n ContractInit = \"init\" \"(\" ListOf \")\" \"{\" Statement* \"}\"\n ContractBody = Field\n | ContractInit\n | ReceiveFunction\n | Function\n | Constant\n \n // Trait\n Trait = ContractAttribute* trait id \"{\" TraitBody* \"}\" --originary\n | ContractAttribute* trait id with ListOf \"{\" TraitBody* \"}\" --withTraits\n TraitBody = Field\n | ReceiveFunction\n | Function\n | Constant\n\n // Contract attributes\n ContractAttribute = \"@interface\" \"(\" stringLiteral \")\" --interface\n\n // Function\n FunctionAttribute = \"get\" --getter\n | mutates --mutates\n | extends --extends\n | virtual --virtual\n | override --override\n | inline --inline\n | abstract --abstract\n Function = FunctionAttribute* fun id \"(\" ListOf \")\" \"{\" Statement* \"}\" --withVoid\n | FunctionAttribute* fun id \"(\" ListOf \")\" \":\" Type \"{\" Statement* \"}\" --withType\n | FunctionAttribute* fun id \"(\" ListOf \")\" \";\" --abstractVoid\n | FunctionAttribute* fun id \"(\" ListOf \")\" \":\" Type \";\" --abstractType\n FunctionArg = id \":\" Type\n \n ReceiveFunction = \"receive\" \"(\" FunctionArg \")\" \"{\" Statement* \"}\" --simple\n | \"receive\" \"(\" \")\" \"{\" Statement* \"}\" --empty\n | \"receive\" \"(\" stringLiteral \")\" \"{\" Statement* \"}\" --comment\n | \"bounced\" \"(\" FunctionArg \")\" \"{\" Statement* \"}\" --bounced\n | \"external\" \"(\" FunctionArg \")\" \"{\" Statement* \"}\" --externalSimple\n | \"external\" \"(\" stringLiteral \")\" \"{\" Statement* \"}\" --externalComment\n | \"external\" \"(\" \")\" \"{\" Statement* \"}\" --externalEmpty\n\n // Statements\n Statement = StatementLet\n | StatementBlock\n | StatementReturn\n | StatementExpression\n | StatementAssign\n | StatementAugmentedAssign\n | StatementCondition\n | StatementWhile\n | StatementRepeat\n | StatementUntil\n StatementBlock = \"{\" Statement* \"}\"\n StatementLet = let id \":\" Type \"=\" Expression \";\"\n StatementReturn = return Expression \";\" --withExpression\n | return \";\" --withoutExpression \n StatementExpression = Expression \";\"\n StatementAssign = LValue \"=\" Expression \";\"\n StatementAugmentedAssign = StatementAugmentedAssignAdd\n | StatementAugmentedAssignSub\n | StatementAugmentedAssignMul\n | StatementAugmentedAssignDiv\n | StatementAugmentedAssignRem\n StatementAugmentedAssignAdd = LValue \"+=\" Expression \";\"\n StatementAugmentedAssignSub = LValue \"-=\" Expression \";\"\n StatementAugmentedAssignMul = LValue \"*=\" Expression \";\"\n StatementAugmentedAssignDiv = LValue \"/=\" Expression \";\"\n StatementAugmentedAssignRem = LValue \"%=\" Expression \";\"\n StatementCondition = if Expression \"{\" Statement* \"}\" ~else --simple\n | if Expression \"{\" Statement* \"}\" else \"{\" Statement* \"}\" --withElse\n | if Expression \"{\" Statement* \"}\" else StatementCondition --withElseIf\n StatementWhile = while \"(\" Expression \")\" \"{\" Statement* \"}\"\n StatementRepeat = repeat \"(\" Expression \")\" \"{\" Statement* \"}\"\n StatementUntil = do \"{\" Statement* \"}\" until \"(\" Expression \")\" \";\"\n\n // L-value\n LValue = id \".\" LValue --more\n | id --single\n\n // Expressions\n Expression = ExpressionConditional\n ExpressionConditional = ExpressionOr \"?\" ExpressionOr \":\" ExpressionConditional --ternary\n | ExpressionOr\n ExpressionOr = ExpressionOr \"||\" ExpressionAnd --or\n | ExpressionAnd\n ExpressionAnd = ExpressionAnd \"&&\" ExpressionCompare --and\n | ExpressionCompare\n ExpressionCompare = ExpressionCompare \"!=\" ExpressionBinary --not\n | ExpressionCompare \"==\" ExpressionBinary --eq\n | ExpressionCompare \">\" ExpressionBinary --gt\n | ExpressionCompare \">=\" ExpressionBinary --gte\n | ExpressionCompare \"<\" ExpressionBinary --lt\n | ExpressionCompare \"<=\" ExpressionBinary --lte\n | ExpressionBinary\n ExpressionBinary = ExpressionBinary \">>\" ExpressionAdd --shr\n | ExpressionBinary \"<<\" ExpressionAdd --shl\n | ExpressionBinary \"&\" ExpressionAdd --bin_and\n | ExpressionBinary \"|\" ExpressionAdd --bin_or\n | ExpressionAdd\n ExpressionAdd = ExpressionAdd \"+\" ~\"+\" ExpressionMul --add\n | ExpressionAdd \"-\" ~\"-\" ExpressionMul --sub\n | ExpressionMul\n ExpressionMul = ExpressionMul \"*\" ExpressionUnary --mul\n | ExpressionMul \"/\" ExpressionUnary --div\n | ExpressionMul \"%\" ExpressionUnary --rem\n | ExpressionUnary\n ExpressionUnary = \"-\" ExpressionUnarySuffix --neg\n | \"+\" ExpressionUnarySuffix --add\n | \"!\" ExpressionUnarySuffix --not\n | ExpressionUnarySuffix\n ExpressionUnarySuffix = ExpressionValue \"!!\" --notNull\n | ExpressionValue\n ExpressionBracket = \"(\" Expression \")\"\n\n // Order is important\n ExpressionValue = ExpressionCall\n | ExpressionField\n | ExpressionStaticCall\n | ExpressionBracket\n | ExpressionNew\n | integerLiteral\n | boolLiteral\n | id\n | null\n | ExpressionInitOf\n | ExpressionString\n ExpressionString = stringLiteral\n ExpressionField = ExpressionValue \".\" id ~\"(\"\n ExpressionCall = ExpressionValue \".\" id \"(\" ListOf \")\"\n ExpressionNew = id \"{\" ListOf \"}\" --noTrailing\n | id \"{\" ListOf \",\" \"}\" --withTrailing\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,5773]},null,[],["app",{"sourceInterval":[5752,5773]},"ExpressionConditional",[]]],"ExpressionConditional_ternary":["define",{"sourceInterval":[5802,5867]},null,[],["seq",{"sourceInterval":[5802,5857]},["app",{"sourceInterval":[5802,5814]},"ExpressionOr",[]],["terminal",{"sourceInterval":[5815,5818]},"?"],["app",{"sourceInterval":[5819,5831]},"ExpressionOr",[]],["terminal",{"sourceInterval":[5832,5835]},":"],["app",{"sourceInterval":[5836,5857]},"ExpressionConditional",[]]]],"ExpressionConditional":["define",{"sourceInterval":[5778,5908]},null,[],["alt",{"sourceInterval":[5802,5908]},["app",{"sourceInterval":[5802,5857]},"ExpressionConditional_ternary",[]],["app",{"sourceInterval":[5896,5908]},"ExpressionOr",[]]]],"ExpressionOr_or":["define",{"sourceInterval":[5928,5964]},null,[],["seq",{"sourceInterval":[5928,5959]},["app",{"sourceInterval":[5928,5940]},"ExpressionOr",[]],["terminal",{"sourceInterval":[5941,5945]},"||"],["app",{"sourceInterval":[5946,5959]},"ExpressionAnd",[]]]],"ExpressionOr":["define",{"sourceInterval":[5913,5997]},null,[],["alt",{"sourceInterval":[5928,5997]},["app",{"sourceInterval":[5928,5959]},"ExpressionOr_or",[]],["app",{"sourceInterval":[5984,5997]},"ExpressionAnd",[]]]],"ExpressionAnd_and":["define",{"sourceInterval":[6018,6060]},null,[],["seq",{"sourceInterval":[6018,6054]},["app",{"sourceInterval":[6018,6031]},"ExpressionAnd",[]],["terminal",{"sourceInterval":[6032,6036]},"&&"],["app",{"sourceInterval":[6037,6054]},"ExpressionCompare",[]]]],"ExpressionAnd":["define",{"sourceInterval":[6002,6098]},null,[],["alt",{"sourceInterval":[6018,6098]},["app",{"sourceInterval":[6018,6054]},"ExpressionAnd_and",[]],["app",{"sourceInterval":[6081,6098]},"ExpressionCompare",[]]]],"ExpressionCompare_not":["define",{"sourceInterval":[6123,6168]},null,[],["seq",{"sourceInterval":[6123,6162]},["app",{"sourceInterval":[6123,6140]},"ExpressionCompare",[]],["terminal",{"sourceInterval":[6141,6145]},"!="],["app",{"sourceInterval":[6146,6162]},"ExpressionBinary",[]]]],"ExpressionCompare_eq":["define",{"sourceInterval":[6193,6237]},null,[],["seq",{"sourceInterval":[6193,6232]},["app",{"sourceInterval":[6193,6210]},"ExpressionCompare",[]],["terminal",{"sourceInterval":[6211,6215]},"=="],["app",{"sourceInterval":[6216,6232]},"ExpressionBinary",[]]]],"ExpressionCompare_gt":["define",{"sourceInterval":[6262,6305]},null,[],["seq",{"sourceInterval":[6262,6300]},["app",{"sourceInterval":[6262,6279]},"ExpressionCompare",[]],["terminal",{"sourceInterval":[6280,6283]},">"],["app",{"sourceInterval":[6284,6300]},"ExpressionBinary",[]]]],"ExpressionCompare_gte":["define",{"sourceInterval":[6330,6375]},null,[],["seq",{"sourceInterval":[6330,6369]},["app",{"sourceInterval":[6330,6347]},"ExpressionCompare",[]],["terminal",{"sourceInterval":[6348,6352]},">="],["app",{"sourceInterval":[6353,6369]},"ExpressionBinary",[]]]],"ExpressionCompare_lt":["define",{"sourceInterval":[6400,6443]},null,[],["seq",{"sourceInterval":[6400,6438]},["app",{"sourceInterval":[6400,6417]},"ExpressionCompare",[]],["terminal",{"sourceInterval":[6418,6421]},"<"],["app",{"sourceInterval":[6422,6438]},"ExpressionBinary",[]]]],"ExpressionCompare_lte":["define",{"sourceInterval":[6468,6513]},null,[],["seq",{"sourceInterval":[6468,6507]},["app",{"sourceInterval":[6468,6485]},"ExpressionCompare",[]],["terminal",{"sourceInterval":[6486,6490]},"<="],["app",{"sourceInterval":[6491,6507]},"ExpressionBinary",[]]]],"ExpressionCompare":["define",{"sourceInterval":[6103,6554]},null,[],["alt",{"sourceInterval":[6123,6554]},["app",{"sourceInterval":[6123,6162]},"ExpressionCompare_not",[]],["app",{"sourceInterval":[6193,6232]},"ExpressionCompare_eq",[]],["app",{"sourceInterval":[6262,6300]},"ExpressionCompare_gt",[]],["app",{"sourceInterval":[6330,6369]},"ExpressionCompare_gte",[]],["app",{"sourceInterval":[6400,6438]},"ExpressionCompare_lt",[]],["app",{"sourceInterval":[6468,6507]},"ExpressionCompare_lte",[]],["app",{"sourceInterval":[6538,6554]},"ExpressionBinary",[]]]],"ExpressionBinary_shr":["define",{"sourceInterval":[6578,6619]},null,[],["seq",{"sourceInterval":[6578,6613]},["app",{"sourceInterval":[6578,6594]},"ExpressionBinary",[]],["terminal",{"sourceInterval":[6595,6599]},">>"],["app",{"sourceInterval":[6600,6613]},"ExpressionAdd",[]]]],"ExpressionBinary_shl":["define",{"sourceInterval":[6642,6683]},null,[],["seq",{"sourceInterval":[6642,6677]},["app",{"sourceInterval":[6642,6658]},"ExpressionBinary",[]],["terminal",{"sourceInterval":[6659,6663]},"<<"],["app",{"sourceInterval":[6664,6677]},"ExpressionAdd",[]]]],"ExpressionBinary_bin_and":["define",{"sourceInterval":[6706,6750]},null,[],["seq",{"sourceInterval":[6706,6740]},["app",{"sourceInterval":[6706,6722]},"ExpressionBinary",[]],["terminal",{"sourceInterval":[6723,6726]},"&"],["app",{"sourceInterval":[6727,6740]},"ExpressionAdd",[]]]],"ExpressionBinary_bin_or":["define",{"sourceInterval":[6773,6816]},null,[],["seq",{"sourceInterval":[6773,6807]},["app",{"sourceInterval":[6773,6789]},"ExpressionBinary",[]],["terminal",{"sourceInterval":[6790,6793]},"|"],["app",{"sourceInterval":[6794,6807]},"ExpressionAdd",[]]]],"ExpressionBinary":["define",{"sourceInterval":[6559,6852]},null,[],["alt",{"sourceInterval":[6578,6852]},["app",{"sourceInterval":[6578,6613]},"ExpressionBinary_shr",[]],["app",{"sourceInterval":[6642,6677]},"ExpressionBinary_shl",[]],["app",{"sourceInterval":[6706,6740]},"ExpressionBinary_bin_and",[]],["app",{"sourceInterval":[6773,6807]},"ExpressionBinary_bin_or",[]],["app",{"sourceInterval":[6839,6852]},"ExpressionAdd",[]]]],"ExpressionAdd_add":["define",{"sourceInterval":[6873,6915]},null,[],["seq",{"sourceInterval":[6873,6909]},["app",{"sourceInterval":[6873,6886]},"ExpressionAdd",[]],["terminal",{"sourceInterval":[6887,6890]},"+"],["not",{"sourceInterval":[6891,6895]},["terminal",{"sourceInterval":[6892,6895]},"+"]],["app",{"sourceInterval":[6896,6909]},"ExpressionMul",[]]]],"ExpressionAdd_sub":["define",{"sourceInterval":[6936,6978]},null,[],["seq",{"sourceInterval":[6936,6972]},["app",{"sourceInterval":[6936,6949]},"ExpressionAdd",[]],["terminal",{"sourceInterval":[6950,6953]},"-"],["not",{"sourceInterval":[6954,6958]},["terminal",{"sourceInterval":[6955,6958]},"-"]],["app",{"sourceInterval":[6959,6972]},"ExpressionMul",[]]]],"ExpressionAdd":["define",{"sourceInterval":[6857,7012]},null,[],["alt",{"sourceInterval":[6873,7012]},["app",{"sourceInterval":[6873,6909]},"ExpressionAdd_add",[]],["app",{"sourceInterval":[6936,6972]},"ExpressionAdd_sub",[]],["app",{"sourceInterval":[6999,7012]},"ExpressionMul",[]]]],"ExpressionMul_mul":["define",{"sourceInterval":[7033,7072]},null,[],["seq",{"sourceInterval":[7033,7066]},["app",{"sourceInterval":[7033,7046]},"ExpressionMul",[]],["terminal",{"sourceInterval":[7047,7050]},"*"],["app",{"sourceInterval":[7051,7066]},"ExpressionUnary",[]]]],"ExpressionMul_div":["define",{"sourceInterval":[7093,7132]},null,[],["seq",{"sourceInterval":[7093,7126]},["app",{"sourceInterval":[7093,7106]},"ExpressionMul",[]],["terminal",{"sourceInterval":[7107,7110]},"/"],["app",{"sourceInterval":[7111,7126]},"ExpressionUnary",[]]]],"ExpressionMul_rem":["define",{"sourceInterval":[7153,7192]},null,[],["seq",{"sourceInterval":[7153,7186]},["app",{"sourceInterval":[7153,7166]},"ExpressionMul",[]],["terminal",{"sourceInterval":[7167,7170]},"%"],["app",{"sourceInterval":[7171,7186]},"ExpressionUnary",[]]]],"ExpressionMul":["define",{"sourceInterval":[7017,7228]},null,[],["alt",{"sourceInterval":[7033,7228]},["app",{"sourceInterval":[7033,7066]},"ExpressionMul_mul",[]],["app",{"sourceInterval":[7093,7126]},"ExpressionMul_div",[]],["app",{"sourceInterval":[7153,7186]},"ExpressionMul_rem",[]],["app",{"sourceInterval":[7213,7228]},"ExpressionUnary",[]]]],"ExpressionUnary_neg":["define",{"sourceInterval":[7251,7282]},null,[],["seq",{"sourceInterval":[7251,7276]},["terminal",{"sourceInterval":[7251,7254]},"-"],["app",{"sourceInterval":[7255,7276]},"ExpressionUnarySuffix",[]]]],"ExpressionUnary_add":["define",{"sourceInterval":[7305,7336]},null,[],["seq",{"sourceInterval":[7305,7330]},["terminal",{"sourceInterval":[7305,7308]},"+"],["app",{"sourceInterval":[7309,7330]},"ExpressionUnarySuffix",[]]]],"ExpressionUnary_not":["define",{"sourceInterval":[7359,7390]},null,[],["seq",{"sourceInterval":[7359,7384]},["terminal",{"sourceInterval":[7359,7362]},"!"],["app",{"sourceInterval":[7363,7384]},"ExpressionUnarySuffix",[]]]],"ExpressionUnary":["define",{"sourceInterval":[7233,7434]},null,[],["alt",{"sourceInterval":[7251,7434]},["app",{"sourceInterval":[7251,7276]},"ExpressionUnary_neg",[]],["app",{"sourceInterval":[7305,7330]},"ExpressionUnary_add",[]],["app",{"sourceInterval":[7359,7384]},"ExpressionUnary_not",[]],["app",{"sourceInterval":[7413,7434]},"ExpressionUnarySuffix",[]]]],"ExpressionUnarySuffix_notNull":["define",{"sourceInterval":[7463,7493]},null,[],["seq",{"sourceInterval":[7463,7483]},["app",{"sourceInterval":[7463,7478]},"ExpressionValue",[]],["terminal",{"sourceInterval":[7479,7483]},"!!"]]],"ExpressionUnarySuffix":["define",{"sourceInterval":[7439,7537]},null,[],["alt",{"sourceInterval":[7463,7537]},["app",{"sourceInterval":[7463,7483]},"ExpressionUnarySuffix_notNull",[]],["app",{"sourceInterval":[7522,7537]},"ExpressionValue",[]]]],"ExpressionBracket":["define",{"sourceInterval":[7542,7580]},null,[],["seq",{"sourceInterval":[7562,7580]},["terminal",{"sourceInterval":[7562,7565]},"("],["app",{"sourceInterval":[7566,7576]},"Expression",[]],["terminal",{"sourceInterval":[7577,7580]},")"]]],"ExpressionValue":["define",{"sourceInterval":[7612,8002]},null,[],["alt",{"sourceInterval":[7630,8002]},["app",{"sourceInterval":[7630,7644]},"ExpressionCall",[]],["app",{"sourceInterval":[7667,7682]},"ExpressionField",[]],["app",{"sourceInterval":[7705,7725]},"ExpressionStaticCall",[]],["app",{"sourceInterval":[7748,7765]},"ExpressionBracket",[]],["app",{"sourceInterval":[7788,7801]},"ExpressionNew",[]],["app",{"sourceInterval":[7824,7838]},"integerLiteral",[]],["app",{"sourceInterval":[7861,7872]},"boolLiteral",[]],["app",{"sourceInterval":[7895,7897]},"id",[]],["app",{"sourceInterval":[7920,7924]},"null",[]],["app",{"sourceInterval":[7947,7963]},"ExpressionInitOf",[]],["app",{"sourceInterval":[7986,8002]},"ExpressionString",[]]]],"ExpressionString":["define",{"sourceInterval":[8007,8039]},null,[],["app",{"sourceInterval":[8026,8039]},"stringLiteral",[]]],"ExpressionField":["define",{"sourceInterval":[8044,8089]},null,[],["seq",{"sourceInterval":[8062,8089]},["app",{"sourceInterval":[8062,8077]},"ExpressionValue",[]],["terminal",{"sourceInterval":[8078,8081]},"."],["app",{"sourceInterval":[8082,8084]},"id",[]],["not",{"sourceInterval":[8085,8089]},["terminal",{"sourceInterval":[8086,8089]},"("]]]],"ExpressionCall":["define",{"sourceInterval":[8094,8165]},null,[],["seq",{"sourceInterval":[8111,8165]},["app",{"sourceInterval":[8111,8126]},"ExpressionValue",[]],["terminal",{"sourceInterval":[8127,8130]},"."],["app",{"sourceInterval":[8131,8133]},"id",[]],["terminal",{"sourceInterval":[8134,8137]},"("],["app",{"sourceInterval":[8138,8161]},"ListOf",[["app",{"sourceInterval":[8145,8155]},"Expression",[]],["terminal",{"sourceInterval":[8157,8160]},","]]],["terminal",{"sourceInterval":[8162,8165]},")"]]],"ExpressionNew_noTrailing":["define",{"sourceInterval":[8186,8241]},null,[],["seq",{"sourceInterval":[8186,8222]},["app",{"sourceInterval":[8186,8188]},"id",[]],["terminal",{"sourceInterval":[8189,8192]},"{"],["app",{"sourceInterval":[8193,8218]},"ListOf",[["app",{"sourceInterval":[8200,8212]},"NewParameter",[]],["terminal",{"sourceInterval":[8214,8217]},","]]],["terminal",{"sourceInterval":[8219,8222]},"}"]]],"ExpressionNew_withTrailing":["define",{"sourceInterval":[8262,8319]},null,[],["seq",{"sourceInterval":[8262,8302]},["app",{"sourceInterval":[8262,8264]},"id",[]],["terminal",{"sourceInterval":[8265,8268]},"{"],["app",{"sourceInterval":[8269,8294]},"ListOf",[["app",{"sourceInterval":[8276,8288]},"NewParameter",[]],["terminal",{"sourceInterval":[8290,8293]},","]]],["terminal",{"sourceInterval":[8295,8298]},","],["terminal",{"sourceInterval":[8299,8302]},"}"]]],"ExpressionNew":["define",{"sourceInterval":[8170,8319]},null,[],["alt",{"sourceInterval":[8186,8319]},["app",{"sourceInterval":[8186,8222]},"ExpressionNew_noTrailing",[]],["app",{"sourceInterval":[8262,8302]},"ExpressionNew_withTrailing",[]]]],"NewParameter":["define",{"sourceInterval":[8324,8356]},null,[],["seq",{"sourceInterval":[8339,8356]},["app",{"sourceInterval":[8339,8341]},"id",[]],["terminal",{"sourceInterval":[8342,8345]},":"],["app",{"sourceInterval":[8346,8356]},"Expression",[]]]],"ExpressionStaticCall":["define",{"sourceInterval":[8361,8418]},null,[],["seq",{"sourceInterval":[8384,8418]},["app",{"sourceInterval":[8384,8386]},"id",[]],["terminal",{"sourceInterval":[8387,8390]},"("],["app",{"sourceInterval":[8391,8414]},"ListOf",[["app",{"sourceInterval":[8398,8408]},"Expression",[]],["terminal",{"sourceInterval":[8410,8413]},","]]],["terminal",{"sourceInterval":[8415,8418]},")"]]],"ExpressionInitOf":["define",{"sourceInterval":[8423,8483]},null,[],["seq",{"sourceInterval":[8442,8483]},["app",{"sourceInterval":[8442,8448]},"initOf",[]],["app",{"sourceInterval":[8449,8451]},"id",[]],["terminal",{"sourceInterval":[8452,8455]},"("],["app",{"sourceInterval":[8456,8479]},"ListOf",[["app",{"sourceInterval":[8463,8473]},"Expression",[]],["terminal",{"sourceInterval":[8475,8478]},","]]],["terminal",{"sourceInterval":[8480,8483]},")"]]],"typeLiteral":["define",{"sourceInterval":[8509,8553]},null,[],["seq",{"sourceInterval":[8523,8553]},["app",{"sourceInterval":[8523,8536]},"letterAsciiUC",[]],["star",{"sourceInterval":[8537,8553]},["app",{"sourceInterval":[8537,8552]},"typeLiteralPart",[]]]]],"typeLiteralPart":["define",{"sourceInterval":[8558,8601]},null,[],["alt",{"sourceInterval":[8576,8601]},["app",{"sourceInterval":[8576,8587]},"letterAscii",[]],["app",{"sourceInterval":[8590,8595]},"digit",[]],["terminal",{"sourceInterval":[8598,8601]},"_"]]],"integerLiteral":["define",{"sourceInterval":[8808,8902]},null,[],["alt",{"sourceInterval":[8825,8902]},["app",{"sourceInterval":[8825,8842]},"integerLiteralHex",[]],["app",{"sourceInterval":[8845,8862]},"integerLiteralBin",[]],["app",{"sourceInterval":[8865,8882]},"integerLiteralOct",[]],["app",{"sourceInterval":[8885,8902]},"integerLiteralDec",[]]]],"integerLiteralDec_nonZeroIntegerLiteralDec":["define",{"sourceInterval":[8949,9003]},null,[],["seq",{"sourceInterval":[8949,8975]},["app",{"sourceInterval":[8949,8961]},"nonZeroDigit",[]],["star",{"sourceInterval":[8962,8975]},["seq",{"sourceInterval":[8963,8973]},["opt",{"sourceInterval":[8963,8967]},["terminal",{"sourceInterval":[8963,8966]},"_"]],["app",{"sourceInterval":[8968,8973]},"digit",[]]]]]],"integerLiteralDec_integerLiteralWithLeadingZero":["define",{"sourceInterval":[9028,9087]},null,[],["seq",{"sourceInterval":[9028,9038]},["terminal",{"sourceInterval":[9028,9031]},"0"],["star",{"sourceInterval":[9032,9038]},["app",{"sourceInterval":[9032,9037]},"digit",[]]]]],"integerLiteralDec":["define",{"sourceInterval":[8929,9087]},null,[],["alt",{"sourceInterval":[8949,9087]},["app",{"sourceInterval":[8949,8975]},"integerLiteralDec_nonZeroIntegerLiteralDec",[]],["app",{"sourceInterval":[9028,9038]},"integerLiteralDec_integerLiteralWithLeadingZero",[]]]],"integerLiteralHex":["define",{"sourceInterval":[9092,9151]},null,[],["seq",{"sourceInterval":[9112,9151]},["alt",{"sourceInterval":[9113,9124]},["terminal",{"sourceInterval":[9113,9117]},"0x"],["terminal",{"sourceInterval":[9120,9124]},"0X"]],["app",{"sourceInterval":[9126,9134]},"hexDigit",[]],["star",{"sourceInterval":[9135,9151]},["seq",{"sourceInterval":[9136,9149]},["opt",{"sourceInterval":[9136,9140]},["terminal",{"sourceInterval":[9136,9139]},"_"]],["app",{"sourceInterval":[9141,9149]},"hexDigit",[]]]]]],"integerLiteralBin":["define",{"sourceInterval":[9156,9215]},null,[],["seq",{"sourceInterval":[9176,9215]},["alt",{"sourceInterval":[9177,9188]},["terminal",{"sourceInterval":[9177,9181]},"0b"],["terminal",{"sourceInterval":[9184,9188]},"0B"]],["app",{"sourceInterval":[9190,9198]},"binDigit",[]],["star",{"sourceInterval":[9199,9215]},["seq",{"sourceInterval":[9200,9213]},["opt",{"sourceInterval":[9200,9204]},["terminal",{"sourceInterval":[9200,9203]},"_"]],["app",{"sourceInterval":[9205,9213]},"binDigit",[]]]]]],"integerLiteralOct":["define",{"sourceInterval":[9220,9279]},null,[],["seq",{"sourceInterval":[9240,9279]},["alt",{"sourceInterval":[9241,9252]},["terminal",{"sourceInterval":[9241,9245]},"0o"],["terminal",{"sourceInterval":[9248,9252]},"0O"]],["app",{"sourceInterval":[9254,9262]},"octDigit",[]],["star",{"sourceInterval":[9263,9279]},["seq",{"sourceInterval":[9264,9277]},["opt",{"sourceInterval":[9264,9268]},["terminal",{"sourceInterval":[9264,9267]},"_"]],["app",{"sourceInterval":[9269,9277]},"octDigit",[]]]]]],"binDigit":["define",{"sourceInterval":[9284,9304]},null,[],["alt",{"sourceInterval":[9295,9304]},["terminal",{"sourceInterval":[9295,9298]},"0"],["terminal",{"sourceInterval":[9301,9304]},"1"]]],"octDigit":["define",{"sourceInterval":[9309,9328]},null,[],["range",{"sourceInterval":[9320,9328]},"0","7"]],"nonZeroDigit":["define",{"sourceInterval":[9333,9356]},null,[],["range",{"sourceInterval":[9348,9356]},"1","9"]],"letterAsciiLC":["define",{"sourceInterval":[9377,9401]},null,[],["range",{"sourceInterval":[9393,9401]},"a","z"]],"letterAsciiUC":["define",{"sourceInterval":[9406,9430]},null,[],["range",{"sourceInterval":[9422,9430]},"A","Z"]],"letterAscii":["define",{"sourceInterval":[9435,9478]},null,[],["alt",{"sourceInterval":[9449,9478]},["app",{"sourceInterval":[9449,9462]},"letterAsciiLC",[]],["app",{"sourceInterval":[9465,9478]},"letterAsciiUC",[]]]],"letterComment":["define",{"sourceInterval":[9483,9542]},null,[],["alt",{"sourceInterval":[9499,9542]},["app",{"sourceInterval":[9499,9512]},"letterAsciiLC",[]],["app",{"sourceInterval":[9515,9528]},"letterAsciiUC",[]],["app",{"sourceInterval":[9531,9536]},"digit",[]],["terminal",{"sourceInterval":[9539,9542]},"_"]]],"idStart":["define",{"sourceInterval":[9566,9593]},null,[],["alt",{"sourceInterval":[9576,9593]},["app",{"sourceInterval":[9576,9587]},"letterAscii",[]],["terminal",{"sourceInterval":[9590,9593]},"_"]]],"idPart":["define",{"sourceInterval":[9598,9632]},null,[],["alt",{"sourceInterval":[9607,9632]},["app",{"sourceInterval":[9607,9618]},"letterAscii",[]],["app",{"sourceInterval":[9621,9626]},"digit",[]],["terminal",{"sourceInterval":[9629,9632]},"_"]]],"id":["define",{"sourceInterval":[9637,9675]},null,[],["seq",{"sourceInterval":[9642,9675]},["not",{"sourceInterval":[9642,9655]},["app",{"sourceInterval":[9643,9655]},"reservedWord",[]]],["lex",{"sourceInterval":[9656,9664]},["app",{"sourceInterval":[9657,9664]},"idStart",[]]],["lex",{"sourceInterval":[9665,9675]},["star",{"sourceInterval":[9667,9674]},["app",{"sourceInterval":[9667,9673]},"idPart",[]]]]]],"funcLetter":["define",{"sourceInterval":[9696,9757]},null,[],["alt",{"sourceInterval":[9709,9757]},["app",{"sourceInterval":[9709,9720]},"letterAscii",[]],["terminal",{"sourceInterval":[9723,9726]},"_"],["terminal",{"sourceInterval":[9729,9732]},"'"],["terminal",{"sourceInterval":[9735,9738]},"?"],["terminal",{"sourceInterval":[9741,9744]},"!"],["terminal",{"sourceInterval":[9747,9751]},"::"],["terminal",{"sourceInterval":[9754,9757]},"&"]]],"funcId":["define",{"sourceInterval":[9762,9804]},null,[],["seq",{"sourceInterval":[9771,9804]},["app",{"sourceInterval":[9771,9781]},"funcLetter",[]],["star",{"sourceInterval":[9782,9804]},["lex",{"sourceInterval":[9782,9803]},["alt",{"sourceInterval":[9784,9802]},["app",{"sourceInterval":[9784,9794]},"funcLetter",[]],["app",{"sourceInterval":[9797,9802]},"digit",[]]]]]]],"boolLiteral":["define",{"sourceInterval":[9830,9870]},null,[],["seq",{"sourceInterval":[9844,9870]},["alt",{"sourceInterval":[9845,9861]},["terminal",{"sourceInterval":[9845,9851]},"true"],["terminal",{"sourceInterval":[9854,9861]},"false"]],["not",{"sourceInterval":[9863,9870]},["app",{"sourceInterval":[9864,9870]},"idPart",[]]]]],"stringLiteralCharacter":["define",{"sourceInterval":[9898,9958]},null,[],["seq",{"sourceInterval":[9923,9958]},["not",{"sourceInterval":[9923,9954]},["alt",{"sourceInterval":[9925,9953]},["terminal",{"sourceInterval":[9925,9929]},"\""],["terminal",{"sourceInterval":[9932,9936]},"\\"],["app",{"sourceInterval":[9939,9953]},"lineTerminator",[]]]],["app",{"sourceInterval":[9955,9958]},"any",[]]]],"stringLiteral":["define",{"sourceInterval":[9963,10012]},null,[],["seq",{"sourceInterval":[9979,10012]},["terminal",{"sourceInterval":[9979,9983]},"\""],["star",{"sourceInterval":[9984,10007]},["app",{"sourceInterval":[9984,10006]},"stringLiteralCharacter",[]]],["terminal",{"sourceInterval":[10008,10012]},"\""]]],"keyword":["define",{"sourceInterval":[10065,10578]},null,[],["alt",{"sourceInterval":[10075,10578]},["app",{"sourceInterval":[10075,10078]},"fun",[]],["app",{"sourceInterval":[10094,10097]},"let",[]],["app",{"sourceInterval":[10112,10118]},"return",[]],["app",{"sourceInterval":[10134,10140]},"extend",[]],["app",{"sourceInterval":[10156,10162]},"native",[]],["app",{"sourceInterval":[10178,10184]},"public",[]],["app",{"sourceInterval":[10200,10204]},"null",[]],["app",{"sourceInterval":[10220,10222]},"if",[]],["app",{"sourceInterval":[10238,10242]},"else",[]],["app",{"sourceInterval":[10258,10263]},"while",[]],["app",{"sourceInterval":[10279,10285]},"repeat",[]],["app",{"sourceInterval":[10301,10303]},"do",[]],["app",{"sourceInterval":[10319,10324]},"until",[]],["app",{"sourceInterval":[10340,10342]},"as",[]],["app",{"sourceInterval":[10359,10366]},"mutates",[]],["app",{"sourceInterval":[10381,10388]},"extends",[]],["app",{"sourceInterval":[10403,10409]},"import",[]],["app",{"sourceInterval":[10424,10428]},"with",[]],["app",{"sourceInterval":[10443,10448]},"trait",[]],["app",{"sourceInterval":[10463,10469]},"initOf",[]],["app",{"sourceInterval":[10484,10492]},"override",[]],["app",{"sourceInterval":[10507,10515]},"abstract",[]],["app",{"sourceInterval":[10530,10537]},"virtual",[]],["app",{"sourceInterval":[10552,10558]},"inline",[]],["app",{"sourceInterval":[10573,10578]},"const",[]]]],"contract":["define",{"sourceInterval":[10583,10612]},null,[],["seq",{"sourceInterval":[10594,10612]},["terminal",{"sourceInterval":[10594,10604]},"contract"],["not",{"sourceInterval":[10605,10612]},["app",{"sourceInterval":[10606,10612]},"idPart",[]]]]],"let":["define",{"sourceInterval":[10617,10636]},null,[],["seq",{"sourceInterval":[10623,10636]},["terminal",{"sourceInterval":[10623,10628]},"let"],["not",{"sourceInterval":[10629,10636]},["app",{"sourceInterval":[10630,10636]},"idPart",[]]]]],"fun":["define",{"sourceInterval":[10641,10660]},null,[],["seq",{"sourceInterval":[10647,10660]},["terminal",{"sourceInterval":[10647,10652]},"fun"],["not",{"sourceInterval":[10653,10660]},["app",{"sourceInterval":[10654,10660]},"idPart",[]]]]],"return":["define",{"sourceInterval":[10665,10690]},null,[],["seq",{"sourceInterval":[10674,10690]},["terminal",{"sourceInterval":[10674,10682]},"return"],["not",{"sourceInterval":[10683,10690]},["app",{"sourceInterval":[10684,10690]},"idPart",[]]]]],"extend":["define",{"sourceInterval":[10695,10720]},null,[],["seq",{"sourceInterval":[10704,10720]},["terminal",{"sourceInterval":[10704,10712]},"extend"],["not",{"sourceInterval":[10713,10720]},["app",{"sourceInterval":[10714,10720]},"idPart",[]]]]],"native":["define",{"sourceInterval":[10725,10750]},null,[],["seq",{"sourceInterval":[10734,10750]},["terminal",{"sourceInterval":[10734,10742]},"native"],["not",{"sourceInterval":[10743,10750]},["app",{"sourceInterval":[10744,10750]},"idPart",[]]]]],"public":["define",{"sourceInterval":[10755,10780]},null,[],["seq",{"sourceInterval":[10764,10780]},["terminal",{"sourceInterval":[10764,10772]},"public"],["not",{"sourceInterval":[10773,10780]},["app",{"sourceInterval":[10774,10780]},"idPart",[]]]]],"null":["define",{"sourceInterval":[10785,10806]},null,[],["seq",{"sourceInterval":[10792,10806]},["terminal",{"sourceInterval":[10792,10798]},"null"],["not",{"sourceInterval":[10799,10806]},["app",{"sourceInterval":[10800,10806]},"idPart",[]]]]],"if":["define",{"sourceInterval":[10811,10828]},null,[],["seq",{"sourceInterval":[10816,10828]},["terminal",{"sourceInterval":[10816,10820]},"if"],["not",{"sourceInterval":[10821,10828]},["app",{"sourceInterval":[10822,10828]},"idPart",[]]]]],"else":["define",{"sourceInterval":[10833,10854]},null,[],["seq",{"sourceInterval":[10840,10854]},["terminal",{"sourceInterval":[10840,10846]},"else"],["not",{"sourceInterval":[10847,10854]},["app",{"sourceInterval":[10848,10854]},"idPart",[]]]]],"while":["define",{"sourceInterval":[10859,10882]},null,[],["seq",{"sourceInterval":[10867,10882]},["terminal",{"sourceInterval":[10867,10874]},"while"],["not",{"sourceInterval":[10875,10882]},["app",{"sourceInterval":[10876,10882]},"idPart",[]]]]],"repeat":["define",{"sourceInterval":[10887,10912]},null,[],["seq",{"sourceInterval":[10896,10912]},["terminal",{"sourceInterval":[10896,10904]},"repeat"],["not",{"sourceInterval":[10905,10912]},["app",{"sourceInterval":[10906,10912]},"idPart",[]]]]],"do":["define",{"sourceInterval":[10917,10934]},null,[],["seq",{"sourceInterval":[10922,10934]},["terminal",{"sourceInterval":[10922,10926]},"do"],["not",{"sourceInterval":[10927,10934]},["app",{"sourceInterval":[10928,10934]},"idPart",[]]]]],"until":["define",{"sourceInterval":[10939,10962]},null,[],["seq",{"sourceInterval":[10947,10962]},["terminal",{"sourceInterval":[10947,10954]},"until"],["not",{"sourceInterval":[10955,10962]},["app",{"sourceInterval":[10956,10962]},"idPart",[]]]]],"as":["define",{"sourceInterval":[10967,10984]},null,[],["seq",{"sourceInterval":[10972,10984]},["terminal",{"sourceInterval":[10972,10976]},"as"],["not",{"sourceInterval":[10977,10984]},["app",{"sourceInterval":[10978,10984]},"idPart",[]]]]],"mutates":["define",{"sourceInterval":[10989,11016]},null,[],["seq",{"sourceInterval":[10999,11016]},["terminal",{"sourceInterval":[10999,11008]},"mutates"],["not",{"sourceInterval":[11009,11016]},["app",{"sourceInterval":[11010,11016]},"idPart",[]]]]],"extends":["define",{"sourceInterval":[11021,11048]},null,[],["seq",{"sourceInterval":[11031,11048]},["terminal",{"sourceInterval":[11031,11040]},"extends"],["not",{"sourceInterval":[11041,11048]},["app",{"sourceInterval":[11042,11048]},"idPart",[]]]]],"import":["define",{"sourceInterval":[11053,11078]},null,[],["seq",{"sourceInterval":[11062,11078]},["terminal",{"sourceInterval":[11062,11070]},"import"],["not",{"sourceInterval":[11071,11078]},["app",{"sourceInterval":[11072,11078]},"idPart",[]]]]],"with":["define",{"sourceInterval":[11083,11104]},null,[],["seq",{"sourceInterval":[11090,11104]},["terminal",{"sourceInterval":[11090,11096]},"with"],["not",{"sourceInterval":[11097,11104]},["app",{"sourceInterval":[11098,11104]},"idPart",[]]]]],"trait":["define",{"sourceInterval":[11109,11132]},null,[],["seq",{"sourceInterval":[11117,11132]},["terminal",{"sourceInterval":[11117,11124]},"trait"],["not",{"sourceInterval":[11125,11132]},["app",{"sourceInterval":[11126,11132]},"idPart",[]]]]],"initOf":["define",{"sourceInterval":[11137,11162]},null,[],["seq",{"sourceInterval":[11146,11162]},["terminal",{"sourceInterval":[11146,11154]},"initOf"],["not",{"sourceInterval":[11155,11162]},["app",{"sourceInterval":[11156,11162]},"idPart",[]]]]],"virtual":["define",{"sourceInterval":[11167,11194]},null,[],["seq",{"sourceInterval":[11177,11194]},["terminal",{"sourceInterval":[11177,11186]},"virtual"],["not",{"sourceInterval":[11187,11194]},["app",{"sourceInterval":[11188,11194]},"idPart",[]]]]],"override":["define",{"sourceInterval":[11199,11228]},null,[],["seq",{"sourceInterval":[11210,11228]},["terminal",{"sourceInterval":[11210,11220]},"override"],["not",{"sourceInterval":[11221,11228]},["app",{"sourceInterval":[11222,11228]},"idPart",[]]]]],"inline":["define",{"sourceInterval":[11233,11258]},null,[],["seq",{"sourceInterval":[11242,11258]},["terminal",{"sourceInterval":[11242,11250]},"inline"],["not",{"sourceInterval":[11251,11258]},["app",{"sourceInterval":[11252,11258]},"idPart",[]]]]],"const":["define",{"sourceInterval":[11263,11286]},null,[],["seq",{"sourceInterval":[11271,11286]},["terminal",{"sourceInterval":[11271,11278]},"const"],["not",{"sourceInterval":[11279,11286]},["app",{"sourceInterval":[11280,11286]},"idPart",[]]]]],"abstract":["define",{"sourceInterval":[11291,11320]},null,[],["seq",{"sourceInterval":[11302,11320]},["terminal",{"sourceInterval":[11302,11312]},"abstract"],["not",{"sourceInterval":[11313,11320]},["app",{"sourceInterval":[11314,11320]},"idPart",[]]]]],"nameAttribute":["define",{"sourceInterval":[11344,11367]},null,[],["terminal",{"sourceInterval":[11360,11367]},"@name"]],"reservedWord":["define",{"sourceInterval":[11389,11411]},null,[],["app",{"sourceInterval":[11404,11411]},"keyword",[]]],"space":["extend",{"sourceInterval":[11433,11466]},null,[],["alt",{"sourceInterval":[11442,11466]},["app",{"sourceInterval":[11442,11449]},"comment",[]],["app",{"sourceInterval":[11452,11466]},"lineTerminator",[]]]],"comment":["define",{"sourceInterval":[11471,11517]},null,[],["alt",{"sourceInterval":[11481,11517]},["app",{"sourceInterval":[11481,11497]},"multiLineComment",[]],["app",{"sourceInterval":[11500,11517]},"singleLineComment",[]]]],"lineTerminator":["define",{"sourceInterval":[11522,11572]},null,[],["alt",{"sourceInterval":[11539,11572]},["terminal",{"sourceInterval":[11539,11543]},"\n"],["terminal",{"sourceInterval":[11546,11550]},"\r"],["terminal",{"sourceInterval":[11553,11561]},"\u2028"],["terminal",{"sourceInterval":[11564,11572]},"\u2029"]]],"multiLineComment":["define",{"sourceInterval":[11577,11618]},null,[],["seq",{"sourceInterval":[11596,11618]},["terminal",{"sourceInterval":[11596,11600]},"/*"],["star",{"sourceInterval":[11601,11613]},["seq",{"sourceInterval":[11602,11611]},["not",{"sourceInterval":[11602,11607]},["terminal",{"sourceInterval":[11603,11607]},"*/"]],["app",{"sourceInterval":[11608,11611]},"any",[]]]],["terminal",{"sourceInterval":[11614,11618]},"*/"]]],"singleLineComment":["define",{"sourceInterval":[11623,11670]},null,[],["seq",{"sourceInterval":[11643,11670]},["terminal",{"sourceInterval":[11643,11647]},"//"],["star",{"sourceInterval":[11648,11670]},["seq",{"sourceInterval":[11649,11668]},["not",{"sourceInterval":[11649,11664]},["app",{"sourceInterval":[11650,11664]},"lineTerminator",[]]],["app",{"sourceInterval":[11665,11668]},"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 \",\" \")\" \";\" --withVoidAndTrailingComma\n | nameAttribute \"(\" funcId \")\" FunctionAttribute* native id \"(\" ListOf \")\" \":\" Type \";\" --withType\n | nameAttribute \"(\" funcId \")\" FunctionAttribute* native id \"(\" ListOf \",\" \")\" \":\" Type \";\" --withTypeAndTrailingComma\n \n // Field declarations\n Type = typeLiteral \"?\" --optional\n | typeLiteral --required\n | \"map\" \"<\" typeLiteral (as id)? \",\" typeLiteral (as id)? \">\" --map\n | \"bounced\" \"<\" typeLiteral \">\" --bounced\n Field = id \":\" Type \";\" --default\n | id \":\" Type \"=\" Expression \";\" --defaultWithInit\n | id \":\" Type as id \";\" --withSerialization\n | id \":\" Type as id \"=\" Expression \";\" --withSerializationAndInit\n \n // Constant\n ConstantAttribute = virtual --virtual\n | override --override\n | abstract --abstract\n Constant = ConstantAttribute* ~fun const id \":\" Type \"=\" Expression \";\" --withValue\n | ConstantAttribute* ~fun const id \":\" Type \";\" --withEmpty\n\n // Struct\n Struct = \"struct\" typeLiteral \"{\" StructBody* \"}\" --originary\n | \"message\" typeLiteral \"{\" StructBody* \"}\" --message\n | \"message\" \"(\" integerLiteral \")\" typeLiteral \"{\" StructBody* \"}\" --messageWithId\n StructBody = Field\n\n // Contract\n Contract = ContractAttribute* contract id \"{\" ContractBody* \"}\" --simple\n | ContractAttribute* contract id with ListOf \"{\" ContractBody* \"}\" --withTraits\n ContractInit = \"init\" \"(\" ListOf \")\" \"{\" Statement* \"}\"\n ContractBody = Field\n | ContractInit\n | ReceiveFunction\n | Function\n | Constant\n \n // Trait\n Trait = ContractAttribute* trait id \"{\" TraitBody* \"}\" --originary\n | ContractAttribute* trait id with ListOf \"{\" TraitBody* \"}\" --withTraits\n TraitBody = Field\n | ReceiveFunction\n | Function\n | Constant\n\n // Contract attributes\n ContractAttribute = \"@interface\" \"(\" stringLiteral \")\" --interface\n\n // Function\n FunctionAttribute = \"get\" --getter\n | mutates --mutates\n | extends --extends\n | virtual --virtual\n | override --override\n | inline --inline\n | abstract --abstract\n Function = FunctionAttribute* fun id \"(\" ListOf \")\" \"{\" Statement* \"}\" --withVoid\n | FunctionAttribute* fun id \"(\" ListOf \")\" \":\" Type \"{\" Statement* \"}\" --withType\n | FunctionAttribute* fun id \"(\" ListOf \")\" \";\" --abstractVoid\n | FunctionAttribute* fun id \"(\" ListOf \")\" \":\" Type \";\" --abstractType\n FunctionArg = id \":\" Type\n \n ReceiveFunction = \"receive\" \"(\" FunctionArg \")\" \"{\" Statement* \"}\" --simple\n | \"receive\" \"(\" \")\" \"{\" Statement* \"}\" --empty\n | \"receive\" \"(\" stringLiteral \")\" \"{\" Statement* \"}\" --comment\n | \"bounced\" \"(\" FunctionArg \")\" \"{\" Statement* \"}\" --bounced\n | \"external\" \"(\" FunctionArg \")\" \"{\" Statement* \"}\" --externalSimple\n | \"external\" \"(\" stringLiteral \")\" \"{\" Statement* \"}\" --externalComment\n | \"external\" \"(\" \")\" \"{\" Statement* \"}\" --externalEmpty\n\n // Statements\n Statement = StatementLet\n | StatementBlock\n | StatementReturn\n | StatementExpression\n | StatementAssign\n | StatementAugmentedAssign\n | StatementCondition\n | StatementWhile\n | StatementRepeat\n | StatementUntil\n StatementBlock = \"{\" Statement* \"}\"\n StatementLet = let id \":\" Type \"=\" Expression \";\"\n StatementReturn = return Expression \";\" --withExpression\n | return \";\" --withoutExpression \n StatementExpression = Expression \";\"\n StatementAssign = LValue \"=\" Expression \";\"\n StatementAugmentedAssign = StatementAugmentedAssignAdd\n | StatementAugmentedAssignSub\n | StatementAugmentedAssignMul\n | StatementAugmentedAssignDiv\n | StatementAugmentedAssignRem\n StatementAugmentedAssignAdd = LValue \"+=\" Expression \";\"\n StatementAugmentedAssignSub = LValue \"-=\" Expression \";\"\n StatementAugmentedAssignMul = LValue \"*=\" Expression \";\"\n StatementAugmentedAssignDiv = LValue \"/=\" Expression \";\"\n StatementAugmentedAssignRem = LValue \"%=\" Expression \";\"\n StatementCondition = if Expression \"{\" Statement* \"}\" ~else --simple\n | if Expression \"{\" Statement* \"}\" else \"{\" Statement* \"}\" --withElse\n | if Expression \"{\" Statement* \"}\" else StatementCondition --withElseIf\n StatementWhile = while \"(\" Expression \")\" \"{\" Statement* \"}\"\n StatementRepeat = repeat \"(\" Expression \")\" \"{\" Statement* \"}\"\n StatementUntil = do \"{\" Statement* \"}\" until \"(\" Expression \")\" \";\"\n\n // L-value\n LValue = id \".\" LValue --more\n | id --single\n\n // Expressions\n Expression = ExpressionConditional\n ExpressionConditional = ExpressionOr \"?\" ExpressionOr \":\" ExpressionConditional --ternary\n | ExpressionOr\n ExpressionOr = ExpressionOr \"||\" ExpressionAnd --or\n | ExpressionAnd\n ExpressionAnd = ExpressionAnd \"&&\" ExpressionCompare --and\n | ExpressionCompare\n ExpressionCompare = ExpressionCompare \"!=\" ExpressionBinary --not\n | ExpressionCompare \"==\" ExpressionBinary --eq\n | ExpressionCompare \">\" ExpressionBinary --gt\n | ExpressionCompare \">=\" ExpressionBinary --gte\n | ExpressionCompare \"<\" ExpressionBinary --lt\n | ExpressionCompare \"<=\" ExpressionBinary --lte\n | ExpressionBinary\n ExpressionBinary = ExpressionBinary \">>\" ExpressionAdd --shr\n | ExpressionBinary \"<<\" ExpressionAdd --shl\n | ExpressionBinary \"&\" ExpressionAdd --bin_and\n | ExpressionBinary \"|\" ExpressionAdd --bin_or\n | ExpressionAdd\n ExpressionAdd = ExpressionAdd \"+\" ~\"+\" ExpressionMul --add\n | ExpressionAdd \"-\" ~\"-\" ExpressionMul --sub\n | ExpressionMul\n ExpressionMul = ExpressionMul \"*\" ExpressionUnary --mul\n | ExpressionMul \"/\" ExpressionUnary --div\n | ExpressionMul \"%\" ExpressionUnary --rem\n | ExpressionUnary\n ExpressionUnary = \"-\" ExpressionUnarySuffix --neg\n | \"+\" ExpressionUnarySuffix --add\n | \"!\" ExpressionUnarySuffix --not\n | ExpressionUnarySuffix\n ExpressionUnarySuffix = ExpressionValue \"!!\" --notNull\n | ExpressionValue\n ExpressionBracket = \"(\" Expression \")\"\n\n // Order is important\n ExpressionValue = ExpressionCall\n | ExpressionField\n | ExpressionStaticCall\n | ExpressionBracket\n | ExpressionNew\n | integerLiteral\n | boolLiteral\n | id\n | null\n | ExpressionInitOf\n | ExpressionString\n ExpressionString = stringLiteral\n ExpressionField = ExpressionValue \".\" id ~\"(\"\n ExpressionCall = ExpressionValue \".\" id \"(\" ListOf \")\"\n ExpressionNew = id \"{\" ListOf \"}\" --noTrailing\n | id \"{\" ListOf \",\" \"}\" --withTrailing\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_withVoidAndTrailingComma":["define",{"sourceInterval":[614,738]},null,[],["seq",{"sourceInterval":[614,711]},["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]},")"],["terminal",{"sourceInterval":[708,711]},";"]]],"NativeFunction_withType":["define",{"sourceInterval":[760,873]},null,[],["seq",{"sourceInterval":[760,862]},["app",{"sourceInterval":[760,773]},"nameAttribute",[]],["terminal",{"sourceInterval":[774,777]},"("],["app",{"sourceInterval":[778,784]},"funcId",[]],["terminal",{"sourceInterval":[785,788]},")"],["star",{"sourceInterval":[789,807]},["app",{"sourceInterval":[789,806]},"FunctionAttribute",[]]],["app",{"sourceInterval":[808,814]},"native",[]],["app",{"sourceInterval":[815,817]},"id",[]],["terminal",{"sourceInterval":[818,821]},"("],["app",{"sourceInterval":[822,845]},"ListOf",[["app",{"sourceInterval":[829,840]},"FunctionArg",[]],["terminal",{"sourceInterval":[841,844]},","]]],["terminal",{"sourceInterval":[846,849]},")"],["terminal",{"sourceInterval":[850,853]},":"],["app",{"sourceInterval":[854,858]},"Type",[]],["terminal",{"sourceInterval":[859,862]},";"]]],"NativeFunction_withTypeAndTrailingComma":["define",{"sourceInterval":[895,1028]},null,[],["seq",{"sourceInterval":[895,1001]},["app",{"sourceInterval":[895,908]},"nameAttribute",[]],["terminal",{"sourceInterval":[909,912]},"("],["app",{"sourceInterval":[913,919]},"funcId",[]],["terminal",{"sourceInterval":[920,923]},")"],["star",{"sourceInterval":[924,942]},["app",{"sourceInterval":[924,941]},"FunctionAttribute",[]]],["app",{"sourceInterval":[943,949]},"native",[]],["app",{"sourceInterval":[950,952]},"id",[]],["terminal",{"sourceInterval":[953,956]},"("],["app",{"sourceInterval":[957,980]},"ListOf",[["app",{"sourceInterval":[964,975]},"FunctionArg",[]],["terminal",{"sourceInterval":[976,979]},","]]],["terminal",{"sourceInterval":[981,984]},","],["terminal",{"sourceInterval":[985,988]},")"],["terminal",{"sourceInterval":[989,992]},":"],["app",{"sourceInterval":[993,997]},"Type",[]],["terminal",{"sourceInterval":[998,1001]},";"]]],"NativeFunction":["define",{"sourceInterval":[471,1028]},null,[],["alt",{"sourceInterval":[488,1028]},["app",{"sourceInterval":[488,581]},"NativeFunction_withVoid",[]],["app",{"sourceInterval":[614,711]},"NativeFunction_withVoidAndTrailingComma",[]],["app",{"sourceInterval":[760,862]},"NativeFunction_withType",[]],["app",{"sourceInterval":[895,1001]},"NativeFunction_withTypeAndTrailingComma",[]]]],"Type_optional":["define",{"sourceInterval":[1071,1097]},null,[],["seq",{"sourceInterval":[1071,1086]},["app",{"sourceInterval":[1071,1082]},"typeLiteral",[]],["terminal",{"sourceInterval":[1083,1086]},"?"]]],"Type_required":["define",{"sourceInterval":[1109,1131]},null,[],["app",{"sourceInterval":[1109,1120]},"typeLiteral",[]]],"Type_map":["define",{"sourceInterval":[1143,1208]},null,[],["seq",{"sourceInterval":[1143,1202]},["terminal",{"sourceInterval":[1143,1148]},"map"],["terminal",{"sourceInterval":[1149,1152]},"<"],["app",{"sourceInterval":[1153,1164]},"typeLiteral",[]],["opt",{"sourceInterval":[1165,1173]},["seq",{"sourceInterval":[1166,1171]},["app",{"sourceInterval":[1166,1168]},"as",[]],["app",{"sourceInterval":[1169,1171]},"id",[]]]],["terminal",{"sourceInterval":[1174,1177]},","],["app",{"sourceInterval":[1178,1189]},"typeLiteral",[]],["opt",{"sourceInterval":[1190,1198]},["seq",{"sourceInterval":[1191,1196]},["app",{"sourceInterval":[1191,1193]},"as",[]],["app",{"sourceInterval":[1194,1196]},"id",[]]]],["terminal",{"sourceInterval":[1199,1202]},">"]]],"Type_bounced":["define",{"sourceInterval":[1220,1259]},null,[],["seq",{"sourceInterval":[1220,1249]},["terminal",{"sourceInterval":[1220,1229]},"bounced"],["terminal",{"sourceInterval":[1230,1233]},"<"],["app",{"sourceInterval":[1234,1245]},"typeLiteral",[]],["terminal",{"sourceInterval":[1246,1249]},">"]]],"Type":["define",{"sourceInterval":[1064,1259]},null,[],["alt",{"sourceInterval":[1071,1259]},["app",{"sourceInterval":[1071,1086]},"Type_optional",[]],["app",{"sourceInterval":[1109,1120]},"Type_required",[]],["app",{"sourceInterval":[1143,1202]},"Type_map",[]],["app",{"sourceInterval":[1220,1249]},"Type_bounced",[]]]],"Field_default":["define",{"sourceInterval":[1272,1297]},null,[],["seq",{"sourceInterval":[1272,1287]},["app",{"sourceInterval":[1272,1274]},"id",[]],["terminal",{"sourceInterval":[1275,1278]},":"],["app",{"sourceInterval":[1279,1283]},"Type",[]],["terminal",{"sourceInterval":[1284,1287]},";"]]],"Field_defaultWithInit":["define",{"sourceInterval":[1310,1358]},null,[],["seq",{"sourceInterval":[1310,1340]},["app",{"sourceInterval":[1310,1312]},"id",[]],["terminal",{"sourceInterval":[1313,1316]},":"],["app",{"sourceInterval":[1317,1321]},"Type",[]],["terminal",{"sourceInterval":[1322,1325]},"="],["app",{"sourceInterval":[1326,1336]},"Expression",[]],["terminal",{"sourceInterval":[1337,1340]},";"]]],"Field_withSerialization":["define",{"sourceInterval":[1371,1412]},null,[],["seq",{"sourceInterval":[1371,1392]},["app",{"sourceInterval":[1371,1373]},"id",[]],["terminal",{"sourceInterval":[1374,1377]},":"],["app",{"sourceInterval":[1378,1382]},"Type",[]],["app",{"sourceInterval":[1383,1385]},"as",[]],["app",{"sourceInterval":[1386,1388]},"id",[]],["terminal",{"sourceInterval":[1389,1392]},";"]]],"Field_withSerializationAndInit":["define",{"sourceInterval":[1425,1488]},null,[],["seq",{"sourceInterval":[1425,1461]},["app",{"sourceInterval":[1425,1427]},"id",[]],["terminal",{"sourceInterval":[1428,1431]},":"],["app",{"sourceInterval":[1432,1436]},"Type",[]],["app",{"sourceInterval":[1437,1439]},"as",[]],["app",{"sourceInterval":[1440,1442]},"id",[]],["terminal",{"sourceInterval":[1443,1446]},"="],["app",{"sourceInterval":[1447,1457]},"Expression",[]],["terminal",{"sourceInterval":[1458,1461]},";"]]],"Field":["define",{"sourceInterval":[1264,1488]},null,[],["alt",{"sourceInterval":[1272,1488]},["app",{"sourceInterval":[1272,1287]},"Field_default",[]],["app",{"sourceInterval":[1310,1340]},"Field_defaultWithInit",[]],["app",{"sourceInterval":[1371,1392]},"Field_withSerialization",[]],["app",{"sourceInterval":[1425,1461]},"Field_withSerializationAndInit",[]]]],"ConstantAttribute_virtual":["define",{"sourceInterval":[1534,1554]},null,[],["app",{"sourceInterval":[1534,1541]},"virtual",[]]],"ConstantAttribute_override":["define",{"sourceInterval":[1579,1600]},null,[],["app",{"sourceInterval":[1579,1587]},"override",[]]],"ConstantAttribute_abstract":["define",{"sourceInterval":[1625,1646]},null,[],["app",{"sourceInterval":[1625,1633]},"abstract",[]]],"ConstantAttribute":["define",{"sourceInterval":[1514,1646]},null,[],["alt",{"sourceInterval":[1534,1646]},["app",{"sourceInterval":[1534,1541]},"ConstantAttribute_virtual",[]],["app",{"sourceInterval":[1579,1587]},"ConstantAttribute_override",[]],["app",{"sourceInterval":[1625,1633]},"ConstantAttribute_abstract",[]]]],"Constant_withValue":["define",{"sourceInterval":[1662,1734]},null,[],["seq",{"sourceInterval":[1662,1722]},["star",{"sourceInterval":[1662,1680]},["app",{"sourceInterval":[1662,1679]},"ConstantAttribute",[]]],["not",{"sourceInterval":[1681,1685]},["app",{"sourceInterval":[1682,1685]},"fun",[]]],["app",{"sourceInterval":[1686,1691]},"const",[]],["app",{"sourceInterval":[1692,1694]},"id",[]],["terminal",{"sourceInterval":[1695,1698]},":"],["app",{"sourceInterval":[1699,1703]},"Type",[]],["terminal",{"sourceInterval":[1704,1707]},"="],["app",{"sourceInterval":[1708,1718]},"Expression",[]],["terminal",{"sourceInterval":[1719,1722]},";"]]],"Constant_withEmpty":["define",{"sourceInterval":[1750,1822]},null,[],["seq",{"sourceInterval":[1750,1795]},["star",{"sourceInterval":[1750,1768]},["app",{"sourceInterval":[1750,1767]},"ConstantAttribute",[]]],["not",{"sourceInterval":[1769,1773]},["app",{"sourceInterval":[1770,1773]},"fun",[]]],["app",{"sourceInterval":[1774,1779]},"const",[]],["app",{"sourceInterval":[1780,1782]},"id",[]],["terminal",{"sourceInterval":[1783,1786]},":"],["app",{"sourceInterval":[1787,1791]},"Type",[]],["terminal",{"sourceInterval":[1792,1795]},";"]]],"Constant":["define",{"sourceInterval":[1651,1822]},null,[],["alt",{"sourceInterval":[1662,1822]},["app",{"sourceInterval":[1662,1722]},"Constant_withValue",[]],["app",{"sourceInterval":[1750,1795]},"Constant_withEmpty",[]]]],"Struct_originary":["define",{"sourceInterval":[1851,1903]},null,[],["seq",{"sourceInterval":[1851,1891]},["terminal",{"sourceInterval":[1851,1859]},"struct"],["app",{"sourceInterval":[1860,1871]},"typeLiteral",[]],["terminal",{"sourceInterval":[1872,1875]},"{"],["star",{"sourceInterval":[1876,1887]},["app",{"sourceInterval":[1876,1886]},"StructBody",[]]],["terminal",{"sourceInterval":[1888,1891]},"}"]]],"Struct_message":["define",{"sourceInterval":[1917,1968]},null,[],["seq",{"sourceInterval":[1917,1958]},["terminal",{"sourceInterval":[1917,1926]},"message"],["app",{"sourceInterval":[1927,1938]},"typeLiteral",[]],["terminal",{"sourceInterval":[1939,1942]},"{"],["star",{"sourceInterval":[1943,1954]},["app",{"sourceInterval":[1943,1953]},"StructBody",[]]],["terminal",{"sourceInterval":[1955,1958]},"}"]]],"Struct_messageWithId":["define",{"sourceInterval":[1982,2062]},null,[],["seq",{"sourceInterval":[1982,2046]},["terminal",{"sourceInterval":[1982,1991]},"message"],["terminal",{"sourceInterval":[1992,1995]},"("],["app",{"sourceInterval":[1996,2010]},"integerLiteral",[]],["terminal",{"sourceInterval":[2011,2014]},")"],["app",{"sourceInterval":[2015,2026]},"typeLiteral",[]],["terminal",{"sourceInterval":[2027,2030]},"{"],["star",{"sourceInterval":[2031,2042]},["app",{"sourceInterval":[2031,2041]},"StructBody",[]]],["terminal",{"sourceInterval":[2043,2046]},"}"]]],"Struct":["define",{"sourceInterval":[1842,2062]},null,[],["alt",{"sourceInterval":[1851,2062]},["app",{"sourceInterval":[1851,1891]},"Struct_originary",[]],["app",{"sourceInterval":[1917,1958]},"Struct_message",[]],["app",{"sourceInterval":[1982,2046]},"Struct_messageWithId",[]]]],"StructBody":["define",{"sourceInterval":[2067,2085]},null,[],["app",{"sourceInterval":[2080,2085]},"Field",[]]],"Contract_simple":["define",{"sourceInterval":[2118,2179]},null,[],["seq",{"sourceInterval":[2118,2170]},["star",{"sourceInterval":[2118,2136]},["app",{"sourceInterval":[2118,2135]},"ContractAttribute",[]]],["app",{"sourceInterval":[2137,2145]},"contract",[]],["app",{"sourceInterval":[2146,2148]},"id",[]],["terminal",{"sourceInterval":[2149,2152]},"{"],["star",{"sourceInterval":[2153,2166]},["app",{"sourceInterval":[2153,2165]},"ContractBody",[]]],["terminal",{"sourceInterval":[2167,2170]},"}"]]],"Contract_withTraits":["define",{"sourceInterval":[2195,2280]},null,[],["seq",{"sourceInterval":[2195,2267]},["star",{"sourceInterval":[2195,2213]},["app",{"sourceInterval":[2195,2212]},"ContractAttribute",[]]],["app",{"sourceInterval":[2214,2222]},"contract",[]],["app",{"sourceInterval":[2223,2225]},"id",[]],["app",{"sourceInterval":[2226,2230]},"with",[]],["app",{"sourceInterval":[2231,2245]},"ListOf",[["app",{"sourceInterval":[2238,2240]},"id",[]],["terminal",{"sourceInterval":[2241,2244]},","]]],["terminal",{"sourceInterval":[2246,2249]},"{"],["star",{"sourceInterval":[2250,2263]},["app",{"sourceInterval":[2250,2262]},"ContractBody",[]]],["terminal",{"sourceInterval":[2264,2267]},"}"]]],"Contract":["define",{"sourceInterval":[2107,2280]},null,[],["alt",{"sourceInterval":[2118,2280]},["app",{"sourceInterval":[2118,2170]},"Contract_simple",[]],["app",{"sourceInterval":[2195,2267]},"Contract_withTraits",[]]]],"ContractInit":["define",{"sourceInterval":[2285,2357]},null,[],["seq",{"sourceInterval":[2300,2357]},["terminal",{"sourceInterval":[2300,2306]},"init"],["terminal",{"sourceInterval":[2307,2310]},"("],["app",{"sourceInterval":[2311,2334]},"ListOf",[["app",{"sourceInterval":[2318,2329]},"FunctionArg",[]],["terminal",{"sourceInterval":[2330,2333]},","]]],["terminal",{"sourceInterval":[2335,2338]},")"],["terminal",{"sourceInterval":[2339,2342]},"{"],["star",{"sourceInterval":[2343,2353]},["app",{"sourceInterval":[2343,2352]},"Statement",[]]],["terminal",{"sourceInterval":[2354,2357]},"}"]]],"ContractBody":["define",{"sourceInterval":[2362,2505]},null,[],["alt",{"sourceInterval":[2377,2505]},["app",{"sourceInterval":[2377,2382]},"Field",[]],["app",{"sourceInterval":[2402,2414]},"ContractInit",[]],["app",{"sourceInterval":[2434,2449]},"ReceiveFunction",[]],["app",{"sourceInterval":[2469,2477]},"Function",[]],["app",{"sourceInterval":[2497,2505]},"Constant",[]]]],"Trait_originary":["define",{"sourceInterval":[2536,2594]},null,[],["seq",{"sourceInterval":[2536,2582]},["star",{"sourceInterval":[2536,2554]},["app",{"sourceInterval":[2536,2553]},"ContractAttribute",[]]],["app",{"sourceInterval":[2555,2560]},"trait",[]],["app",{"sourceInterval":[2561,2563]},"id",[]],["terminal",{"sourceInterval":[2564,2567]},"{"],["star",{"sourceInterval":[2568,2578]},["app",{"sourceInterval":[2568,2577]},"TraitBody",[]]],["terminal",{"sourceInterval":[2579,2582]},"}"]]],"Trait_withTraits":["define",{"sourceInterval":[2607,2686]},null,[],["seq",{"sourceInterval":[2607,2673]},["star",{"sourceInterval":[2607,2625]},["app",{"sourceInterval":[2607,2624]},"ContractAttribute",[]]],["app",{"sourceInterval":[2626,2631]},"trait",[]],["app",{"sourceInterval":[2632,2634]},"id",[]],["app",{"sourceInterval":[2635,2639]},"with",[]],["app",{"sourceInterval":[2640,2654]},"ListOf",[["app",{"sourceInterval":[2647,2649]},"id",[]],["terminal",{"sourceInterval":[2650,2653]},","]]],["terminal",{"sourceInterval":[2655,2658]},"{"],["star",{"sourceInterval":[2659,2669]},["app",{"sourceInterval":[2659,2668]},"TraitBody",[]]],["terminal",{"sourceInterval":[2670,2673]},"}"]]],"Trait":["define",{"sourceInterval":[2528,2686]},null,[],["alt",{"sourceInterval":[2536,2686]},["app",{"sourceInterval":[2536,2582]},"Trait_originary",[]],["app",{"sourceInterval":[2607,2673]},"Trait_withTraits",[]]]],"TraitBody":["define",{"sourceInterval":[2691,2790]},null,[],["alt",{"sourceInterval":[2703,2790]},["app",{"sourceInterval":[2703,2708]},"Field",[]],["app",{"sourceInterval":[2725,2740]},"ReceiveFunction",[]],["app",{"sourceInterval":[2757,2765]},"Function",[]],["app",{"sourceInterval":[2782,2790]},"Constant",[]]]],"ContractAttribute_interface":["define",{"sourceInterval":[2843,2889]},null,[],["seq",{"sourceInterval":[2843,2877]},["terminal",{"sourceInterval":[2843,2855]},"@interface"],["terminal",{"sourceInterval":[2856,2859]},"("],["app",{"sourceInterval":[2860,2873]},"stringLiteral",[]],["terminal",{"sourceInterval":[2874,2877]},")"]]],"ContractAttribute":["define",{"sourceInterval":[2823,2889]},null,[],["app",{"sourceInterval":[2843,2889]},"ContractAttribute_interface",[]]],"FunctionAttribute_getter":["define",{"sourceInterval":[2931,2949]},null,[],["terminal",{"sourceInterval":[2931,2936]},"get"]],"FunctionAttribute_mutates":["define",{"sourceInterval":[2974,2993]},null,[],["app",{"sourceInterval":[2974,2981]},"mutates",[]]],"FunctionAttribute_extends":["define",{"sourceInterval":[3018,3037]},null,[],["app",{"sourceInterval":[3018,3025]},"extends",[]]],"FunctionAttribute_virtual":["define",{"sourceInterval":[3062,3081]},null,[],["app",{"sourceInterval":[3062,3069]},"virtual",[]]],"FunctionAttribute_override":["define",{"sourceInterval":[3106,3126]},null,[],["app",{"sourceInterval":[3106,3114]},"override",[]]],"FunctionAttribute_inline":["define",{"sourceInterval":[3151,3169]},null,[],["app",{"sourceInterval":[3151,3157]},"inline",[]]],"FunctionAttribute_abstract":["define",{"sourceInterval":[3194,3214]},null,[],["app",{"sourceInterval":[3194,3202]},"abstract",[]]],"FunctionAttribute":["define",{"sourceInterval":[2911,3214]},null,[],["alt",{"sourceInterval":[2931,3214]},["app",{"sourceInterval":[2931,2936]},"FunctionAttribute_getter",[]],["app",{"sourceInterval":[2974,2981]},"FunctionAttribute_mutates",[]],["app",{"sourceInterval":[3018,3025]},"FunctionAttribute_extends",[]],["app",{"sourceInterval":[3062,3069]},"FunctionAttribute_virtual",[]],["app",{"sourceInterval":[3106,3114]},"FunctionAttribute_override",[]],["app",{"sourceInterval":[3151,3157]},"FunctionAttribute_inline",[]],["app",{"sourceInterval":[3194,3202]},"FunctionAttribute_abstract",[]]]],"Function_withVoid":["define",{"sourceInterval":[3230,3317]},null,[],["seq",{"sourceInterval":[3230,3306]},["star",{"sourceInterval":[3230,3248]},["app",{"sourceInterval":[3230,3247]},"FunctionAttribute",[]]],["app",{"sourceInterval":[3249,3252]},"fun",[]],["app",{"sourceInterval":[3253,3255]},"id",[]],["terminal",{"sourceInterval":[3256,3259]},"("],["app",{"sourceInterval":[3260,3283]},"ListOf",[["app",{"sourceInterval":[3267,3278]},"FunctionArg",[]],["terminal",{"sourceInterval":[3279,3282]},","]]],["terminal",{"sourceInterval":[3284,3287]},")"],["terminal",{"sourceInterval":[3288,3291]},"{"],["star",{"sourceInterval":[3292,3302]},["app",{"sourceInterval":[3292,3301]},"Statement",[]]],["terminal",{"sourceInterval":[3303,3306]},"}"]]],"Function_withType":["define",{"sourceInterval":[3333,3429]},null,[],["seq",{"sourceInterval":[3333,3418]},["star",{"sourceInterval":[3333,3351]},["app",{"sourceInterval":[3333,3350]},"FunctionAttribute",[]]],["app",{"sourceInterval":[3352,3355]},"fun",[]],["app",{"sourceInterval":[3356,3358]},"id",[]],["terminal",{"sourceInterval":[3359,3362]},"("],["app",{"sourceInterval":[3363,3386]},"ListOf",[["app",{"sourceInterval":[3370,3381]},"FunctionArg",[]],["terminal",{"sourceInterval":[3382,3385]},","]]],["terminal",{"sourceInterval":[3387,3390]},")"],["terminal",{"sourceInterval":[3391,3394]},":"],["app",{"sourceInterval":[3395,3399]},"Type",[]],["terminal",{"sourceInterval":[3400,3403]},"{"],["star",{"sourceInterval":[3404,3414]},["app",{"sourceInterval":[3404,3413]},"Statement",[]]],["terminal",{"sourceInterval":[3415,3418]},"}"]]],"Function_abstractVoid":["define",{"sourceInterval":[3445,3521]},null,[],["seq",{"sourceInterval":[3445,3506]},["star",{"sourceInterval":[3445,3463]},["app",{"sourceInterval":[3445,3462]},"FunctionAttribute",[]]],["app",{"sourceInterval":[3464,3467]},"fun",[]],["app",{"sourceInterval":[3468,3470]},"id",[]],["terminal",{"sourceInterval":[3471,3474]},"("],["app",{"sourceInterval":[3475,3498]},"ListOf",[["app",{"sourceInterval":[3482,3493]},"FunctionArg",[]],["terminal",{"sourceInterval":[3494,3497]},","]]],["terminal",{"sourceInterval":[3499,3502]},")"],["terminal",{"sourceInterval":[3503,3506]},";"]]],"Function_abstractType":["define",{"sourceInterval":[3537,3622]},null,[],["seq",{"sourceInterval":[3537,3607]},["star",{"sourceInterval":[3537,3555]},["app",{"sourceInterval":[3537,3554]},"FunctionAttribute",[]]],["app",{"sourceInterval":[3556,3559]},"fun",[]],["app",{"sourceInterval":[3560,3562]},"id",[]],["terminal",{"sourceInterval":[3563,3566]},"("],["app",{"sourceInterval":[3567,3590]},"ListOf",[["app",{"sourceInterval":[3574,3585]},"FunctionArg",[]],["terminal",{"sourceInterval":[3586,3589]},","]]],["terminal",{"sourceInterval":[3591,3594]},")"],["terminal",{"sourceInterval":[3595,3598]},":"],["app",{"sourceInterval":[3599,3603]},"Type",[]],["terminal",{"sourceInterval":[3604,3607]},";"]]],"Function":["define",{"sourceInterval":[3219,3622]},null,[],["alt",{"sourceInterval":[3230,3622]},["app",{"sourceInterval":[3230,3306]},"Function_withVoid",[]],["app",{"sourceInterval":[3333,3418]},"Function_withType",[]],["app",{"sourceInterval":[3445,3506]},"Function_abstractVoid",[]],["app",{"sourceInterval":[3537,3607]},"Function_abstractType",[]]]],"FunctionArg":["define",{"sourceInterval":[3627,3652]},null,[],["seq",{"sourceInterval":[3641,3652]},["app",{"sourceInterval":[3641,3643]},"id",[]],["terminal",{"sourceInterval":[3644,3647]},":"],["app",{"sourceInterval":[3648,3652]},"Type",[]]]],"ReceiveFunction_simple":["define",{"sourceInterval":[3680,3737]},null,[],["seq",{"sourceInterval":[3680,3728]},["terminal",{"sourceInterval":[3680,3689]},"receive"],["terminal",{"sourceInterval":[3690,3693]},"("],["app",{"sourceInterval":[3694,3705]},"FunctionArg",[]],["terminal",{"sourceInterval":[3706,3709]},")"],["terminal",{"sourceInterval":[3710,3713]},"{"],["star",{"sourceInterval":[3714,3724]},["app",{"sourceInterval":[3714,3723]},"Statement",[]]],["terminal",{"sourceInterval":[3725,3728]},"}"]]],"ReceiveFunction_empty":["define",{"sourceInterval":[3760,3804]},null,[],["seq",{"sourceInterval":[3760,3796]},["terminal",{"sourceInterval":[3760,3769]},"receive"],["terminal",{"sourceInterval":[3770,3773]},"("],["terminal",{"sourceInterval":[3774,3777]},")"],["terminal",{"sourceInterval":[3778,3781]},"{"],["star",{"sourceInterval":[3782,3792]},["app",{"sourceInterval":[3782,3791]},"Statement",[]]],["terminal",{"sourceInterval":[3793,3796]},"}"]]],"ReceiveFunction_comment":["define",{"sourceInterval":[3827,3887]},null,[],["seq",{"sourceInterval":[3827,3877]},["terminal",{"sourceInterval":[3827,3836]},"receive"],["terminal",{"sourceInterval":[3837,3840]},"("],["app",{"sourceInterval":[3841,3854]},"stringLiteral",[]],["terminal",{"sourceInterval":[3855,3858]},")"],["terminal",{"sourceInterval":[3859,3862]},"{"],["star",{"sourceInterval":[3863,3873]},["app",{"sourceInterval":[3863,3872]},"Statement",[]]],["terminal",{"sourceInterval":[3874,3877]},"}"]]],"ReceiveFunction_bounced":["define",{"sourceInterval":[3910,3968]},null,[],["seq",{"sourceInterval":[3910,3958]},["terminal",{"sourceInterval":[3910,3919]},"bounced"],["terminal",{"sourceInterval":[3920,3923]},"("],["app",{"sourceInterval":[3924,3935]},"FunctionArg",[]],["terminal",{"sourceInterval":[3936,3939]},")"],["terminal",{"sourceInterval":[3940,3943]},"{"],["star",{"sourceInterval":[3944,3954]},["app",{"sourceInterval":[3944,3953]},"Statement",[]]],["terminal",{"sourceInterval":[3955,3958]},"}"]]],"ReceiveFunction_externalSimple":["define",{"sourceInterval":[3991,4057]},null,[],["seq",{"sourceInterval":[3991,4040]},["terminal",{"sourceInterval":[3991,4001]},"external"],["terminal",{"sourceInterval":[4002,4005]},"("],["app",{"sourceInterval":[4006,4017]},"FunctionArg",[]],["terminal",{"sourceInterval":[4018,4021]},")"],["terminal",{"sourceInterval":[4022,4025]},"{"],["star",{"sourceInterval":[4026,4036]},["app",{"sourceInterval":[4026,4035]},"Statement",[]]],["terminal",{"sourceInterval":[4037,4040]},"}"]]],"ReceiveFunction_externalComment":["define",{"sourceInterval":[4080,4149]},null,[],["seq",{"sourceInterval":[4080,4131]},["terminal",{"sourceInterval":[4080,4090]},"external"],["terminal",{"sourceInterval":[4091,4094]},"("],["app",{"sourceInterval":[4095,4108]},"stringLiteral",[]],["terminal",{"sourceInterval":[4109,4112]},")"],["terminal",{"sourceInterval":[4113,4116]},"{"],["star",{"sourceInterval":[4117,4127]},["app",{"sourceInterval":[4117,4126]},"Statement",[]]],["terminal",{"sourceInterval":[4128,4131]},"}"]]],"ReceiveFunction_externalEmpty":["define",{"sourceInterval":[4172,4225]},null,[],["seq",{"sourceInterval":[4172,4209]},["terminal",{"sourceInterval":[4172,4182]},"external"],["terminal",{"sourceInterval":[4183,4186]},"("],["terminal",{"sourceInterval":[4187,4190]},")"],["terminal",{"sourceInterval":[4191,4194]},"{"],["star",{"sourceInterval":[4195,4205]},["app",{"sourceInterval":[4195,4204]},"Statement",[]]],["terminal",{"sourceInterval":[4206,4209]},"}"]]],"ReceiveFunction":["define",{"sourceInterval":[3662,4225]},null,[],["alt",{"sourceInterval":[3680,4225]},["app",{"sourceInterval":[3680,3728]},"ReceiveFunction_simple",[]],["app",{"sourceInterval":[3760,3796]},"ReceiveFunction_empty",[]],["app",{"sourceInterval":[3827,3877]},"ReceiveFunction_comment",[]],["app",{"sourceInterval":[3910,3958]},"ReceiveFunction_bounced",[]],["app",{"sourceInterval":[3991,4040]},"ReceiveFunction_externalSimple",[]],["app",{"sourceInterval":[4080,4131]},"ReceiveFunction_externalComment",[]],["app",{"sourceInterval":[4172,4209]},"ReceiveFunction_externalEmpty",[]]]],"Statement":["define",{"sourceInterval":[4249,4574]},null,[],["alt",{"sourceInterval":[4261,4574]},["app",{"sourceInterval":[4261,4273]},"StatementLet",[]],["app",{"sourceInterval":[4290,4304]},"StatementBlock",[]],["app",{"sourceInterval":[4321,4336]},"StatementReturn",[]],["app",{"sourceInterval":[4353,4372]},"StatementExpression",[]],["app",{"sourceInterval":[4389,4404]},"StatementAssign",[]],["app",{"sourceInterval":[4421,4445]},"StatementAugmentedAssign",[]],["app",{"sourceInterval":[4462,4480]},"StatementCondition",[]],["app",{"sourceInterval":[4497,4511]},"StatementWhile",[]],["app",{"sourceInterval":[4528,4543]},"StatementRepeat",[]],["app",{"sourceInterval":[4560,4574]},"StatementUntil",[]]]],"StatementBlock":["define",{"sourceInterval":[4579,4614]},null,[],["seq",{"sourceInterval":[4596,4614]},["terminal",{"sourceInterval":[4596,4599]},"{"],["star",{"sourceInterval":[4600,4610]},["app",{"sourceInterval":[4600,4609]},"Statement",[]]],["terminal",{"sourceInterval":[4611,4614]},"}"]]],"StatementLet":["define",{"sourceInterval":[4619,4668]},null,[],["seq",{"sourceInterval":[4634,4668]},["app",{"sourceInterval":[4634,4637]},"let",[]],["app",{"sourceInterval":[4638,4640]},"id",[]],["terminal",{"sourceInterval":[4641,4644]},":"],["app",{"sourceInterval":[4645,4649]},"Type",[]],["terminal",{"sourceInterval":[4650,4653]},"="],["app",{"sourceInterval":[4654,4664]},"Expression",[]],["terminal",{"sourceInterval":[4665,4668]},";"]]],"StatementReturn_withExpression":["define",{"sourceInterval":[4691,4729]},null,[],["seq",{"sourceInterval":[4691,4712]},["app",{"sourceInterval":[4691,4697]},"return",[]],["app",{"sourceInterval":[4698,4708]},"Expression",[]],["terminal",{"sourceInterval":[4709,4712]},";"]]],"StatementReturn_withoutExpression":["define",{"sourceInterval":[4752,4782]},null,[],["seq",{"sourceInterval":[4752,4762]},["app",{"sourceInterval":[4752,4758]},"return",[]],["terminal",{"sourceInterval":[4759,4762]},";"]]],"StatementReturn":["define",{"sourceInterval":[4673,4782]},null,[],["alt",{"sourceInterval":[4691,4782]},["app",{"sourceInterval":[4691,4712]},"StatementReturn_withExpression",[]],["app",{"sourceInterval":[4752,4762]},"StatementReturn_withoutExpression",[]]]],"StatementExpression":["define",{"sourceInterval":[4791,4827]},null,[],["seq",{"sourceInterval":[4813,4827]},["app",{"sourceInterval":[4813,4823]},"Expression",[]],["terminal",{"sourceInterval":[4824,4827]},";"]]],"StatementAssign":["define",{"sourceInterval":[4832,4875]},null,[],["seq",{"sourceInterval":[4850,4875]},["app",{"sourceInterval":[4850,4856]},"LValue",[]],["terminal",{"sourceInterval":[4857,4860]},"="],["app",{"sourceInterval":[4861,4871]},"Expression",[]],["terminal",{"sourceInterval":[4872,4875]},";"]]],"StatementAugmentedAssign":["define",{"sourceInterval":[4880,5170]},null,[],["alt",{"sourceInterval":[4907,5170]},["app",{"sourceInterval":[4907,4934]},"StatementAugmentedAssignAdd",[]],["app",{"sourceInterval":[4966,4993]},"StatementAugmentedAssignSub",[]],["app",{"sourceInterval":[5025,5052]},"StatementAugmentedAssignMul",[]],["app",{"sourceInterval":[5084,5111]},"StatementAugmentedAssignDiv",[]],["app",{"sourceInterval":[5143,5170]},"StatementAugmentedAssignRem",[]]]],"StatementAugmentedAssignAdd":["define",{"sourceInterval":[5175,5231]},null,[],["seq",{"sourceInterval":[5205,5231]},["app",{"sourceInterval":[5205,5211]},"LValue",[]],["terminal",{"sourceInterval":[5212,5216]},"+="],["app",{"sourceInterval":[5217,5227]},"Expression",[]],["terminal",{"sourceInterval":[5228,5231]},";"]]],"StatementAugmentedAssignSub":["define",{"sourceInterval":[5236,5292]},null,[],["seq",{"sourceInterval":[5266,5292]},["app",{"sourceInterval":[5266,5272]},"LValue",[]],["terminal",{"sourceInterval":[5273,5277]},"-="],["app",{"sourceInterval":[5278,5288]},"Expression",[]],["terminal",{"sourceInterval":[5289,5292]},";"]]],"StatementAugmentedAssignMul":["define",{"sourceInterval":[5297,5353]},null,[],["seq",{"sourceInterval":[5327,5353]},["app",{"sourceInterval":[5327,5333]},"LValue",[]],["terminal",{"sourceInterval":[5334,5338]},"*="],["app",{"sourceInterval":[5339,5349]},"Expression",[]],["terminal",{"sourceInterval":[5350,5353]},";"]]],"StatementAugmentedAssignDiv":["define",{"sourceInterval":[5358,5414]},null,[],["seq",{"sourceInterval":[5388,5414]},["app",{"sourceInterval":[5388,5394]},"LValue",[]],["terminal",{"sourceInterval":[5395,5399]},"/="],["app",{"sourceInterval":[5400,5410]},"Expression",[]],["terminal",{"sourceInterval":[5411,5414]},";"]]],"StatementAugmentedAssignRem":["define",{"sourceInterval":[5419,5475]},null,[],["seq",{"sourceInterval":[5449,5475]},["app",{"sourceInterval":[5449,5455]},"LValue",[]],["terminal",{"sourceInterval":[5456,5460]},"%="],["app",{"sourceInterval":[5461,5471]},"Expression",[]],["terminal",{"sourceInterval":[5472,5475]},";"]]],"StatementCondition_simple":["define",{"sourceInterval":[5501,5548]},null,[],["seq",{"sourceInterval":[5501,5539]},["app",{"sourceInterval":[5501,5503]},"if",[]],["app",{"sourceInterval":[5504,5514]},"Expression",[]],["terminal",{"sourceInterval":[5515,5518]},"{"],["star",{"sourceInterval":[5519,5529]},["app",{"sourceInterval":[5519,5528]},"Statement",[]]],["terminal",{"sourceInterval":[5530,5533]},"}"],["not",{"sourceInterval":[5534,5539]},["app",{"sourceInterval":[5535,5539]},"else",[]]]]],"StatementCondition_withElse":["define",{"sourceInterval":[5574,5641]},null,[],["seq",{"sourceInterval":[5574,5630]},["app",{"sourceInterval":[5574,5576]},"if",[]],["app",{"sourceInterval":[5577,5587]},"Expression",[]],["terminal",{"sourceInterval":[5588,5591]},"{"],["star",{"sourceInterval":[5592,5602]},["app",{"sourceInterval":[5592,5601]},"Statement",[]]],["terminal",{"sourceInterval":[5603,5606]},"}"],["app",{"sourceInterval":[5607,5611]},"else",[]],["terminal",{"sourceInterval":[5612,5615]},"{"],["star",{"sourceInterval":[5616,5626]},["app",{"sourceInterval":[5616,5625]},"Statement",[]]],["terminal",{"sourceInterval":[5627,5630]},"}"]]],"StatementCondition_withElseIf":["define",{"sourceInterval":[5667,5736]},null,[],["seq",{"sourceInterval":[5667,5723]},["app",{"sourceInterval":[5667,5669]},"if",[]],["app",{"sourceInterval":[5670,5680]},"Expression",[]],["terminal",{"sourceInterval":[5681,5684]},"{"],["star",{"sourceInterval":[5685,5695]},["app",{"sourceInterval":[5685,5694]},"Statement",[]]],["terminal",{"sourceInterval":[5696,5699]},"}"],["app",{"sourceInterval":[5700,5704]},"else",[]],["app",{"sourceInterval":[5705,5723]},"StatementCondition",[]]]],"StatementCondition":["define",{"sourceInterval":[5480,5736]},null,[],["alt",{"sourceInterval":[5501,5736]},["app",{"sourceInterval":[5501,5539]},"StatementCondition_simple",[]],["app",{"sourceInterval":[5574,5630]},"StatementCondition_withElse",[]],["app",{"sourceInterval":[5667,5723]},"StatementCondition_withElseIf",[]]]],"StatementWhile":["define",{"sourceInterval":[5741,5801]},null,[],["seq",{"sourceInterval":[5758,5801]},["app",{"sourceInterval":[5758,5763]},"while",[]],["terminal",{"sourceInterval":[5764,5767]},"("],["app",{"sourceInterval":[5768,5778]},"Expression",[]],["terminal",{"sourceInterval":[5779,5782]},")"],["terminal",{"sourceInterval":[5783,5786]},"{"],["star",{"sourceInterval":[5787,5797]},["app",{"sourceInterval":[5787,5796]},"Statement",[]]],["terminal",{"sourceInterval":[5798,5801]},"}"]]],"StatementRepeat":["define",{"sourceInterval":[5806,5868]},null,[],["seq",{"sourceInterval":[5824,5868]},["app",{"sourceInterval":[5824,5830]},"repeat",[]],["terminal",{"sourceInterval":[5831,5834]},"("],["app",{"sourceInterval":[5835,5845]},"Expression",[]],["terminal",{"sourceInterval":[5846,5849]},")"],["terminal",{"sourceInterval":[5850,5853]},"{"],["star",{"sourceInterval":[5854,5864]},["app",{"sourceInterval":[5854,5863]},"Statement",[]]],["terminal",{"sourceInterval":[5865,5868]},"}"]]],"StatementUntil":["define",{"sourceInterval":[5873,5940]},null,[],["seq",{"sourceInterval":[5890,5940]},["app",{"sourceInterval":[5890,5892]},"do",[]],["terminal",{"sourceInterval":[5893,5896]},"{"],["star",{"sourceInterval":[5897,5907]},["app",{"sourceInterval":[5897,5906]},"Statement",[]]],["terminal",{"sourceInterval":[5908,5911]},"}"],["app",{"sourceInterval":[5912,5917]},"until",[]],["terminal",{"sourceInterval":[5918,5921]},"("],["app",{"sourceInterval":[5922,5932]},"Expression",[]],["terminal",{"sourceInterval":[5933,5936]},")"],["terminal",{"sourceInterval":[5937,5940]},";"]]],"LValue_more":["define",{"sourceInterval":[5970,5990]},null,[],["seq",{"sourceInterval":[5970,5983]},["app",{"sourceInterval":[5970,5972]},"id",[]],["terminal",{"sourceInterval":[5973,5976]},"."],["app",{"sourceInterval":[5977,5983]},"LValue",[]]]],"LValue_single":["define",{"sourceInterval":[6004,6015]},null,[],["app",{"sourceInterval":[6004,6006]},"id",[]]],"LValue":["define",{"sourceInterval":[5961,6015]},null,[],["alt",{"sourceInterval":[5970,6015]},["app",{"sourceInterval":[5970,5983]},"LValue_more",[]],["app",{"sourceInterval":[6004,6006]},"LValue_single",[]]]],"Expression":["define",{"sourceInterval":[6040,6074]},null,[],["app",{"sourceInterval":[6053,6074]},"ExpressionConditional",[]]],"ExpressionConditional_ternary":["define",{"sourceInterval":[6103,6168]},null,[],["seq",{"sourceInterval":[6103,6158]},["app",{"sourceInterval":[6103,6115]},"ExpressionOr",[]],["terminal",{"sourceInterval":[6116,6119]},"?"],["app",{"sourceInterval":[6120,6132]},"ExpressionOr",[]],["terminal",{"sourceInterval":[6133,6136]},":"],["app",{"sourceInterval":[6137,6158]},"ExpressionConditional",[]]]],"ExpressionConditional":["define",{"sourceInterval":[6079,6209]},null,[],["alt",{"sourceInterval":[6103,6209]},["app",{"sourceInterval":[6103,6158]},"ExpressionConditional_ternary",[]],["app",{"sourceInterval":[6197,6209]},"ExpressionOr",[]]]],"ExpressionOr_or":["define",{"sourceInterval":[6229,6265]},null,[],["seq",{"sourceInterval":[6229,6260]},["app",{"sourceInterval":[6229,6241]},"ExpressionOr",[]],["terminal",{"sourceInterval":[6242,6246]},"||"],["app",{"sourceInterval":[6247,6260]},"ExpressionAnd",[]]]],"ExpressionOr":["define",{"sourceInterval":[6214,6298]},null,[],["alt",{"sourceInterval":[6229,6298]},["app",{"sourceInterval":[6229,6260]},"ExpressionOr_or",[]],["app",{"sourceInterval":[6285,6298]},"ExpressionAnd",[]]]],"ExpressionAnd_and":["define",{"sourceInterval":[6319,6361]},null,[],["seq",{"sourceInterval":[6319,6355]},["app",{"sourceInterval":[6319,6332]},"ExpressionAnd",[]],["terminal",{"sourceInterval":[6333,6337]},"&&"],["app",{"sourceInterval":[6338,6355]},"ExpressionCompare",[]]]],"ExpressionAnd":["define",{"sourceInterval":[6303,6399]},null,[],["alt",{"sourceInterval":[6319,6399]},["app",{"sourceInterval":[6319,6355]},"ExpressionAnd_and",[]],["app",{"sourceInterval":[6382,6399]},"ExpressionCompare",[]]]],"ExpressionCompare_not":["define",{"sourceInterval":[6424,6469]},null,[],["seq",{"sourceInterval":[6424,6463]},["app",{"sourceInterval":[6424,6441]},"ExpressionCompare",[]],["terminal",{"sourceInterval":[6442,6446]},"!="],["app",{"sourceInterval":[6447,6463]},"ExpressionBinary",[]]]],"ExpressionCompare_eq":["define",{"sourceInterval":[6494,6538]},null,[],["seq",{"sourceInterval":[6494,6533]},["app",{"sourceInterval":[6494,6511]},"ExpressionCompare",[]],["terminal",{"sourceInterval":[6512,6516]},"=="],["app",{"sourceInterval":[6517,6533]},"ExpressionBinary",[]]]],"ExpressionCompare_gt":["define",{"sourceInterval":[6563,6606]},null,[],["seq",{"sourceInterval":[6563,6601]},["app",{"sourceInterval":[6563,6580]},"ExpressionCompare",[]],["terminal",{"sourceInterval":[6581,6584]},">"],["app",{"sourceInterval":[6585,6601]},"ExpressionBinary",[]]]],"ExpressionCompare_gte":["define",{"sourceInterval":[6631,6676]},null,[],["seq",{"sourceInterval":[6631,6670]},["app",{"sourceInterval":[6631,6648]},"ExpressionCompare",[]],["terminal",{"sourceInterval":[6649,6653]},">="],["app",{"sourceInterval":[6654,6670]},"ExpressionBinary",[]]]],"ExpressionCompare_lt":["define",{"sourceInterval":[6701,6744]},null,[],["seq",{"sourceInterval":[6701,6739]},["app",{"sourceInterval":[6701,6718]},"ExpressionCompare",[]],["terminal",{"sourceInterval":[6719,6722]},"<"],["app",{"sourceInterval":[6723,6739]},"ExpressionBinary",[]]]],"ExpressionCompare_lte":["define",{"sourceInterval":[6769,6814]},null,[],["seq",{"sourceInterval":[6769,6808]},["app",{"sourceInterval":[6769,6786]},"ExpressionCompare",[]],["terminal",{"sourceInterval":[6787,6791]},"<="],["app",{"sourceInterval":[6792,6808]},"ExpressionBinary",[]]]],"ExpressionCompare":["define",{"sourceInterval":[6404,6855]},null,[],["alt",{"sourceInterval":[6424,6855]},["app",{"sourceInterval":[6424,6463]},"ExpressionCompare_not",[]],["app",{"sourceInterval":[6494,6533]},"ExpressionCompare_eq",[]],["app",{"sourceInterval":[6563,6601]},"ExpressionCompare_gt",[]],["app",{"sourceInterval":[6631,6670]},"ExpressionCompare_gte",[]],["app",{"sourceInterval":[6701,6739]},"ExpressionCompare_lt",[]],["app",{"sourceInterval":[6769,6808]},"ExpressionCompare_lte",[]],["app",{"sourceInterval":[6839,6855]},"ExpressionBinary",[]]]],"ExpressionBinary_shr":["define",{"sourceInterval":[6879,6920]},null,[],["seq",{"sourceInterval":[6879,6914]},["app",{"sourceInterval":[6879,6895]},"ExpressionBinary",[]],["terminal",{"sourceInterval":[6896,6900]},">>"],["app",{"sourceInterval":[6901,6914]},"ExpressionAdd",[]]]],"ExpressionBinary_shl":["define",{"sourceInterval":[6943,6984]},null,[],["seq",{"sourceInterval":[6943,6978]},["app",{"sourceInterval":[6943,6959]},"ExpressionBinary",[]],["terminal",{"sourceInterval":[6960,6964]},"<<"],["app",{"sourceInterval":[6965,6978]},"ExpressionAdd",[]]]],"ExpressionBinary_bin_and":["define",{"sourceInterval":[7007,7051]},null,[],["seq",{"sourceInterval":[7007,7041]},["app",{"sourceInterval":[7007,7023]},"ExpressionBinary",[]],["terminal",{"sourceInterval":[7024,7027]},"&"],["app",{"sourceInterval":[7028,7041]},"ExpressionAdd",[]]]],"ExpressionBinary_bin_or":["define",{"sourceInterval":[7074,7117]},null,[],["seq",{"sourceInterval":[7074,7108]},["app",{"sourceInterval":[7074,7090]},"ExpressionBinary",[]],["terminal",{"sourceInterval":[7091,7094]},"|"],["app",{"sourceInterval":[7095,7108]},"ExpressionAdd",[]]]],"ExpressionBinary":["define",{"sourceInterval":[6860,7153]},null,[],["alt",{"sourceInterval":[6879,7153]},["app",{"sourceInterval":[6879,6914]},"ExpressionBinary_shr",[]],["app",{"sourceInterval":[6943,6978]},"ExpressionBinary_shl",[]],["app",{"sourceInterval":[7007,7041]},"ExpressionBinary_bin_and",[]],["app",{"sourceInterval":[7074,7108]},"ExpressionBinary_bin_or",[]],["app",{"sourceInterval":[7140,7153]},"ExpressionAdd",[]]]],"ExpressionAdd_add":["define",{"sourceInterval":[7174,7216]},null,[],["seq",{"sourceInterval":[7174,7210]},["app",{"sourceInterval":[7174,7187]},"ExpressionAdd",[]],["terminal",{"sourceInterval":[7188,7191]},"+"],["not",{"sourceInterval":[7192,7196]},["terminal",{"sourceInterval":[7193,7196]},"+"]],["app",{"sourceInterval":[7197,7210]},"ExpressionMul",[]]]],"ExpressionAdd_sub":["define",{"sourceInterval":[7237,7279]},null,[],["seq",{"sourceInterval":[7237,7273]},["app",{"sourceInterval":[7237,7250]},"ExpressionAdd",[]],["terminal",{"sourceInterval":[7251,7254]},"-"],["not",{"sourceInterval":[7255,7259]},["terminal",{"sourceInterval":[7256,7259]},"-"]],["app",{"sourceInterval":[7260,7273]},"ExpressionMul",[]]]],"ExpressionAdd":["define",{"sourceInterval":[7158,7313]},null,[],["alt",{"sourceInterval":[7174,7313]},["app",{"sourceInterval":[7174,7210]},"ExpressionAdd_add",[]],["app",{"sourceInterval":[7237,7273]},"ExpressionAdd_sub",[]],["app",{"sourceInterval":[7300,7313]},"ExpressionMul",[]]]],"ExpressionMul_mul":["define",{"sourceInterval":[7334,7373]},null,[],["seq",{"sourceInterval":[7334,7367]},["app",{"sourceInterval":[7334,7347]},"ExpressionMul",[]],["terminal",{"sourceInterval":[7348,7351]},"*"],["app",{"sourceInterval":[7352,7367]},"ExpressionUnary",[]]]],"ExpressionMul_div":["define",{"sourceInterval":[7394,7433]},null,[],["seq",{"sourceInterval":[7394,7427]},["app",{"sourceInterval":[7394,7407]},"ExpressionMul",[]],["terminal",{"sourceInterval":[7408,7411]},"/"],["app",{"sourceInterval":[7412,7427]},"ExpressionUnary",[]]]],"ExpressionMul_rem":["define",{"sourceInterval":[7454,7493]},null,[],["seq",{"sourceInterval":[7454,7487]},["app",{"sourceInterval":[7454,7467]},"ExpressionMul",[]],["terminal",{"sourceInterval":[7468,7471]},"%"],["app",{"sourceInterval":[7472,7487]},"ExpressionUnary",[]]]],"ExpressionMul":["define",{"sourceInterval":[7318,7529]},null,[],["alt",{"sourceInterval":[7334,7529]},["app",{"sourceInterval":[7334,7367]},"ExpressionMul_mul",[]],["app",{"sourceInterval":[7394,7427]},"ExpressionMul_div",[]],["app",{"sourceInterval":[7454,7487]},"ExpressionMul_rem",[]],["app",{"sourceInterval":[7514,7529]},"ExpressionUnary",[]]]],"ExpressionUnary_neg":["define",{"sourceInterval":[7552,7583]},null,[],["seq",{"sourceInterval":[7552,7577]},["terminal",{"sourceInterval":[7552,7555]},"-"],["app",{"sourceInterval":[7556,7577]},"ExpressionUnarySuffix",[]]]],"ExpressionUnary_add":["define",{"sourceInterval":[7606,7637]},null,[],["seq",{"sourceInterval":[7606,7631]},["terminal",{"sourceInterval":[7606,7609]},"+"],["app",{"sourceInterval":[7610,7631]},"ExpressionUnarySuffix",[]]]],"ExpressionUnary_not":["define",{"sourceInterval":[7660,7691]},null,[],["seq",{"sourceInterval":[7660,7685]},["terminal",{"sourceInterval":[7660,7663]},"!"],["app",{"sourceInterval":[7664,7685]},"ExpressionUnarySuffix",[]]]],"ExpressionUnary":["define",{"sourceInterval":[7534,7735]},null,[],["alt",{"sourceInterval":[7552,7735]},["app",{"sourceInterval":[7552,7577]},"ExpressionUnary_neg",[]],["app",{"sourceInterval":[7606,7631]},"ExpressionUnary_add",[]],["app",{"sourceInterval":[7660,7685]},"ExpressionUnary_not",[]],["app",{"sourceInterval":[7714,7735]},"ExpressionUnarySuffix",[]]]],"ExpressionUnarySuffix_notNull":["define",{"sourceInterval":[7764,7794]},null,[],["seq",{"sourceInterval":[7764,7784]},["app",{"sourceInterval":[7764,7779]},"ExpressionValue",[]],["terminal",{"sourceInterval":[7780,7784]},"!!"]]],"ExpressionUnarySuffix":["define",{"sourceInterval":[7740,7838]},null,[],["alt",{"sourceInterval":[7764,7838]},["app",{"sourceInterval":[7764,7784]},"ExpressionUnarySuffix_notNull",[]],["app",{"sourceInterval":[7823,7838]},"ExpressionValue",[]]]],"ExpressionBracket":["define",{"sourceInterval":[7843,7881]},null,[],["seq",{"sourceInterval":[7863,7881]},["terminal",{"sourceInterval":[7863,7866]},"("],["app",{"sourceInterval":[7867,7877]},"Expression",[]],["terminal",{"sourceInterval":[7878,7881]},")"]]],"ExpressionValue":["define",{"sourceInterval":[7913,8303]},null,[],["alt",{"sourceInterval":[7931,8303]},["app",{"sourceInterval":[7931,7945]},"ExpressionCall",[]],["app",{"sourceInterval":[7968,7983]},"ExpressionField",[]],["app",{"sourceInterval":[8006,8026]},"ExpressionStaticCall",[]],["app",{"sourceInterval":[8049,8066]},"ExpressionBracket",[]],["app",{"sourceInterval":[8089,8102]},"ExpressionNew",[]],["app",{"sourceInterval":[8125,8139]},"integerLiteral",[]],["app",{"sourceInterval":[8162,8173]},"boolLiteral",[]],["app",{"sourceInterval":[8196,8198]},"id",[]],["app",{"sourceInterval":[8221,8225]},"null",[]],["app",{"sourceInterval":[8248,8264]},"ExpressionInitOf",[]],["app",{"sourceInterval":[8287,8303]},"ExpressionString",[]]]],"ExpressionString":["define",{"sourceInterval":[8308,8340]},null,[],["app",{"sourceInterval":[8327,8340]},"stringLiteral",[]]],"ExpressionField":["define",{"sourceInterval":[8345,8390]},null,[],["seq",{"sourceInterval":[8363,8390]},["app",{"sourceInterval":[8363,8378]},"ExpressionValue",[]],["terminal",{"sourceInterval":[8379,8382]},"."],["app",{"sourceInterval":[8383,8385]},"id",[]],["not",{"sourceInterval":[8386,8390]},["terminal",{"sourceInterval":[8387,8390]},"("]]]],"ExpressionCall":["define",{"sourceInterval":[8395,8466]},null,[],["seq",{"sourceInterval":[8412,8466]},["app",{"sourceInterval":[8412,8427]},"ExpressionValue",[]],["terminal",{"sourceInterval":[8428,8431]},"."],["app",{"sourceInterval":[8432,8434]},"id",[]],["terminal",{"sourceInterval":[8435,8438]},"("],["app",{"sourceInterval":[8439,8462]},"ListOf",[["app",{"sourceInterval":[8446,8456]},"Expression",[]],["terminal",{"sourceInterval":[8458,8461]},","]]],["terminal",{"sourceInterval":[8463,8466]},")"]]],"ExpressionNew_noTrailing":["define",{"sourceInterval":[8487,8542]},null,[],["seq",{"sourceInterval":[8487,8523]},["app",{"sourceInterval":[8487,8489]},"id",[]],["terminal",{"sourceInterval":[8490,8493]},"{"],["app",{"sourceInterval":[8494,8519]},"ListOf",[["app",{"sourceInterval":[8501,8513]},"NewParameter",[]],["terminal",{"sourceInterval":[8515,8518]},","]]],["terminal",{"sourceInterval":[8520,8523]},"}"]]],"ExpressionNew_withTrailing":["define",{"sourceInterval":[8563,8620]},null,[],["seq",{"sourceInterval":[8563,8603]},["app",{"sourceInterval":[8563,8565]},"id",[]],["terminal",{"sourceInterval":[8566,8569]},"{"],["app",{"sourceInterval":[8570,8595]},"ListOf",[["app",{"sourceInterval":[8577,8589]},"NewParameter",[]],["terminal",{"sourceInterval":[8591,8594]},","]]],["terminal",{"sourceInterval":[8596,8599]},","],["terminal",{"sourceInterval":[8600,8603]},"}"]]],"ExpressionNew":["define",{"sourceInterval":[8471,8620]},null,[],["alt",{"sourceInterval":[8487,8620]},["app",{"sourceInterval":[8487,8523]},"ExpressionNew_noTrailing",[]],["app",{"sourceInterval":[8563,8603]},"ExpressionNew_withTrailing",[]]]],"NewParameter":["define",{"sourceInterval":[8625,8657]},null,[],["seq",{"sourceInterval":[8640,8657]},["app",{"sourceInterval":[8640,8642]},"id",[]],["terminal",{"sourceInterval":[8643,8646]},":"],["app",{"sourceInterval":[8647,8657]},"Expression",[]]]],"ExpressionStaticCall":["define",{"sourceInterval":[8662,8719]},null,[],["seq",{"sourceInterval":[8685,8719]},["app",{"sourceInterval":[8685,8687]},"id",[]],["terminal",{"sourceInterval":[8688,8691]},"("],["app",{"sourceInterval":[8692,8715]},"ListOf",[["app",{"sourceInterval":[8699,8709]},"Expression",[]],["terminal",{"sourceInterval":[8711,8714]},","]]],["terminal",{"sourceInterval":[8716,8719]},")"]]],"ExpressionInitOf":["define",{"sourceInterval":[8724,8784]},null,[],["seq",{"sourceInterval":[8743,8784]},["app",{"sourceInterval":[8743,8749]},"initOf",[]],["app",{"sourceInterval":[8750,8752]},"id",[]],["terminal",{"sourceInterval":[8753,8756]},"("],["app",{"sourceInterval":[8757,8780]},"ListOf",[["app",{"sourceInterval":[8764,8774]},"Expression",[]],["terminal",{"sourceInterval":[8776,8779]},","]]],["terminal",{"sourceInterval":[8781,8784]},")"]]],"typeLiteral":["define",{"sourceInterval":[8810,8854]},null,[],["seq",{"sourceInterval":[8824,8854]},["app",{"sourceInterval":[8824,8837]},"letterAsciiUC",[]],["star",{"sourceInterval":[8838,8854]},["app",{"sourceInterval":[8838,8853]},"typeLiteralPart",[]]]]],"typeLiteralPart":["define",{"sourceInterval":[8859,8902]},null,[],["alt",{"sourceInterval":[8877,8902]},["app",{"sourceInterval":[8877,8888]},"letterAscii",[]],["app",{"sourceInterval":[8891,8896]},"digit",[]],["terminal",{"sourceInterval":[8899,8902]},"_"]]],"integerLiteral":["define",{"sourceInterval":[9109,9203]},null,[],["alt",{"sourceInterval":[9126,9203]},["app",{"sourceInterval":[9126,9143]},"integerLiteralHex",[]],["app",{"sourceInterval":[9146,9163]},"integerLiteralBin",[]],["app",{"sourceInterval":[9166,9183]},"integerLiteralOct",[]],["app",{"sourceInterval":[9186,9203]},"integerLiteralDec",[]]]],"integerLiteralDec_nonZeroIntegerLiteralDec":["define",{"sourceInterval":[9250,9304]},null,[],["seq",{"sourceInterval":[9250,9276]},["app",{"sourceInterval":[9250,9262]},"nonZeroDigit",[]],["star",{"sourceInterval":[9263,9276]},["seq",{"sourceInterval":[9264,9274]},["opt",{"sourceInterval":[9264,9268]},["terminal",{"sourceInterval":[9264,9267]},"_"]],["app",{"sourceInterval":[9269,9274]},"digit",[]]]]]],"integerLiteralDec_integerLiteralWithLeadingZero":["define",{"sourceInterval":[9329,9388]},null,[],["seq",{"sourceInterval":[9329,9339]},["terminal",{"sourceInterval":[9329,9332]},"0"],["star",{"sourceInterval":[9333,9339]},["app",{"sourceInterval":[9333,9338]},"digit",[]]]]],"integerLiteralDec":["define",{"sourceInterval":[9230,9388]},null,[],["alt",{"sourceInterval":[9250,9388]},["app",{"sourceInterval":[9250,9276]},"integerLiteralDec_nonZeroIntegerLiteralDec",[]],["app",{"sourceInterval":[9329,9339]},"integerLiteralDec_integerLiteralWithLeadingZero",[]]]],"integerLiteralHex":["define",{"sourceInterval":[9393,9452]},null,[],["seq",{"sourceInterval":[9413,9452]},["alt",{"sourceInterval":[9414,9425]},["terminal",{"sourceInterval":[9414,9418]},"0x"],["terminal",{"sourceInterval":[9421,9425]},"0X"]],["app",{"sourceInterval":[9427,9435]},"hexDigit",[]],["star",{"sourceInterval":[9436,9452]},["seq",{"sourceInterval":[9437,9450]},["opt",{"sourceInterval":[9437,9441]},["terminal",{"sourceInterval":[9437,9440]},"_"]],["app",{"sourceInterval":[9442,9450]},"hexDigit",[]]]]]],"integerLiteralBin":["define",{"sourceInterval":[9457,9516]},null,[],["seq",{"sourceInterval":[9477,9516]},["alt",{"sourceInterval":[9478,9489]},["terminal",{"sourceInterval":[9478,9482]},"0b"],["terminal",{"sourceInterval":[9485,9489]},"0B"]],["app",{"sourceInterval":[9491,9499]},"binDigit",[]],["star",{"sourceInterval":[9500,9516]},["seq",{"sourceInterval":[9501,9514]},["opt",{"sourceInterval":[9501,9505]},["terminal",{"sourceInterval":[9501,9504]},"_"]],["app",{"sourceInterval":[9506,9514]},"binDigit",[]]]]]],"integerLiteralOct":["define",{"sourceInterval":[9521,9580]},null,[],["seq",{"sourceInterval":[9541,9580]},["alt",{"sourceInterval":[9542,9553]},["terminal",{"sourceInterval":[9542,9546]},"0o"],["terminal",{"sourceInterval":[9549,9553]},"0O"]],["app",{"sourceInterval":[9555,9563]},"octDigit",[]],["star",{"sourceInterval":[9564,9580]},["seq",{"sourceInterval":[9565,9578]},["opt",{"sourceInterval":[9565,9569]},["terminal",{"sourceInterval":[9565,9568]},"_"]],["app",{"sourceInterval":[9570,9578]},"octDigit",[]]]]]],"binDigit":["define",{"sourceInterval":[9585,9605]},null,[],["alt",{"sourceInterval":[9596,9605]},["terminal",{"sourceInterval":[9596,9599]},"0"],["terminal",{"sourceInterval":[9602,9605]},"1"]]],"octDigit":["define",{"sourceInterval":[9610,9629]},null,[],["range",{"sourceInterval":[9621,9629]},"0","7"]],"nonZeroDigit":["define",{"sourceInterval":[9634,9657]},null,[],["range",{"sourceInterval":[9649,9657]},"1","9"]],"letterAsciiLC":["define",{"sourceInterval":[9678,9702]},null,[],["range",{"sourceInterval":[9694,9702]},"a","z"]],"letterAsciiUC":["define",{"sourceInterval":[9707,9731]},null,[],["range",{"sourceInterval":[9723,9731]},"A","Z"]],"letterAscii":["define",{"sourceInterval":[9736,9779]},null,[],["alt",{"sourceInterval":[9750,9779]},["app",{"sourceInterval":[9750,9763]},"letterAsciiLC",[]],["app",{"sourceInterval":[9766,9779]},"letterAsciiUC",[]]]],"letterComment":["define",{"sourceInterval":[9784,9843]},null,[],["alt",{"sourceInterval":[9800,9843]},["app",{"sourceInterval":[9800,9813]},"letterAsciiLC",[]],["app",{"sourceInterval":[9816,9829]},"letterAsciiUC",[]],["app",{"sourceInterval":[9832,9837]},"digit",[]],["terminal",{"sourceInterval":[9840,9843]},"_"]]],"idStart":["define",{"sourceInterval":[9867,9894]},null,[],["alt",{"sourceInterval":[9877,9894]},["app",{"sourceInterval":[9877,9888]},"letterAscii",[]],["terminal",{"sourceInterval":[9891,9894]},"_"]]],"idPart":["define",{"sourceInterval":[9899,9933]},null,[],["alt",{"sourceInterval":[9908,9933]},["app",{"sourceInterval":[9908,9919]},"letterAscii",[]],["app",{"sourceInterval":[9922,9927]},"digit",[]],["terminal",{"sourceInterval":[9930,9933]},"_"]]],"id":["define",{"sourceInterval":[9938,9976]},null,[],["seq",{"sourceInterval":[9943,9976]},["not",{"sourceInterval":[9943,9956]},["app",{"sourceInterval":[9944,9956]},"reservedWord",[]]],["lex",{"sourceInterval":[9957,9965]},["app",{"sourceInterval":[9958,9965]},"idStart",[]]],["lex",{"sourceInterval":[9966,9976]},["star",{"sourceInterval":[9968,9975]},["app",{"sourceInterval":[9968,9974]},"idPart",[]]]]]],"funcLetter":["define",{"sourceInterval":[9997,10058]},null,[],["alt",{"sourceInterval":[10010,10058]},["app",{"sourceInterval":[10010,10021]},"letterAscii",[]],["terminal",{"sourceInterval":[10024,10027]},"_"],["terminal",{"sourceInterval":[10030,10033]},"'"],["terminal",{"sourceInterval":[10036,10039]},"?"],["terminal",{"sourceInterval":[10042,10045]},"!"],["terminal",{"sourceInterval":[10048,10052]},"::"],["terminal",{"sourceInterval":[10055,10058]},"&"]]],"funcId":["define",{"sourceInterval":[10063,10105]},null,[],["seq",{"sourceInterval":[10072,10105]},["app",{"sourceInterval":[10072,10082]},"funcLetter",[]],["star",{"sourceInterval":[10083,10105]},["lex",{"sourceInterval":[10083,10104]},["alt",{"sourceInterval":[10085,10103]},["app",{"sourceInterval":[10085,10095]},"funcLetter",[]],["app",{"sourceInterval":[10098,10103]},"digit",[]]]]]]],"boolLiteral":["define",{"sourceInterval":[10131,10171]},null,[],["seq",{"sourceInterval":[10145,10171]},["alt",{"sourceInterval":[10146,10162]},["terminal",{"sourceInterval":[10146,10152]},"true"],["terminal",{"sourceInterval":[10155,10162]},"false"]],["not",{"sourceInterval":[10164,10171]},["app",{"sourceInterval":[10165,10171]},"idPart",[]]]]],"stringLiteralCharacter":["define",{"sourceInterval":[10199,10259]},null,[],["seq",{"sourceInterval":[10224,10259]},["not",{"sourceInterval":[10224,10255]},["alt",{"sourceInterval":[10226,10254]},["terminal",{"sourceInterval":[10226,10230]},"\""],["terminal",{"sourceInterval":[10233,10237]},"\\"],["app",{"sourceInterval":[10240,10254]},"lineTerminator",[]]]],["app",{"sourceInterval":[10256,10259]},"any",[]]]],"stringLiteral":["define",{"sourceInterval":[10264,10313]},null,[],["seq",{"sourceInterval":[10280,10313]},["terminal",{"sourceInterval":[10280,10284]},"\""],["star",{"sourceInterval":[10285,10308]},["app",{"sourceInterval":[10285,10307]},"stringLiteralCharacter",[]]],["terminal",{"sourceInterval":[10309,10313]},"\""]]],"keyword":["define",{"sourceInterval":[10366,10879]},null,[],["alt",{"sourceInterval":[10376,10879]},["app",{"sourceInterval":[10376,10379]},"fun",[]],["app",{"sourceInterval":[10395,10398]},"let",[]],["app",{"sourceInterval":[10413,10419]},"return",[]],["app",{"sourceInterval":[10435,10441]},"extend",[]],["app",{"sourceInterval":[10457,10463]},"native",[]],["app",{"sourceInterval":[10479,10485]},"public",[]],["app",{"sourceInterval":[10501,10505]},"null",[]],["app",{"sourceInterval":[10521,10523]},"if",[]],["app",{"sourceInterval":[10539,10543]},"else",[]],["app",{"sourceInterval":[10559,10564]},"while",[]],["app",{"sourceInterval":[10580,10586]},"repeat",[]],["app",{"sourceInterval":[10602,10604]},"do",[]],["app",{"sourceInterval":[10620,10625]},"until",[]],["app",{"sourceInterval":[10641,10643]},"as",[]],["app",{"sourceInterval":[10660,10667]},"mutates",[]],["app",{"sourceInterval":[10682,10689]},"extends",[]],["app",{"sourceInterval":[10704,10710]},"import",[]],["app",{"sourceInterval":[10725,10729]},"with",[]],["app",{"sourceInterval":[10744,10749]},"trait",[]],["app",{"sourceInterval":[10764,10770]},"initOf",[]],["app",{"sourceInterval":[10785,10793]},"override",[]],["app",{"sourceInterval":[10808,10816]},"abstract",[]],["app",{"sourceInterval":[10831,10838]},"virtual",[]],["app",{"sourceInterval":[10853,10859]},"inline",[]],["app",{"sourceInterval":[10874,10879]},"const",[]]]],"contract":["define",{"sourceInterval":[10884,10913]},null,[],["seq",{"sourceInterval":[10895,10913]},["terminal",{"sourceInterval":[10895,10905]},"contract"],["not",{"sourceInterval":[10906,10913]},["app",{"sourceInterval":[10907,10913]},"idPart",[]]]]],"let":["define",{"sourceInterval":[10918,10937]},null,[],["seq",{"sourceInterval":[10924,10937]},["terminal",{"sourceInterval":[10924,10929]},"let"],["not",{"sourceInterval":[10930,10937]},["app",{"sourceInterval":[10931,10937]},"idPart",[]]]]],"fun":["define",{"sourceInterval":[10942,10961]},null,[],["seq",{"sourceInterval":[10948,10961]},["terminal",{"sourceInterval":[10948,10953]},"fun"],["not",{"sourceInterval":[10954,10961]},["app",{"sourceInterval":[10955,10961]},"idPart",[]]]]],"return":["define",{"sourceInterval":[10966,10991]},null,[],["seq",{"sourceInterval":[10975,10991]},["terminal",{"sourceInterval":[10975,10983]},"return"],["not",{"sourceInterval":[10984,10991]},["app",{"sourceInterval":[10985,10991]},"idPart",[]]]]],"extend":["define",{"sourceInterval":[10996,11021]},null,[],["seq",{"sourceInterval":[11005,11021]},["terminal",{"sourceInterval":[11005,11013]},"extend"],["not",{"sourceInterval":[11014,11021]},["app",{"sourceInterval":[11015,11021]},"idPart",[]]]]],"native":["define",{"sourceInterval":[11026,11051]},null,[],["seq",{"sourceInterval":[11035,11051]},["terminal",{"sourceInterval":[11035,11043]},"native"],["not",{"sourceInterval":[11044,11051]},["app",{"sourceInterval":[11045,11051]},"idPart",[]]]]],"public":["define",{"sourceInterval":[11056,11081]},null,[],["seq",{"sourceInterval":[11065,11081]},["terminal",{"sourceInterval":[11065,11073]},"public"],["not",{"sourceInterval":[11074,11081]},["app",{"sourceInterval":[11075,11081]},"idPart",[]]]]],"null":["define",{"sourceInterval":[11086,11107]},null,[],["seq",{"sourceInterval":[11093,11107]},["terminal",{"sourceInterval":[11093,11099]},"null"],["not",{"sourceInterval":[11100,11107]},["app",{"sourceInterval":[11101,11107]},"idPart",[]]]]],"if":["define",{"sourceInterval":[11112,11129]},null,[],["seq",{"sourceInterval":[11117,11129]},["terminal",{"sourceInterval":[11117,11121]},"if"],["not",{"sourceInterval":[11122,11129]},["app",{"sourceInterval":[11123,11129]},"idPart",[]]]]],"else":["define",{"sourceInterval":[11134,11155]},null,[],["seq",{"sourceInterval":[11141,11155]},["terminal",{"sourceInterval":[11141,11147]},"else"],["not",{"sourceInterval":[11148,11155]},["app",{"sourceInterval":[11149,11155]},"idPart",[]]]]],"while":["define",{"sourceInterval":[11160,11183]},null,[],["seq",{"sourceInterval":[11168,11183]},["terminal",{"sourceInterval":[11168,11175]},"while"],["not",{"sourceInterval":[11176,11183]},["app",{"sourceInterval":[11177,11183]},"idPart",[]]]]],"repeat":["define",{"sourceInterval":[11188,11213]},null,[],["seq",{"sourceInterval":[11197,11213]},["terminal",{"sourceInterval":[11197,11205]},"repeat"],["not",{"sourceInterval":[11206,11213]},["app",{"sourceInterval":[11207,11213]},"idPart",[]]]]],"do":["define",{"sourceInterval":[11218,11235]},null,[],["seq",{"sourceInterval":[11223,11235]},["terminal",{"sourceInterval":[11223,11227]},"do"],["not",{"sourceInterval":[11228,11235]},["app",{"sourceInterval":[11229,11235]},"idPart",[]]]]],"until":["define",{"sourceInterval":[11240,11263]},null,[],["seq",{"sourceInterval":[11248,11263]},["terminal",{"sourceInterval":[11248,11255]},"until"],["not",{"sourceInterval":[11256,11263]},["app",{"sourceInterval":[11257,11263]},"idPart",[]]]]],"as":["define",{"sourceInterval":[11268,11285]},null,[],["seq",{"sourceInterval":[11273,11285]},["terminal",{"sourceInterval":[11273,11277]},"as"],["not",{"sourceInterval":[11278,11285]},["app",{"sourceInterval":[11279,11285]},"idPart",[]]]]],"mutates":["define",{"sourceInterval":[11290,11317]},null,[],["seq",{"sourceInterval":[11300,11317]},["terminal",{"sourceInterval":[11300,11309]},"mutates"],["not",{"sourceInterval":[11310,11317]},["app",{"sourceInterval":[11311,11317]},"idPart",[]]]]],"extends":["define",{"sourceInterval":[11322,11349]},null,[],["seq",{"sourceInterval":[11332,11349]},["terminal",{"sourceInterval":[11332,11341]},"extends"],["not",{"sourceInterval":[11342,11349]},["app",{"sourceInterval":[11343,11349]},"idPart",[]]]]],"import":["define",{"sourceInterval":[11354,11379]},null,[],["seq",{"sourceInterval":[11363,11379]},["terminal",{"sourceInterval":[11363,11371]},"import"],["not",{"sourceInterval":[11372,11379]},["app",{"sourceInterval":[11373,11379]},"idPart",[]]]]],"with":["define",{"sourceInterval":[11384,11405]},null,[],["seq",{"sourceInterval":[11391,11405]},["terminal",{"sourceInterval":[11391,11397]},"with"],["not",{"sourceInterval":[11398,11405]},["app",{"sourceInterval":[11399,11405]},"idPart",[]]]]],"trait":["define",{"sourceInterval":[11410,11433]},null,[],["seq",{"sourceInterval":[11418,11433]},["terminal",{"sourceInterval":[11418,11425]},"trait"],["not",{"sourceInterval":[11426,11433]},["app",{"sourceInterval":[11427,11433]},"idPart",[]]]]],"initOf":["define",{"sourceInterval":[11438,11463]},null,[],["seq",{"sourceInterval":[11447,11463]},["terminal",{"sourceInterval":[11447,11455]},"initOf"],["not",{"sourceInterval":[11456,11463]},["app",{"sourceInterval":[11457,11463]},"idPart",[]]]]],"virtual":["define",{"sourceInterval":[11468,11495]},null,[],["seq",{"sourceInterval":[11478,11495]},["terminal",{"sourceInterval":[11478,11487]},"virtual"],["not",{"sourceInterval":[11488,11495]},["app",{"sourceInterval":[11489,11495]},"idPart",[]]]]],"override":["define",{"sourceInterval":[11500,11529]},null,[],["seq",{"sourceInterval":[11511,11529]},["terminal",{"sourceInterval":[11511,11521]},"override"],["not",{"sourceInterval":[11522,11529]},["app",{"sourceInterval":[11523,11529]},"idPart",[]]]]],"inline":["define",{"sourceInterval":[11534,11559]},null,[],["seq",{"sourceInterval":[11543,11559]},["terminal",{"sourceInterval":[11543,11551]},"inline"],["not",{"sourceInterval":[11552,11559]},["app",{"sourceInterval":[11553,11559]},"idPart",[]]]]],"const":["define",{"sourceInterval":[11564,11587]},null,[],["seq",{"sourceInterval":[11572,11587]},["terminal",{"sourceInterval":[11572,11579]},"const"],["not",{"sourceInterval":[11580,11587]},["app",{"sourceInterval":[11581,11587]},"idPart",[]]]]],"abstract":["define",{"sourceInterval":[11592,11621]},null,[],["seq",{"sourceInterval":[11603,11621]},["terminal",{"sourceInterval":[11603,11613]},"abstract"],["not",{"sourceInterval":[11614,11621]},["app",{"sourceInterval":[11615,11621]},"idPart",[]]]]],"nameAttribute":["define",{"sourceInterval":[11645,11668]},null,[],["terminal",{"sourceInterval":[11661,11668]},"@name"]],"reservedWord":["define",{"sourceInterval":[11690,11712]},null,[],["app",{"sourceInterval":[11705,11712]},"keyword",[]]],"space":["extend",{"sourceInterval":[11734,11767]},null,[],["alt",{"sourceInterval":[11743,11767]},["app",{"sourceInterval":[11743,11750]},"comment",[]],["app",{"sourceInterval":[11753,11767]},"lineTerminator",[]]]],"comment":["define",{"sourceInterval":[11772,11818]},null,[],["alt",{"sourceInterval":[11782,11818]},["app",{"sourceInterval":[11782,11798]},"multiLineComment",[]],["app",{"sourceInterval":[11801,11818]},"singleLineComment",[]]]],"lineTerminator":["define",{"sourceInterval":[11823,11873]},null,[],["alt",{"sourceInterval":[11840,11873]},["terminal",{"sourceInterval":[11840,11844]},"\n"],["terminal",{"sourceInterval":[11847,11851]},"\r"],["terminal",{"sourceInterval":[11854,11862]},"\u2028"],["terminal",{"sourceInterval":[11865,11873]},"\u2029"]]],"multiLineComment":["define",{"sourceInterval":[11878,11919]},null,[],["seq",{"sourceInterval":[11897,11919]},["terminal",{"sourceInterval":[11897,11901]},"/*"],["star",{"sourceInterval":[11902,11914]},["seq",{"sourceInterval":[11903,11912]},["not",{"sourceInterval":[11903,11908]},["terminal",{"sourceInterval":[11904,11908]},"*/"]],["app",{"sourceInterval":[11909,11912]},"any",[]]]],["terminal",{"sourceInterval":[11915,11919]},"*/"]]],"singleLineComment":["define",{"sourceInterval":[11924,11971]},null,[],["seq",{"sourceInterval":[11944,11971]},["terminal",{"sourceInterval":[11944,11948]},"//"],["star",{"sourceInterval":[11949,11971]},["seq",{"sourceInterval":[11950,11969]},["not",{"sourceInterval":[11950,11965]},["app",{"sourceInterval":[11951,11965]},"lineTerminator",[]]],["app",{"sourceInterval":[11966,11969]},"any",[]]]]]]}]);module.exports=result; \ No newline at end of file diff --git a/src/grammar/grammar.ts b/src/grammar/grammar.ts index e89e62399..594261e9a 100644 --- a/src/grammar/grammar.ts +++ b/src/grammar/grammar.ts @@ -355,6 +355,19 @@ semantics.addOperation('resolve_declaration', { ref: createRef(this) }) }, + NativeFunction_withTypeAndTrailingComma(_arg0, _arg1, arg2, _arg3, arg4, arg5, arg6, _arg7, arg8, _arg9, _arg10, arg11, _arg12, _arg13) { + checkVariableName(arg5.sourceString, createRef(arg5)); + return createNode({ + kind: 'def_native_function', + origin: ctx!.origin, + attributes: arg4.children.map((v) => v.resolve_attributes()), + name: arg6.sourceString, + nativeName: arg2.sourceString, + return: arg11.resolve_expression(), + args: arg8.asIteration().children.map((v) => v.resolve_declaration()), + ref: createRef(this) + }) + }, NativeFunction_withVoid(_arg0, _arg1, arg2, _arg3, arg4, arg5, arg6, _arg7, arg8, _arg9, _arg10) { checkVariableName(arg5.sourceString, createRef(arg5)); return createNode({ @@ -368,6 +381,19 @@ semantics.addOperation('resolve_declaration', { ref: createRef(this) }) }, + NativeFunction_withVoidAndTrailingComma(_arg0, _arg1, arg2, _arg3, arg4, arg5, arg6, _arg7, arg8, _arg9, _arg10, _arg11) { + checkVariableName(arg5.sourceString, createRef(arg5)); + return createNode({ + kind: 'def_native_function', + origin: ctx!.origin, + attributes: arg4.children.map((v) => v.resolve_attributes()), + name: arg6.sourceString, + nativeName: arg2.sourceString, + return: null, + args: arg8.asIteration().children.map((v) => v.resolve_declaration()), + ref: createRef(this) + }) + }, ContractInit(_arg0, _arg1, arg2, _arg3, _arg4, arg5, _arg6) { return createNode({ kind: 'def_init_function', diff --git a/src/grammar/test/case-25.tact b/src/grammar/test/case-25.tact index 4d8e0571a..d8df1a71c 100644 --- a/src/grammar/test/case-25.tact +++ b/src/grammar/test/case-25.tact @@ -1,3 +1,10 @@ fun function(a: Int, b: Int): Int { return (a >> b) || (a << (32 - b)); +} + +fun anotherFunction( + a: Int, + b: Int, + ): Int { + return (a >> b) || (a << (32 - b)); } \ No newline at end of file diff --git a/src/test/features/serialization-2.tact b/src/test/features/serialization-2.tact index 627b6a22f..9263fb0aa 100644 --- a/src/test/features/serialization-2.tact +++ b/src/test/features/serialization-2.tact @@ -76,14 +76,14 @@ contract SerializationTester2 { get fun getBoth():Both { return Both{ a: self.a, - b: self.b + b: self.b, }; } get fun getBothOpt():Both? { return Both{ a: self.a, - b: self.b + b: self.b, }; } From f566f7ecf953b18f923ca9912abadcbc81c865e0 Mon Sep 17 00:00:00 2001 From: Vitor Py Braga <12871+vitorpy@users.noreply.github.com> Date: Wed, 20 Mar 2024 17:52:02 +0100 Subject: [PATCH 03/22] Revert changes to serialization-2.tact --- src/test/features/serialization-2.tact | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/src/test/features/serialization-2.tact b/src/test/features/serialization-2.tact index 9263fb0aa..a7b41d523 100644 --- a/src/test/features/serialization-2.tact +++ b/src/test/features/serialization-2.tact @@ -74,17 +74,11 @@ contract SerializationTester2 { } get fun getBoth():Both { - return Both{ - a: self.a, - b: self.b, - }; + return Both{a: self.a, b: self.b}; } get fun getBothOpt():Both? { - return Both{ - a: self.a, - b: self.b, - }; + return Both{a: self.a, b: self.b}; } get fun process(src: Vars, both: Both, both2: Both?): Vars { From 4547492f0dee587a91104e0d6a63ab8d5d1811c9 Mon Sep 17 00:00:00 2001 From: Vitor Py Braga <12871+vitorpy@users.noreply.github.com> Date: Wed, 20 Mar 2024 18:25:03 +0100 Subject: [PATCH 04/22] Expand coverage to Function, convert to using ? syntax instead of duplicated entries --- src/grammar/grammar.ohm | 17 ++++----- src/grammar/grammar.ohm-bundle.d.ts | 18 ++++------ src/grammar/grammar.ohm-bundle.js | 2 +- src/grammar/grammar.ts | 53 +++++++---------------------- 4 files changed, 27 insertions(+), 63 deletions(-) diff --git a/src/grammar/grammar.ohm b/src/grammar/grammar.ohm index 9a3ff2832..f6be408a9 100644 --- a/src/grammar/grammar.ohm +++ b/src/grammar/grammar.ohm @@ -17,10 +17,8 @@ Tact { // Static function StaticFunction = Function - NativeFunction = nameAttribute "(" funcId ")" FunctionAttribute* native id "(" ListOf ")" ";" --withVoid - | nameAttribute "(" funcId ")" FunctionAttribute* native id "(" ListOf "," ")" ";" --withVoidAndTrailingComma - | nameAttribute "(" funcId ")" FunctionAttribute* native id "(" ListOf ")" ":" Type ";" --withType - | nameAttribute "(" funcId ")" FunctionAttribute* native id "(" ListOf "," ")" ":" Type ";" --withTypeAndTrailingComma + NativeFunction = nameAttribute "(" funcId ")" FunctionAttribute* native id "(" ListOf ","? ")" ";" --withVoid + | nameAttribute "(" funcId ")" FunctionAttribute* native id "(" ListOf ","? ")" ":" Type ";" --withType // Field declarations Type = typeLiteral "?" --optional @@ -74,10 +72,10 @@ Tact { | override --override | inline --inline | abstract --abstract - Function = FunctionAttribute* fun id "(" ListOf ")" "{" Statement* "}" --withVoid - | FunctionAttribute* fun id "(" ListOf ")" ":" Type "{" Statement* "}" --withType - | FunctionAttribute* fun id "(" ListOf ")" ";" --abstractVoid - | FunctionAttribute* fun id "(" ListOf ")" ":" Type ";" --abstractType + Function = FunctionAttribute* fun id "(" ListOf ","? ")" "{" Statement* "}" --withVoid + | FunctionAttribute* fun id "(" ListOf ","? ")" ":" Type "{" Statement* "}" --withType + | FunctionAttribute* fun id "(" ListOf ","? ")" ";" --abstractVoid + | FunctionAttribute* fun id "(" ListOf ","? ")" ":" Type ";" --abstractType FunctionArg = id ":" Type ReceiveFunction = "receive" "(" FunctionArg ")" "{" Statement* "}" --simple @@ -176,8 +174,7 @@ Tact { ExpressionString = stringLiteral ExpressionField = ExpressionValue "." id ~"(" ExpressionCall = ExpressionValue "." id "(" ListOf ")" - ExpressionNew = id "{" ListOf "}" --noTrailing - | id "{" ListOf "," "}" --withTrailing + ExpressionNew = id "{" ListOf ","? "}" NewParameter = id ":" Expression ExpressionStaticCall = id "(" ListOf ")" ExpressionInitOf = initOf id "(" ListOf ")" diff --git a/src/grammar/grammar.ohm-bundle.d.ts b/src/grammar/grammar.ohm-bundle.d.ts index 076c17dee..f4948c396 100644 --- a/src/grammar/grammar.ohm-bundle.d.ts +++ b/src/grammar/grammar.ohm-bundle.d.ts @@ -17,10 +17,8 @@ export interface TactActionDict extends ActionDict { ProgramImport?: (this: NonterminalNode, arg0: NonterminalNode, arg1: NonterminalNode, arg2: TerminalNode) => T; Primitive?: (this: NonterminalNode, arg0: TerminalNode, arg1: NonterminalNode, arg2: TerminalNode) => T; StaticFunction?: (this: NonterminalNode, arg0: NonterminalNode) => T; - NativeFunction_withVoid?: (this: NonterminalNode, arg0: NonterminalNode, arg1: TerminalNode, arg2: NonterminalNode, arg3: TerminalNode, arg4: IterationNode, arg5: NonterminalNode, arg6: NonterminalNode, arg7: TerminalNode, arg8: NonterminalNode, arg9: TerminalNode, arg10: TerminalNode) => T; - NativeFunction_withVoidAndTrailingComma?: (this: NonterminalNode, arg0: NonterminalNode, arg1: TerminalNode, arg2: NonterminalNode, arg3: TerminalNode, arg4: IterationNode, arg5: NonterminalNode, arg6: NonterminalNode, arg7: TerminalNode, arg8: NonterminalNode, arg9: TerminalNode, arg10: TerminalNode, arg11: TerminalNode) => T; - NativeFunction_withType?: (this: NonterminalNode, arg0: NonterminalNode, arg1: TerminalNode, arg2: NonterminalNode, arg3: TerminalNode, arg4: IterationNode, arg5: NonterminalNode, arg6: NonterminalNode, arg7: TerminalNode, arg8: NonterminalNode, arg9: TerminalNode, arg10: TerminalNode, arg11: NonterminalNode, arg12: TerminalNode) => T; - NativeFunction_withTypeAndTrailingComma?: (this: NonterminalNode, arg0: NonterminalNode, arg1: TerminalNode, arg2: NonterminalNode, arg3: TerminalNode, arg4: IterationNode, arg5: NonterminalNode, arg6: NonterminalNode, arg7: TerminalNode, arg8: NonterminalNode, arg9: TerminalNode, arg10: TerminalNode, arg11: TerminalNode, arg12: NonterminalNode, arg13: TerminalNode) => T; + NativeFunction_withVoid?: (this: NonterminalNode, arg0: NonterminalNode, arg1: TerminalNode, arg2: NonterminalNode, arg3: TerminalNode, arg4: IterationNode, arg5: NonterminalNode, arg6: NonterminalNode, arg7: TerminalNode, arg8: NonterminalNode, arg9: IterationNode, arg10: TerminalNode, arg11: TerminalNode) => T; + NativeFunction_withType?: (this: NonterminalNode, arg0: NonterminalNode, arg1: TerminalNode, arg2: NonterminalNode, arg3: TerminalNode, arg4: IterationNode, arg5: NonterminalNode, arg6: NonterminalNode, arg7: TerminalNode, arg8: NonterminalNode, arg9: IterationNode, arg10: TerminalNode, arg11: TerminalNode, arg12: NonterminalNode, arg13: TerminalNode) => T; NativeFunction?: (this: NonterminalNode, arg0: NonterminalNode) => T; Type_optional?: (this: NonterminalNode, arg0: NonterminalNode, arg1: TerminalNode) => T; Type_required?: (this: NonterminalNode, arg0: NonterminalNode) => T; @@ -63,10 +61,10 @@ export interface TactActionDict extends ActionDict { FunctionAttribute_inline?: (this: NonterminalNode, arg0: NonterminalNode) => T; FunctionAttribute_abstract?: (this: NonterminalNode, arg0: NonterminalNode) => T; FunctionAttribute?: (this: NonterminalNode, arg0: NonterminalNode) => T; - Function_withVoid?: (this: NonterminalNode, arg0: IterationNode, arg1: NonterminalNode, arg2: NonterminalNode, arg3: TerminalNode, arg4: NonterminalNode, arg5: TerminalNode, arg6: TerminalNode, arg7: IterationNode, arg8: TerminalNode) => T; - Function_withType?: (this: NonterminalNode, arg0: IterationNode, arg1: NonterminalNode, arg2: NonterminalNode, arg3: TerminalNode, arg4: NonterminalNode, arg5: TerminalNode, arg6: TerminalNode, arg7: NonterminalNode, arg8: TerminalNode, arg9: IterationNode, arg10: TerminalNode) => T; - Function_abstractVoid?: (this: NonterminalNode, arg0: IterationNode, arg1: NonterminalNode, arg2: NonterminalNode, arg3: TerminalNode, arg4: NonterminalNode, arg5: TerminalNode, arg6: TerminalNode) => T; - Function_abstractType?: (this: NonterminalNode, arg0: IterationNode, arg1: NonterminalNode, arg2: NonterminalNode, arg3: TerminalNode, arg4: NonterminalNode, arg5: TerminalNode, arg6: TerminalNode, arg7: NonterminalNode, arg8: TerminalNode) => T; + Function_withVoid?: (this: NonterminalNode, arg0: IterationNode, arg1: NonterminalNode, arg2: NonterminalNode, arg3: TerminalNode, arg4: NonterminalNode, arg5: IterationNode, arg6: TerminalNode, arg7: TerminalNode, arg8: IterationNode, arg9: TerminalNode) => T; + Function_withType?: (this: NonterminalNode, arg0: IterationNode, arg1: NonterminalNode, arg2: NonterminalNode, arg3: TerminalNode, arg4: NonterminalNode, arg5: IterationNode, arg6: TerminalNode, arg7: TerminalNode, arg8: NonterminalNode, arg9: TerminalNode, arg10: IterationNode, arg11: TerminalNode) => T; + Function_abstractVoid?: (this: NonterminalNode, arg0: IterationNode, arg1: NonterminalNode, arg2: NonterminalNode, arg3: TerminalNode, arg4: NonterminalNode, arg5: IterationNode, arg6: TerminalNode, arg7: TerminalNode) => T; + Function_abstractType?: (this: NonterminalNode, arg0: IterationNode, arg1: NonterminalNode, arg2: NonterminalNode, arg3: TerminalNode, arg4: NonterminalNode, arg5: IterationNode, arg6: TerminalNode, arg7: TerminalNode, arg8: NonterminalNode, arg9: TerminalNode) => T; Function?: (this: NonterminalNode, arg0: NonterminalNode) => T; FunctionArg?: (this: NonterminalNode, arg0: NonterminalNode, arg1: TerminalNode, arg2: NonterminalNode) => T; ReceiveFunction_simple?: (this: NonterminalNode, arg0: TerminalNode, arg1: TerminalNode, arg2: NonterminalNode, arg3: TerminalNode, arg4: TerminalNode, arg5: IterationNode, arg6: TerminalNode) => T; @@ -138,9 +136,7 @@ export interface TactActionDict extends ActionDict { ExpressionString?: (this: NonterminalNode, arg0: NonterminalNode) => T; ExpressionField?: (this: NonterminalNode, arg0: NonterminalNode, arg1: TerminalNode, arg2: NonterminalNode) => T; ExpressionCall?: (this: NonterminalNode, arg0: NonterminalNode, arg1: TerminalNode, arg2: NonterminalNode, arg3: TerminalNode, arg4: NonterminalNode, arg5: TerminalNode) => T; - ExpressionNew_noTrailing?: (this: NonterminalNode, arg0: NonterminalNode, arg1: TerminalNode, arg2: NonterminalNode, arg3: TerminalNode) => T; - ExpressionNew_withTrailing?: (this: NonterminalNode, arg0: NonterminalNode, arg1: TerminalNode, arg2: NonterminalNode, arg3: TerminalNode, arg4: TerminalNode) => T; - ExpressionNew?: (this: NonterminalNode, arg0: NonterminalNode) => T; + ExpressionNew?: (this: NonterminalNode, arg0: NonterminalNode, arg1: TerminalNode, arg2: NonterminalNode, arg3: IterationNode, arg4: TerminalNode) => T; NewParameter?: (this: NonterminalNode, arg0: NonterminalNode, arg1: TerminalNode, arg2: NonterminalNode) => T; ExpressionStaticCall?: (this: NonterminalNode, arg0: NonterminalNode, arg1: TerminalNode, arg2: NonterminalNode, arg3: TerminalNode) => T; ExpressionInitOf?: (this: NonterminalNode, arg0: NonterminalNode, arg1: NonterminalNode, arg2: TerminalNode, arg3: NonterminalNode, arg4: TerminalNode) => T; diff --git a/src/grammar/grammar.ohm-bundle.js b/src/grammar/grammar.ohm-bundle.js index 99d35fd5d..b2dcc8a54 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 \",\" \")\" \";\" --withVoidAndTrailingComma\n | nameAttribute \"(\" funcId \")\" FunctionAttribute* native id \"(\" ListOf \")\" \":\" Type \";\" --withType\n | nameAttribute \"(\" funcId \")\" FunctionAttribute* native id \"(\" ListOf \",\" \")\" \":\" Type \";\" --withTypeAndTrailingComma\n \n // Field declarations\n Type = typeLiteral \"?\" --optional\n | typeLiteral --required\n | \"map\" \"<\" typeLiteral (as id)? \",\" typeLiteral (as id)? \">\" --map\n | \"bounced\" \"<\" typeLiteral \">\" --bounced\n Field = id \":\" Type \";\" --default\n | id \":\" Type \"=\" Expression \";\" --defaultWithInit\n | id \":\" Type as id \";\" --withSerialization\n | id \":\" Type as id \"=\" Expression \";\" --withSerializationAndInit\n \n // Constant\n ConstantAttribute = virtual --virtual\n | override --override\n | abstract --abstract\n Constant = ConstantAttribute* ~fun const id \":\" Type \"=\" Expression \";\" --withValue\n | ConstantAttribute* ~fun const id \":\" Type \";\" --withEmpty\n\n // Struct\n Struct = \"struct\" typeLiteral \"{\" StructBody* \"}\" --originary\n | \"message\" typeLiteral \"{\" StructBody* \"}\" --message\n | \"message\" \"(\" integerLiteral \")\" typeLiteral \"{\" StructBody* \"}\" --messageWithId\n StructBody = Field\n\n // Contract\n Contract = ContractAttribute* contract id \"{\" ContractBody* \"}\" --simple\n | ContractAttribute* contract id with ListOf \"{\" ContractBody* \"}\" --withTraits\n ContractInit = \"init\" \"(\" ListOf \")\" \"{\" Statement* \"}\"\n ContractBody = Field\n | ContractInit\n | ReceiveFunction\n | Function\n | Constant\n \n // Trait\n Trait = ContractAttribute* trait id \"{\" TraitBody* \"}\" --originary\n | ContractAttribute* trait id with ListOf \"{\" TraitBody* \"}\" --withTraits\n TraitBody = Field\n | ReceiveFunction\n | Function\n | Constant\n\n // Contract attributes\n ContractAttribute = \"@interface\" \"(\" stringLiteral \")\" --interface\n\n // Function\n FunctionAttribute = \"get\" --getter\n | mutates --mutates\n | extends --extends\n | virtual --virtual\n | override --override\n | inline --inline\n | abstract --abstract\n Function = FunctionAttribute* fun id \"(\" ListOf \")\" \"{\" Statement* \"}\" --withVoid\n | FunctionAttribute* fun id \"(\" ListOf \")\" \":\" Type \"{\" Statement* \"}\" --withType\n | FunctionAttribute* fun id \"(\" ListOf \")\" \";\" --abstractVoid\n | FunctionAttribute* fun id \"(\" ListOf \")\" \":\" Type \";\" --abstractType\n FunctionArg = id \":\" Type\n \n ReceiveFunction = \"receive\" \"(\" FunctionArg \")\" \"{\" Statement* \"}\" --simple\n | \"receive\" \"(\" \")\" \"{\" Statement* \"}\" --empty\n | \"receive\" \"(\" stringLiteral \")\" \"{\" Statement* \"}\" --comment\n | \"bounced\" \"(\" FunctionArg \")\" \"{\" Statement* \"}\" --bounced\n | \"external\" \"(\" FunctionArg \")\" \"{\" Statement* \"}\" --externalSimple\n | \"external\" \"(\" stringLiteral \")\" \"{\" Statement* \"}\" --externalComment\n | \"external\" \"(\" \")\" \"{\" Statement* \"}\" --externalEmpty\n\n // Statements\n Statement = StatementLet\n | StatementBlock\n | StatementReturn\n | StatementExpression\n | StatementAssign\n | StatementAugmentedAssign\n | StatementCondition\n | StatementWhile\n | StatementRepeat\n | StatementUntil\n StatementBlock = \"{\" Statement* \"}\"\n StatementLet = let id \":\" Type \"=\" Expression \";\"\n StatementReturn = return Expression \";\" --withExpression\n | return \";\" --withoutExpression \n StatementExpression = Expression \";\"\n StatementAssign = LValue \"=\" Expression \";\"\n StatementAugmentedAssign = StatementAugmentedAssignAdd\n | StatementAugmentedAssignSub\n | StatementAugmentedAssignMul\n | StatementAugmentedAssignDiv\n | StatementAugmentedAssignRem\n StatementAugmentedAssignAdd = LValue \"+=\" Expression \";\"\n StatementAugmentedAssignSub = LValue \"-=\" Expression \";\"\n StatementAugmentedAssignMul = LValue \"*=\" Expression \";\"\n StatementAugmentedAssignDiv = LValue \"/=\" Expression \";\"\n StatementAugmentedAssignRem = LValue \"%=\" Expression \";\"\n StatementCondition = if Expression \"{\" Statement* \"}\" ~else --simple\n | if Expression \"{\" Statement* \"}\" else \"{\" Statement* \"}\" --withElse\n | if Expression \"{\" Statement* \"}\" else StatementCondition --withElseIf\n StatementWhile = while \"(\" Expression \")\" \"{\" Statement* \"}\"\n StatementRepeat = repeat \"(\" Expression \")\" \"{\" Statement* \"}\"\n StatementUntil = do \"{\" Statement* \"}\" until \"(\" Expression \")\" \";\"\n\n // L-value\n LValue = id \".\" LValue --more\n | id --single\n\n // Expressions\n Expression = ExpressionConditional\n ExpressionConditional = ExpressionOr \"?\" ExpressionOr \":\" ExpressionConditional --ternary\n | ExpressionOr\n ExpressionOr = ExpressionOr \"||\" ExpressionAnd --or\n | ExpressionAnd\n ExpressionAnd = ExpressionAnd \"&&\" ExpressionCompare --and\n | ExpressionCompare\n ExpressionCompare = ExpressionCompare \"!=\" ExpressionBinary --not\n | ExpressionCompare \"==\" ExpressionBinary --eq\n | ExpressionCompare \">\" ExpressionBinary --gt\n | ExpressionCompare \">=\" ExpressionBinary --gte\n | ExpressionCompare \"<\" ExpressionBinary --lt\n | ExpressionCompare \"<=\" ExpressionBinary --lte\n | ExpressionBinary\n ExpressionBinary = ExpressionBinary \">>\" ExpressionAdd --shr\n | ExpressionBinary \"<<\" ExpressionAdd --shl\n | ExpressionBinary \"&\" ExpressionAdd --bin_and\n | ExpressionBinary \"|\" ExpressionAdd --bin_or\n | ExpressionAdd\n ExpressionAdd = ExpressionAdd \"+\" ~\"+\" ExpressionMul --add\n | ExpressionAdd \"-\" ~\"-\" ExpressionMul --sub\n | ExpressionMul\n ExpressionMul = ExpressionMul \"*\" ExpressionUnary --mul\n | ExpressionMul \"/\" ExpressionUnary --div\n | ExpressionMul \"%\" ExpressionUnary --rem\n | ExpressionUnary\n ExpressionUnary = \"-\" ExpressionUnarySuffix --neg\n | \"+\" ExpressionUnarySuffix --add\n | \"!\" ExpressionUnarySuffix --not\n | ExpressionUnarySuffix\n ExpressionUnarySuffix = ExpressionValue \"!!\" --notNull\n | ExpressionValue\n ExpressionBracket = \"(\" Expression \")\"\n\n // Order is important\n ExpressionValue = ExpressionCall\n | ExpressionField\n | ExpressionStaticCall\n | ExpressionBracket\n | ExpressionNew\n | integerLiteral\n | boolLiteral\n | id\n | null\n | ExpressionInitOf\n | ExpressionString\n ExpressionString = stringLiteral\n ExpressionField = ExpressionValue \".\" id ~\"(\"\n ExpressionCall = ExpressionValue \".\" id \"(\" ListOf \")\"\n ExpressionNew = id \"{\" ListOf \"}\" --noTrailing\n | id \"{\" ListOf \",\" \"}\" --withTrailing\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_withVoidAndTrailingComma":["define",{"sourceInterval":[614,738]},null,[],["seq",{"sourceInterval":[614,711]},["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]},")"],["terminal",{"sourceInterval":[708,711]},";"]]],"NativeFunction_withType":["define",{"sourceInterval":[760,873]},null,[],["seq",{"sourceInterval":[760,862]},["app",{"sourceInterval":[760,773]},"nameAttribute",[]],["terminal",{"sourceInterval":[774,777]},"("],["app",{"sourceInterval":[778,784]},"funcId",[]],["terminal",{"sourceInterval":[785,788]},")"],["star",{"sourceInterval":[789,807]},["app",{"sourceInterval":[789,806]},"FunctionAttribute",[]]],["app",{"sourceInterval":[808,814]},"native",[]],["app",{"sourceInterval":[815,817]},"id",[]],["terminal",{"sourceInterval":[818,821]},"("],["app",{"sourceInterval":[822,845]},"ListOf",[["app",{"sourceInterval":[829,840]},"FunctionArg",[]],["terminal",{"sourceInterval":[841,844]},","]]],["terminal",{"sourceInterval":[846,849]},")"],["terminal",{"sourceInterval":[850,853]},":"],["app",{"sourceInterval":[854,858]},"Type",[]],["terminal",{"sourceInterval":[859,862]},";"]]],"NativeFunction_withTypeAndTrailingComma":["define",{"sourceInterval":[895,1028]},null,[],["seq",{"sourceInterval":[895,1001]},["app",{"sourceInterval":[895,908]},"nameAttribute",[]],["terminal",{"sourceInterval":[909,912]},"("],["app",{"sourceInterval":[913,919]},"funcId",[]],["terminal",{"sourceInterval":[920,923]},")"],["star",{"sourceInterval":[924,942]},["app",{"sourceInterval":[924,941]},"FunctionAttribute",[]]],["app",{"sourceInterval":[943,949]},"native",[]],["app",{"sourceInterval":[950,952]},"id",[]],["terminal",{"sourceInterval":[953,956]},"("],["app",{"sourceInterval":[957,980]},"ListOf",[["app",{"sourceInterval":[964,975]},"FunctionArg",[]],["terminal",{"sourceInterval":[976,979]},","]]],["terminal",{"sourceInterval":[981,984]},","],["terminal",{"sourceInterval":[985,988]},")"],["terminal",{"sourceInterval":[989,992]},":"],["app",{"sourceInterval":[993,997]},"Type",[]],["terminal",{"sourceInterval":[998,1001]},";"]]],"NativeFunction":["define",{"sourceInterval":[471,1028]},null,[],["alt",{"sourceInterval":[488,1028]},["app",{"sourceInterval":[488,581]},"NativeFunction_withVoid",[]],["app",{"sourceInterval":[614,711]},"NativeFunction_withVoidAndTrailingComma",[]],["app",{"sourceInterval":[760,862]},"NativeFunction_withType",[]],["app",{"sourceInterval":[895,1001]},"NativeFunction_withTypeAndTrailingComma",[]]]],"Type_optional":["define",{"sourceInterval":[1071,1097]},null,[],["seq",{"sourceInterval":[1071,1086]},["app",{"sourceInterval":[1071,1082]},"typeLiteral",[]],["terminal",{"sourceInterval":[1083,1086]},"?"]]],"Type_required":["define",{"sourceInterval":[1109,1131]},null,[],["app",{"sourceInterval":[1109,1120]},"typeLiteral",[]]],"Type_map":["define",{"sourceInterval":[1143,1208]},null,[],["seq",{"sourceInterval":[1143,1202]},["terminal",{"sourceInterval":[1143,1148]},"map"],["terminal",{"sourceInterval":[1149,1152]},"<"],["app",{"sourceInterval":[1153,1164]},"typeLiteral",[]],["opt",{"sourceInterval":[1165,1173]},["seq",{"sourceInterval":[1166,1171]},["app",{"sourceInterval":[1166,1168]},"as",[]],["app",{"sourceInterval":[1169,1171]},"id",[]]]],["terminal",{"sourceInterval":[1174,1177]},","],["app",{"sourceInterval":[1178,1189]},"typeLiteral",[]],["opt",{"sourceInterval":[1190,1198]},["seq",{"sourceInterval":[1191,1196]},["app",{"sourceInterval":[1191,1193]},"as",[]],["app",{"sourceInterval":[1194,1196]},"id",[]]]],["terminal",{"sourceInterval":[1199,1202]},">"]]],"Type_bounced":["define",{"sourceInterval":[1220,1259]},null,[],["seq",{"sourceInterval":[1220,1249]},["terminal",{"sourceInterval":[1220,1229]},"bounced"],["terminal",{"sourceInterval":[1230,1233]},"<"],["app",{"sourceInterval":[1234,1245]},"typeLiteral",[]],["terminal",{"sourceInterval":[1246,1249]},">"]]],"Type":["define",{"sourceInterval":[1064,1259]},null,[],["alt",{"sourceInterval":[1071,1259]},["app",{"sourceInterval":[1071,1086]},"Type_optional",[]],["app",{"sourceInterval":[1109,1120]},"Type_required",[]],["app",{"sourceInterval":[1143,1202]},"Type_map",[]],["app",{"sourceInterval":[1220,1249]},"Type_bounced",[]]]],"Field_default":["define",{"sourceInterval":[1272,1297]},null,[],["seq",{"sourceInterval":[1272,1287]},["app",{"sourceInterval":[1272,1274]},"id",[]],["terminal",{"sourceInterval":[1275,1278]},":"],["app",{"sourceInterval":[1279,1283]},"Type",[]],["terminal",{"sourceInterval":[1284,1287]},";"]]],"Field_defaultWithInit":["define",{"sourceInterval":[1310,1358]},null,[],["seq",{"sourceInterval":[1310,1340]},["app",{"sourceInterval":[1310,1312]},"id",[]],["terminal",{"sourceInterval":[1313,1316]},":"],["app",{"sourceInterval":[1317,1321]},"Type",[]],["terminal",{"sourceInterval":[1322,1325]},"="],["app",{"sourceInterval":[1326,1336]},"Expression",[]],["terminal",{"sourceInterval":[1337,1340]},";"]]],"Field_withSerialization":["define",{"sourceInterval":[1371,1412]},null,[],["seq",{"sourceInterval":[1371,1392]},["app",{"sourceInterval":[1371,1373]},"id",[]],["terminal",{"sourceInterval":[1374,1377]},":"],["app",{"sourceInterval":[1378,1382]},"Type",[]],["app",{"sourceInterval":[1383,1385]},"as",[]],["app",{"sourceInterval":[1386,1388]},"id",[]],["terminal",{"sourceInterval":[1389,1392]},";"]]],"Field_withSerializationAndInit":["define",{"sourceInterval":[1425,1488]},null,[],["seq",{"sourceInterval":[1425,1461]},["app",{"sourceInterval":[1425,1427]},"id",[]],["terminal",{"sourceInterval":[1428,1431]},":"],["app",{"sourceInterval":[1432,1436]},"Type",[]],["app",{"sourceInterval":[1437,1439]},"as",[]],["app",{"sourceInterval":[1440,1442]},"id",[]],["terminal",{"sourceInterval":[1443,1446]},"="],["app",{"sourceInterval":[1447,1457]},"Expression",[]],["terminal",{"sourceInterval":[1458,1461]},";"]]],"Field":["define",{"sourceInterval":[1264,1488]},null,[],["alt",{"sourceInterval":[1272,1488]},["app",{"sourceInterval":[1272,1287]},"Field_default",[]],["app",{"sourceInterval":[1310,1340]},"Field_defaultWithInit",[]],["app",{"sourceInterval":[1371,1392]},"Field_withSerialization",[]],["app",{"sourceInterval":[1425,1461]},"Field_withSerializationAndInit",[]]]],"ConstantAttribute_virtual":["define",{"sourceInterval":[1534,1554]},null,[],["app",{"sourceInterval":[1534,1541]},"virtual",[]]],"ConstantAttribute_override":["define",{"sourceInterval":[1579,1600]},null,[],["app",{"sourceInterval":[1579,1587]},"override",[]]],"ConstantAttribute_abstract":["define",{"sourceInterval":[1625,1646]},null,[],["app",{"sourceInterval":[1625,1633]},"abstract",[]]],"ConstantAttribute":["define",{"sourceInterval":[1514,1646]},null,[],["alt",{"sourceInterval":[1534,1646]},["app",{"sourceInterval":[1534,1541]},"ConstantAttribute_virtual",[]],["app",{"sourceInterval":[1579,1587]},"ConstantAttribute_override",[]],["app",{"sourceInterval":[1625,1633]},"ConstantAttribute_abstract",[]]]],"Constant_withValue":["define",{"sourceInterval":[1662,1734]},null,[],["seq",{"sourceInterval":[1662,1722]},["star",{"sourceInterval":[1662,1680]},["app",{"sourceInterval":[1662,1679]},"ConstantAttribute",[]]],["not",{"sourceInterval":[1681,1685]},["app",{"sourceInterval":[1682,1685]},"fun",[]]],["app",{"sourceInterval":[1686,1691]},"const",[]],["app",{"sourceInterval":[1692,1694]},"id",[]],["terminal",{"sourceInterval":[1695,1698]},":"],["app",{"sourceInterval":[1699,1703]},"Type",[]],["terminal",{"sourceInterval":[1704,1707]},"="],["app",{"sourceInterval":[1708,1718]},"Expression",[]],["terminal",{"sourceInterval":[1719,1722]},";"]]],"Constant_withEmpty":["define",{"sourceInterval":[1750,1822]},null,[],["seq",{"sourceInterval":[1750,1795]},["star",{"sourceInterval":[1750,1768]},["app",{"sourceInterval":[1750,1767]},"ConstantAttribute",[]]],["not",{"sourceInterval":[1769,1773]},["app",{"sourceInterval":[1770,1773]},"fun",[]]],["app",{"sourceInterval":[1774,1779]},"const",[]],["app",{"sourceInterval":[1780,1782]},"id",[]],["terminal",{"sourceInterval":[1783,1786]},":"],["app",{"sourceInterval":[1787,1791]},"Type",[]],["terminal",{"sourceInterval":[1792,1795]},";"]]],"Constant":["define",{"sourceInterval":[1651,1822]},null,[],["alt",{"sourceInterval":[1662,1822]},["app",{"sourceInterval":[1662,1722]},"Constant_withValue",[]],["app",{"sourceInterval":[1750,1795]},"Constant_withEmpty",[]]]],"Struct_originary":["define",{"sourceInterval":[1851,1903]},null,[],["seq",{"sourceInterval":[1851,1891]},["terminal",{"sourceInterval":[1851,1859]},"struct"],["app",{"sourceInterval":[1860,1871]},"typeLiteral",[]],["terminal",{"sourceInterval":[1872,1875]},"{"],["star",{"sourceInterval":[1876,1887]},["app",{"sourceInterval":[1876,1886]},"StructBody",[]]],["terminal",{"sourceInterval":[1888,1891]},"}"]]],"Struct_message":["define",{"sourceInterval":[1917,1968]},null,[],["seq",{"sourceInterval":[1917,1958]},["terminal",{"sourceInterval":[1917,1926]},"message"],["app",{"sourceInterval":[1927,1938]},"typeLiteral",[]],["terminal",{"sourceInterval":[1939,1942]},"{"],["star",{"sourceInterval":[1943,1954]},["app",{"sourceInterval":[1943,1953]},"StructBody",[]]],["terminal",{"sourceInterval":[1955,1958]},"}"]]],"Struct_messageWithId":["define",{"sourceInterval":[1982,2062]},null,[],["seq",{"sourceInterval":[1982,2046]},["terminal",{"sourceInterval":[1982,1991]},"message"],["terminal",{"sourceInterval":[1992,1995]},"("],["app",{"sourceInterval":[1996,2010]},"integerLiteral",[]],["terminal",{"sourceInterval":[2011,2014]},")"],["app",{"sourceInterval":[2015,2026]},"typeLiteral",[]],["terminal",{"sourceInterval":[2027,2030]},"{"],["star",{"sourceInterval":[2031,2042]},["app",{"sourceInterval":[2031,2041]},"StructBody",[]]],["terminal",{"sourceInterval":[2043,2046]},"}"]]],"Struct":["define",{"sourceInterval":[1842,2062]},null,[],["alt",{"sourceInterval":[1851,2062]},["app",{"sourceInterval":[1851,1891]},"Struct_originary",[]],["app",{"sourceInterval":[1917,1958]},"Struct_message",[]],["app",{"sourceInterval":[1982,2046]},"Struct_messageWithId",[]]]],"StructBody":["define",{"sourceInterval":[2067,2085]},null,[],["app",{"sourceInterval":[2080,2085]},"Field",[]]],"Contract_simple":["define",{"sourceInterval":[2118,2179]},null,[],["seq",{"sourceInterval":[2118,2170]},["star",{"sourceInterval":[2118,2136]},["app",{"sourceInterval":[2118,2135]},"ContractAttribute",[]]],["app",{"sourceInterval":[2137,2145]},"contract",[]],["app",{"sourceInterval":[2146,2148]},"id",[]],["terminal",{"sourceInterval":[2149,2152]},"{"],["star",{"sourceInterval":[2153,2166]},["app",{"sourceInterval":[2153,2165]},"ContractBody",[]]],["terminal",{"sourceInterval":[2167,2170]},"}"]]],"Contract_withTraits":["define",{"sourceInterval":[2195,2280]},null,[],["seq",{"sourceInterval":[2195,2267]},["star",{"sourceInterval":[2195,2213]},["app",{"sourceInterval":[2195,2212]},"ContractAttribute",[]]],["app",{"sourceInterval":[2214,2222]},"contract",[]],["app",{"sourceInterval":[2223,2225]},"id",[]],["app",{"sourceInterval":[2226,2230]},"with",[]],["app",{"sourceInterval":[2231,2245]},"ListOf",[["app",{"sourceInterval":[2238,2240]},"id",[]],["terminal",{"sourceInterval":[2241,2244]},","]]],["terminal",{"sourceInterval":[2246,2249]},"{"],["star",{"sourceInterval":[2250,2263]},["app",{"sourceInterval":[2250,2262]},"ContractBody",[]]],["terminal",{"sourceInterval":[2264,2267]},"}"]]],"Contract":["define",{"sourceInterval":[2107,2280]},null,[],["alt",{"sourceInterval":[2118,2280]},["app",{"sourceInterval":[2118,2170]},"Contract_simple",[]],["app",{"sourceInterval":[2195,2267]},"Contract_withTraits",[]]]],"ContractInit":["define",{"sourceInterval":[2285,2357]},null,[],["seq",{"sourceInterval":[2300,2357]},["terminal",{"sourceInterval":[2300,2306]},"init"],["terminal",{"sourceInterval":[2307,2310]},"("],["app",{"sourceInterval":[2311,2334]},"ListOf",[["app",{"sourceInterval":[2318,2329]},"FunctionArg",[]],["terminal",{"sourceInterval":[2330,2333]},","]]],["terminal",{"sourceInterval":[2335,2338]},")"],["terminal",{"sourceInterval":[2339,2342]},"{"],["star",{"sourceInterval":[2343,2353]},["app",{"sourceInterval":[2343,2352]},"Statement",[]]],["terminal",{"sourceInterval":[2354,2357]},"}"]]],"ContractBody":["define",{"sourceInterval":[2362,2505]},null,[],["alt",{"sourceInterval":[2377,2505]},["app",{"sourceInterval":[2377,2382]},"Field",[]],["app",{"sourceInterval":[2402,2414]},"ContractInit",[]],["app",{"sourceInterval":[2434,2449]},"ReceiveFunction",[]],["app",{"sourceInterval":[2469,2477]},"Function",[]],["app",{"sourceInterval":[2497,2505]},"Constant",[]]]],"Trait_originary":["define",{"sourceInterval":[2536,2594]},null,[],["seq",{"sourceInterval":[2536,2582]},["star",{"sourceInterval":[2536,2554]},["app",{"sourceInterval":[2536,2553]},"ContractAttribute",[]]],["app",{"sourceInterval":[2555,2560]},"trait",[]],["app",{"sourceInterval":[2561,2563]},"id",[]],["terminal",{"sourceInterval":[2564,2567]},"{"],["star",{"sourceInterval":[2568,2578]},["app",{"sourceInterval":[2568,2577]},"TraitBody",[]]],["terminal",{"sourceInterval":[2579,2582]},"}"]]],"Trait_withTraits":["define",{"sourceInterval":[2607,2686]},null,[],["seq",{"sourceInterval":[2607,2673]},["star",{"sourceInterval":[2607,2625]},["app",{"sourceInterval":[2607,2624]},"ContractAttribute",[]]],["app",{"sourceInterval":[2626,2631]},"trait",[]],["app",{"sourceInterval":[2632,2634]},"id",[]],["app",{"sourceInterval":[2635,2639]},"with",[]],["app",{"sourceInterval":[2640,2654]},"ListOf",[["app",{"sourceInterval":[2647,2649]},"id",[]],["terminal",{"sourceInterval":[2650,2653]},","]]],["terminal",{"sourceInterval":[2655,2658]},"{"],["star",{"sourceInterval":[2659,2669]},["app",{"sourceInterval":[2659,2668]},"TraitBody",[]]],["terminal",{"sourceInterval":[2670,2673]},"}"]]],"Trait":["define",{"sourceInterval":[2528,2686]},null,[],["alt",{"sourceInterval":[2536,2686]},["app",{"sourceInterval":[2536,2582]},"Trait_originary",[]],["app",{"sourceInterval":[2607,2673]},"Trait_withTraits",[]]]],"TraitBody":["define",{"sourceInterval":[2691,2790]},null,[],["alt",{"sourceInterval":[2703,2790]},["app",{"sourceInterval":[2703,2708]},"Field",[]],["app",{"sourceInterval":[2725,2740]},"ReceiveFunction",[]],["app",{"sourceInterval":[2757,2765]},"Function",[]],["app",{"sourceInterval":[2782,2790]},"Constant",[]]]],"ContractAttribute_interface":["define",{"sourceInterval":[2843,2889]},null,[],["seq",{"sourceInterval":[2843,2877]},["terminal",{"sourceInterval":[2843,2855]},"@interface"],["terminal",{"sourceInterval":[2856,2859]},"("],["app",{"sourceInterval":[2860,2873]},"stringLiteral",[]],["terminal",{"sourceInterval":[2874,2877]},")"]]],"ContractAttribute":["define",{"sourceInterval":[2823,2889]},null,[],["app",{"sourceInterval":[2843,2889]},"ContractAttribute_interface",[]]],"FunctionAttribute_getter":["define",{"sourceInterval":[2931,2949]},null,[],["terminal",{"sourceInterval":[2931,2936]},"get"]],"FunctionAttribute_mutates":["define",{"sourceInterval":[2974,2993]},null,[],["app",{"sourceInterval":[2974,2981]},"mutates",[]]],"FunctionAttribute_extends":["define",{"sourceInterval":[3018,3037]},null,[],["app",{"sourceInterval":[3018,3025]},"extends",[]]],"FunctionAttribute_virtual":["define",{"sourceInterval":[3062,3081]},null,[],["app",{"sourceInterval":[3062,3069]},"virtual",[]]],"FunctionAttribute_override":["define",{"sourceInterval":[3106,3126]},null,[],["app",{"sourceInterval":[3106,3114]},"override",[]]],"FunctionAttribute_inline":["define",{"sourceInterval":[3151,3169]},null,[],["app",{"sourceInterval":[3151,3157]},"inline",[]]],"FunctionAttribute_abstract":["define",{"sourceInterval":[3194,3214]},null,[],["app",{"sourceInterval":[3194,3202]},"abstract",[]]],"FunctionAttribute":["define",{"sourceInterval":[2911,3214]},null,[],["alt",{"sourceInterval":[2931,3214]},["app",{"sourceInterval":[2931,2936]},"FunctionAttribute_getter",[]],["app",{"sourceInterval":[2974,2981]},"FunctionAttribute_mutates",[]],["app",{"sourceInterval":[3018,3025]},"FunctionAttribute_extends",[]],["app",{"sourceInterval":[3062,3069]},"FunctionAttribute_virtual",[]],["app",{"sourceInterval":[3106,3114]},"FunctionAttribute_override",[]],["app",{"sourceInterval":[3151,3157]},"FunctionAttribute_inline",[]],["app",{"sourceInterval":[3194,3202]},"FunctionAttribute_abstract",[]]]],"Function_withVoid":["define",{"sourceInterval":[3230,3317]},null,[],["seq",{"sourceInterval":[3230,3306]},["star",{"sourceInterval":[3230,3248]},["app",{"sourceInterval":[3230,3247]},"FunctionAttribute",[]]],["app",{"sourceInterval":[3249,3252]},"fun",[]],["app",{"sourceInterval":[3253,3255]},"id",[]],["terminal",{"sourceInterval":[3256,3259]},"("],["app",{"sourceInterval":[3260,3283]},"ListOf",[["app",{"sourceInterval":[3267,3278]},"FunctionArg",[]],["terminal",{"sourceInterval":[3279,3282]},","]]],["terminal",{"sourceInterval":[3284,3287]},")"],["terminal",{"sourceInterval":[3288,3291]},"{"],["star",{"sourceInterval":[3292,3302]},["app",{"sourceInterval":[3292,3301]},"Statement",[]]],["terminal",{"sourceInterval":[3303,3306]},"}"]]],"Function_withType":["define",{"sourceInterval":[3333,3429]},null,[],["seq",{"sourceInterval":[3333,3418]},["star",{"sourceInterval":[3333,3351]},["app",{"sourceInterval":[3333,3350]},"FunctionAttribute",[]]],["app",{"sourceInterval":[3352,3355]},"fun",[]],["app",{"sourceInterval":[3356,3358]},"id",[]],["terminal",{"sourceInterval":[3359,3362]},"("],["app",{"sourceInterval":[3363,3386]},"ListOf",[["app",{"sourceInterval":[3370,3381]},"FunctionArg",[]],["terminal",{"sourceInterval":[3382,3385]},","]]],["terminal",{"sourceInterval":[3387,3390]},")"],["terminal",{"sourceInterval":[3391,3394]},":"],["app",{"sourceInterval":[3395,3399]},"Type",[]],["terminal",{"sourceInterval":[3400,3403]},"{"],["star",{"sourceInterval":[3404,3414]},["app",{"sourceInterval":[3404,3413]},"Statement",[]]],["terminal",{"sourceInterval":[3415,3418]},"}"]]],"Function_abstractVoid":["define",{"sourceInterval":[3445,3521]},null,[],["seq",{"sourceInterval":[3445,3506]},["star",{"sourceInterval":[3445,3463]},["app",{"sourceInterval":[3445,3462]},"FunctionAttribute",[]]],["app",{"sourceInterval":[3464,3467]},"fun",[]],["app",{"sourceInterval":[3468,3470]},"id",[]],["terminal",{"sourceInterval":[3471,3474]},"("],["app",{"sourceInterval":[3475,3498]},"ListOf",[["app",{"sourceInterval":[3482,3493]},"FunctionArg",[]],["terminal",{"sourceInterval":[3494,3497]},","]]],["terminal",{"sourceInterval":[3499,3502]},")"],["terminal",{"sourceInterval":[3503,3506]},";"]]],"Function_abstractType":["define",{"sourceInterval":[3537,3622]},null,[],["seq",{"sourceInterval":[3537,3607]},["star",{"sourceInterval":[3537,3555]},["app",{"sourceInterval":[3537,3554]},"FunctionAttribute",[]]],["app",{"sourceInterval":[3556,3559]},"fun",[]],["app",{"sourceInterval":[3560,3562]},"id",[]],["terminal",{"sourceInterval":[3563,3566]},"("],["app",{"sourceInterval":[3567,3590]},"ListOf",[["app",{"sourceInterval":[3574,3585]},"FunctionArg",[]],["terminal",{"sourceInterval":[3586,3589]},","]]],["terminal",{"sourceInterval":[3591,3594]},")"],["terminal",{"sourceInterval":[3595,3598]},":"],["app",{"sourceInterval":[3599,3603]},"Type",[]],["terminal",{"sourceInterval":[3604,3607]},";"]]],"Function":["define",{"sourceInterval":[3219,3622]},null,[],["alt",{"sourceInterval":[3230,3622]},["app",{"sourceInterval":[3230,3306]},"Function_withVoid",[]],["app",{"sourceInterval":[3333,3418]},"Function_withType",[]],["app",{"sourceInterval":[3445,3506]},"Function_abstractVoid",[]],["app",{"sourceInterval":[3537,3607]},"Function_abstractType",[]]]],"FunctionArg":["define",{"sourceInterval":[3627,3652]},null,[],["seq",{"sourceInterval":[3641,3652]},["app",{"sourceInterval":[3641,3643]},"id",[]],["terminal",{"sourceInterval":[3644,3647]},":"],["app",{"sourceInterval":[3648,3652]},"Type",[]]]],"ReceiveFunction_simple":["define",{"sourceInterval":[3680,3737]},null,[],["seq",{"sourceInterval":[3680,3728]},["terminal",{"sourceInterval":[3680,3689]},"receive"],["terminal",{"sourceInterval":[3690,3693]},"("],["app",{"sourceInterval":[3694,3705]},"FunctionArg",[]],["terminal",{"sourceInterval":[3706,3709]},")"],["terminal",{"sourceInterval":[3710,3713]},"{"],["star",{"sourceInterval":[3714,3724]},["app",{"sourceInterval":[3714,3723]},"Statement",[]]],["terminal",{"sourceInterval":[3725,3728]},"}"]]],"ReceiveFunction_empty":["define",{"sourceInterval":[3760,3804]},null,[],["seq",{"sourceInterval":[3760,3796]},["terminal",{"sourceInterval":[3760,3769]},"receive"],["terminal",{"sourceInterval":[3770,3773]},"("],["terminal",{"sourceInterval":[3774,3777]},")"],["terminal",{"sourceInterval":[3778,3781]},"{"],["star",{"sourceInterval":[3782,3792]},["app",{"sourceInterval":[3782,3791]},"Statement",[]]],["terminal",{"sourceInterval":[3793,3796]},"}"]]],"ReceiveFunction_comment":["define",{"sourceInterval":[3827,3887]},null,[],["seq",{"sourceInterval":[3827,3877]},["terminal",{"sourceInterval":[3827,3836]},"receive"],["terminal",{"sourceInterval":[3837,3840]},"("],["app",{"sourceInterval":[3841,3854]},"stringLiteral",[]],["terminal",{"sourceInterval":[3855,3858]},")"],["terminal",{"sourceInterval":[3859,3862]},"{"],["star",{"sourceInterval":[3863,3873]},["app",{"sourceInterval":[3863,3872]},"Statement",[]]],["terminal",{"sourceInterval":[3874,3877]},"}"]]],"ReceiveFunction_bounced":["define",{"sourceInterval":[3910,3968]},null,[],["seq",{"sourceInterval":[3910,3958]},["terminal",{"sourceInterval":[3910,3919]},"bounced"],["terminal",{"sourceInterval":[3920,3923]},"("],["app",{"sourceInterval":[3924,3935]},"FunctionArg",[]],["terminal",{"sourceInterval":[3936,3939]},")"],["terminal",{"sourceInterval":[3940,3943]},"{"],["star",{"sourceInterval":[3944,3954]},["app",{"sourceInterval":[3944,3953]},"Statement",[]]],["terminal",{"sourceInterval":[3955,3958]},"}"]]],"ReceiveFunction_externalSimple":["define",{"sourceInterval":[3991,4057]},null,[],["seq",{"sourceInterval":[3991,4040]},["terminal",{"sourceInterval":[3991,4001]},"external"],["terminal",{"sourceInterval":[4002,4005]},"("],["app",{"sourceInterval":[4006,4017]},"FunctionArg",[]],["terminal",{"sourceInterval":[4018,4021]},")"],["terminal",{"sourceInterval":[4022,4025]},"{"],["star",{"sourceInterval":[4026,4036]},["app",{"sourceInterval":[4026,4035]},"Statement",[]]],["terminal",{"sourceInterval":[4037,4040]},"}"]]],"ReceiveFunction_externalComment":["define",{"sourceInterval":[4080,4149]},null,[],["seq",{"sourceInterval":[4080,4131]},["terminal",{"sourceInterval":[4080,4090]},"external"],["terminal",{"sourceInterval":[4091,4094]},"("],["app",{"sourceInterval":[4095,4108]},"stringLiteral",[]],["terminal",{"sourceInterval":[4109,4112]},")"],["terminal",{"sourceInterval":[4113,4116]},"{"],["star",{"sourceInterval":[4117,4127]},["app",{"sourceInterval":[4117,4126]},"Statement",[]]],["terminal",{"sourceInterval":[4128,4131]},"}"]]],"ReceiveFunction_externalEmpty":["define",{"sourceInterval":[4172,4225]},null,[],["seq",{"sourceInterval":[4172,4209]},["terminal",{"sourceInterval":[4172,4182]},"external"],["terminal",{"sourceInterval":[4183,4186]},"("],["terminal",{"sourceInterval":[4187,4190]},")"],["terminal",{"sourceInterval":[4191,4194]},"{"],["star",{"sourceInterval":[4195,4205]},["app",{"sourceInterval":[4195,4204]},"Statement",[]]],["terminal",{"sourceInterval":[4206,4209]},"}"]]],"ReceiveFunction":["define",{"sourceInterval":[3662,4225]},null,[],["alt",{"sourceInterval":[3680,4225]},["app",{"sourceInterval":[3680,3728]},"ReceiveFunction_simple",[]],["app",{"sourceInterval":[3760,3796]},"ReceiveFunction_empty",[]],["app",{"sourceInterval":[3827,3877]},"ReceiveFunction_comment",[]],["app",{"sourceInterval":[3910,3958]},"ReceiveFunction_bounced",[]],["app",{"sourceInterval":[3991,4040]},"ReceiveFunction_externalSimple",[]],["app",{"sourceInterval":[4080,4131]},"ReceiveFunction_externalComment",[]],["app",{"sourceInterval":[4172,4209]},"ReceiveFunction_externalEmpty",[]]]],"Statement":["define",{"sourceInterval":[4249,4574]},null,[],["alt",{"sourceInterval":[4261,4574]},["app",{"sourceInterval":[4261,4273]},"StatementLet",[]],["app",{"sourceInterval":[4290,4304]},"StatementBlock",[]],["app",{"sourceInterval":[4321,4336]},"StatementReturn",[]],["app",{"sourceInterval":[4353,4372]},"StatementExpression",[]],["app",{"sourceInterval":[4389,4404]},"StatementAssign",[]],["app",{"sourceInterval":[4421,4445]},"StatementAugmentedAssign",[]],["app",{"sourceInterval":[4462,4480]},"StatementCondition",[]],["app",{"sourceInterval":[4497,4511]},"StatementWhile",[]],["app",{"sourceInterval":[4528,4543]},"StatementRepeat",[]],["app",{"sourceInterval":[4560,4574]},"StatementUntil",[]]]],"StatementBlock":["define",{"sourceInterval":[4579,4614]},null,[],["seq",{"sourceInterval":[4596,4614]},["terminal",{"sourceInterval":[4596,4599]},"{"],["star",{"sourceInterval":[4600,4610]},["app",{"sourceInterval":[4600,4609]},"Statement",[]]],["terminal",{"sourceInterval":[4611,4614]},"}"]]],"StatementLet":["define",{"sourceInterval":[4619,4668]},null,[],["seq",{"sourceInterval":[4634,4668]},["app",{"sourceInterval":[4634,4637]},"let",[]],["app",{"sourceInterval":[4638,4640]},"id",[]],["terminal",{"sourceInterval":[4641,4644]},":"],["app",{"sourceInterval":[4645,4649]},"Type",[]],["terminal",{"sourceInterval":[4650,4653]},"="],["app",{"sourceInterval":[4654,4664]},"Expression",[]],["terminal",{"sourceInterval":[4665,4668]},";"]]],"StatementReturn_withExpression":["define",{"sourceInterval":[4691,4729]},null,[],["seq",{"sourceInterval":[4691,4712]},["app",{"sourceInterval":[4691,4697]},"return",[]],["app",{"sourceInterval":[4698,4708]},"Expression",[]],["terminal",{"sourceInterval":[4709,4712]},";"]]],"StatementReturn_withoutExpression":["define",{"sourceInterval":[4752,4782]},null,[],["seq",{"sourceInterval":[4752,4762]},["app",{"sourceInterval":[4752,4758]},"return",[]],["terminal",{"sourceInterval":[4759,4762]},";"]]],"StatementReturn":["define",{"sourceInterval":[4673,4782]},null,[],["alt",{"sourceInterval":[4691,4782]},["app",{"sourceInterval":[4691,4712]},"StatementReturn_withExpression",[]],["app",{"sourceInterval":[4752,4762]},"StatementReturn_withoutExpression",[]]]],"StatementExpression":["define",{"sourceInterval":[4791,4827]},null,[],["seq",{"sourceInterval":[4813,4827]},["app",{"sourceInterval":[4813,4823]},"Expression",[]],["terminal",{"sourceInterval":[4824,4827]},";"]]],"StatementAssign":["define",{"sourceInterval":[4832,4875]},null,[],["seq",{"sourceInterval":[4850,4875]},["app",{"sourceInterval":[4850,4856]},"LValue",[]],["terminal",{"sourceInterval":[4857,4860]},"="],["app",{"sourceInterval":[4861,4871]},"Expression",[]],["terminal",{"sourceInterval":[4872,4875]},";"]]],"StatementAugmentedAssign":["define",{"sourceInterval":[4880,5170]},null,[],["alt",{"sourceInterval":[4907,5170]},["app",{"sourceInterval":[4907,4934]},"StatementAugmentedAssignAdd",[]],["app",{"sourceInterval":[4966,4993]},"StatementAugmentedAssignSub",[]],["app",{"sourceInterval":[5025,5052]},"StatementAugmentedAssignMul",[]],["app",{"sourceInterval":[5084,5111]},"StatementAugmentedAssignDiv",[]],["app",{"sourceInterval":[5143,5170]},"StatementAugmentedAssignRem",[]]]],"StatementAugmentedAssignAdd":["define",{"sourceInterval":[5175,5231]},null,[],["seq",{"sourceInterval":[5205,5231]},["app",{"sourceInterval":[5205,5211]},"LValue",[]],["terminal",{"sourceInterval":[5212,5216]},"+="],["app",{"sourceInterval":[5217,5227]},"Expression",[]],["terminal",{"sourceInterval":[5228,5231]},";"]]],"StatementAugmentedAssignSub":["define",{"sourceInterval":[5236,5292]},null,[],["seq",{"sourceInterval":[5266,5292]},["app",{"sourceInterval":[5266,5272]},"LValue",[]],["terminal",{"sourceInterval":[5273,5277]},"-="],["app",{"sourceInterval":[5278,5288]},"Expression",[]],["terminal",{"sourceInterval":[5289,5292]},";"]]],"StatementAugmentedAssignMul":["define",{"sourceInterval":[5297,5353]},null,[],["seq",{"sourceInterval":[5327,5353]},["app",{"sourceInterval":[5327,5333]},"LValue",[]],["terminal",{"sourceInterval":[5334,5338]},"*="],["app",{"sourceInterval":[5339,5349]},"Expression",[]],["terminal",{"sourceInterval":[5350,5353]},";"]]],"StatementAugmentedAssignDiv":["define",{"sourceInterval":[5358,5414]},null,[],["seq",{"sourceInterval":[5388,5414]},["app",{"sourceInterval":[5388,5394]},"LValue",[]],["terminal",{"sourceInterval":[5395,5399]},"/="],["app",{"sourceInterval":[5400,5410]},"Expression",[]],["terminal",{"sourceInterval":[5411,5414]},";"]]],"StatementAugmentedAssignRem":["define",{"sourceInterval":[5419,5475]},null,[],["seq",{"sourceInterval":[5449,5475]},["app",{"sourceInterval":[5449,5455]},"LValue",[]],["terminal",{"sourceInterval":[5456,5460]},"%="],["app",{"sourceInterval":[5461,5471]},"Expression",[]],["terminal",{"sourceInterval":[5472,5475]},";"]]],"StatementCondition_simple":["define",{"sourceInterval":[5501,5548]},null,[],["seq",{"sourceInterval":[5501,5539]},["app",{"sourceInterval":[5501,5503]},"if",[]],["app",{"sourceInterval":[5504,5514]},"Expression",[]],["terminal",{"sourceInterval":[5515,5518]},"{"],["star",{"sourceInterval":[5519,5529]},["app",{"sourceInterval":[5519,5528]},"Statement",[]]],["terminal",{"sourceInterval":[5530,5533]},"}"],["not",{"sourceInterval":[5534,5539]},["app",{"sourceInterval":[5535,5539]},"else",[]]]]],"StatementCondition_withElse":["define",{"sourceInterval":[5574,5641]},null,[],["seq",{"sourceInterval":[5574,5630]},["app",{"sourceInterval":[5574,5576]},"if",[]],["app",{"sourceInterval":[5577,5587]},"Expression",[]],["terminal",{"sourceInterval":[5588,5591]},"{"],["star",{"sourceInterval":[5592,5602]},["app",{"sourceInterval":[5592,5601]},"Statement",[]]],["terminal",{"sourceInterval":[5603,5606]},"}"],["app",{"sourceInterval":[5607,5611]},"else",[]],["terminal",{"sourceInterval":[5612,5615]},"{"],["star",{"sourceInterval":[5616,5626]},["app",{"sourceInterval":[5616,5625]},"Statement",[]]],["terminal",{"sourceInterval":[5627,5630]},"}"]]],"StatementCondition_withElseIf":["define",{"sourceInterval":[5667,5736]},null,[],["seq",{"sourceInterval":[5667,5723]},["app",{"sourceInterval":[5667,5669]},"if",[]],["app",{"sourceInterval":[5670,5680]},"Expression",[]],["terminal",{"sourceInterval":[5681,5684]},"{"],["star",{"sourceInterval":[5685,5695]},["app",{"sourceInterval":[5685,5694]},"Statement",[]]],["terminal",{"sourceInterval":[5696,5699]},"}"],["app",{"sourceInterval":[5700,5704]},"else",[]],["app",{"sourceInterval":[5705,5723]},"StatementCondition",[]]]],"StatementCondition":["define",{"sourceInterval":[5480,5736]},null,[],["alt",{"sourceInterval":[5501,5736]},["app",{"sourceInterval":[5501,5539]},"StatementCondition_simple",[]],["app",{"sourceInterval":[5574,5630]},"StatementCondition_withElse",[]],["app",{"sourceInterval":[5667,5723]},"StatementCondition_withElseIf",[]]]],"StatementWhile":["define",{"sourceInterval":[5741,5801]},null,[],["seq",{"sourceInterval":[5758,5801]},["app",{"sourceInterval":[5758,5763]},"while",[]],["terminal",{"sourceInterval":[5764,5767]},"("],["app",{"sourceInterval":[5768,5778]},"Expression",[]],["terminal",{"sourceInterval":[5779,5782]},")"],["terminal",{"sourceInterval":[5783,5786]},"{"],["star",{"sourceInterval":[5787,5797]},["app",{"sourceInterval":[5787,5796]},"Statement",[]]],["terminal",{"sourceInterval":[5798,5801]},"}"]]],"StatementRepeat":["define",{"sourceInterval":[5806,5868]},null,[],["seq",{"sourceInterval":[5824,5868]},["app",{"sourceInterval":[5824,5830]},"repeat",[]],["terminal",{"sourceInterval":[5831,5834]},"("],["app",{"sourceInterval":[5835,5845]},"Expression",[]],["terminal",{"sourceInterval":[5846,5849]},")"],["terminal",{"sourceInterval":[5850,5853]},"{"],["star",{"sourceInterval":[5854,5864]},["app",{"sourceInterval":[5854,5863]},"Statement",[]]],["terminal",{"sourceInterval":[5865,5868]},"}"]]],"StatementUntil":["define",{"sourceInterval":[5873,5940]},null,[],["seq",{"sourceInterval":[5890,5940]},["app",{"sourceInterval":[5890,5892]},"do",[]],["terminal",{"sourceInterval":[5893,5896]},"{"],["star",{"sourceInterval":[5897,5907]},["app",{"sourceInterval":[5897,5906]},"Statement",[]]],["terminal",{"sourceInterval":[5908,5911]},"}"],["app",{"sourceInterval":[5912,5917]},"until",[]],["terminal",{"sourceInterval":[5918,5921]},"("],["app",{"sourceInterval":[5922,5932]},"Expression",[]],["terminal",{"sourceInterval":[5933,5936]},")"],["terminal",{"sourceInterval":[5937,5940]},";"]]],"LValue_more":["define",{"sourceInterval":[5970,5990]},null,[],["seq",{"sourceInterval":[5970,5983]},["app",{"sourceInterval":[5970,5972]},"id",[]],["terminal",{"sourceInterval":[5973,5976]},"."],["app",{"sourceInterval":[5977,5983]},"LValue",[]]]],"LValue_single":["define",{"sourceInterval":[6004,6015]},null,[],["app",{"sourceInterval":[6004,6006]},"id",[]]],"LValue":["define",{"sourceInterval":[5961,6015]},null,[],["alt",{"sourceInterval":[5970,6015]},["app",{"sourceInterval":[5970,5983]},"LValue_more",[]],["app",{"sourceInterval":[6004,6006]},"LValue_single",[]]]],"Expression":["define",{"sourceInterval":[6040,6074]},null,[],["app",{"sourceInterval":[6053,6074]},"ExpressionConditional",[]]],"ExpressionConditional_ternary":["define",{"sourceInterval":[6103,6168]},null,[],["seq",{"sourceInterval":[6103,6158]},["app",{"sourceInterval":[6103,6115]},"ExpressionOr",[]],["terminal",{"sourceInterval":[6116,6119]},"?"],["app",{"sourceInterval":[6120,6132]},"ExpressionOr",[]],["terminal",{"sourceInterval":[6133,6136]},":"],["app",{"sourceInterval":[6137,6158]},"ExpressionConditional",[]]]],"ExpressionConditional":["define",{"sourceInterval":[6079,6209]},null,[],["alt",{"sourceInterval":[6103,6209]},["app",{"sourceInterval":[6103,6158]},"ExpressionConditional_ternary",[]],["app",{"sourceInterval":[6197,6209]},"ExpressionOr",[]]]],"ExpressionOr_or":["define",{"sourceInterval":[6229,6265]},null,[],["seq",{"sourceInterval":[6229,6260]},["app",{"sourceInterval":[6229,6241]},"ExpressionOr",[]],["terminal",{"sourceInterval":[6242,6246]},"||"],["app",{"sourceInterval":[6247,6260]},"ExpressionAnd",[]]]],"ExpressionOr":["define",{"sourceInterval":[6214,6298]},null,[],["alt",{"sourceInterval":[6229,6298]},["app",{"sourceInterval":[6229,6260]},"ExpressionOr_or",[]],["app",{"sourceInterval":[6285,6298]},"ExpressionAnd",[]]]],"ExpressionAnd_and":["define",{"sourceInterval":[6319,6361]},null,[],["seq",{"sourceInterval":[6319,6355]},["app",{"sourceInterval":[6319,6332]},"ExpressionAnd",[]],["terminal",{"sourceInterval":[6333,6337]},"&&"],["app",{"sourceInterval":[6338,6355]},"ExpressionCompare",[]]]],"ExpressionAnd":["define",{"sourceInterval":[6303,6399]},null,[],["alt",{"sourceInterval":[6319,6399]},["app",{"sourceInterval":[6319,6355]},"ExpressionAnd_and",[]],["app",{"sourceInterval":[6382,6399]},"ExpressionCompare",[]]]],"ExpressionCompare_not":["define",{"sourceInterval":[6424,6469]},null,[],["seq",{"sourceInterval":[6424,6463]},["app",{"sourceInterval":[6424,6441]},"ExpressionCompare",[]],["terminal",{"sourceInterval":[6442,6446]},"!="],["app",{"sourceInterval":[6447,6463]},"ExpressionBinary",[]]]],"ExpressionCompare_eq":["define",{"sourceInterval":[6494,6538]},null,[],["seq",{"sourceInterval":[6494,6533]},["app",{"sourceInterval":[6494,6511]},"ExpressionCompare",[]],["terminal",{"sourceInterval":[6512,6516]},"=="],["app",{"sourceInterval":[6517,6533]},"ExpressionBinary",[]]]],"ExpressionCompare_gt":["define",{"sourceInterval":[6563,6606]},null,[],["seq",{"sourceInterval":[6563,6601]},["app",{"sourceInterval":[6563,6580]},"ExpressionCompare",[]],["terminal",{"sourceInterval":[6581,6584]},">"],["app",{"sourceInterval":[6585,6601]},"ExpressionBinary",[]]]],"ExpressionCompare_gte":["define",{"sourceInterval":[6631,6676]},null,[],["seq",{"sourceInterval":[6631,6670]},["app",{"sourceInterval":[6631,6648]},"ExpressionCompare",[]],["terminal",{"sourceInterval":[6649,6653]},">="],["app",{"sourceInterval":[6654,6670]},"ExpressionBinary",[]]]],"ExpressionCompare_lt":["define",{"sourceInterval":[6701,6744]},null,[],["seq",{"sourceInterval":[6701,6739]},["app",{"sourceInterval":[6701,6718]},"ExpressionCompare",[]],["terminal",{"sourceInterval":[6719,6722]},"<"],["app",{"sourceInterval":[6723,6739]},"ExpressionBinary",[]]]],"ExpressionCompare_lte":["define",{"sourceInterval":[6769,6814]},null,[],["seq",{"sourceInterval":[6769,6808]},["app",{"sourceInterval":[6769,6786]},"ExpressionCompare",[]],["terminal",{"sourceInterval":[6787,6791]},"<="],["app",{"sourceInterval":[6792,6808]},"ExpressionBinary",[]]]],"ExpressionCompare":["define",{"sourceInterval":[6404,6855]},null,[],["alt",{"sourceInterval":[6424,6855]},["app",{"sourceInterval":[6424,6463]},"ExpressionCompare_not",[]],["app",{"sourceInterval":[6494,6533]},"ExpressionCompare_eq",[]],["app",{"sourceInterval":[6563,6601]},"ExpressionCompare_gt",[]],["app",{"sourceInterval":[6631,6670]},"ExpressionCompare_gte",[]],["app",{"sourceInterval":[6701,6739]},"ExpressionCompare_lt",[]],["app",{"sourceInterval":[6769,6808]},"ExpressionCompare_lte",[]],["app",{"sourceInterval":[6839,6855]},"ExpressionBinary",[]]]],"ExpressionBinary_shr":["define",{"sourceInterval":[6879,6920]},null,[],["seq",{"sourceInterval":[6879,6914]},["app",{"sourceInterval":[6879,6895]},"ExpressionBinary",[]],["terminal",{"sourceInterval":[6896,6900]},">>"],["app",{"sourceInterval":[6901,6914]},"ExpressionAdd",[]]]],"ExpressionBinary_shl":["define",{"sourceInterval":[6943,6984]},null,[],["seq",{"sourceInterval":[6943,6978]},["app",{"sourceInterval":[6943,6959]},"ExpressionBinary",[]],["terminal",{"sourceInterval":[6960,6964]},"<<"],["app",{"sourceInterval":[6965,6978]},"ExpressionAdd",[]]]],"ExpressionBinary_bin_and":["define",{"sourceInterval":[7007,7051]},null,[],["seq",{"sourceInterval":[7007,7041]},["app",{"sourceInterval":[7007,7023]},"ExpressionBinary",[]],["terminal",{"sourceInterval":[7024,7027]},"&"],["app",{"sourceInterval":[7028,7041]},"ExpressionAdd",[]]]],"ExpressionBinary_bin_or":["define",{"sourceInterval":[7074,7117]},null,[],["seq",{"sourceInterval":[7074,7108]},["app",{"sourceInterval":[7074,7090]},"ExpressionBinary",[]],["terminal",{"sourceInterval":[7091,7094]},"|"],["app",{"sourceInterval":[7095,7108]},"ExpressionAdd",[]]]],"ExpressionBinary":["define",{"sourceInterval":[6860,7153]},null,[],["alt",{"sourceInterval":[6879,7153]},["app",{"sourceInterval":[6879,6914]},"ExpressionBinary_shr",[]],["app",{"sourceInterval":[6943,6978]},"ExpressionBinary_shl",[]],["app",{"sourceInterval":[7007,7041]},"ExpressionBinary_bin_and",[]],["app",{"sourceInterval":[7074,7108]},"ExpressionBinary_bin_or",[]],["app",{"sourceInterval":[7140,7153]},"ExpressionAdd",[]]]],"ExpressionAdd_add":["define",{"sourceInterval":[7174,7216]},null,[],["seq",{"sourceInterval":[7174,7210]},["app",{"sourceInterval":[7174,7187]},"ExpressionAdd",[]],["terminal",{"sourceInterval":[7188,7191]},"+"],["not",{"sourceInterval":[7192,7196]},["terminal",{"sourceInterval":[7193,7196]},"+"]],["app",{"sourceInterval":[7197,7210]},"ExpressionMul",[]]]],"ExpressionAdd_sub":["define",{"sourceInterval":[7237,7279]},null,[],["seq",{"sourceInterval":[7237,7273]},["app",{"sourceInterval":[7237,7250]},"ExpressionAdd",[]],["terminal",{"sourceInterval":[7251,7254]},"-"],["not",{"sourceInterval":[7255,7259]},["terminal",{"sourceInterval":[7256,7259]},"-"]],["app",{"sourceInterval":[7260,7273]},"ExpressionMul",[]]]],"ExpressionAdd":["define",{"sourceInterval":[7158,7313]},null,[],["alt",{"sourceInterval":[7174,7313]},["app",{"sourceInterval":[7174,7210]},"ExpressionAdd_add",[]],["app",{"sourceInterval":[7237,7273]},"ExpressionAdd_sub",[]],["app",{"sourceInterval":[7300,7313]},"ExpressionMul",[]]]],"ExpressionMul_mul":["define",{"sourceInterval":[7334,7373]},null,[],["seq",{"sourceInterval":[7334,7367]},["app",{"sourceInterval":[7334,7347]},"ExpressionMul",[]],["terminal",{"sourceInterval":[7348,7351]},"*"],["app",{"sourceInterval":[7352,7367]},"ExpressionUnary",[]]]],"ExpressionMul_div":["define",{"sourceInterval":[7394,7433]},null,[],["seq",{"sourceInterval":[7394,7427]},["app",{"sourceInterval":[7394,7407]},"ExpressionMul",[]],["terminal",{"sourceInterval":[7408,7411]},"/"],["app",{"sourceInterval":[7412,7427]},"ExpressionUnary",[]]]],"ExpressionMul_rem":["define",{"sourceInterval":[7454,7493]},null,[],["seq",{"sourceInterval":[7454,7487]},["app",{"sourceInterval":[7454,7467]},"ExpressionMul",[]],["terminal",{"sourceInterval":[7468,7471]},"%"],["app",{"sourceInterval":[7472,7487]},"ExpressionUnary",[]]]],"ExpressionMul":["define",{"sourceInterval":[7318,7529]},null,[],["alt",{"sourceInterval":[7334,7529]},["app",{"sourceInterval":[7334,7367]},"ExpressionMul_mul",[]],["app",{"sourceInterval":[7394,7427]},"ExpressionMul_div",[]],["app",{"sourceInterval":[7454,7487]},"ExpressionMul_rem",[]],["app",{"sourceInterval":[7514,7529]},"ExpressionUnary",[]]]],"ExpressionUnary_neg":["define",{"sourceInterval":[7552,7583]},null,[],["seq",{"sourceInterval":[7552,7577]},["terminal",{"sourceInterval":[7552,7555]},"-"],["app",{"sourceInterval":[7556,7577]},"ExpressionUnarySuffix",[]]]],"ExpressionUnary_add":["define",{"sourceInterval":[7606,7637]},null,[],["seq",{"sourceInterval":[7606,7631]},["terminal",{"sourceInterval":[7606,7609]},"+"],["app",{"sourceInterval":[7610,7631]},"ExpressionUnarySuffix",[]]]],"ExpressionUnary_not":["define",{"sourceInterval":[7660,7691]},null,[],["seq",{"sourceInterval":[7660,7685]},["terminal",{"sourceInterval":[7660,7663]},"!"],["app",{"sourceInterval":[7664,7685]},"ExpressionUnarySuffix",[]]]],"ExpressionUnary":["define",{"sourceInterval":[7534,7735]},null,[],["alt",{"sourceInterval":[7552,7735]},["app",{"sourceInterval":[7552,7577]},"ExpressionUnary_neg",[]],["app",{"sourceInterval":[7606,7631]},"ExpressionUnary_add",[]],["app",{"sourceInterval":[7660,7685]},"ExpressionUnary_not",[]],["app",{"sourceInterval":[7714,7735]},"ExpressionUnarySuffix",[]]]],"ExpressionUnarySuffix_notNull":["define",{"sourceInterval":[7764,7794]},null,[],["seq",{"sourceInterval":[7764,7784]},["app",{"sourceInterval":[7764,7779]},"ExpressionValue",[]],["terminal",{"sourceInterval":[7780,7784]},"!!"]]],"ExpressionUnarySuffix":["define",{"sourceInterval":[7740,7838]},null,[],["alt",{"sourceInterval":[7764,7838]},["app",{"sourceInterval":[7764,7784]},"ExpressionUnarySuffix_notNull",[]],["app",{"sourceInterval":[7823,7838]},"ExpressionValue",[]]]],"ExpressionBracket":["define",{"sourceInterval":[7843,7881]},null,[],["seq",{"sourceInterval":[7863,7881]},["terminal",{"sourceInterval":[7863,7866]},"("],["app",{"sourceInterval":[7867,7877]},"Expression",[]],["terminal",{"sourceInterval":[7878,7881]},")"]]],"ExpressionValue":["define",{"sourceInterval":[7913,8303]},null,[],["alt",{"sourceInterval":[7931,8303]},["app",{"sourceInterval":[7931,7945]},"ExpressionCall",[]],["app",{"sourceInterval":[7968,7983]},"ExpressionField",[]],["app",{"sourceInterval":[8006,8026]},"ExpressionStaticCall",[]],["app",{"sourceInterval":[8049,8066]},"ExpressionBracket",[]],["app",{"sourceInterval":[8089,8102]},"ExpressionNew",[]],["app",{"sourceInterval":[8125,8139]},"integerLiteral",[]],["app",{"sourceInterval":[8162,8173]},"boolLiteral",[]],["app",{"sourceInterval":[8196,8198]},"id",[]],["app",{"sourceInterval":[8221,8225]},"null",[]],["app",{"sourceInterval":[8248,8264]},"ExpressionInitOf",[]],["app",{"sourceInterval":[8287,8303]},"ExpressionString",[]]]],"ExpressionString":["define",{"sourceInterval":[8308,8340]},null,[],["app",{"sourceInterval":[8327,8340]},"stringLiteral",[]]],"ExpressionField":["define",{"sourceInterval":[8345,8390]},null,[],["seq",{"sourceInterval":[8363,8390]},["app",{"sourceInterval":[8363,8378]},"ExpressionValue",[]],["terminal",{"sourceInterval":[8379,8382]},"."],["app",{"sourceInterval":[8383,8385]},"id",[]],["not",{"sourceInterval":[8386,8390]},["terminal",{"sourceInterval":[8387,8390]},"("]]]],"ExpressionCall":["define",{"sourceInterval":[8395,8466]},null,[],["seq",{"sourceInterval":[8412,8466]},["app",{"sourceInterval":[8412,8427]},"ExpressionValue",[]],["terminal",{"sourceInterval":[8428,8431]},"."],["app",{"sourceInterval":[8432,8434]},"id",[]],["terminal",{"sourceInterval":[8435,8438]},"("],["app",{"sourceInterval":[8439,8462]},"ListOf",[["app",{"sourceInterval":[8446,8456]},"Expression",[]],["terminal",{"sourceInterval":[8458,8461]},","]]],["terminal",{"sourceInterval":[8463,8466]},")"]]],"ExpressionNew_noTrailing":["define",{"sourceInterval":[8487,8542]},null,[],["seq",{"sourceInterval":[8487,8523]},["app",{"sourceInterval":[8487,8489]},"id",[]],["terminal",{"sourceInterval":[8490,8493]},"{"],["app",{"sourceInterval":[8494,8519]},"ListOf",[["app",{"sourceInterval":[8501,8513]},"NewParameter",[]],["terminal",{"sourceInterval":[8515,8518]},","]]],["terminal",{"sourceInterval":[8520,8523]},"}"]]],"ExpressionNew_withTrailing":["define",{"sourceInterval":[8563,8620]},null,[],["seq",{"sourceInterval":[8563,8603]},["app",{"sourceInterval":[8563,8565]},"id",[]],["terminal",{"sourceInterval":[8566,8569]},"{"],["app",{"sourceInterval":[8570,8595]},"ListOf",[["app",{"sourceInterval":[8577,8589]},"NewParameter",[]],["terminal",{"sourceInterval":[8591,8594]},","]]],["terminal",{"sourceInterval":[8596,8599]},","],["terminal",{"sourceInterval":[8600,8603]},"}"]]],"ExpressionNew":["define",{"sourceInterval":[8471,8620]},null,[],["alt",{"sourceInterval":[8487,8620]},["app",{"sourceInterval":[8487,8523]},"ExpressionNew_noTrailing",[]],["app",{"sourceInterval":[8563,8603]},"ExpressionNew_withTrailing",[]]]],"NewParameter":["define",{"sourceInterval":[8625,8657]},null,[],["seq",{"sourceInterval":[8640,8657]},["app",{"sourceInterval":[8640,8642]},"id",[]],["terminal",{"sourceInterval":[8643,8646]},":"],["app",{"sourceInterval":[8647,8657]},"Expression",[]]]],"ExpressionStaticCall":["define",{"sourceInterval":[8662,8719]},null,[],["seq",{"sourceInterval":[8685,8719]},["app",{"sourceInterval":[8685,8687]},"id",[]],["terminal",{"sourceInterval":[8688,8691]},"("],["app",{"sourceInterval":[8692,8715]},"ListOf",[["app",{"sourceInterval":[8699,8709]},"Expression",[]],["terminal",{"sourceInterval":[8711,8714]},","]]],["terminal",{"sourceInterval":[8716,8719]},")"]]],"ExpressionInitOf":["define",{"sourceInterval":[8724,8784]},null,[],["seq",{"sourceInterval":[8743,8784]},["app",{"sourceInterval":[8743,8749]},"initOf",[]],["app",{"sourceInterval":[8750,8752]},"id",[]],["terminal",{"sourceInterval":[8753,8756]},"("],["app",{"sourceInterval":[8757,8780]},"ListOf",[["app",{"sourceInterval":[8764,8774]},"Expression",[]],["terminal",{"sourceInterval":[8776,8779]},","]]],["terminal",{"sourceInterval":[8781,8784]},")"]]],"typeLiteral":["define",{"sourceInterval":[8810,8854]},null,[],["seq",{"sourceInterval":[8824,8854]},["app",{"sourceInterval":[8824,8837]},"letterAsciiUC",[]],["star",{"sourceInterval":[8838,8854]},["app",{"sourceInterval":[8838,8853]},"typeLiteralPart",[]]]]],"typeLiteralPart":["define",{"sourceInterval":[8859,8902]},null,[],["alt",{"sourceInterval":[8877,8902]},["app",{"sourceInterval":[8877,8888]},"letterAscii",[]],["app",{"sourceInterval":[8891,8896]},"digit",[]],["terminal",{"sourceInterval":[8899,8902]},"_"]]],"integerLiteral":["define",{"sourceInterval":[9109,9203]},null,[],["alt",{"sourceInterval":[9126,9203]},["app",{"sourceInterval":[9126,9143]},"integerLiteralHex",[]],["app",{"sourceInterval":[9146,9163]},"integerLiteralBin",[]],["app",{"sourceInterval":[9166,9183]},"integerLiteralOct",[]],["app",{"sourceInterval":[9186,9203]},"integerLiteralDec",[]]]],"integerLiteralDec_nonZeroIntegerLiteralDec":["define",{"sourceInterval":[9250,9304]},null,[],["seq",{"sourceInterval":[9250,9276]},["app",{"sourceInterval":[9250,9262]},"nonZeroDigit",[]],["star",{"sourceInterval":[9263,9276]},["seq",{"sourceInterval":[9264,9274]},["opt",{"sourceInterval":[9264,9268]},["terminal",{"sourceInterval":[9264,9267]},"_"]],["app",{"sourceInterval":[9269,9274]},"digit",[]]]]]],"integerLiteralDec_integerLiteralWithLeadingZero":["define",{"sourceInterval":[9329,9388]},null,[],["seq",{"sourceInterval":[9329,9339]},["terminal",{"sourceInterval":[9329,9332]},"0"],["star",{"sourceInterval":[9333,9339]},["app",{"sourceInterval":[9333,9338]},"digit",[]]]]],"integerLiteralDec":["define",{"sourceInterval":[9230,9388]},null,[],["alt",{"sourceInterval":[9250,9388]},["app",{"sourceInterval":[9250,9276]},"integerLiteralDec_nonZeroIntegerLiteralDec",[]],["app",{"sourceInterval":[9329,9339]},"integerLiteralDec_integerLiteralWithLeadingZero",[]]]],"integerLiteralHex":["define",{"sourceInterval":[9393,9452]},null,[],["seq",{"sourceInterval":[9413,9452]},["alt",{"sourceInterval":[9414,9425]},["terminal",{"sourceInterval":[9414,9418]},"0x"],["terminal",{"sourceInterval":[9421,9425]},"0X"]],["app",{"sourceInterval":[9427,9435]},"hexDigit",[]],["star",{"sourceInterval":[9436,9452]},["seq",{"sourceInterval":[9437,9450]},["opt",{"sourceInterval":[9437,9441]},["terminal",{"sourceInterval":[9437,9440]},"_"]],["app",{"sourceInterval":[9442,9450]},"hexDigit",[]]]]]],"integerLiteralBin":["define",{"sourceInterval":[9457,9516]},null,[],["seq",{"sourceInterval":[9477,9516]},["alt",{"sourceInterval":[9478,9489]},["terminal",{"sourceInterval":[9478,9482]},"0b"],["terminal",{"sourceInterval":[9485,9489]},"0B"]],["app",{"sourceInterval":[9491,9499]},"binDigit",[]],["star",{"sourceInterval":[9500,9516]},["seq",{"sourceInterval":[9501,9514]},["opt",{"sourceInterval":[9501,9505]},["terminal",{"sourceInterval":[9501,9504]},"_"]],["app",{"sourceInterval":[9506,9514]},"binDigit",[]]]]]],"integerLiteralOct":["define",{"sourceInterval":[9521,9580]},null,[],["seq",{"sourceInterval":[9541,9580]},["alt",{"sourceInterval":[9542,9553]},["terminal",{"sourceInterval":[9542,9546]},"0o"],["terminal",{"sourceInterval":[9549,9553]},"0O"]],["app",{"sourceInterval":[9555,9563]},"octDigit",[]],["star",{"sourceInterval":[9564,9580]},["seq",{"sourceInterval":[9565,9578]},["opt",{"sourceInterval":[9565,9569]},["terminal",{"sourceInterval":[9565,9568]},"_"]],["app",{"sourceInterval":[9570,9578]},"octDigit",[]]]]]],"binDigit":["define",{"sourceInterval":[9585,9605]},null,[],["alt",{"sourceInterval":[9596,9605]},["terminal",{"sourceInterval":[9596,9599]},"0"],["terminal",{"sourceInterval":[9602,9605]},"1"]]],"octDigit":["define",{"sourceInterval":[9610,9629]},null,[],["range",{"sourceInterval":[9621,9629]},"0","7"]],"nonZeroDigit":["define",{"sourceInterval":[9634,9657]},null,[],["range",{"sourceInterval":[9649,9657]},"1","9"]],"letterAsciiLC":["define",{"sourceInterval":[9678,9702]},null,[],["range",{"sourceInterval":[9694,9702]},"a","z"]],"letterAsciiUC":["define",{"sourceInterval":[9707,9731]},null,[],["range",{"sourceInterval":[9723,9731]},"A","Z"]],"letterAscii":["define",{"sourceInterval":[9736,9779]},null,[],["alt",{"sourceInterval":[9750,9779]},["app",{"sourceInterval":[9750,9763]},"letterAsciiLC",[]],["app",{"sourceInterval":[9766,9779]},"letterAsciiUC",[]]]],"letterComment":["define",{"sourceInterval":[9784,9843]},null,[],["alt",{"sourceInterval":[9800,9843]},["app",{"sourceInterval":[9800,9813]},"letterAsciiLC",[]],["app",{"sourceInterval":[9816,9829]},"letterAsciiUC",[]],["app",{"sourceInterval":[9832,9837]},"digit",[]],["terminal",{"sourceInterval":[9840,9843]},"_"]]],"idStart":["define",{"sourceInterval":[9867,9894]},null,[],["alt",{"sourceInterval":[9877,9894]},["app",{"sourceInterval":[9877,9888]},"letterAscii",[]],["terminal",{"sourceInterval":[9891,9894]},"_"]]],"idPart":["define",{"sourceInterval":[9899,9933]},null,[],["alt",{"sourceInterval":[9908,9933]},["app",{"sourceInterval":[9908,9919]},"letterAscii",[]],["app",{"sourceInterval":[9922,9927]},"digit",[]],["terminal",{"sourceInterval":[9930,9933]},"_"]]],"id":["define",{"sourceInterval":[9938,9976]},null,[],["seq",{"sourceInterval":[9943,9976]},["not",{"sourceInterval":[9943,9956]},["app",{"sourceInterval":[9944,9956]},"reservedWord",[]]],["lex",{"sourceInterval":[9957,9965]},["app",{"sourceInterval":[9958,9965]},"idStart",[]]],["lex",{"sourceInterval":[9966,9976]},["star",{"sourceInterval":[9968,9975]},["app",{"sourceInterval":[9968,9974]},"idPart",[]]]]]],"funcLetter":["define",{"sourceInterval":[9997,10058]},null,[],["alt",{"sourceInterval":[10010,10058]},["app",{"sourceInterval":[10010,10021]},"letterAscii",[]],["terminal",{"sourceInterval":[10024,10027]},"_"],["terminal",{"sourceInterval":[10030,10033]},"'"],["terminal",{"sourceInterval":[10036,10039]},"?"],["terminal",{"sourceInterval":[10042,10045]},"!"],["terminal",{"sourceInterval":[10048,10052]},"::"],["terminal",{"sourceInterval":[10055,10058]},"&"]]],"funcId":["define",{"sourceInterval":[10063,10105]},null,[],["seq",{"sourceInterval":[10072,10105]},["app",{"sourceInterval":[10072,10082]},"funcLetter",[]],["star",{"sourceInterval":[10083,10105]},["lex",{"sourceInterval":[10083,10104]},["alt",{"sourceInterval":[10085,10103]},["app",{"sourceInterval":[10085,10095]},"funcLetter",[]],["app",{"sourceInterval":[10098,10103]},"digit",[]]]]]]],"boolLiteral":["define",{"sourceInterval":[10131,10171]},null,[],["seq",{"sourceInterval":[10145,10171]},["alt",{"sourceInterval":[10146,10162]},["terminal",{"sourceInterval":[10146,10152]},"true"],["terminal",{"sourceInterval":[10155,10162]},"false"]],["not",{"sourceInterval":[10164,10171]},["app",{"sourceInterval":[10165,10171]},"idPart",[]]]]],"stringLiteralCharacter":["define",{"sourceInterval":[10199,10259]},null,[],["seq",{"sourceInterval":[10224,10259]},["not",{"sourceInterval":[10224,10255]},["alt",{"sourceInterval":[10226,10254]},["terminal",{"sourceInterval":[10226,10230]},"\""],["terminal",{"sourceInterval":[10233,10237]},"\\"],["app",{"sourceInterval":[10240,10254]},"lineTerminator",[]]]],["app",{"sourceInterval":[10256,10259]},"any",[]]]],"stringLiteral":["define",{"sourceInterval":[10264,10313]},null,[],["seq",{"sourceInterval":[10280,10313]},["terminal",{"sourceInterval":[10280,10284]},"\""],["star",{"sourceInterval":[10285,10308]},["app",{"sourceInterval":[10285,10307]},"stringLiteralCharacter",[]]],["terminal",{"sourceInterval":[10309,10313]},"\""]]],"keyword":["define",{"sourceInterval":[10366,10879]},null,[],["alt",{"sourceInterval":[10376,10879]},["app",{"sourceInterval":[10376,10379]},"fun",[]],["app",{"sourceInterval":[10395,10398]},"let",[]],["app",{"sourceInterval":[10413,10419]},"return",[]],["app",{"sourceInterval":[10435,10441]},"extend",[]],["app",{"sourceInterval":[10457,10463]},"native",[]],["app",{"sourceInterval":[10479,10485]},"public",[]],["app",{"sourceInterval":[10501,10505]},"null",[]],["app",{"sourceInterval":[10521,10523]},"if",[]],["app",{"sourceInterval":[10539,10543]},"else",[]],["app",{"sourceInterval":[10559,10564]},"while",[]],["app",{"sourceInterval":[10580,10586]},"repeat",[]],["app",{"sourceInterval":[10602,10604]},"do",[]],["app",{"sourceInterval":[10620,10625]},"until",[]],["app",{"sourceInterval":[10641,10643]},"as",[]],["app",{"sourceInterval":[10660,10667]},"mutates",[]],["app",{"sourceInterval":[10682,10689]},"extends",[]],["app",{"sourceInterval":[10704,10710]},"import",[]],["app",{"sourceInterval":[10725,10729]},"with",[]],["app",{"sourceInterval":[10744,10749]},"trait",[]],["app",{"sourceInterval":[10764,10770]},"initOf",[]],["app",{"sourceInterval":[10785,10793]},"override",[]],["app",{"sourceInterval":[10808,10816]},"abstract",[]],["app",{"sourceInterval":[10831,10838]},"virtual",[]],["app",{"sourceInterval":[10853,10859]},"inline",[]],["app",{"sourceInterval":[10874,10879]},"const",[]]]],"contract":["define",{"sourceInterval":[10884,10913]},null,[],["seq",{"sourceInterval":[10895,10913]},["terminal",{"sourceInterval":[10895,10905]},"contract"],["not",{"sourceInterval":[10906,10913]},["app",{"sourceInterval":[10907,10913]},"idPart",[]]]]],"let":["define",{"sourceInterval":[10918,10937]},null,[],["seq",{"sourceInterval":[10924,10937]},["terminal",{"sourceInterval":[10924,10929]},"let"],["not",{"sourceInterval":[10930,10937]},["app",{"sourceInterval":[10931,10937]},"idPart",[]]]]],"fun":["define",{"sourceInterval":[10942,10961]},null,[],["seq",{"sourceInterval":[10948,10961]},["terminal",{"sourceInterval":[10948,10953]},"fun"],["not",{"sourceInterval":[10954,10961]},["app",{"sourceInterval":[10955,10961]},"idPart",[]]]]],"return":["define",{"sourceInterval":[10966,10991]},null,[],["seq",{"sourceInterval":[10975,10991]},["terminal",{"sourceInterval":[10975,10983]},"return"],["not",{"sourceInterval":[10984,10991]},["app",{"sourceInterval":[10985,10991]},"idPart",[]]]]],"extend":["define",{"sourceInterval":[10996,11021]},null,[],["seq",{"sourceInterval":[11005,11021]},["terminal",{"sourceInterval":[11005,11013]},"extend"],["not",{"sourceInterval":[11014,11021]},["app",{"sourceInterval":[11015,11021]},"idPart",[]]]]],"native":["define",{"sourceInterval":[11026,11051]},null,[],["seq",{"sourceInterval":[11035,11051]},["terminal",{"sourceInterval":[11035,11043]},"native"],["not",{"sourceInterval":[11044,11051]},["app",{"sourceInterval":[11045,11051]},"idPart",[]]]]],"public":["define",{"sourceInterval":[11056,11081]},null,[],["seq",{"sourceInterval":[11065,11081]},["terminal",{"sourceInterval":[11065,11073]},"public"],["not",{"sourceInterval":[11074,11081]},["app",{"sourceInterval":[11075,11081]},"idPart",[]]]]],"null":["define",{"sourceInterval":[11086,11107]},null,[],["seq",{"sourceInterval":[11093,11107]},["terminal",{"sourceInterval":[11093,11099]},"null"],["not",{"sourceInterval":[11100,11107]},["app",{"sourceInterval":[11101,11107]},"idPart",[]]]]],"if":["define",{"sourceInterval":[11112,11129]},null,[],["seq",{"sourceInterval":[11117,11129]},["terminal",{"sourceInterval":[11117,11121]},"if"],["not",{"sourceInterval":[11122,11129]},["app",{"sourceInterval":[11123,11129]},"idPart",[]]]]],"else":["define",{"sourceInterval":[11134,11155]},null,[],["seq",{"sourceInterval":[11141,11155]},["terminal",{"sourceInterval":[11141,11147]},"else"],["not",{"sourceInterval":[11148,11155]},["app",{"sourceInterval":[11149,11155]},"idPart",[]]]]],"while":["define",{"sourceInterval":[11160,11183]},null,[],["seq",{"sourceInterval":[11168,11183]},["terminal",{"sourceInterval":[11168,11175]},"while"],["not",{"sourceInterval":[11176,11183]},["app",{"sourceInterval":[11177,11183]},"idPart",[]]]]],"repeat":["define",{"sourceInterval":[11188,11213]},null,[],["seq",{"sourceInterval":[11197,11213]},["terminal",{"sourceInterval":[11197,11205]},"repeat"],["not",{"sourceInterval":[11206,11213]},["app",{"sourceInterval":[11207,11213]},"idPart",[]]]]],"do":["define",{"sourceInterval":[11218,11235]},null,[],["seq",{"sourceInterval":[11223,11235]},["terminal",{"sourceInterval":[11223,11227]},"do"],["not",{"sourceInterval":[11228,11235]},["app",{"sourceInterval":[11229,11235]},"idPart",[]]]]],"until":["define",{"sourceInterval":[11240,11263]},null,[],["seq",{"sourceInterval":[11248,11263]},["terminal",{"sourceInterval":[11248,11255]},"until"],["not",{"sourceInterval":[11256,11263]},["app",{"sourceInterval":[11257,11263]},"idPart",[]]]]],"as":["define",{"sourceInterval":[11268,11285]},null,[],["seq",{"sourceInterval":[11273,11285]},["terminal",{"sourceInterval":[11273,11277]},"as"],["not",{"sourceInterval":[11278,11285]},["app",{"sourceInterval":[11279,11285]},"idPart",[]]]]],"mutates":["define",{"sourceInterval":[11290,11317]},null,[],["seq",{"sourceInterval":[11300,11317]},["terminal",{"sourceInterval":[11300,11309]},"mutates"],["not",{"sourceInterval":[11310,11317]},["app",{"sourceInterval":[11311,11317]},"idPart",[]]]]],"extends":["define",{"sourceInterval":[11322,11349]},null,[],["seq",{"sourceInterval":[11332,11349]},["terminal",{"sourceInterval":[11332,11341]},"extends"],["not",{"sourceInterval":[11342,11349]},["app",{"sourceInterval":[11343,11349]},"idPart",[]]]]],"import":["define",{"sourceInterval":[11354,11379]},null,[],["seq",{"sourceInterval":[11363,11379]},["terminal",{"sourceInterval":[11363,11371]},"import"],["not",{"sourceInterval":[11372,11379]},["app",{"sourceInterval":[11373,11379]},"idPart",[]]]]],"with":["define",{"sourceInterval":[11384,11405]},null,[],["seq",{"sourceInterval":[11391,11405]},["terminal",{"sourceInterval":[11391,11397]},"with"],["not",{"sourceInterval":[11398,11405]},["app",{"sourceInterval":[11399,11405]},"idPart",[]]]]],"trait":["define",{"sourceInterval":[11410,11433]},null,[],["seq",{"sourceInterval":[11418,11433]},["terminal",{"sourceInterval":[11418,11425]},"trait"],["not",{"sourceInterval":[11426,11433]},["app",{"sourceInterval":[11427,11433]},"idPart",[]]]]],"initOf":["define",{"sourceInterval":[11438,11463]},null,[],["seq",{"sourceInterval":[11447,11463]},["terminal",{"sourceInterval":[11447,11455]},"initOf"],["not",{"sourceInterval":[11456,11463]},["app",{"sourceInterval":[11457,11463]},"idPart",[]]]]],"virtual":["define",{"sourceInterval":[11468,11495]},null,[],["seq",{"sourceInterval":[11478,11495]},["terminal",{"sourceInterval":[11478,11487]},"virtual"],["not",{"sourceInterval":[11488,11495]},["app",{"sourceInterval":[11489,11495]},"idPart",[]]]]],"override":["define",{"sourceInterval":[11500,11529]},null,[],["seq",{"sourceInterval":[11511,11529]},["terminal",{"sourceInterval":[11511,11521]},"override"],["not",{"sourceInterval":[11522,11529]},["app",{"sourceInterval":[11523,11529]},"idPart",[]]]]],"inline":["define",{"sourceInterval":[11534,11559]},null,[],["seq",{"sourceInterval":[11543,11559]},["terminal",{"sourceInterval":[11543,11551]},"inline"],["not",{"sourceInterval":[11552,11559]},["app",{"sourceInterval":[11553,11559]},"idPart",[]]]]],"const":["define",{"sourceInterval":[11564,11587]},null,[],["seq",{"sourceInterval":[11572,11587]},["terminal",{"sourceInterval":[11572,11579]},"const"],["not",{"sourceInterval":[11580,11587]},["app",{"sourceInterval":[11581,11587]},"idPart",[]]]]],"abstract":["define",{"sourceInterval":[11592,11621]},null,[],["seq",{"sourceInterval":[11603,11621]},["terminal",{"sourceInterval":[11603,11613]},"abstract"],["not",{"sourceInterval":[11614,11621]},["app",{"sourceInterval":[11615,11621]},"idPart",[]]]]],"nameAttribute":["define",{"sourceInterval":[11645,11668]},null,[],["terminal",{"sourceInterval":[11661,11668]},"@name"]],"reservedWord":["define",{"sourceInterval":[11690,11712]},null,[],["app",{"sourceInterval":[11705,11712]},"keyword",[]]],"space":["extend",{"sourceInterval":[11734,11767]},null,[],["alt",{"sourceInterval":[11743,11767]},["app",{"sourceInterval":[11743,11750]},"comment",[]],["app",{"sourceInterval":[11753,11767]},"lineTerminator",[]]]],"comment":["define",{"sourceInterval":[11772,11818]},null,[],["alt",{"sourceInterval":[11782,11818]},["app",{"sourceInterval":[11782,11798]},"multiLineComment",[]],["app",{"sourceInterval":[11801,11818]},"singleLineComment",[]]]],"lineTerminator":["define",{"sourceInterval":[11823,11873]},null,[],["alt",{"sourceInterval":[11840,11873]},["terminal",{"sourceInterval":[11840,11844]},"\n"],["terminal",{"sourceInterval":[11847,11851]},"\r"],["terminal",{"sourceInterval":[11854,11862]},"\u2028"],["terminal",{"sourceInterval":[11865,11873]},"\u2029"]]],"multiLineComment":["define",{"sourceInterval":[11878,11919]},null,[],["seq",{"sourceInterval":[11897,11919]},["terminal",{"sourceInterval":[11897,11901]},"/*"],["star",{"sourceInterval":[11902,11914]},["seq",{"sourceInterval":[11903,11912]},["not",{"sourceInterval":[11903,11908]},["terminal",{"sourceInterval":[11904,11908]},"*/"]],["app",{"sourceInterval":[11909,11912]},"any",[]]]],["terminal",{"sourceInterval":[11915,11919]},"*/"]]],"singleLineComment":["define",{"sourceInterval":[11924,11971]},null,[],["seq",{"sourceInterval":[11944,11971]},["terminal",{"sourceInterval":[11944,11948]},"//"],["star",{"sourceInterval":[11949,11971]},["seq",{"sourceInterval":[11950,11969]},["not",{"sourceInterval":[11950,11965]},["app",{"sourceInterval":[11951,11965]},"lineTerminator",[]]],["app",{"sourceInterval":[11966,11969]},"any",[]]]]]]}]);module.exports=result; \ No newline at end of file +'use strict';const ohm=(require('ohm-js').default || require('ohm-js'));const result=ohm.makeRecipe(["grammar",{"source":"Tact {\n\n // Starting point of the program\n Program = ProgramItem*\n ProgramItem = Struct\n | Contract\n | Primitive\n | StaticFunction\n | NativeFunction\n | ProgramImport\n | Trait\n | Constant\n ProgramImport = import stringLiteral \";\"\n\n // Built-in declarations\n Primitive = \"primitive\" Type \";\"\n\n // Static function\n StaticFunction = Function\n NativeFunction = nameAttribute \"(\" funcId \")\" FunctionAttribute* native id \"(\" ListOf \",\"? \")\" \";\" --withVoid\n | nameAttribute \"(\" funcId \")\" FunctionAttribute* native id \"(\" ListOf \",\"? \")\" \":\" Type \";\" --withType\n \n // Field declarations\n Type = typeLiteral \"?\" --optional\n | typeLiteral --required\n | \"map\" \"<\" typeLiteral (as id)? \",\" typeLiteral (as id)? \">\" --map\n | \"bounced\" \"<\" typeLiteral \">\" --bounced\n Field = id \":\" Type \";\" --default\n | id \":\" Type \"=\" Expression \";\" --defaultWithInit\n | id \":\" Type as id \";\" --withSerialization\n | id \":\" Type as id \"=\" Expression \";\" --withSerializationAndInit\n \n // Constant\n ConstantAttribute = virtual --virtual\n | override --override\n | abstract --abstract\n Constant = ConstantAttribute* ~fun const id \":\" Type \"=\" Expression \";\" --withValue\n | ConstantAttribute* ~fun const id \":\" Type \";\" --withEmpty\n\n // Struct\n Struct = \"struct\" typeLiteral \"{\" StructBody* \"}\" --originary\n | \"message\" typeLiteral \"{\" StructBody* \"}\" --message\n | \"message\" \"(\" integerLiteral \")\" typeLiteral \"{\" StructBody* \"}\" --messageWithId\n StructBody = Field\n\n // Contract\n Contract = ContractAttribute* contract id \"{\" ContractBody* \"}\" --simple\n | ContractAttribute* contract id with ListOf \"{\" ContractBody* \"}\" --withTraits\n ContractInit = \"init\" \"(\" ListOf \")\" \"{\" Statement* \"}\"\n ContractBody = Field\n | ContractInit\n | ReceiveFunction\n | Function\n | Constant\n \n // Trait\n Trait = ContractAttribute* trait id \"{\" TraitBody* \"}\" --originary\n | ContractAttribute* trait id with ListOf \"{\" TraitBody* \"}\" --withTraits\n TraitBody = Field\n | ReceiveFunction\n | Function\n | Constant\n\n // Contract attributes\n ContractAttribute = \"@interface\" \"(\" stringLiteral \")\" --interface\n\n // Function\n FunctionAttribute = \"get\" --getter\n | mutates --mutates\n | extends --extends\n | virtual --virtual\n | override --override\n | inline --inline\n | abstract --abstract\n Function = FunctionAttribute* fun id \"(\" ListOf \",\"? \")\" \"{\" Statement* \"}\" --withVoid\n | FunctionAttribute* fun id \"(\" ListOf \",\"? \")\" \":\" Type \"{\" Statement* \"}\" --withType\n | FunctionAttribute* fun id \"(\" ListOf \",\"? \")\" \";\" --abstractVoid\n | FunctionAttribute* fun id \"(\" ListOf \",\"? \")\" \":\" Type \";\" --abstractType\n FunctionArg = id \":\" Type\n \n ReceiveFunction = \"receive\" \"(\" FunctionArg \")\" \"{\" Statement* \"}\" --simple\n | \"receive\" \"(\" \")\" \"{\" Statement* \"}\" --empty\n | \"receive\" \"(\" stringLiteral \")\" \"{\" Statement* \"}\" --comment\n | \"bounced\" \"(\" FunctionArg \")\" \"{\" Statement* \"}\" --bounced\n | \"external\" \"(\" FunctionArg \")\" \"{\" Statement* \"}\" --externalSimple\n | \"external\" \"(\" stringLiteral \")\" \"{\" Statement* \"}\" --externalComment\n | \"external\" \"(\" \")\" \"{\" Statement* \"}\" --externalEmpty\n\n // Statements\n Statement = StatementLet\n | StatementBlock\n | StatementReturn\n | StatementExpression\n | StatementAssign\n | StatementAugmentedAssign\n | StatementCondition\n | StatementWhile\n | StatementRepeat\n | StatementUntil\n StatementBlock = \"{\" Statement* \"}\"\n StatementLet = let id \":\" Type \"=\" Expression \";\"\n StatementReturn = return Expression \";\" --withExpression\n | return \";\" --withoutExpression \n StatementExpression = Expression \";\"\n StatementAssign = LValue \"=\" Expression \";\"\n StatementAugmentedAssign = StatementAugmentedAssignAdd\n | StatementAugmentedAssignSub\n | StatementAugmentedAssignMul\n | StatementAugmentedAssignDiv\n | StatementAugmentedAssignRem\n StatementAugmentedAssignAdd = LValue \"+=\" Expression \";\"\n StatementAugmentedAssignSub = LValue \"-=\" Expression \";\"\n StatementAugmentedAssignMul = LValue \"*=\" Expression \";\"\n StatementAugmentedAssignDiv = LValue \"/=\" Expression \";\"\n StatementAugmentedAssignRem = LValue \"%=\" Expression \";\"\n StatementCondition = if Expression \"{\" Statement* \"}\" ~else --simple\n | if Expression \"{\" Statement* \"}\" else \"{\" Statement* \"}\" --withElse\n | if Expression \"{\" Statement* \"}\" else StatementCondition --withElseIf\n StatementWhile = while \"(\" Expression \")\" \"{\" Statement* \"}\"\n StatementRepeat = repeat \"(\" Expression \")\" \"{\" Statement* \"}\"\n StatementUntil = do \"{\" Statement* \"}\" until \"(\" Expression \")\" \";\"\n\n // L-value\n LValue = id \".\" LValue --more\n | id --single\n\n // Expressions\n Expression = ExpressionConditional\n ExpressionConditional = ExpressionOr \"?\" ExpressionOr \":\" ExpressionConditional --ternary\n | ExpressionOr\n ExpressionOr = ExpressionOr \"||\" ExpressionAnd --or\n | ExpressionAnd\n ExpressionAnd = ExpressionAnd \"&&\" ExpressionCompare --and\n | ExpressionCompare\n ExpressionCompare = ExpressionCompare \"!=\" ExpressionBinary --not\n | ExpressionCompare \"==\" ExpressionBinary --eq\n | ExpressionCompare \">\" ExpressionBinary --gt\n | ExpressionCompare \">=\" ExpressionBinary --gte\n | ExpressionCompare \"<\" ExpressionBinary --lt\n | ExpressionCompare \"<=\" ExpressionBinary --lte\n | ExpressionBinary\n ExpressionBinary = ExpressionBinary \">>\" ExpressionAdd --shr\n | ExpressionBinary \"<<\" ExpressionAdd --shl\n | ExpressionBinary \"&\" ExpressionAdd --bin_and\n | ExpressionBinary \"|\" ExpressionAdd --bin_or\n | ExpressionAdd\n ExpressionAdd = ExpressionAdd \"+\" ~\"+\" ExpressionMul --add\n | ExpressionAdd \"-\" ~\"-\" ExpressionMul --sub\n | ExpressionMul\n ExpressionMul = ExpressionMul \"*\" ExpressionUnary --mul\n | ExpressionMul \"/\" ExpressionUnary --div\n | ExpressionMul \"%\" ExpressionUnary --rem\n | ExpressionUnary\n ExpressionUnary = \"-\" ExpressionUnarySuffix --neg\n | \"+\" ExpressionUnarySuffix --add\n | \"!\" ExpressionUnarySuffix --not\n | ExpressionUnarySuffix\n ExpressionUnarySuffix = ExpressionValue \"!!\" --notNull\n | ExpressionValue\n ExpressionBracket = \"(\" Expression \")\"\n\n // Order is important\n ExpressionValue = ExpressionCall\n | ExpressionField\n | ExpressionStaticCall\n | ExpressionBracket\n | ExpressionNew\n | integerLiteral\n | boolLiteral\n | id\n | null\n | ExpressionInitOf\n | ExpressionString\n ExpressionString = stringLiteral\n ExpressionField = ExpressionValue \".\" id ~\"(\"\n ExpressionCall = ExpressionValue \".\" id \"(\" ListOf \")\"\n ExpressionNew = id \"{\" ListOf \",\"? \"}\"\n NewParameter = id \":\" Expression\n ExpressionStaticCall = id \"(\" ListOf \")\"\n ExpressionInitOf = initOf id \"(\" ListOf \")\"\n\n // Type Literal\n typeLiteral = letterAsciiUC typeLiteralPart*\n typeLiteralPart = letterAscii | digit | \"_\"\n\n // Integer Literal\n // hexDigit defined in Ohm's built-in rules (otherwise: hexDigit = \"0\"..\"9\" | \"a\"..\"f\" | \"A\"..\"F\")\n // digit defined in Ohm's built-in rules (otherwise: digit = \"0\"..\"9\")\n integerLiteral = integerLiteralHex | integerLiteralBin | integerLiteralOct | integerLiteralDec // Order is important\n integerLiteralDec = nonZeroDigit (\"_\"? digit)* --nonZeroIntegerLiteralDec\n | \"0\" digit* --integerLiteralWithLeadingZero\n integerLiteralHex = (\"0x\" | \"0X\") hexDigit (\"_\"? hexDigit)*\n integerLiteralBin = (\"0b\" | \"0B\") binDigit (\"_\"? binDigit)*\n integerLiteralOct = (\"0o\" | \"0O\") octDigit (\"_\"? octDigit)*\n binDigit = \"0\" | \"1\"\n octDigit = \"0\"..\"7\"\n nonZeroDigit = \"1\"..\"9\"\n\n // Letters\n letterAsciiLC = \"a\"..\"z\"\n letterAsciiUC = \"A\"..\"Z\"\n letterAscii = letterAsciiLC | letterAsciiUC\n letterComment = letterAsciiLC | letterAsciiUC | digit | \"_\"\n\n // ID Literal\n idStart = letterAscii | \"_\"\n idPart = letterAscii | digit | \"_\"\n id = ~reservedWord #idStart #(idPart*)\n\n // FunC id\n funcLetter = letterAscii | \"_\" | \"'\" | \"?\" | \"!\" | \"::\" | \"&\"\n funcId = funcLetter #(funcLetter | digit)*\n\n // Bool Literal\n boolLiteral = (\"true\" | \"false\") ~idPart\n\n // String literal\n 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,597]},null,[],["seq",{"sourceInterval":[488,586]},["app",{"sourceInterval":[488,501]},"nameAttribute",[]],["terminal",{"sourceInterval":[502,505]},"("],["app",{"sourceInterval":[506,512]},"funcId",[]],["terminal",{"sourceInterval":[513,516]},")"],["star",{"sourceInterval":[517,535]},["app",{"sourceInterval":[517,534]},"FunctionAttribute",[]]],["app",{"sourceInterval":[536,542]},"native",[]],["app",{"sourceInterval":[543,545]},"id",[]],["terminal",{"sourceInterval":[546,549]},"("],["app",{"sourceInterval":[550,573]},"ListOf",[["app",{"sourceInterval":[557,568]},"FunctionArg",[]],["terminal",{"sourceInterval":[569,572]},","]]],["opt",{"sourceInterval":[574,578]},["terminal",{"sourceInterval":[574,577]},","]],["terminal",{"sourceInterval":[579,582]},")"],["terminal",{"sourceInterval":[583,586]},";"]]],"NativeFunction_withType":["define",{"sourceInterval":[619,737]},null,[],["seq",{"sourceInterval":[619,726]},["app",{"sourceInterval":[619,632]},"nameAttribute",[]],["terminal",{"sourceInterval":[633,636]},"("],["app",{"sourceInterval":[637,643]},"funcId",[]],["terminal",{"sourceInterval":[644,647]},")"],["star",{"sourceInterval":[648,666]},["app",{"sourceInterval":[648,665]},"FunctionAttribute",[]]],["app",{"sourceInterval":[667,673]},"native",[]],["app",{"sourceInterval":[674,676]},"id",[]],["terminal",{"sourceInterval":[677,680]},"("],["app",{"sourceInterval":[681,704]},"ListOf",[["app",{"sourceInterval":[688,699]},"FunctionArg",[]],["terminal",{"sourceInterval":[700,703]},","]]],["opt",{"sourceInterval":[705,709]},["terminal",{"sourceInterval":[705,708]},","]],["terminal",{"sourceInterval":[710,713]},")"],["terminal",{"sourceInterval":[714,717]},":"],["app",{"sourceInterval":[718,722]},"Type",[]],["terminal",{"sourceInterval":[723,726]},";"]]],"NativeFunction":["define",{"sourceInterval":[471,737]},null,[],["alt",{"sourceInterval":[488,737]},["app",{"sourceInterval":[488,586]},"NativeFunction_withVoid",[]],["app",{"sourceInterval":[619,726]},"NativeFunction_withType",[]]]],"Type_optional":["define",{"sourceInterval":[780,806]},null,[],["seq",{"sourceInterval":[780,795]},["app",{"sourceInterval":[780,791]},"typeLiteral",[]],["terminal",{"sourceInterval":[792,795]},"?"]]],"Type_required":["define",{"sourceInterval":[818,840]},null,[],["app",{"sourceInterval":[818,829]},"typeLiteral",[]]],"Type_map":["define",{"sourceInterval":[852,917]},null,[],["seq",{"sourceInterval":[852,911]},["terminal",{"sourceInterval":[852,857]},"map"],["terminal",{"sourceInterval":[858,861]},"<"],["app",{"sourceInterval":[862,873]},"typeLiteral",[]],["opt",{"sourceInterval":[874,882]},["seq",{"sourceInterval":[875,880]},["app",{"sourceInterval":[875,877]},"as",[]],["app",{"sourceInterval":[878,880]},"id",[]]]],["terminal",{"sourceInterval":[883,886]},","],["app",{"sourceInterval":[887,898]},"typeLiteral",[]],["opt",{"sourceInterval":[899,907]},["seq",{"sourceInterval":[900,905]},["app",{"sourceInterval":[900,902]},"as",[]],["app",{"sourceInterval":[903,905]},"id",[]]]],["terminal",{"sourceInterval":[908,911]},">"]]],"Type_bounced":["define",{"sourceInterval":[929,968]},null,[],["seq",{"sourceInterval":[929,958]},["terminal",{"sourceInterval":[929,938]},"bounced"],["terminal",{"sourceInterval":[939,942]},"<"],["app",{"sourceInterval":[943,954]},"typeLiteral",[]],["terminal",{"sourceInterval":[955,958]},">"]]],"Type":["define",{"sourceInterval":[773,968]},null,[],["alt",{"sourceInterval":[780,968]},["app",{"sourceInterval":[780,795]},"Type_optional",[]],["app",{"sourceInterval":[818,829]},"Type_required",[]],["app",{"sourceInterval":[852,911]},"Type_map",[]],["app",{"sourceInterval":[929,958]},"Type_bounced",[]]]],"Field_default":["define",{"sourceInterval":[981,1006]},null,[],["seq",{"sourceInterval":[981,996]},["app",{"sourceInterval":[981,983]},"id",[]],["terminal",{"sourceInterval":[984,987]},":"],["app",{"sourceInterval":[988,992]},"Type",[]],["terminal",{"sourceInterval":[993,996]},";"]]],"Field_defaultWithInit":["define",{"sourceInterval":[1019,1067]},null,[],["seq",{"sourceInterval":[1019,1049]},["app",{"sourceInterval":[1019,1021]},"id",[]],["terminal",{"sourceInterval":[1022,1025]},":"],["app",{"sourceInterval":[1026,1030]},"Type",[]],["terminal",{"sourceInterval":[1031,1034]},"="],["app",{"sourceInterval":[1035,1045]},"Expression",[]],["terminal",{"sourceInterval":[1046,1049]},";"]]],"Field_withSerialization":["define",{"sourceInterval":[1080,1121]},null,[],["seq",{"sourceInterval":[1080,1101]},["app",{"sourceInterval":[1080,1082]},"id",[]],["terminal",{"sourceInterval":[1083,1086]},":"],["app",{"sourceInterval":[1087,1091]},"Type",[]],["app",{"sourceInterval":[1092,1094]},"as",[]],["app",{"sourceInterval":[1095,1097]},"id",[]],["terminal",{"sourceInterval":[1098,1101]},";"]]],"Field_withSerializationAndInit":["define",{"sourceInterval":[1134,1197]},null,[],["seq",{"sourceInterval":[1134,1170]},["app",{"sourceInterval":[1134,1136]},"id",[]],["terminal",{"sourceInterval":[1137,1140]},":"],["app",{"sourceInterval":[1141,1145]},"Type",[]],["app",{"sourceInterval":[1146,1148]},"as",[]],["app",{"sourceInterval":[1149,1151]},"id",[]],["terminal",{"sourceInterval":[1152,1155]},"="],["app",{"sourceInterval":[1156,1166]},"Expression",[]],["terminal",{"sourceInterval":[1167,1170]},";"]]],"Field":["define",{"sourceInterval":[973,1197]},null,[],["alt",{"sourceInterval":[981,1197]},["app",{"sourceInterval":[981,996]},"Field_default",[]],["app",{"sourceInterval":[1019,1049]},"Field_defaultWithInit",[]],["app",{"sourceInterval":[1080,1101]},"Field_withSerialization",[]],["app",{"sourceInterval":[1134,1170]},"Field_withSerializationAndInit",[]]]],"ConstantAttribute_virtual":["define",{"sourceInterval":[1243,1263]},null,[],["app",{"sourceInterval":[1243,1250]},"virtual",[]]],"ConstantAttribute_override":["define",{"sourceInterval":[1288,1309]},null,[],["app",{"sourceInterval":[1288,1296]},"override",[]]],"ConstantAttribute_abstract":["define",{"sourceInterval":[1334,1355]},null,[],["app",{"sourceInterval":[1334,1342]},"abstract",[]]],"ConstantAttribute":["define",{"sourceInterval":[1223,1355]},null,[],["alt",{"sourceInterval":[1243,1355]},["app",{"sourceInterval":[1243,1250]},"ConstantAttribute_virtual",[]],["app",{"sourceInterval":[1288,1296]},"ConstantAttribute_override",[]],["app",{"sourceInterval":[1334,1342]},"ConstantAttribute_abstract",[]]]],"Constant_withValue":["define",{"sourceInterval":[1371,1443]},null,[],["seq",{"sourceInterval":[1371,1431]},["star",{"sourceInterval":[1371,1389]},["app",{"sourceInterval":[1371,1388]},"ConstantAttribute",[]]],["not",{"sourceInterval":[1390,1394]},["app",{"sourceInterval":[1391,1394]},"fun",[]]],["app",{"sourceInterval":[1395,1400]},"const",[]],["app",{"sourceInterval":[1401,1403]},"id",[]],["terminal",{"sourceInterval":[1404,1407]},":"],["app",{"sourceInterval":[1408,1412]},"Type",[]],["terminal",{"sourceInterval":[1413,1416]},"="],["app",{"sourceInterval":[1417,1427]},"Expression",[]],["terminal",{"sourceInterval":[1428,1431]},";"]]],"Constant_withEmpty":["define",{"sourceInterval":[1459,1531]},null,[],["seq",{"sourceInterval":[1459,1504]},["star",{"sourceInterval":[1459,1477]},["app",{"sourceInterval":[1459,1476]},"ConstantAttribute",[]]],["not",{"sourceInterval":[1478,1482]},["app",{"sourceInterval":[1479,1482]},"fun",[]]],["app",{"sourceInterval":[1483,1488]},"const",[]],["app",{"sourceInterval":[1489,1491]},"id",[]],["terminal",{"sourceInterval":[1492,1495]},":"],["app",{"sourceInterval":[1496,1500]},"Type",[]],["terminal",{"sourceInterval":[1501,1504]},";"]]],"Constant":["define",{"sourceInterval":[1360,1531]},null,[],["alt",{"sourceInterval":[1371,1531]},["app",{"sourceInterval":[1371,1431]},"Constant_withValue",[]],["app",{"sourceInterval":[1459,1504]},"Constant_withEmpty",[]]]],"Struct_originary":["define",{"sourceInterval":[1560,1612]},null,[],["seq",{"sourceInterval":[1560,1600]},["terminal",{"sourceInterval":[1560,1568]},"struct"],["app",{"sourceInterval":[1569,1580]},"typeLiteral",[]],["terminal",{"sourceInterval":[1581,1584]},"{"],["star",{"sourceInterval":[1585,1596]},["app",{"sourceInterval":[1585,1595]},"StructBody",[]]],["terminal",{"sourceInterval":[1597,1600]},"}"]]],"Struct_message":["define",{"sourceInterval":[1626,1677]},null,[],["seq",{"sourceInterval":[1626,1667]},["terminal",{"sourceInterval":[1626,1635]},"message"],["app",{"sourceInterval":[1636,1647]},"typeLiteral",[]],["terminal",{"sourceInterval":[1648,1651]},"{"],["star",{"sourceInterval":[1652,1663]},["app",{"sourceInterval":[1652,1662]},"StructBody",[]]],["terminal",{"sourceInterval":[1664,1667]},"}"]]],"Struct_messageWithId":["define",{"sourceInterval":[1691,1771]},null,[],["seq",{"sourceInterval":[1691,1755]},["terminal",{"sourceInterval":[1691,1700]},"message"],["terminal",{"sourceInterval":[1701,1704]},"("],["app",{"sourceInterval":[1705,1719]},"integerLiteral",[]],["terminal",{"sourceInterval":[1720,1723]},")"],["app",{"sourceInterval":[1724,1735]},"typeLiteral",[]],["terminal",{"sourceInterval":[1736,1739]},"{"],["star",{"sourceInterval":[1740,1751]},["app",{"sourceInterval":[1740,1750]},"StructBody",[]]],["terminal",{"sourceInterval":[1752,1755]},"}"]]],"Struct":["define",{"sourceInterval":[1551,1771]},null,[],["alt",{"sourceInterval":[1560,1771]},["app",{"sourceInterval":[1560,1600]},"Struct_originary",[]],["app",{"sourceInterval":[1626,1667]},"Struct_message",[]],["app",{"sourceInterval":[1691,1755]},"Struct_messageWithId",[]]]],"StructBody":["define",{"sourceInterval":[1776,1794]},null,[],["app",{"sourceInterval":[1789,1794]},"Field",[]]],"Contract_simple":["define",{"sourceInterval":[1827,1888]},null,[],["seq",{"sourceInterval":[1827,1879]},["star",{"sourceInterval":[1827,1845]},["app",{"sourceInterval":[1827,1844]},"ContractAttribute",[]]],["app",{"sourceInterval":[1846,1854]},"contract",[]],["app",{"sourceInterval":[1855,1857]},"id",[]],["terminal",{"sourceInterval":[1858,1861]},"{"],["star",{"sourceInterval":[1862,1875]},["app",{"sourceInterval":[1862,1874]},"ContractBody",[]]],["terminal",{"sourceInterval":[1876,1879]},"}"]]],"Contract_withTraits":["define",{"sourceInterval":[1904,1989]},null,[],["seq",{"sourceInterval":[1904,1976]},["star",{"sourceInterval":[1904,1922]},["app",{"sourceInterval":[1904,1921]},"ContractAttribute",[]]],["app",{"sourceInterval":[1923,1931]},"contract",[]],["app",{"sourceInterval":[1932,1934]},"id",[]],["app",{"sourceInterval":[1935,1939]},"with",[]],["app",{"sourceInterval":[1940,1954]},"ListOf",[["app",{"sourceInterval":[1947,1949]},"id",[]],["terminal",{"sourceInterval":[1950,1953]},","]]],["terminal",{"sourceInterval":[1955,1958]},"{"],["star",{"sourceInterval":[1959,1972]},["app",{"sourceInterval":[1959,1971]},"ContractBody",[]]],["terminal",{"sourceInterval":[1973,1976]},"}"]]],"Contract":["define",{"sourceInterval":[1816,1989]},null,[],["alt",{"sourceInterval":[1827,1989]},["app",{"sourceInterval":[1827,1879]},"Contract_simple",[]],["app",{"sourceInterval":[1904,1976]},"Contract_withTraits",[]]]],"ContractInit":["define",{"sourceInterval":[1994,2066]},null,[],["seq",{"sourceInterval":[2009,2066]},["terminal",{"sourceInterval":[2009,2015]},"init"],["terminal",{"sourceInterval":[2016,2019]},"("],["app",{"sourceInterval":[2020,2043]},"ListOf",[["app",{"sourceInterval":[2027,2038]},"FunctionArg",[]],["terminal",{"sourceInterval":[2039,2042]},","]]],["terminal",{"sourceInterval":[2044,2047]},")"],["terminal",{"sourceInterval":[2048,2051]},"{"],["star",{"sourceInterval":[2052,2062]},["app",{"sourceInterval":[2052,2061]},"Statement",[]]],["terminal",{"sourceInterval":[2063,2066]},"}"]]],"ContractBody":["define",{"sourceInterval":[2071,2214]},null,[],["alt",{"sourceInterval":[2086,2214]},["app",{"sourceInterval":[2086,2091]},"Field",[]],["app",{"sourceInterval":[2111,2123]},"ContractInit",[]],["app",{"sourceInterval":[2143,2158]},"ReceiveFunction",[]],["app",{"sourceInterval":[2178,2186]},"Function",[]],["app",{"sourceInterval":[2206,2214]},"Constant",[]]]],"Trait_originary":["define",{"sourceInterval":[2245,2303]},null,[],["seq",{"sourceInterval":[2245,2291]},["star",{"sourceInterval":[2245,2263]},["app",{"sourceInterval":[2245,2262]},"ContractAttribute",[]]],["app",{"sourceInterval":[2264,2269]},"trait",[]],["app",{"sourceInterval":[2270,2272]},"id",[]],["terminal",{"sourceInterval":[2273,2276]},"{"],["star",{"sourceInterval":[2277,2287]},["app",{"sourceInterval":[2277,2286]},"TraitBody",[]]],["terminal",{"sourceInterval":[2288,2291]},"}"]]],"Trait_withTraits":["define",{"sourceInterval":[2316,2395]},null,[],["seq",{"sourceInterval":[2316,2382]},["star",{"sourceInterval":[2316,2334]},["app",{"sourceInterval":[2316,2333]},"ContractAttribute",[]]],["app",{"sourceInterval":[2335,2340]},"trait",[]],["app",{"sourceInterval":[2341,2343]},"id",[]],["app",{"sourceInterval":[2344,2348]},"with",[]],["app",{"sourceInterval":[2349,2363]},"ListOf",[["app",{"sourceInterval":[2356,2358]},"id",[]],["terminal",{"sourceInterval":[2359,2362]},","]]],["terminal",{"sourceInterval":[2364,2367]},"{"],["star",{"sourceInterval":[2368,2378]},["app",{"sourceInterval":[2368,2377]},"TraitBody",[]]],["terminal",{"sourceInterval":[2379,2382]},"}"]]],"Trait":["define",{"sourceInterval":[2237,2395]},null,[],["alt",{"sourceInterval":[2245,2395]},["app",{"sourceInterval":[2245,2291]},"Trait_originary",[]],["app",{"sourceInterval":[2316,2382]},"Trait_withTraits",[]]]],"TraitBody":["define",{"sourceInterval":[2400,2499]},null,[],["alt",{"sourceInterval":[2412,2499]},["app",{"sourceInterval":[2412,2417]},"Field",[]],["app",{"sourceInterval":[2434,2449]},"ReceiveFunction",[]],["app",{"sourceInterval":[2466,2474]},"Function",[]],["app",{"sourceInterval":[2491,2499]},"Constant",[]]]],"ContractAttribute_interface":["define",{"sourceInterval":[2552,2598]},null,[],["seq",{"sourceInterval":[2552,2586]},["terminal",{"sourceInterval":[2552,2564]},"@interface"],["terminal",{"sourceInterval":[2565,2568]},"("],["app",{"sourceInterval":[2569,2582]},"stringLiteral",[]],["terminal",{"sourceInterval":[2583,2586]},")"]]],"ContractAttribute":["define",{"sourceInterval":[2532,2598]},null,[],["app",{"sourceInterval":[2552,2598]},"ContractAttribute_interface",[]]],"FunctionAttribute_getter":["define",{"sourceInterval":[2640,2658]},null,[],["terminal",{"sourceInterval":[2640,2645]},"get"]],"FunctionAttribute_mutates":["define",{"sourceInterval":[2683,2702]},null,[],["app",{"sourceInterval":[2683,2690]},"mutates",[]]],"FunctionAttribute_extends":["define",{"sourceInterval":[2727,2746]},null,[],["app",{"sourceInterval":[2727,2734]},"extends",[]]],"FunctionAttribute_virtual":["define",{"sourceInterval":[2771,2790]},null,[],["app",{"sourceInterval":[2771,2778]},"virtual",[]]],"FunctionAttribute_override":["define",{"sourceInterval":[2815,2835]},null,[],["app",{"sourceInterval":[2815,2823]},"override",[]]],"FunctionAttribute_inline":["define",{"sourceInterval":[2860,2878]},null,[],["app",{"sourceInterval":[2860,2866]},"inline",[]]],"FunctionAttribute_abstract":["define",{"sourceInterval":[2903,2923]},null,[],["app",{"sourceInterval":[2903,2911]},"abstract",[]]],"FunctionAttribute":["define",{"sourceInterval":[2620,2923]},null,[],["alt",{"sourceInterval":[2640,2923]},["app",{"sourceInterval":[2640,2645]},"FunctionAttribute_getter",[]],["app",{"sourceInterval":[2683,2690]},"FunctionAttribute_mutates",[]],["app",{"sourceInterval":[2727,2734]},"FunctionAttribute_extends",[]],["app",{"sourceInterval":[2771,2778]},"FunctionAttribute_virtual",[]],["app",{"sourceInterval":[2815,2823]},"FunctionAttribute_override",[]],["app",{"sourceInterval":[2860,2866]},"FunctionAttribute_inline",[]],["app",{"sourceInterval":[2903,2911]},"FunctionAttribute_abstract",[]]]],"Function_withVoid":["define",{"sourceInterval":[2939,3031]},null,[],["seq",{"sourceInterval":[2939,3020]},["star",{"sourceInterval":[2939,2957]},["app",{"sourceInterval":[2939,2956]},"FunctionAttribute",[]]],["app",{"sourceInterval":[2958,2961]},"fun",[]],["app",{"sourceInterval":[2962,2964]},"id",[]],["terminal",{"sourceInterval":[2965,2968]},"("],["app",{"sourceInterval":[2969,2992]},"ListOf",[["app",{"sourceInterval":[2976,2987]},"FunctionArg",[]],["terminal",{"sourceInterval":[2988,2991]},","]]],["opt",{"sourceInterval":[2993,2997]},["terminal",{"sourceInterval":[2993,2996]},","]],["terminal",{"sourceInterval":[2998,3001]},")"],["terminal",{"sourceInterval":[3002,3005]},"{"],["star",{"sourceInterval":[3006,3016]},["app",{"sourceInterval":[3006,3015]},"Statement",[]]],["terminal",{"sourceInterval":[3017,3020]},"}"]]],"Function_withType":["define",{"sourceInterval":[3047,3148]},null,[],["seq",{"sourceInterval":[3047,3137]},["star",{"sourceInterval":[3047,3065]},["app",{"sourceInterval":[3047,3064]},"FunctionAttribute",[]]],["app",{"sourceInterval":[3066,3069]},"fun",[]],["app",{"sourceInterval":[3070,3072]},"id",[]],["terminal",{"sourceInterval":[3073,3076]},"("],["app",{"sourceInterval":[3077,3100]},"ListOf",[["app",{"sourceInterval":[3084,3095]},"FunctionArg",[]],["terminal",{"sourceInterval":[3096,3099]},","]]],["opt",{"sourceInterval":[3101,3105]},["terminal",{"sourceInterval":[3101,3104]},","]],["terminal",{"sourceInterval":[3106,3109]},")"],["terminal",{"sourceInterval":[3110,3113]},":"],["app",{"sourceInterval":[3114,3118]},"Type",[]],["terminal",{"sourceInterval":[3119,3122]},"{"],["star",{"sourceInterval":[3123,3133]},["app",{"sourceInterval":[3123,3132]},"Statement",[]]],["terminal",{"sourceInterval":[3134,3137]},"}"]]],"Function_abstractVoid":["define",{"sourceInterval":[3164,3245]},null,[],["seq",{"sourceInterval":[3164,3230]},["star",{"sourceInterval":[3164,3182]},["app",{"sourceInterval":[3164,3181]},"FunctionAttribute",[]]],["app",{"sourceInterval":[3183,3186]},"fun",[]],["app",{"sourceInterval":[3187,3189]},"id",[]],["terminal",{"sourceInterval":[3190,3193]},"("],["app",{"sourceInterval":[3194,3217]},"ListOf",[["app",{"sourceInterval":[3201,3212]},"FunctionArg",[]],["terminal",{"sourceInterval":[3213,3216]},","]]],["opt",{"sourceInterval":[3218,3222]},["terminal",{"sourceInterval":[3218,3221]},","]],["terminal",{"sourceInterval":[3223,3226]},")"],["terminal",{"sourceInterval":[3227,3230]},";"]]],"Function_abstractType":["define",{"sourceInterval":[3261,3351]},null,[],["seq",{"sourceInterval":[3261,3336]},["star",{"sourceInterval":[3261,3279]},["app",{"sourceInterval":[3261,3278]},"FunctionAttribute",[]]],["app",{"sourceInterval":[3280,3283]},"fun",[]],["app",{"sourceInterval":[3284,3286]},"id",[]],["terminal",{"sourceInterval":[3287,3290]},"("],["app",{"sourceInterval":[3291,3314]},"ListOf",[["app",{"sourceInterval":[3298,3309]},"FunctionArg",[]],["terminal",{"sourceInterval":[3310,3313]},","]]],["opt",{"sourceInterval":[3315,3319]},["terminal",{"sourceInterval":[3315,3318]},","]],["terminal",{"sourceInterval":[3320,3323]},")"],["terminal",{"sourceInterval":[3324,3327]},":"],["app",{"sourceInterval":[3328,3332]},"Type",[]],["terminal",{"sourceInterval":[3333,3336]},";"]]],"Function":["define",{"sourceInterval":[2928,3351]},null,[],["alt",{"sourceInterval":[2939,3351]},["app",{"sourceInterval":[2939,3020]},"Function_withVoid",[]],["app",{"sourceInterval":[3047,3137]},"Function_withType",[]],["app",{"sourceInterval":[3164,3230]},"Function_abstractVoid",[]],["app",{"sourceInterval":[3261,3336]},"Function_abstractType",[]]]],"FunctionArg":["define",{"sourceInterval":[3356,3381]},null,[],["seq",{"sourceInterval":[3370,3381]},["app",{"sourceInterval":[3370,3372]},"id",[]],["terminal",{"sourceInterval":[3373,3376]},":"],["app",{"sourceInterval":[3377,3381]},"Type",[]]]],"ReceiveFunction_simple":["define",{"sourceInterval":[3409,3466]},null,[],["seq",{"sourceInterval":[3409,3457]},["terminal",{"sourceInterval":[3409,3418]},"receive"],["terminal",{"sourceInterval":[3419,3422]},"("],["app",{"sourceInterval":[3423,3434]},"FunctionArg",[]],["terminal",{"sourceInterval":[3435,3438]},")"],["terminal",{"sourceInterval":[3439,3442]},"{"],["star",{"sourceInterval":[3443,3453]},["app",{"sourceInterval":[3443,3452]},"Statement",[]]],["terminal",{"sourceInterval":[3454,3457]},"}"]]],"ReceiveFunction_empty":["define",{"sourceInterval":[3489,3533]},null,[],["seq",{"sourceInterval":[3489,3525]},["terminal",{"sourceInterval":[3489,3498]},"receive"],["terminal",{"sourceInterval":[3499,3502]},"("],["terminal",{"sourceInterval":[3503,3506]},")"],["terminal",{"sourceInterval":[3507,3510]},"{"],["star",{"sourceInterval":[3511,3521]},["app",{"sourceInterval":[3511,3520]},"Statement",[]]],["terminal",{"sourceInterval":[3522,3525]},"}"]]],"ReceiveFunction_comment":["define",{"sourceInterval":[3556,3616]},null,[],["seq",{"sourceInterval":[3556,3606]},["terminal",{"sourceInterval":[3556,3565]},"receive"],["terminal",{"sourceInterval":[3566,3569]},"("],["app",{"sourceInterval":[3570,3583]},"stringLiteral",[]],["terminal",{"sourceInterval":[3584,3587]},")"],["terminal",{"sourceInterval":[3588,3591]},"{"],["star",{"sourceInterval":[3592,3602]},["app",{"sourceInterval":[3592,3601]},"Statement",[]]],["terminal",{"sourceInterval":[3603,3606]},"}"]]],"ReceiveFunction_bounced":["define",{"sourceInterval":[3639,3697]},null,[],["seq",{"sourceInterval":[3639,3687]},["terminal",{"sourceInterval":[3639,3648]},"bounced"],["terminal",{"sourceInterval":[3649,3652]},"("],["app",{"sourceInterval":[3653,3664]},"FunctionArg",[]],["terminal",{"sourceInterval":[3665,3668]},")"],["terminal",{"sourceInterval":[3669,3672]},"{"],["star",{"sourceInterval":[3673,3683]},["app",{"sourceInterval":[3673,3682]},"Statement",[]]],["terminal",{"sourceInterval":[3684,3687]},"}"]]],"ReceiveFunction_externalSimple":["define",{"sourceInterval":[3720,3786]},null,[],["seq",{"sourceInterval":[3720,3769]},["terminal",{"sourceInterval":[3720,3730]},"external"],["terminal",{"sourceInterval":[3731,3734]},"("],["app",{"sourceInterval":[3735,3746]},"FunctionArg",[]],["terminal",{"sourceInterval":[3747,3750]},")"],["terminal",{"sourceInterval":[3751,3754]},"{"],["star",{"sourceInterval":[3755,3765]},["app",{"sourceInterval":[3755,3764]},"Statement",[]]],["terminal",{"sourceInterval":[3766,3769]},"}"]]],"ReceiveFunction_externalComment":["define",{"sourceInterval":[3809,3878]},null,[],["seq",{"sourceInterval":[3809,3860]},["terminal",{"sourceInterval":[3809,3819]},"external"],["terminal",{"sourceInterval":[3820,3823]},"("],["app",{"sourceInterval":[3824,3837]},"stringLiteral",[]],["terminal",{"sourceInterval":[3838,3841]},")"],["terminal",{"sourceInterval":[3842,3845]},"{"],["star",{"sourceInterval":[3846,3856]},["app",{"sourceInterval":[3846,3855]},"Statement",[]]],["terminal",{"sourceInterval":[3857,3860]},"}"]]],"ReceiveFunction_externalEmpty":["define",{"sourceInterval":[3901,3954]},null,[],["seq",{"sourceInterval":[3901,3938]},["terminal",{"sourceInterval":[3901,3911]},"external"],["terminal",{"sourceInterval":[3912,3915]},"("],["terminal",{"sourceInterval":[3916,3919]},")"],["terminal",{"sourceInterval":[3920,3923]},"{"],["star",{"sourceInterval":[3924,3934]},["app",{"sourceInterval":[3924,3933]},"Statement",[]]],["terminal",{"sourceInterval":[3935,3938]},"}"]]],"ReceiveFunction":["define",{"sourceInterval":[3391,3954]},null,[],["alt",{"sourceInterval":[3409,3954]},["app",{"sourceInterval":[3409,3457]},"ReceiveFunction_simple",[]],["app",{"sourceInterval":[3489,3525]},"ReceiveFunction_empty",[]],["app",{"sourceInterval":[3556,3606]},"ReceiveFunction_comment",[]],["app",{"sourceInterval":[3639,3687]},"ReceiveFunction_bounced",[]],["app",{"sourceInterval":[3720,3769]},"ReceiveFunction_externalSimple",[]],["app",{"sourceInterval":[3809,3860]},"ReceiveFunction_externalComment",[]],["app",{"sourceInterval":[3901,3938]},"ReceiveFunction_externalEmpty",[]]]],"Statement":["define",{"sourceInterval":[3978,4303]},null,[],["alt",{"sourceInterval":[3990,4303]},["app",{"sourceInterval":[3990,4002]},"StatementLet",[]],["app",{"sourceInterval":[4019,4033]},"StatementBlock",[]],["app",{"sourceInterval":[4050,4065]},"StatementReturn",[]],["app",{"sourceInterval":[4082,4101]},"StatementExpression",[]],["app",{"sourceInterval":[4118,4133]},"StatementAssign",[]],["app",{"sourceInterval":[4150,4174]},"StatementAugmentedAssign",[]],["app",{"sourceInterval":[4191,4209]},"StatementCondition",[]],["app",{"sourceInterval":[4226,4240]},"StatementWhile",[]],["app",{"sourceInterval":[4257,4272]},"StatementRepeat",[]],["app",{"sourceInterval":[4289,4303]},"StatementUntil",[]]]],"StatementBlock":["define",{"sourceInterval":[4308,4343]},null,[],["seq",{"sourceInterval":[4325,4343]},["terminal",{"sourceInterval":[4325,4328]},"{"],["star",{"sourceInterval":[4329,4339]},["app",{"sourceInterval":[4329,4338]},"Statement",[]]],["terminal",{"sourceInterval":[4340,4343]},"}"]]],"StatementLet":["define",{"sourceInterval":[4348,4397]},null,[],["seq",{"sourceInterval":[4363,4397]},["app",{"sourceInterval":[4363,4366]},"let",[]],["app",{"sourceInterval":[4367,4369]},"id",[]],["terminal",{"sourceInterval":[4370,4373]},":"],["app",{"sourceInterval":[4374,4378]},"Type",[]],["terminal",{"sourceInterval":[4379,4382]},"="],["app",{"sourceInterval":[4383,4393]},"Expression",[]],["terminal",{"sourceInterval":[4394,4397]},";"]]],"StatementReturn_withExpression":["define",{"sourceInterval":[4420,4458]},null,[],["seq",{"sourceInterval":[4420,4441]},["app",{"sourceInterval":[4420,4426]},"return",[]],["app",{"sourceInterval":[4427,4437]},"Expression",[]],["terminal",{"sourceInterval":[4438,4441]},";"]]],"StatementReturn_withoutExpression":["define",{"sourceInterval":[4481,4511]},null,[],["seq",{"sourceInterval":[4481,4491]},["app",{"sourceInterval":[4481,4487]},"return",[]],["terminal",{"sourceInterval":[4488,4491]},";"]]],"StatementReturn":["define",{"sourceInterval":[4402,4511]},null,[],["alt",{"sourceInterval":[4420,4511]},["app",{"sourceInterval":[4420,4441]},"StatementReturn_withExpression",[]],["app",{"sourceInterval":[4481,4491]},"StatementReturn_withoutExpression",[]]]],"StatementExpression":["define",{"sourceInterval":[4520,4556]},null,[],["seq",{"sourceInterval":[4542,4556]},["app",{"sourceInterval":[4542,4552]},"Expression",[]],["terminal",{"sourceInterval":[4553,4556]},";"]]],"StatementAssign":["define",{"sourceInterval":[4561,4604]},null,[],["seq",{"sourceInterval":[4579,4604]},["app",{"sourceInterval":[4579,4585]},"LValue",[]],["terminal",{"sourceInterval":[4586,4589]},"="],["app",{"sourceInterval":[4590,4600]},"Expression",[]],["terminal",{"sourceInterval":[4601,4604]},";"]]],"StatementAugmentedAssign":["define",{"sourceInterval":[4609,4899]},null,[],["alt",{"sourceInterval":[4636,4899]},["app",{"sourceInterval":[4636,4663]},"StatementAugmentedAssignAdd",[]],["app",{"sourceInterval":[4695,4722]},"StatementAugmentedAssignSub",[]],["app",{"sourceInterval":[4754,4781]},"StatementAugmentedAssignMul",[]],["app",{"sourceInterval":[4813,4840]},"StatementAugmentedAssignDiv",[]],["app",{"sourceInterval":[4872,4899]},"StatementAugmentedAssignRem",[]]]],"StatementAugmentedAssignAdd":["define",{"sourceInterval":[4904,4960]},null,[],["seq",{"sourceInterval":[4934,4960]},["app",{"sourceInterval":[4934,4940]},"LValue",[]],["terminal",{"sourceInterval":[4941,4945]},"+="],["app",{"sourceInterval":[4946,4956]},"Expression",[]],["terminal",{"sourceInterval":[4957,4960]},";"]]],"StatementAugmentedAssignSub":["define",{"sourceInterval":[4965,5021]},null,[],["seq",{"sourceInterval":[4995,5021]},["app",{"sourceInterval":[4995,5001]},"LValue",[]],["terminal",{"sourceInterval":[5002,5006]},"-="],["app",{"sourceInterval":[5007,5017]},"Expression",[]],["terminal",{"sourceInterval":[5018,5021]},";"]]],"StatementAugmentedAssignMul":["define",{"sourceInterval":[5026,5082]},null,[],["seq",{"sourceInterval":[5056,5082]},["app",{"sourceInterval":[5056,5062]},"LValue",[]],["terminal",{"sourceInterval":[5063,5067]},"*="],["app",{"sourceInterval":[5068,5078]},"Expression",[]],["terminal",{"sourceInterval":[5079,5082]},";"]]],"StatementAugmentedAssignDiv":["define",{"sourceInterval":[5087,5143]},null,[],["seq",{"sourceInterval":[5117,5143]},["app",{"sourceInterval":[5117,5123]},"LValue",[]],["terminal",{"sourceInterval":[5124,5128]},"/="],["app",{"sourceInterval":[5129,5139]},"Expression",[]],["terminal",{"sourceInterval":[5140,5143]},";"]]],"StatementAugmentedAssignRem":["define",{"sourceInterval":[5148,5204]},null,[],["seq",{"sourceInterval":[5178,5204]},["app",{"sourceInterval":[5178,5184]},"LValue",[]],["terminal",{"sourceInterval":[5185,5189]},"%="],["app",{"sourceInterval":[5190,5200]},"Expression",[]],["terminal",{"sourceInterval":[5201,5204]},";"]]],"StatementCondition_simple":["define",{"sourceInterval":[5230,5277]},null,[],["seq",{"sourceInterval":[5230,5268]},["app",{"sourceInterval":[5230,5232]},"if",[]],["app",{"sourceInterval":[5233,5243]},"Expression",[]],["terminal",{"sourceInterval":[5244,5247]},"{"],["star",{"sourceInterval":[5248,5258]},["app",{"sourceInterval":[5248,5257]},"Statement",[]]],["terminal",{"sourceInterval":[5259,5262]},"}"],["not",{"sourceInterval":[5263,5268]},["app",{"sourceInterval":[5264,5268]},"else",[]]]]],"StatementCondition_withElse":["define",{"sourceInterval":[5303,5370]},null,[],["seq",{"sourceInterval":[5303,5359]},["app",{"sourceInterval":[5303,5305]},"if",[]],["app",{"sourceInterval":[5306,5316]},"Expression",[]],["terminal",{"sourceInterval":[5317,5320]},"{"],["star",{"sourceInterval":[5321,5331]},["app",{"sourceInterval":[5321,5330]},"Statement",[]]],["terminal",{"sourceInterval":[5332,5335]},"}"],["app",{"sourceInterval":[5336,5340]},"else",[]],["terminal",{"sourceInterval":[5341,5344]},"{"],["star",{"sourceInterval":[5345,5355]},["app",{"sourceInterval":[5345,5354]},"Statement",[]]],["terminal",{"sourceInterval":[5356,5359]},"}"]]],"StatementCondition_withElseIf":["define",{"sourceInterval":[5396,5465]},null,[],["seq",{"sourceInterval":[5396,5452]},["app",{"sourceInterval":[5396,5398]},"if",[]],["app",{"sourceInterval":[5399,5409]},"Expression",[]],["terminal",{"sourceInterval":[5410,5413]},"{"],["star",{"sourceInterval":[5414,5424]},["app",{"sourceInterval":[5414,5423]},"Statement",[]]],["terminal",{"sourceInterval":[5425,5428]},"}"],["app",{"sourceInterval":[5429,5433]},"else",[]],["app",{"sourceInterval":[5434,5452]},"StatementCondition",[]]]],"StatementCondition":["define",{"sourceInterval":[5209,5465]},null,[],["alt",{"sourceInterval":[5230,5465]},["app",{"sourceInterval":[5230,5268]},"StatementCondition_simple",[]],["app",{"sourceInterval":[5303,5359]},"StatementCondition_withElse",[]],["app",{"sourceInterval":[5396,5452]},"StatementCondition_withElseIf",[]]]],"StatementWhile":["define",{"sourceInterval":[5470,5530]},null,[],["seq",{"sourceInterval":[5487,5530]},["app",{"sourceInterval":[5487,5492]},"while",[]],["terminal",{"sourceInterval":[5493,5496]},"("],["app",{"sourceInterval":[5497,5507]},"Expression",[]],["terminal",{"sourceInterval":[5508,5511]},")"],["terminal",{"sourceInterval":[5512,5515]},"{"],["star",{"sourceInterval":[5516,5526]},["app",{"sourceInterval":[5516,5525]},"Statement",[]]],["terminal",{"sourceInterval":[5527,5530]},"}"]]],"StatementRepeat":["define",{"sourceInterval":[5535,5597]},null,[],["seq",{"sourceInterval":[5553,5597]},["app",{"sourceInterval":[5553,5559]},"repeat",[]],["terminal",{"sourceInterval":[5560,5563]},"("],["app",{"sourceInterval":[5564,5574]},"Expression",[]],["terminal",{"sourceInterval":[5575,5578]},")"],["terminal",{"sourceInterval":[5579,5582]},"{"],["star",{"sourceInterval":[5583,5593]},["app",{"sourceInterval":[5583,5592]},"Statement",[]]],["terminal",{"sourceInterval":[5594,5597]},"}"]]],"StatementUntil":["define",{"sourceInterval":[5602,5669]},null,[],["seq",{"sourceInterval":[5619,5669]},["app",{"sourceInterval":[5619,5621]},"do",[]],["terminal",{"sourceInterval":[5622,5625]},"{"],["star",{"sourceInterval":[5626,5636]},["app",{"sourceInterval":[5626,5635]},"Statement",[]]],["terminal",{"sourceInterval":[5637,5640]},"}"],["app",{"sourceInterval":[5641,5646]},"until",[]],["terminal",{"sourceInterval":[5647,5650]},"("],["app",{"sourceInterval":[5651,5661]},"Expression",[]],["terminal",{"sourceInterval":[5662,5665]},")"],["terminal",{"sourceInterval":[5666,5669]},";"]]],"LValue_more":["define",{"sourceInterval":[5699,5719]},null,[],["seq",{"sourceInterval":[5699,5712]},["app",{"sourceInterval":[5699,5701]},"id",[]],["terminal",{"sourceInterval":[5702,5705]},"."],["app",{"sourceInterval":[5706,5712]},"LValue",[]]]],"LValue_single":["define",{"sourceInterval":[5733,5744]},null,[],["app",{"sourceInterval":[5733,5735]},"id",[]]],"LValue":["define",{"sourceInterval":[5690,5744]},null,[],["alt",{"sourceInterval":[5699,5744]},["app",{"sourceInterval":[5699,5712]},"LValue_more",[]],["app",{"sourceInterval":[5733,5735]},"LValue_single",[]]]],"Expression":["define",{"sourceInterval":[5769,5803]},null,[],["app",{"sourceInterval":[5782,5803]},"ExpressionConditional",[]]],"ExpressionConditional_ternary":["define",{"sourceInterval":[5832,5897]},null,[],["seq",{"sourceInterval":[5832,5887]},["app",{"sourceInterval":[5832,5844]},"ExpressionOr",[]],["terminal",{"sourceInterval":[5845,5848]},"?"],["app",{"sourceInterval":[5849,5861]},"ExpressionOr",[]],["terminal",{"sourceInterval":[5862,5865]},":"],["app",{"sourceInterval":[5866,5887]},"ExpressionConditional",[]]]],"ExpressionConditional":["define",{"sourceInterval":[5808,5938]},null,[],["alt",{"sourceInterval":[5832,5938]},["app",{"sourceInterval":[5832,5887]},"ExpressionConditional_ternary",[]],["app",{"sourceInterval":[5926,5938]},"ExpressionOr",[]]]],"ExpressionOr_or":["define",{"sourceInterval":[5958,5994]},null,[],["seq",{"sourceInterval":[5958,5989]},["app",{"sourceInterval":[5958,5970]},"ExpressionOr",[]],["terminal",{"sourceInterval":[5971,5975]},"||"],["app",{"sourceInterval":[5976,5989]},"ExpressionAnd",[]]]],"ExpressionOr":["define",{"sourceInterval":[5943,6027]},null,[],["alt",{"sourceInterval":[5958,6027]},["app",{"sourceInterval":[5958,5989]},"ExpressionOr_or",[]],["app",{"sourceInterval":[6014,6027]},"ExpressionAnd",[]]]],"ExpressionAnd_and":["define",{"sourceInterval":[6048,6090]},null,[],["seq",{"sourceInterval":[6048,6084]},["app",{"sourceInterval":[6048,6061]},"ExpressionAnd",[]],["terminal",{"sourceInterval":[6062,6066]},"&&"],["app",{"sourceInterval":[6067,6084]},"ExpressionCompare",[]]]],"ExpressionAnd":["define",{"sourceInterval":[6032,6128]},null,[],["alt",{"sourceInterval":[6048,6128]},["app",{"sourceInterval":[6048,6084]},"ExpressionAnd_and",[]],["app",{"sourceInterval":[6111,6128]},"ExpressionCompare",[]]]],"ExpressionCompare_not":["define",{"sourceInterval":[6153,6198]},null,[],["seq",{"sourceInterval":[6153,6192]},["app",{"sourceInterval":[6153,6170]},"ExpressionCompare",[]],["terminal",{"sourceInterval":[6171,6175]},"!="],["app",{"sourceInterval":[6176,6192]},"ExpressionBinary",[]]]],"ExpressionCompare_eq":["define",{"sourceInterval":[6223,6267]},null,[],["seq",{"sourceInterval":[6223,6262]},["app",{"sourceInterval":[6223,6240]},"ExpressionCompare",[]],["terminal",{"sourceInterval":[6241,6245]},"=="],["app",{"sourceInterval":[6246,6262]},"ExpressionBinary",[]]]],"ExpressionCompare_gt":["define",{"sourceInterval":[6292,6335]},null,[],["seq",{"sourceInterval":[6292,6330]},["app",{"sourceInterval":[6292,6309]},"ExpressionCompare",[]],["terminal",{"sourceInterval":[6310,6313]},">"],["app",{"sourceInterval":[6314,6330]},"ExpressionBinary",[]]]],"ExpressionCompare_gte":["define",{"sourceInterval":[6360,6405]},null,[],["seq",{"sourceInterval":[6360,6399]},["app",{"sourceInterval":[6360,6377]},"ExpressionCompare",[]],["terminal",{"sourceInterval":[6378,6382]},">="],["app",{"sourceInterval":[6383,6399]},"ExpressionBinary",[]]]],"ExpressionCompare_lt":["define",{"sourceInterval":[6430,6473]},null,[],["seq",{"sourceInterval":[6430,6468]},["app",{"sourceInterval":[6430,6447]},"ExpressionCompare",[]],["terminal",{"sourceInterval":[6448,6451]},"<"],["app",{"sourceInterval":[6452,6468]},"ExpressionBinary",[]]]],"ExpressionCompare_lte":["define",{"sourceInterval":[6498,6543]},null,[],["seq",{"sourceInterval":[6498,6537]},["app",{"sourceInterval":[6498,6515]},"ExpressionCompare",[]],["terminal",{"sourceInterval":[6516,6520]},"<="],["app",{"sourceInterval":[6521,6537]},"ExpressionBinary",[]]]],"ExpressionCompare":["define",{"sourceInterval":[6133,6584]},null,[],["alt",{"sourceInterval":[6153,6584]},["app",{"sourceInterval":[6153,6192]},"ExpressionCompare_not",[]],["app",{"sourceInterval":[6223,6262]},"ExpressionCompare_eq",[]],["app",{"sourceInterval":[6292,6330]},"ExpressionCompare_gt",[]],["app",{"sourceInterval":[6360,6399]},"ExpressionCompare_gte",[]],["app",{"sourceInterval":[6430,6468]},"ExpressionCompare_lt",[]],["app",{"sourceInterval":[6498,6537]},"ExpressionCompare_lte",[]],["app",{"sourceInterval":[6568,6584]},"ExpressionBinary",[]]]],"ExpressionBinary_shr":["define",{"sourceInterval":[6608,6649]},null,[],["seq",{"sourceInterval":[6608,6643]},["app",{"sourceInterval":[6608,6624]},"ExpressionBinary",[]],["terminal",{"sourceInterval":[6625,6629]},">>"],["app",{"sourceInterval":[6630,6643]},"ExpressionAdd",[]]]],"ExpressionBinary_shl":["define",{"sourceInterval":[6672,6713]},null,[],["seq",{"sourceInterval":[6672,6707]},["app",{"sourceInterval":[6672,6688]},"ExpressionBinary",[]],["terminal",{"sourceInterval":[6689,6693]},"<<"],["app",{"sourceInterval":[6694,6707]},"ExpressionAdd",[]]]],"ExpressionBinary_bin_and":["define",{"sourceInterval":[6736,6780]},null,[],["seq",{"sourceInterval":[6736,6770]},["app",{"sourceInterval":[6736,6752]},"ExpressionBinary",[]],["terminal",{"sourceInterval":[6753,6756]},"&"],["app",{"sourceInterval":[6757,6770]},"ExpressionAdd",[]]]],"ExpressionBinary_bin_or":["define",{"sourceInterval":[6803,6846]},null,[],["seq",{"sourceInterval":[6803,6837]},["app",{"sourceInterval":[6803,6819]},"ExpressionBinary",[]],["terminal",{"sourceInterval":[6820,6823]},"|"],["app",{"sourceInterval":[6824,6837]},"ExpressionAdd",[]]]],"ExpressionBinary":["define",{"sourceInterval":[6589,6882]},null,[],["alt",{"sourceInterval":[6608,6882]},["app",{"sourceInterval":[6608,6643]},"ExpressionBinary_shr",[]],["app",{"sourceInterval":[6672,6707]},"ExpressionBinary_shl",[]],["app",{"sourceInterval":[6736,6770]},"ExpressionBinary_bin_and",[]],["app",{"sourceInterval":[6803,6837]},"ExpressionBinary_bin_or",[]],["app",{"sourceInterval":[6869,6882]},"ExpressionAdd",[]]]],"ExpressionAdd_add":["define",{"sourceInterval":[6903,6945]},null,[],["seq",{"sourceInterval":[6903,6939]},["app",{"sourceInterval":[6903,6916]},"ExpressionAdd",[]],["terminal",{"sourceInterval":[6917,6920]},"+"],["not",{"sourceInterval":[6921,6925]},["terminal",{"sourceInterval":[6922,6925]},"+"]],["app",{"sourceInterval":[6926,6939]},"ExpressionMul",[]]]],"ExpressionAdd_sub":["define",{"sourceInterval":[6966,7008]},null,[],["seq",{"sourceInterval":[6966,7002]},["app",{"sourceInterval":[6966,6979]},"ExpressionAdd",[]],["terminal",{"sourceInterval":[6980,6983]},"-"],["not",{"sourceInterval":[6984,6988]},["terminal",{"sourceInterval":[6985,6988]},"-"]],["app",{"sourceInterval":[6989,7002]},"ExpressionMul",[]]]],"ExpressionAdd":["define",{"sourceInterval":[6887,7042]},null,[],["alt",{"sourceInterval":[6903,7042]},["app",{"sourceInterval":[6903,6939]},"ExpressionAdd_add",[]],["app",{"sourceInterval":[6966,7002]},"ExpressionAdd_sub",[]],["app",{"sourceInterval":[7029,7042]},"ExpressionMul",[]]]],"ExpressionMul_mul":["define",{"sourceInterval":[7063,7102]},null,[],["seq",{"sourceInterval":[7063,7096]},["app",{"sourceInterval":[7063,7076]},"ExpressionMul",[]],["terminal",{"sourceInterval":[7077,7080]},"*"],["app",{"sourceInterval":[7081,7096]},"ExpressionUnary",[]]]],"ExpressionMul_div":["define",{"sourceInterval":[7123,7162]},null,[],["seq",{"sourceInterval":[7123,7156]},["app",{"sourceInterval":[7123,7136]},"ExpressionMul",[]],["terminal",{"sourceInterval":[7137,7140]},"/"],["app",{"sourceInterval":[7141,7156]},"ExpressionUnary",[]]]],"ExpressionMul_rem":["define",{"sourceInterval":[7183,7222]},null,[],["seq",{"sourceInterval":[7183,7216]},["app",{"sourceInterval":[7183,7196]},"ExpressionMul",[]],["terminal",{"sourceInterval":[7197,7200]},"%"],["app",{"sourceInterval":[7201,7216]},"ExpressionUnary",[]]]],"ExpressionMul":["define",{"sourceInterval":[7047,7258]},null,[],["alt",{"sourceInterval":[7063,7258]},["app",{"sourceInterval":[7063,7096]},"ExpressionMul_mul",[]],["app",{"sourceInterval":[7123,7156]},"ExpressionMul_div",[]],["app",{"sourceInterval":[7183,7216]},"ExpressionMul_rem",[]],["app",{"sourceInterval":[7243,7258]},"ExpressionUnary",[]]]],"ExpressionUnary_neg":["define",{"sourceInterval":[7281,7312]},null,[],["seq",{"sourceInterval":[7281,7306]},["terminal",{"sourceInterval":[7281,7284]},"-"],["app",{"sourceInterval":[7285,7306]},"ExpressionUnarySuffix",[]]]],"ExpressionUnary_add":["define",{"sourceInterval":[7335,7366]},null,[],["seq",{"sourceInterval":[7335,7360]},["terminal",{"sourceInterval":[7335,7338]},"+"],["app",{"sourceInterval":[7339,7360]},"ExpressionUnarySuffix",[]]]],"ExpressionUnary_not":["define",{"sourceInterval":[7389,7420]},null,[],["seq",{"sourceInterval":[7389,7414]},["terminal",{"sourceInterval":[7389,7392]},"!"],["app",{"sourceInterval":[7393,7414]},"ExpressionUnarySuffix",[]]]],"ExpressionUnary":["define",{"sourceInterval":[7263,7464]},null,[],["alt",{"sourceInterval":[7281,7464]},["app",{"sourceInterval":[7281,7306]},"ExpressionUnary_neg",[]],["app",{"sourceInterval":[7335,7360]},"ExpressionUnary_add",[]],["app",{"sourceInterval":[7389,7414]},"ExpressionUnary_not",[]],["app",{"sourceInterval":[7443,7464]},"ExpressionUnarySuffix",[]]]],"ExpressionUnarySuffix_notNull":["define",{"sourceInterval":[7493,7523]},null,[],["seq",{"sourceInterval":[7493,7513]},["app",{"sourceInterval":[7493,7508]},"ExpressionValue",[]],["terminal",{"sourceInterval":[7509,7513]},"!!"]]],"ExpressionUnarySuffix":["define",{"sourceInterval":[7469,7567]},null,[],["alt",{"sourceInterval":[7493,7567]},["app",{"sourceInterval":[7493,7513]},"ExpressionUnarySuffix_notNull",[]],["app",{"sourceInterval":[7552,7567]},"ExpressionValue",[]]]],"ExpressionBracket":["define",{"sourceInterval":[7572,7610]},null,[],["seq",{"sourceInterval":[7592,7610]},["terminal",{"sourceInterval":[7592,7595]},"("],["app",{"sourceInterval":[7596,7606]},"Expression",[]],["terminal",{"sourceInterval":[7607,7610]},")"]]],"ExpressionValue":["define",{"sourceInterval":[7642,8032]},null,[],["alt",{"sourceInterval":[7660,8032]},["app",{"sourceInterval":[7660,7674]},"ExpressionCall",[]],["app",{"sourceInterval":[7697,7712]},"ExpressionField",[]],["app",{"sourceInterval":[7735,7755]},"ExpressionStaticCall",[]],["app",{"sourceInterval":[7778,7795]},"ExpressionBracket",[]],["app",{"sourceInterval":[7818,7831]},"ExpressionNew",[]],["app",{"sourceInterval":[7854,7868]},"integerLiteral",[]],["app",{"sourceInterval":[7891,7902]},"boolLiteral",[]],["app",{"sourceInterval":[7925,7927]},"id",[]],["app",{"sourceInterval":[7950,7954]},"null",[]],["app",{"sourceInterval":[7977,7993]},"ExpressionInitOf",[]],["app",{"sourceInterval":[8016,8032]},"ExpressionString",[]]]],"ExpressionString":["define",{"sourceInterval":[8037,8069]},null,[],["app",{"sourceInterval":[8056,8069]},"stringLiteral",[]]],"ExpressionField":["define",{"sourceInterval":[8074,8119]},null,[],["seq",{"sourceInterval":[8092,8119]},["app",{"sourceInterval":[8092,8107]},"ExpressionValue",[]],["terminal",{"sourceInterval":[8108,8111]},"."],["app",{"sourceInterval":[8112,8114]},"id",[]],["not",{"sourceInterval":[8115,8119]},["terminal",{"sourceInterval":[8116,8119]},"("]]]],"ExpressionCall":["define",{"sourceInterval":[8124,8195]},null,[],["seq",{"sourceInterval":[8141,8195]},["app",{"sourceInterval":[8141,8156]},"ExpressionValue",[]],["terminal",{"sourceInterval":[8157,8160]},"."],["app",{"sourceInterval":[8161,8163]},"id",[]],["terminal",{"sourceInterval":[8164,8167]},"("],["app",{"sourceInterval":[8168,8191]},"ListOf",[["app",{"sourceInterval":[8175,8185]},"Expression",[]],["terminal",{"sourceInterval":[8187,8190]},","]]],["terminal",{"sourceInterval":[8192,8195]},")"]]],"ExpressionNew":["define",{"sourceInterval":[8200,8257]},null,[],["seq",{"sourceInterval":[8216,8257]},["app",{"sourceInterval":[8216,8218]},"id",[]],["terminal",{"sourceInterval":[8219,8222]},"{"],["app",{"sourceInterval":[8223,8248]},"ListOf",[["app",{"sourceInterval":[8230,8242]},"NewParameter",[]],["terminal",{"sourceInterval":[8244,8247]},","]]],["opt",{"sourceInterval":[8249,8253]},["terminal",{"sourceInterval":[8249,8252]},","]],["terminal",{"sourceInterval":[8254,8257]},"}"]]],"NewParameter":["define",{"sourceInterval":[8262,8294]},null,[],["seq",{"sourceInterval":[8277,8294]},["app",{"sourceInterval":[8277,8279]},"id",[]],["terminal",{"sourceInterval":[8280,8283]},":"],["app",{"sourceInterval":[8284,8294]},"Expression",[]]]],"ExpressionStaticCall":["define",{"sourceInterval":[8299,8356]},null,[],["seq",{"sourceInterval":[8322,8356]},["app",{"sourceInterval":[8322,8324]},"id",[]],["terminal",{"sourceInterval":[8325,8328]},"("],["app",{"sourceInterval":[8329,8352]},"ListOf",[["app",{"sourceInterval":[8336,8346]},"Expression",[]],["terminal",{"sourceInterval":[8348,8351]},","]]],["terminal",{"sourceInterval":[8353,8356]},")"]]],"ExpressionInitOf":["define",{"sourceInterval":[8361,8421]},null,[],["seq",{"sourceInterval":[8380,8421]},["app",{"sourceInterval":[8380,8386]},"initOf",[]],["app",{"sourceInterval":[8387,8389]},"id",[]],["terminal",{"sourceInterval":[8390,8393]},"("],["app",{"sourceInterval":[8394,8417]},"ListOf",[["app",{"sourceInterval":[8401,8411]},"Expression",[]],["terminal",{"sourceInterval":[8413,8416]},","]]],["terminal",{"sourceInterval":[8418,8421]},")"]]],"typeLiteral":["define",{"sourceInterval":[8447,8491]},null,[],["seq",{"sourceInterval":[8461,8491]},["app",{"sourceInterval":[8461,8474]},"letterAsciiUC",[]],["star",{"sourceInterval":[8475,8491]},["app",{"sourceInterval":[8475,8490]},"typeLiteralPart",[]]]]],"typeLiteralPart":["define",{"sourceInterval":[8496,8539]},null,[],["alt",{"sourceInterval":[8514,8539]},["app",{"sourceInterval":[8514,8525]},"letterAscii",[]],["app",{"sourceInterval":[8528,8533]},"digit",[]],["terminal",{"sourceInterval":[8536,8539]},"_"]]],"integerLiteral":["define",{"sourceInterval":[8746,8840]},null,[],["alt",{"sourceInterval":[8763,8840]},["app",{"sourceInterval":[8763,8780]},"integerLiteralHex",[]],["app",{"sourceInterval":[8783,8800]},"integerLiteralBin",[]],["app",{"sourceInterval":[8803,8820]},"integerLiteralOct",[]],["app",{"sourceInterval":[8823,8840]},"integerLiteralDec",[]]]],"integerLiteralDec_nonZeroIntegerLiteralDec":["define",{"sourceInterval":[8887,8941]},null,[],["seq",{"sourceInterval":[8887,8913]},["app",{"sourceInterval":[8887,8899]},"nonZeroDigit",[]],["star",{"sourceInterval":[8900,8913]},["seq",{"sourceInterval":[8901,8911]},["opt",{"sourceInterval":[8901,8905]},["terminal",{"sourceInterval":[8901,8904]},"_"]],["app",{"sourceInterval":[8906,8911]},"digit",[]]]]]],"integerLiteralDec_integerLiteralWithLeadingZero":["define",{"sourceInterval":[8966,9025]},null,[],["seq",{"sourceInterval":[8966,8976]},["terminal",{"sourceInterval":[8966,8969]},"0"],["star",{"sourceInterval":[8970,8976]},["app",{"sourceInterval":[8970,8975]},"digit",[]]]]],"integerLiteralDec":["define",{"sourceInterval":[8867,9025]},null,[],["alt",{"sourceInterval":[8887,9025]},["app",{"sourceInterval":[8887,8913]},"integerLiteralDec_nonZeroIntegerLiteralDec",[]],["app",{"sourceInterval":[8966,8976]},"integerLiteralDec_integerLiteralWithLeadingZero",[]]]],"integerLiteralHex":["define",{"sourceInterval":[9030,9089]},null,[],["seq",{"sourceInterval":[9050,9089]},["alt",{"sourceInterval":[9051,9062]},["terminal",{"sourceInterval":[9051,9055]},"0x"],["terminal",{"sourceInterval":[9058,9062]},"0X"]],["app",{"sourceInterval":[9064,9072]},"hexDigit",[]],["star",{"sourceInterval":[9073,9089]},["seq",{"sourceInterval":[9074,9087]},["opt",{"sourceInterval":[9074,9078]},["terminal",{"sourceInterval":[9074,9077]},"_"]],["app",{"sourceInterval":[9079,9087]},"hexDigit",[]]]]]],"integerLiteralBin":["define",{"sourceInterval":[9094,9153]},null,[],["seq",{"sourceInterval":[9114,9153]},["alt",{"sourceInterval":[9115,9126]},["terminal",{"sourceInterval":[9115,9119]},"0b"],["terminal",{"sourceInterval":[9122,9126]},"0B"]],["app",{"sourceInterval":[9128,9136]},"binDigit",[]],["star",{"sourceInterval":[9137,9153]},["seq",{"sourceInterval":[9138,9151]},["opt",{"sourceInterval":[9138,9142]},["terminal",{"sourceInterval":[9138,9141]},"_"]],["app",{"sourceInterval":[9143,9151]},"binDigit",[]]]]]],"integerLiteralOct":["define",{"sourceInterval":[9158,9217]},null,[],["seq",{"sourceInterval":[9178,9217]},["alt",{"sourceInterval":[9179,9190]},["terminal",{"sourceInterval":[9179,9183]},"0o"],["terminal",{"sourceInterval":[9186,9190]},"0O"]],["app",{"sourceInterval":[9192,9200]},"octDigit",[]],["star",{"sourceInterval":[9201,9217]},["seq",{"sourceInterval":[9202,9215]},["opt",{"sourceInterval":[9202,9206]},["terminal",{"sourceInterval":[9202,9205]},"_"]],["app",{"sourceInterval":[9207,9215]},"octDigit",[]]]]]],"binDigit":["define",{"sourceInterval":[9222,9242]},null,[],["alt",{"sourceInterval":[9233,9242]},["terminal",{"sourceInterval":[9233,9236]},"0"],["terminal",{"sourceInterval":[9239,9242]},"1"]]],"octDigit":["define",{"sourceInterval":[9247,9266]},null,[],["range",{"sourceInterval":[9258,9266]},"0","7"]],"nonZeroDigit":["define",{"sourceInterval":[9271,9294]},null,[],["range",{"sourceInterval":[9286,9294]},"1","9"]],"letterAsciiLC":["define",{"sourceInterval":[9315,9339]},null,[],["range",{"sourceInterval":[9331,9339]},"a","z"]],"letterAsciiUC":["define",{"sourceInterval":[9344,9368]},null,[],["range",{"sourceInterval":[9360,9368]},"A","Z"]],"letterAscii":["define",{"sourceInterval":[9373,9416]},null,[],["alt",{"sourceInterval":[9387,9416]},["app",{"sourceInterval":[9387,9400]},"letterAsciiLC",[]],["app",{"sourceInterval":[9403,9416]},"letterAsciiUC",[]]]],"letterComment":["define",{"sourceInterval":[9421,9480]},null,[],["alt",{"sourceInterval":[9437,9480]},["app",{"sourceInterval":[9437,9450]},"letterAsciiLC",[]],["app",{"sourceInterval":[9453,9466]},"letterAsciiUC",[]],["app",{"sourceInterval":[9469,9474]},"digit",[]],["terminal",{"sourceInterval":[9477,9480]},"_"]]],"idStart":["define",{"sourceInterval":[9504,9531]},null,[],["alt",{"sourceInterval":[9514,9531]},["app",{"sourceInterval":[9514,9525]},"letterAscii",[]],["terminal",{"sourceInterval":[9528,9531]},"_"]]],"idPart":["define",{"sourceInterval":[9536,9570]},null,[],["alt",{"sourceInterval":[9545,9570]},["app",{"sourceInterval":[9545,9556]},"letterAscii",[]],["app",{"sourceInterval":[9559,9564]},"digit",[]],["terminal",{"sourceInterval":[9567,9570]},"_"]]],"id":["define",{"sourceInterval":[9575,9613]},null,[],["seq",{"sourceInterval":[9580,9613]},["not",{"sourceInterval":[9580,9593]},["app",{"sourceInterval":[9581,9593]},"reservedWord",[]]],["lex",{"sourceInterval":[9594,9602]},["app",{"sourceInterval":[9595,9602]},"idStart",[]]],["lex",{"sourceInterval":[9603,9613]},["star",{"sourceInterval":[9605,9612]},["app",{"sourceInterval":[9605,9611]},"idPart",[]]]]]],"funcLetter":["define",{"sourceInterval":[9634,9695]},null,[],["alt",{"sourceInterval":[9647,9695]},["app",{"sourceInterval":[9647,9658]},"letterAscii",[]],["terminal",{"sourceInterval":[9661,9664]},"_"],["terminal",{"sourceInterval":[9667,9670]},"'"],["terminal",{"sourceInterval":[9673,9676]},"?"],["terminal",{"sourceInterval":[9679,9682]},"!"],["terminal",{"sourceInterval":[9685,9689]},"::"],["terminal",{"sourceInterval":[9692,9695]},"&"]]],"funcId":["define",{"sourceInterval":[9700,9742]},null,[],["seq",{"sourceInterval":[9709,9742]},["app",{"sourceInterval":[9709,9719]},"funcLetter",[]],["star",{"sourceInterval":[9720,9742]},["lex",{"sourceInterval":[9720,9741]},["alt",{"sourceInterval":[9722,9740]},["app",{"sourceInterval":[9722,9732]},"funcLetter",[]],["app",{"sourceInterval":[9735,9740]},"digit",[]]]]]]],"boolLiteral":["define",{"sourceInterval":[9768,9808]},null,[],["seq",{"sourceInterval":[9782,9808]},["alt",{"sourceInterval":[9783,9799]},["terminal",{"sourceInterval":[9783,9789]},"true"],["terminal",{"sourceInterval":[9792,9799]},"false"]],["not",{"sourceInterval":[9801,9808]},["app",{"sourceInterval":[9802,9808]},"idPart",[]]]]],"stringLiteralCharacter":["define",{"sourceInterval":[9836,9896]},null,[],["seq",{"sourceInterval":[9861,9896]},["not",{"sourceInterval":[9861,9892]},["alt",{"sourceInterval":[9863,9891]},["terminal",{"sourceInterval":[9863,9867]},"\""],["terminal",{"sourceInterval":[9870,9874]},"\\"],["app",{"sourceInterval":[9877,9891]},"lineTerminator",[]]]],["app",{"sourceInterval":[9893,9896]},"any",[]]]],"stringLiteral":["define",{"sourceInterval":[9901,9950]},null,[],["seq",{"sourceInterval":[9917,9950]},["terminal",{"sourceInterval":[9917,9921]},"\""],["star",{"sourceInterval":[9922,9945]},["app",{"sourceInterval":[9922,9944]},"stringLiteralCharacter",[]]],["terminal",{"sourceInterval":[9946,9950]},"\""]]],"keyword":["define",{"sourceInterval":[10003,10516]},null,[],["alt",{"sourceInterval":[10013,10516]},["app",{"sourceInterval":[10013,10016]},"fun",[]],["app",{"sourceInterval":[10032,10035]},"let",[]],["app",{"sourceInterval":[10050,10056]},"return",[]],["app",{"sourceInterval":[10072,10078]},"extend",[]],["app",{"sourceInterval":[10094,10100]},"native",[]],["app",{"sourceInterval":[10116,10122]},"public",[]],["app",{"sourceInterval":[10138,10142]},"null",[]],["app",{"sourceInterval":[10158,10160]},"if",[]],["app",{"sourceInterval":[10176,10180]},"else",[]],["app",{"sourceInterval":[10196,10201]},"while",[]],["app",{"sourceInterval":[10217,10223]},"repeat",[]],["app",{"sourceInterval":[10239,10241]},"do",[]],["app",{"sourceInterval":[10257,10262]},"until",[]],["app",{"sourceInterval":[10278,10280]},"as",[]],["app",{"sourceInterval":[10297,10304]},"mutates",[]],["app",{"sourceInterval":[10319,10326]},"extends",[]],["app",{"sourceInterval":[10341,10347]},"import",[]],["app",{"sourceInterval":[10362,10366]},"with",[]],["app",{"sourceInterval":[10381,10386]},"trait",[]],["app",{"sourceInterval":[10401,10407]},"initOf",[]],["app",{"sourceInterval":[10422,10430]},"override",[]],["app",{"sourceInterval":[10445,10453]},"abstract",[]],["app",{"sourceInterval":[10468,10475]},"virtual",[]],["app",{"sourceInterval":[10490,10496]},"inline",[]],["app",{"sourceInterval":[10511,10516]},"const",[]]]],"contract":["define",{"sourceInterval":[10521,10550]},null,[],["seq",{"sourceInterval":[10532,10550]},["terminal",{"sourceInterval":[10532,10542]},"contract"],["not",{"sourceInterval":[10543,10550]},["app",{"sourceInterval":[10544,10550]},"idPart",[]]]]],"let":["define",{"sourceInterval":[10555,10574]},null,[],["seq",{"sourceInterval":[10561,10574]},["terminal",{"sourceInterval":[10561,10566]},"let"],["not",{"sourceInterval":[10567,10574]},["app",{"sourceInterval":[10568,10574]},"idPart",[]]]]],"fun":["define",{"sourceInterval":[10579,10598]},null,[],["seq",{"sourceInterval":[10585,10598]},["terminal",{"sourceInterval":[10585,10590]},"fun"],["not",{"sourceInterval":[10591,10598]},["app",{"sourceInterval":[10592,10598]},"idPart",[]]]]],"return":["define",{"sourceInterval":[10603,10628]},null,[],["seq",{"sourceInterval":[10612,10628]},["terminal",{"sourceInterval":[10612,10620]},"return"],["not",{"sourceInterval":[10621,10628]},["app",{"sourceInterval":[10622,10628]},"idPart",[]]]]],"extend":["define",{"sourceInterval":[10633,10658]},null,[],["seq",{"sourceInterval":[10642,10658]},["terminal",{"sourceInterval":[10642,10650]},"extend"],["not",{"sourceInterval":[10651,10658]},["app",{"sourceInterval":[10652,10658]},"idPart",[]]]]],"native":["define",{"sourceInterval":[10663,10688]},null,[],["seq",{"sourceInterval":[10672,10688]},["terminal",{"sourceInterval":[10672,10680]},"native"],["not",{"sourceInterval":[10681,10688]},["app",{"sourceInterval":[10682,10688]},"idPart",[]]]]],"public":["define",{"sourceInterval":[10693,10718]},null,[],["seq",{"sourceInterval":[10702,10718]},["terminal",{"sourceInterval":[10702,10710]},"public"],["not",{"sourceInterval":[10711,10718]},["app",{"sourceInterval":[10712,10718]},"idPart",[]]]]],"null":["define",{"sourceInterval":[10723,10744]},null,[],["seq",{"sourceInterval":[10730,10744]},["terminal",{"sourceInterval":[10730,10736]},"null"],["not",{"sourceInterval":[10737,10744]},["app",{"sourceInterval":[10738,10744]},"idPart",[]]]]],"if":["define",{"sourceInterval":[10749,10766]},null,[],["seq",{"sourceInterval":[10754,10766]},["terminal",{"sourceInterval":[10754,10758]},"if"],["not",{"sourceInterval":[10759,10766]},["app",{"sourceInterval":[10760,10766]},"idPart",[]]]]],"else":["define",{"sourceInterval":[10771,10792]},null,[],["seq",{"sourceInterval":[10778,10792]},["terminal",{"sourceInterval":[10778,10784]},"else"],["not",{"sourceInterval":[10785,10792]},["app",{"sourceInterval":[10786,10792]},"idPart",[]]]]],"while":["define",{"sourceInterval":[10797,10820]},null,[],["seq",{"sourceInterval":[10805,10820]},["terminal",{"sourceInterval":[10805,10812]},"while"],["not",{"sourceInterval":[10813,10820]},["app",{"sourceInterval":[10814,10820]},"idPart",[]]]]],"repeat":["define",{"sourceInterval":[10825,10850]},null,[],["seq",{"sourceInterval":[10834,10850]},["terminal",{"sourceInterval":[10834,10842]},"repeat"],["not",{"sourceInterval":[10843,10850]},["app",{"sourceInterval":[10844,10850]},"idPart",[]]]]],"do":["define",{"sourceInterval":[10855,10872]},null,[],["seq",{"sourceInterval":[10860,10872]},["terminal",{"sourceInterval":[10860,10864]},"do"],["not",{"sourceInterval":[10865,10872]},["app",{"sourceInterval":[10866,10872]},"idPart",[]]]]],"until":["define",{"sourceInterval":[10877,10900]},null,[],["seq",{"sourceInterval":[10885,10900]},["terminal",{"sourceInterval":[10885,10892]},"until"],["not",{"sourceInterval":[10893,10900]},["app",{"sourceInterval":[10894,10900]},"idPart",[]]]]],"as":["define",{"sourceInterval":[10905,10922]},null,[],["seq",{"sourceInterval":[10910,10922]},["terminal",{"sourceInterval":[10910,10914]},"as"],["not",{"sourceInterval":[10915,10922]},["app",{"sourceInterval":[10916,10922]},"idPart",[]]]]],"mutates":["define",{"sourceInterval":[10927,10954]},null,[],["seq",{"sourceInterval":[10937,10954]},["terminal",{"sourceInterval":[10937,10946]},"mutates"],["not",{"sourceInterval":[10947,10954]},["app",{"sourceInterval":[10948,10954]},"idPart",[]]]]],"extends":["define",{"sourceInterval":[10959,10986]},null,[],["seq",{"sourceInterval":[10969,10986]},["terminal",{"sourceInterval":[10969,10978]},"extends"],["not",{"sourceInterval":[10979,10986]},["app",{"sourceInterval":[10980,10986]},"idPart",[]]]]],"import":["define",{"sourceInterval":[10991,11016]},null,[],["seq",{"sourceInterval":[11000,11016]},["terminal",{"sourceInterval":[11000,11008]},"import"],["not",{"sourceInterval":[11009,11016]},["app",{"sourceInterval":[11010,11016]},"idPart",[]]]]],"with":["define",{"sourceInterval":[11021,11042]},null,[],["seq",{"sourceInterval":[11028,11042]},["terminal",{"sourceInterval":[11028,11034]},"with"],["not",{"sourceInterval":[11035,11042]},["app",{"sourceInterval":[11036,11042]},"idPart",[]]]]],"trait":["define",{"sourceInterval":[11047,11070]},null,[],["seq",{"sourceInterval":[11055,11070]},["terminal",{"sourceInterval":[11055,11062]},"trait"],["not",{"sourceInterval":[11063,11070]},["app",{"sourceInterval":[11064,11070]},"idPart",[]]]]],"initOf":["define",{"sourceInterval":[11075,11100]},null,[],["seq",{"sourceInterval":[11084,11100]},["terminal",{"sourceInterval":[11084,11092]},"initOf"],["not",{"sourceInterval":[11093,11100]},["app",{"sourceInterval":[11094,11100]},"idPart",[]]]]],"virtual":["define",{"sourceInterval":[11105,11132]},null,[],["seq",{"sourceInterval":[11115,11132]},["terminal",{"sourceInterval":[11115,11124]},"virtual"],["not",{"sourceInterval":[11125,11132]},["app",{"sourceInterval":[11126,11132]},"idPart",[]]]]],"override":["define",{"sourceInterval":[11137,11166]},null,[],["seq",{"sourceInterval":[11148,11166]},["terminal",{"sourceInterval":[11148,11158]},"override"],["not",{"sourceInterval":[11159,11166]},["app",{"sourceInterval":[11160,11166]},"idPart",[]]]]],"inline":["define",{"sourceInterval":[11171,11196]},null,[],["seq",{"sourceInterval":[11180,11196]},["terminal",{"sourceInterval":[11180,11188]},"inline"],["not",{"sourceInterval":[11189,11196]},["app",{"sourceInterval":[11190,11196]},"idPart",[]]]]],"const":["define",{"sourceInterval":[11201,11224]},null,[],["seq",{"sourceInterval":[11209,11224]},["terminal",{"sourceInterval":[11209,11216]},"const"],["not",{"sourceInterval":[11217,11224]},["app",{"sourceInterval":[11218,11224]},"idPart",[]]]]],"abstract":["define",{"sourceInterval":[11229,11258]},null,[],["seq",{"sourceInterval":[11240,11258]},["terminal",{"sourceInterval":[11240,11250]},"abstract"],["not",{"sourceInterval":[11251,11258]},["app",{"sourceInterval":[11252,11258]},"idPart",[]]]]],"nameAttribute":["define",{"sourceInterval":[11282,11305]},null,[],["terminal",{"sourceInterval":[11298,11305]},"@name"]],"reservedWord":["define",{"sourceInterval":[11327,11349]},null,[],["app",{"sourceInterval":[11342,11349]},"keyword",[]]],"space":["extend",{"sourceInterval":[11371,11404]},null,[],["alt",{"sourceInterval":[11380,11404]},["app",{"sourceInterval":[11380,11387]},"comment",[]],["app",{"sourceInterval":[11390,11404]},"lineTerminator",[]]]],"comment":["define",{"sourceInterval":[11409,11455]},null,[],["alt",{"sourceInterval":[11419,11455]},["app",{"sourceInterval":[11419,11435]},"multiLineComment",[]],["app",{"sourceInterval":[11438,11455]},"singleLineComment",[]]]],"lineTerminator":["define",{"sourceInterval":[11460,11510]},null,[],["alt",{"sourceInterval":[11477,11510]},["terminal",{"sourceInterval":[11477,11481]},"\n"],["terminal",{"sourceInterval":[11484,11488]},"\r"],["terminal",{"sourceInterval":[11491,11499]},"\u2028"],["terminal",{"sourceInterval":[11502,11510]},"\u2029"]]],"multiLineComment":["define",{"sourceInterval":[11515,11556]},null,[],["seq",{"sourceInterval":[11534,11556]},["terminal",{"sourceInterval":[11534,11538]},"/*"],["star",{"sourceInterval":[11539,11551]},["seq",{"sourceInterval":[11540,11549]},["not",{"sourceInterval":[11540,11545]},["terminal",{"sourceInterval":[11541,11545]},"*/"]],["app",{"sourceInterval":[11546,11549]},"any",[]]]],["terminal",{"sourceInterval":[11552,11556]},"*/"]]],"singleLineComment":["define",{"sourceInterval":[11561,11608]},null,[],["seq",{"sourceInterval":[11581,11608]},["terminal",{"sourceInterval":[11581,11585]},"//"],["star",{"sourceInterval":[11586,11608]},["seq",{"sourceInterval":[11587,11606]},["not",{"sourceInterval":[11587,11602]},["app",{"sourceInterval":[11588,11602]},"lineTerminator",[]]],["app",{"sourceInterval":[11603,11606]},"any",[]]]]]]}]);module.exports=result; \ No newline at end of file diff --git a/src/grammar/grammar.ts b/src/grammar/grammar.ts index 594261e9a..5d4fb4c61 100644 --- a/src/grammar/grammar.ts +++ b/src/grammar/grammar.ts @@ -282,7 +282,7 @@ semantics.addOperation('resolve_declaration', { ref: createRef(this) }) }, - Function_withType(arg0, _arg1, arg2, _arg3, arg4, _arg5, _arg6, arg7, _arg8, arg9, _) { + Function_withType(arg0, _arg1, arg2, _arg3, arg4, _arg5, _arg6, _arg7, arg8, _arg9, arg10, _arg11) { const attributes = arg0.children.map((v) => v.resolve_attributes()) as ASTFunctionAttribute[]; checkVariableName(arg2.sourceString, createRef(arg2)); checkFunctionAttributes(false, attributes, createRef(this)); @@ -291,13 +291,13 @@ semantics.addOperation('resolve_declaration', { origin: ctx!.origin, attributes, name: arg2.sourceString, - return: arg7.resolve_expression(), + return: arg8.resolve_expression(), args: arg4.asIteration().children.map((v) => v.resolve_declaration()), - statements: arg9.children.map((v) => v.resolve_statement()), + statements: arg10.children.map((v) => v.resolve_statement()), ref: createRef(this) }) }, - Function_withVoid(arg0, _arg1, arg2, _arg3, arg4, _arg5, _arg6, arg7, _) { + Function_withVoid(arg0, _arg1, arg2, _arg3, arg4, _arg5, _arg6, _arg7, arg8, _arg9) { const attributes = arg0.children.map((v) => v.resolve_attributes()) as ASTFunctionAttribute[]; checkVariableName(arg2.sourceString, createRef(arg2)); checkFunctionAttributes(false, attributes, createRef(this)); @@ -308,11 +308,11 @@ semantics.addOperation('resolve_declaration', { name: arg2.sourceString, return: null, args: arg4.asIteration().children.map((v) => v.resolve_declaration()), - statements: arg7.children.map((v) => v.resolve_statement()), + statements: arg8.children.map((v) => v.resolve_statement()), ref: createRef(this) }) }, - Function_abstractVoid(arg0, _arg1, arg2, _arg3, arg4, _arg5, _arg6) { + Function_abstractVoid(arg0, _arg1, arg2, _arg3, arg4, _arg5, _arg6, _arg7) { const attributes = arg0.children.map((v) => v.resolve_attributes()) as ASTFunctionAttribute[]; checkVariableName(arg2.sourceString, createRef(arg2)); checkFunctionAttributes(true, attributes, createRef(this)); @@ -327,7 +327,7 @@ semantics.addOperation('resolve_declaration', { ref: createRef(this) }) }, - Function_abstractType(arg0, _arg1, arg2, _arg3, arg4, _arg5, _arg6, arg7, _arg8) { + Function_abstractType(arg0, _arg1, arg2, _arg3, arg4, _arg5, _arg6, _arg7, arg8, _arg9) { const attributes = arg0.children.map((v) => v.resolve_attributes()) as ASTFunctionAttribute[]; checkVariableName(arg2.sourceString, createRef(arg2)); checkFunctionAttributes(true, attributes, createRef(this)); @@ -336,13 +336,13 @@ semantics.addOperation('resolve_declaration', { origin: ctx!.origin, attributes, name: arg2.sourceString, - return: arg7.resolve_expression(), + return: arg8.resolve_expression(), args: arg4.asIteration().children.map((v) => v.resolve_declaration()), statements: null, ref: createRef(this) }) }, - NativeFunction_withType(_arg0, _arg1, arg2, _arg3, arg4, arg5, arg6, _arg7, arg8, _arg9, _arg10, arg11, _arg12) { + NativeFunction_withType(_arg0, _arg1, arg2, _arg3, arg4, arg5, arg6, _arg7, arg8, _arg9, _arg10, _arg11, arg12, _arg13) { checkVariableName(arg5.sourceString, createRef(arg5)); return createNode({ kind: 'def_native_function', @@ -350,38 +350,12 @@ semantics.addOperation('resolve_declaration', { attributes: arg4.children.map((v) => v.resolve_attributes()), name: arg6.sourceString, nativeName: arg2.sourceString, - return: arg11.resolve_expression(), + return: arg12.resolve_expression(), args: arg8.asIteration().children.map((v) => v.resolve_declaration()), ref: createRef(this) }) }, - NativeFunction_withTypeAndTrailingComma(_arg0, _arg1, arg2, _arg3, arg4, arg5, arg6, _arg7, arg8, _arg9, _arg10, arg11, _arg12, _arg13) { - checkVariableName(arg5.sourceString, createRef(arg5)); - return createNode({ - kind: 'def_native_function', - origin: ctx!.origin, - attributes: arg4.children.map((v) => v.resolve_attributes()), - name: arg6.sourceString, - nativeName: arg2.sourceString, - return: arg11.resolve_expression(), - args: arg8.asIteration().children.map((v) => v.resolve_declaration()), - ref: createRef(this) - }) - }, - NativeFunction_withVoid(_arg0, _arg1, arg2, _arg3, arg4, arg5, arg6, _arg7, arg8, _arg9, _arg10) { - checkVariableName(arg5.sourceString, createRef(arg5)); - return createNode({ - kind: 'def_native_function', - origin: ctx!.origin, - attributes: arg4.children.map((v) => v.resolve_attributes()), - name: arg6.sourceString, - nativeName: arg2.sourceString, - return: null, - args: arg8.asIteration().children.map((v) => v.resolve_declaration()), - ref: createRef(this) - }) - }, - NativeFunction_withVoidAndTrailingComma(_arg0, _arg1, arg2, _arg3, arg4, arg5, arg6, _arg7, arg8, _arg9, _arg10, _arg11) { + NativeFunction_withVoid(_arg0, _arg1, arg2, _arg3, arg4, arg5, arg6, _arg7, arg8, _arg9, _arg10, _arg11) { checkVariableName(arg5.sourceString, createRef(arg5)); return createNode({ kind: 'def_native_function', @@ -738,10 +712,7 @@ semantics.addOperation('resolve_expression', { ExpressionStaticCall(arg0, _arg1, arg2, _arg3) { return createNode({ kind: 'op_static_call', name: arg0.sourceString, args: arg2.asIteration().children.map((v) => v.resolve_expression()), ref: createRef(this) }); }, - ExpressionNew_withTrailing(arg0, _arg1, arg2, _arg3, _arg4) { - return createNode({ kind: 'op_new', type: arg0.sourceString, args: arg2.asIteration().children.map((v) => v.resolve_expression()), ref: createRef(this) }); - }, - ExpressionNew_noTrailing(arg0, _arg1, arg2, _arg3) { + ExpressionNew(arg0, _arg1, arg2, _arg3, _arg4) { return createNode({ kind: 'op_new', type: arg0.sourceString, args: arg2.asIteration().children.map((v) => v.resolve_expression()), ref: createRef(this) }); }, NewParameter(arg0, _arg1, arg2) { From 99e689dd08403ab6c03120f71f83a060456d894c Mon Sep 17 00:00:00 2001 From: Vitor Py Braga <12871+vitorpy@users.noreply.github.com> Date: Wed, 20 Mar 2024 18:26:29 +0100 Subject: [PATCH 05/22] Adding test case for empty argument list --- src/grammar/test-failed/case-19.tact | 1 + 1 file changed, 1 insertion(+) create mode 100644 src/grammar/test-failed/case-19.tact diff --git a/src/grammar/test-failed/case-19.tact b/src/grammar/test-failed/case-19.tact new file mode 100644 index 000000000..b181390aa --- /dev/null +++ b/src/grammar/test-failed/case-19.tact @@ -0,0 +1 @@ +fun function(,) {} \ No newline at end of file From 8b61dad4836988aec5c3edfc822a6f95d1788d68 Mon Sep 17 00:00:00 2001 From: Vitor Py Braga <12871+vitorpy@users.noreply.github.com> Date: Wed, 20 Mar 2024 18:30:42 +0100 Subject: [PATCH 06/22] Add changes to CHANGELOG --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 507940a64..9e1b1d4ba 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed - Update the `dump` function to handle addresses: PR [#175](https://github.com/tact-lang/tact/pull/175) +- Support for trailing comma: PR [#179](https://github.com/tact-lang/tact/pull/179) ### Fixed From b439d71451c1847010ae4c552f0385af8215c24a Mon Sep 17 00:00:00 2001 From: Vitor Py <12871+vitorpy@users.noreply.github.com> Date: Wed, 20 Mar 2024 21:55:23 +0100 Subject: [PATCH 07/22] Better wording on CHANGELOG.md Co-authored-by: Anton Trunov --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9e1b1d4ba..04e3b5432 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,7 +11,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed - Update the `dump` function to handle addresses: PR [#175](https://github.com/tact-lang/tact/pull/175) -- Support for trailing comma: PR [#179](https://github.com/tact-lang/tact/pull/179) +- Support trailing commas for struct fields and function arguments: PR [#179](https://github.com/tact-lang/tact/pull/179) ### Fixed From 994302392b16543afc3e5c8b19254016c43bb800 Mon Sep 17 00:00:00 2001 From: Vitor Py Braga <12871+vitorpy@users.noreply.github.com> Date: Wed, 20 Mar 2024 21:59:23 +0100 Subject: [PATCH 08/22] Add additional test case for more than two arguments --- src/grammar/test/case-25.tact | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/grammar/test/case-25.tact b/src/grammar/test/case-25.tact index d8df1a71c..6b47f7e30 100644 --- a/src/grammar/test/case-25.tact +++ b/src/grammar/test/case-25.tact @@ -7,4 +7,12 @@ fun anotherFunction( b: Int, ): Int { return (a >> b) || (a << (32 - b)); +} + +fun oneMoreFunction( + a: Int, + b: Int, + c: Int, + ): Int { + return c + ((a >> b) || (a << (32 - b))); } \ No newline at end of file From 42b1d55777875d6c862d8120dea3f4eb77491e66 Mon Sep 17 00:00:00 2001 From: Vitor Py Braga <12871+vitorpy@users.noreply.github.com> Date: Thu, 21 Mar 2024 07:45:35 +0100 Subject: [PATCH 09/22] Fixing test case --- src/grammar/test/case-25.tact | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/grammar/test/case-25.tact b/src/grammar/test/case-25.tact index 6b47f7e30..6187b026c 100644 --- a/src/grammar/test/case-25.tact +++ b/src/grammar/test/case-25.tact @@ -12,7 +12,9 @@ fun anotherFunction( fun oneMoreFunction( a: Int, b: Int, - c: Int, ): Int { - return c + ((a >> b) || (a << (32 - b))); + return anotherFunction( + a, + b, + ); } \ No newline at end of file From ae10d4eb061bcf4701a45c51ec7d19261119690b Mon Sep 17 00:00:00 2001 From: Vitor Py Braga <12871+vitorpy@users.noreply.github.com> Date: Thu, 21 Mar 2024 20:03:00 +0100 Subject: [PATCH 10/22] Expand coverage to include ExpressionCall, ExpressionInitOf and ExpressionStaticCall --- src/grammar/grammar.ohm | 6 +++--- src/grammar/grammar.ohm-bundle.d.ts | 6 +++--- src/grammar/grammar.ohm-bundle.js | 2 +- src/grammar/grammar.ts | 6 +++--- src/grammar/test/case-25.tact | 7 +++++++ 5 files changed, 17 insertions(+), 10 deletions(-) diff --git a/src/grammar/grammar.ohm b/src/grammar/grammar.ohm index f6be408a9..0a2b3e915 100644 --- a/src/grammar/grammar.ohm +++ b/src/grammar/grammar.ohm @@ -173,11 +173,11 @@ Tact { | ExpressionString ExpressionString = stringLiteral ExpressionField = ExpressionValue "." id ~"(" - ExpressionCall = ExpressionValue "." id "(" ListOf ")" + ExpressionCall = ExpressionValue "." id "(" ListOf ","? ")" ExpressionNew = id "{" ListOf ","? "}" NewParameter = id ":" Expression - ExpressionStaticCall = id "(" ListOf ")" - ExpressionInitOf = initOf id "(" ListOf ")" + ExpressionStaticCall = id "(" ListOf ","? ")" + ExpressionInitOf = initOf id "(" ListOf ","? ")" // Type Literal typeLiteral = letterAsciiUC typeLiteralPart* diff --git a/src/grammar/grammar.ohm-bundle.d.ts b/src/grammar/grammar.ohm-bundle.d.ts index f4948c396..8460f1d22 100644 --- a/src/grammar/grammar.ohm-bundle.d.ts +++ b/src/grammar/grammar.ohm-bundle.d.ts @@ -135,11 +135,11 @@ export interface TactActionDict extends ActionDict { ExpressionValue?: (this: NonterminalNode, arg0: NonterminalNode) => T; ExpressionString?: (this: NonterminalNode, arg0: NonterminalNode) => T; ExpressionField?: (this: NonterminalNode, arg0: NonterminalNode, arg1: TerminalNode, arg2: NonterminalNode) => T; - ExpressionCall?: (this: NonterminalNode, arg0: NonterminalNode, arg1: TerminalNode, arg2: NonterminalNode, arg3: TerminalNode, arg4: NonterminalNode, arg5: TerminalNode) => T; + ExpressionCall?: (this: NonterminalNode, arg0: NonterminalNode, arg1: TerminalNode, arg2: NonterminalNode, arg3: TerminalNode, arg4: NonterminalNode, arg5: IterationNode, arg6: TerminalNode) => T; ExpressionNew?: (this: NonterminalNode, arg0: NonterminalNode, arg1: TerminalNode, arg2: NonterminalNode, arg3: IterationNode, arg4: TerminalNode) => T; NewParameter?: (this: NonterminalNode, arg0: NonterminalNode, arg1: TerminalNode, arg2: NonterminalNode) => T; - ExpressionStaticCall?: (this: NonterminalNode, arg0: NonterminalNode, arg1: TerminalNode, arg2: NonterminalNode, arg3: TerminalNode) => T; - ExpressionInitOf?: (this: NonterminalNode, arg0: NonterminalNode, arg1: NonterminalNode, arg2: TerminalNode, arg3: NonterminalNode, arg4: TerminalNode) => T; + ExpressionStaticCall?: (this: NonterminalNode, arg0: NonterminalNode, arg1: TerminalNode, arg2: NonterminalNode, arg3: IterationNode, arg4: TerminalNode) => T; + ExpressionInitOf?: (this: NonterminalNode, arg0: NonterminalNode, arg1: NonterminalNode, arg2: TerminalNode, arg3: NonterminalNode, arg4: IterationNode, arg5: TerminalNode) => T; typeLiteral?: (this: NonterminalNode, arg0: NonterminalNode, arg1: IterationNode) => T; typeLiteralPart?: (this: NonterminalNode, arg0: NonterminalNode | TerminalNode) => T; integerLiteral?: (this: NonterminalNode, arg0: NonterminalNode) => T; diff --git a/src/grammar/grammar.ohm-bundle.js b/src/grammar/grammar.ohm-bundle.js index b2dcc8a54..beabc8b53 100644 --- a/src/grammar/grammar.ohm-bundle.js +++ b/src/grammar/grammar.ohm-bundle.js @@ -1 +1 @@ -'use strict';const ohm=(require('ohm-js').default || require('ohm-js'));const result=ohm.makeRecipe(["grammar",{"source":"Tact {\n\n // Starting point of the program\n Program = ProgramItem*\n ProgramItem = Struct\n | Contract\n | Primitive\n | StaticFunction\n | NativeFunction\n | ProgramImport\n | Trait\n | Constant\n ProgramImport = import stringLiteral \";\"\n\n // Built-in declarations\n Primitive = \"primitive\" Type \";\"\n\n // Static function\n StaticFunction = Function\n NativeFunction = nameAttribute \"(\" funcId \")\" FunctionAttribute* native id \"(\" ListOf \",\"? \")\" \";\" --withVoid\n | nameAttribute \"(\" funcId \")\" FunctionAttribute* native id \"(\" ListOf \",\"? \")\" \":\" Type \";\" --withType\n \n // Field declarations\n Type = typeLiteral \"?\" --optional\n | typeLiteral --required\n | \"map\" \"<\" typeLiteral (as id)? \",\" typeLiteral (as id)? \">\" --map\n | \"bounced\" \"<\" typeLiteral \">\" --bounced\n Field = id \":\" Type \";\" --default\n | id \":\" Type \"=\" Expression \";\" --defaultWithInit\n | id \":\" Type as id \";\" --withSerialization\n | id \":\" Type as id \"=\" Expression \";\" --withSerializationAndInit\n \n // Constant\n ConstantAttribute = virtual --virtual\n | override --override\n | abstract --abstract\n Constant = ConstantAttribute* ~fun const id \":\" Type \"=\" Expression \";\" --withValue\n | ConstantAttribute* ~fun const id \":\" Type \";\" --withEmpty\n\n // Struct\n Struct = \"struct\" typeLiteral \"{\" StructBody* \"}\" --originary\n | \"message\" typeLiteral \"{\" StructBody* \"}\" --message\n | \"message\" \"(\" integerLiteral \")\" typeLiteral \"{\" StructBody* \"}\" --messageWithId\n StructBody = Field\n\n // Contract\n Contract = ContractAttribute* contract id \"{\" ContractBody* \"}\" --simple\n | ContractAttribute* contract id with ListOf \"{\" ContractBody* \"}\" --withTraits\n ContractInit = \"init\" \"(\" ListOf \")\" \"{\" Statement* \"}\"\n ContractBody = Field\n | ContractInit\n | ReceiveFunction\n | Function\n | Constant\n \n // Trait\n Trait = ContractAttribute* trait id \"{\" TraitBody* \"}\" --originary\n | ContractAttribute* trait id with ListOf \"{\" TraitBody* \"}\" --withTraits\n TraitBody = Field\n | ReceiveFunction\n | Function\n | Constant\n\n // Contract attributes\n ContractAttribute = \"@interface\" \"(\" stringLiteral \")\" --interface\n\n // Function\n FunctionAttribute = \"get\" --getter\n | mutates --mutates\n | extends --extends\n | virtual --virtual\n | override --override\n | inline --inline\n | abstract --abstract\n Function = FunctionAttribute* fun id \"(\" ListOf \",\"? \")\" \"{\" Statement* \"}\" --withVoid\n | FunctionAttribute* fun id \"(\" ListOf \",\"? \")\" \":\" Type \"{\" Statement* \"}\" --withType\n | FunctionAttribute* fun id \"(\" ListOf \",\"? \")\" \";\" --abstractVoid\n | FunctionAttribute* fun id \"(\" ListOf \",\"? \")\" \":\" Type \";\" --abstractType\n FunctionArg = id \":\" Type\n \n ReceiveFunction = \"receive\" \"(\" FunctionArg \")\" \"{\" Statement* \"}\" --simple\n | \"receive\" \"(\" \")\" \"{\" Statement* \"}\" --empty\n | \"receive\" \"(\" stringLiteral \")\" \"{\" Statement* \"}\" --comment\n | \"bounced\" \"(\" FunctionArg \")\" \"{\" Statement* \"}\" --bounced\n | \"external\" \"(\" FunctionArg \")\" \"{\" Statement* \"}\" --externalSimple\n | \"external\" \"(\" stringLiteral \")\" \"{\" Statement* \"}\" --externalComment\n | \"external\" \"(\" \")\" \"{\" Statement* \"}\" --externalEmpty\n\n // Statements\n Statement = StatementLet\n | StatementBlock\n | StatementReturn\n | StatementExpression\n | StatementAssign\n | StatementAugmentedAssign\n | StatementCondition\n | StatementWhile\n | StatementRepeat\n | StatementUntil\n StatementBlock = \"{\" Statement* \"}\"\n StatementLet = let id \":\" Type \"=\" Expression \";\"\n StatementReturn = return Expression \";\" --withExpression\n | return \";\" --withoutExpression \n StatementExpression = Expression \";\"\n StatementAssign = LValue \"=\" Expression \";\"\n StatementAugmentedAssign = StatementAugmentedAssignAdd\n | StatementAugmentedAssignSub\n | StatementAugmentedAssignMul\n | StatementAugmentedAssignDiv\n | StatementAugmentedAssignRem\n StatementAugmentedAssignAdd = LValue \"+=\" Expression \";\"\n StatementAugmentedAssignSub = LValue \"-=\" Expression \";\"\n StatementAugmentedAssignMul = LValue \"*=\" Expression \";\"\n StatementAugmentedAssignDiv = LValue \"/=\" Expression \";\"\n StatementAugmentedAssignRem = LValue \"%=\" Expression \";\"\n StatementCondition = if Expression \"{\" Statement* \"}\" ~else --simple\n | if Expression \"{\" Statement* \"}\" else \"{\" Statement* \"}\" --withElse\n | if Expression \"{\" Statement* \"}\" else StatementCondition --withElseIf\n StatementWhile = while \"(\" Expression \")\" \"{\" Statement* \"}\"\n StatementRepeat = repeat \"(\" Expression \")\" \"{\" Statement* \"}\"\n StatementUntil = do \"{\" Statement* \"}\" until \"(\" Expression \")\" \";\"\n\n // L-value\n LValue = id \".\" LValue --more\n | id --single\n\n // Expressions\n Expression = ExpressionConditional\n ExpressionConditional = ExpressionOr \"?\" ExpressionOr \":\" ExpressionConditional --ternary\n | ExpressionOr\n ExpressionOr = ExpressionOr \"||\" ExpressionAnd --or\n | ExpressionAnd\n ExpressionAnd = ExpressionAnd \"&&\" ExpressionCompare --and\n | ExpressionCompare\n ExpressionCompare = ExpressionCompare \"!=\" ExpressionBinary --not\n | ExpressionCompare \"==\" ExpressionBinary --eq\n | ExpressionCompare \">\" ExpressionBinary --gt\n | ExpressionCompare \">=\" ExpressionBinary --gte\n | ExpressionCompare \"<\" ExpressionBinary --lt\n | ExpressionCompare \"<=\" ExpressionBinary --lte\n | ExpressionBinary\n ExpressionBinary = ExpressionBinary \">>\" ExpressionAdd --shr\n | ExpressionBinary \"<<\" ExpressionAdd --shl\n | ExpressionBinary \"&\" ExpressionAdd --bin_and\n | ExpressionBinary \"|\" ExpressionAdd --bin_or\n | ExpressionAdd\n ExpressionAdd = ExpressionAdd \"+\" ~\"+\" ExpressionMul --add\n | ExpressionAdd \"-\" ~\"-\" ExpressionMul --sub\n | ExpressionMul\n ExpressionMul = ExpressionMul \"*\" ExpressionUnary --mul\n | ExpressionMul \"/\" ExpressionUnary --div\n | ExpressionMul \"%\" ExpressionUnary --rem\n | ExpressionUnary\n ExpressionUnary = \"-\" ExpressionUnarySuffix --neg\n | \"+\" ExpressionUnarySuffix --add\n | \"!\" ExpressionUnarySuffix --not\n | ExpressionUnarySuffix\n ExpressionUnarySuffix = ExpressionValue \"!!\" --notNull\n | ExpressionValue\n ExpressionBracket = \"(\" Expression \")\"\n\n // Order is important\n ExpressionValue = ExpressionCall\n | ExpressionField\n | ExpressionStaticCall\n | ExpressionBracket\n | ExpressionNew\n | integerLiteral\n | boolLiteral\n | id\n | null\n | ExpressionInitOf\n | ExpressionString\n ExpressionString = stringLiteral\n ExpressionField = ExpressionValue \".\" id ~\"(\"\n ExpressionCall = ExpressionValue \".\" id \"(\" ListOf \")\"\n ExpressionNew = id \"{\" ListOf \",\"? \"}\"\n NewParameter = id \":\" Expression\n ExpressionStaticCall = id \"(\" ListOf \")\"\n ExpressionInitOf = initOf id \"(\" ListOf \")\"\n\n // Type Literal\n typeLiteral = letterAsciiUC typeLiteralPart*\n typeLiteralPart = letterAscii | digit | \"_\"\n\n // Integer Literal\n // hexDigit defined in Ohm's built-in rules (otherwise: hexDigit = \"0\"..\"9\" | \"a\"..\"f\" | \"A\"..\"F\")\n // digit defined in Ohm's built-in rules (otherwise: digit = \"0\"..\"9\")\n integerLiteral = integerLiteralHex | integerLiteralBin | integerLiteralOct | integerLiteralDec // Order is important\n integerLiteralDec = nonZeroDigit (\"_\"? digit)* --nonZeroIntegerLiteralDec\n | \"0\" digit* --integerLiteralWithLeadingZero\n integerLiteralHex = (\"0x\" | \"0X\") hexDigit (\"_\"? hexDigit)*\n integerLiteralBin = (\"0b\" | \"0B\") binDigit (\"_\"? binDigit)*\n integerLiteralOct = (\"0o\" | \"0O\") octDigit (\"_\"? octDigit)*\n binDigit = \"0\" | \"1\"\n octDigit = \"0\"..\"7\"\n nonZeroDigit = \"1\"..\"9\"\n\n // Letters\n letterAsciiLC = \"a\"..\"z\"\n letterAsciiUC = \"A\"..\"Z\"\n letterAscii = letterAsciiLC | letterAsciiUC\n letterComment = letterAsciiLC | letterAsciiUC | digit | \"_\"\n\n // ID Literal\n idStart = letterAscii | \"_\"\n idPart = letterAscii | digit | \"_\"\n id = ~reservedWord #idStart #(idPart*)\n\n // FunC id\n funcLetter = letterAscii | \"_\" | \"'\" | \"?\" | \"!\" | \"::\" | \"&\"\n funcId = funcLetter #(funcLetter | digit)*\n\n // Bool Literal\n boolLiteral = (\"true\" | \"false\") ~idPart\n\n // String literal\n 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,597]},null,[],["seq",{"sourceInterval":[488,586]},["app",{"sourceInterval":[488,501]},"nameAttribute",[]],["terminal",{"sourceInterval":[502,505]},"("],["app",{"sourceInterval":[506,512]},"funcId",[]],["terminal",{"sourceInterval":[513,516]},")"],["star",{"sourceInterval":[517,535]},["app",{"sourceInterval":[517,534]},"FunctionAttribute",[]]],["app",{"sourceInterval":[536,542]},"native",[]],["app",{"sourceInterval":[543,545]},"id",[]],["terminal",{"sourceInterval":[546,549]},"("],["app",{"sourceInterval":[550,573]},"ListOf",[["app",{"sourceInterval":[557,568]},"FunctionArg",[]],["terminal",{"sourceInterval":[569,572]},","]]],["opt",{"sourceInterval":[574,578]},["terminal",{"sourceInterval":[574,577]},","]],["terminal",{"sourceInterval":[579,582]},")"],["terminal",{"sourceInterval":[583,586]},";"]]],"NativeFunction_withType":["define",{"sourceInterval":[619,737]},null,[],["seq",{"sourceInterval":[619,726]},["app",{"sourceInterval":[619,632]},"nameAttribute",[]],["terminal",{"sourceInterval":[633,636]},"("],["app",{"sourceInterval":[637,643]},"funcId",[]],["terminal",{"sourceInterval":[644,647]},")"],["star",{"sourceInterval":[648,666]},["app",{"sourceInterval":[648,665]},"FunctionAttribute",[]]],["app",{"sourceInterval":[667,673]},"native",[]],["app",{"sourceInterval":[674,676]},"id",[]],["terminal",{"sourceInterval":[677,680]},"("],["app",{"sourceInterval":[681,704]},"ListOf",[["app",{"sourceInterval":[688,699]},"FunctionArg",[]],["terminal",{"sourceInterval":[700,703]},","]]],["opt",{"sourceInterval":[705,709]},["terminal",{"sourceInterval":[705,708]},","]],["terminal",{"sourceInterval":[710,713]},")"],["terminal",{"sourceInterval":[714,717]},":"],["app",{"sourceInterval":[718,722]},"Type",[]],["terminal",{"sourceInterval":[723,726]},";"]]],"NativeFunction":["define",{"sourceInterval":[471,737]},null,[],["alt",{"sourceInterval":[488,737]},["app",{"sourceInterval":[488,586]},"NativeFunction_withVoid",[]],["app",{"sourceInterval":[619,726]},"NativeFunction_withType",[]]]],"Type_optional":["define",{"sourceInterval":[780,806]},null,[],["seq",{"sourceInterval":[780,795]},["app",{"sourceInterval":[780,791]},"typeLiteral",[]],["terminal",{"sourceInterval":[792,795]},"?"]]],"Type_required":["define",{"sourceInterval":[818,840]},null,[],["app",{"sourceInterval":[818,829]},"typeLiteral",[]]],"Type_map":["define",{"sourceInterval":[852,917]},null,[],["seq",{"sourceInterval":[852,911]},["terminal",{"sourceInterval":[852,857]},"map"],["terminal",{"sourceInterval":[858,861]},"<"],["app",{"sourceInterval":[862,873]},"typeLiteral",[]],["opt",{"sourceInterval":[874,882]},["seq",{"sourceInterval":[875,880]},["app",{"sourceInterval":[875,877]},"as",[]],["app",{"sourceInterval":[878,880]},"id",[]]]],["terminal",{"sourceInterval":[883,886]},","],["app",{"sourceInterval":[887,898]},"typeLiteral",[]],["opt",{"sourceInterval":[899,907]},["seq",{"sourceInterval":[900,905]},["app",{"sourceInterval":[900,902]},"as",[]],["app",{"sourceInterval":[903,905]},"id",[]]]],["terminal",{"sourceInterval":[908,911]},">"]]],"Type_bounced":["define",{"sourceInterval":[929,968]},null,[],["seq",{"sourceInterval":[929,958]},["terminal",{"sourceInterval":[929,938]},"bounced"],["terminal",{"sourceInterval":[939,942]},"<"],["app",{"sourceInterval":[943,954]},"typeLiteral",[]],["terminal",{"sourceInterval":[955,958]},">"]]],"Type":["define",{"sourceInterval":[773,968]},null,[],["alt",{"sourceInterval":[780,968]},["app",{"sourceInterval":[780,795]},"Type_optional",[]],["app",{"sourceInterval":[818,829]},"Type_required",[]],["app",{"sourceInterval":[852,911]},"Type_map",[]],["app",{"sourceInterval":[929,958]},"Type_bounced",[]]]],"Field_default":["define",{"sourceInterval":[981,1006]},null,[],["seq",{"sourceInterval":[981,996]},["app",{"sourceInterval":[981,983]},"id",[]],["terminal",{"sourceInterval":[984,987]},":"],["app",{"sourceInterval":[988,992]},"Type",[]],["terminal",{"sourceInterval":[993,996]},";"]]],"Field_defaultWithInit":["define",{"sourceInterval":[1019,1067]},null,[],["seq",{"sourceInterval":[1019,1049]},["app",{"sourceInterval":[1019,1021]},"id",[]],["terminal",{"sourceInterval":[1022,1025]},":"],["app",{"sourceInterval":[1026,1030]},"Type",[]],["terminal",{"sourceInterval":[1031,1034]},"="],["app",{"sourceInterval":[1035,1045]},"Expression",[]],["terminal",{"sourceInterval":[1046,1049]},";"]]],"Field_withSerialization":["define",{"sourceInterval":[1080,1121]},null,[],["seq",{"sourceInterval":[1080,1101]},["app",{"sourceInterval":[1080,1082]},"id",[]],["terminal",{"sourceInterval":[1083,1086]},":"],["app",{"sourceInterval":[1087,1091]},"Type",[]],["app",{"sourceInterval":[1092,1094]},"as",[]],["app",{"sourceInterval":[1095,1097]},"id",[]],["terminal",{"sourceInterval":[1098,1101]},";"]]],"Field_withSerializationAndInit":["define",{"sourceInterval":[1134,1197]},null,[],["seq",{"sourceInterval":[1134,1170]},["app",{"sourceInterval":[1134,1136]},"id",[]],["terminal",{"sourceInterval":[1137,1140]},":"],["app",{"sourceInterval":[1141,1145]},"Type",[]],["app",{"sourceInterval":[1146,1148]},"as",[]],["app",{"sourceInterval":[1149,1151]},"id",[]],["terminal",{"sourceInterval":[1152,1155]},"="],["app",{"sourceInterval":[1156,1166]},"Expression",[]],["terminal",{"sourceInterval":[1167,1170]},";"]]],"Field":["define",{"sourceInterval":[973,1197]},null,[],["alt",{"sourceInterval":[981,1197]},["app",{"sourceInterval":[981,996]},"Field_default",[]],["app",{"sourceInterval":[1019,1049]},"Field_defaultWithInit",[]],["app",{"sourceInterval":[1080,1101]},"Field_withSerialization",[]],["app",{"sourceInterval":[1134,1170]},"Field_withSerializationAndInit",[]]]],"ConstantAttribute_virtual":["define",{"sourceInterval":[1243,1263]},null,[],["app",{"sourceInterval":[1243,1250]},"virtual",[]]],"ConstantAttribute_override":["define",{"sourceInterval":[1288,1309]},null,[],["app",{"sourceInterval":[1288,1296]},"override",[]]],"ConstantAttribute_abstract":["define",{"sourceInterval":[1334,1355]},null,[],["app",{"sourceInterval":[1334,1342]},"abstract",[]]],"ConstantAttribute":["define",{"sourceInterval":[1223,1355]},null,[],["alt",{"sourceInterval":[1243,1355]},["app",{"sourceInterval":[1243,1250]},"ConstantAttribute_virtual",[]],["app",{"sourceInterval":[1288,1296]},"ConstantAttribute_override",[]],["app",{"sourceInterval":[1334,1342]},"ConstantAttribute_abstract",[]]]],"Constant_withValue":["define",{"sourceInterval":[1371,1443]},null,[],["seq",{"sourceInterval":[1371,1431]},["star",{"sourceInterval":[1371,1389]},["app",{"sourceInterval":[1371,1388]},"ConstantAttribute",[]]],["not",{"sourceInterval":[1390,1394]},["app",{"sourceInterval":[1391,1394]},"fun",[]]],["app",{"sourceInterval":[1395,1400]},"const",[]],["app",{"sourceInterval":[1401,1403]},"id",[]],["terminal",{"sourceInterval":[1404,1407]},":"],["app",{"sourceInterval":[1408,1412]},"Type",[]],["terminal",{"sourceInterval":[1413,1416]},"="],["app",{"sourceInterval":[1417,1427]},"Expression",[]],["terminal",{"sourceInterval":[1428,1431]},";"]]],"Constant_withEmpty":["define",{"sourceInterval":[1459,1531]},null,[],["seq",{"sourceInterval":[1459,1504]},["star",{"sourceInterval":[1459,1477]},["app",{"sourceInterval":[1459,1476]},"ConstantAttribute",[]]],["not",{"sourceInterval":[1478,1482]},["app",{"sourceInterval":[1479,1482]},"fun",[]]],["app",{"sourceInterval":[1483,1488]},"const",[]],["app",{"sourceInterval":[1489,1491]},"id",[]],["terminal",{"sourceInterval":[1492,1495]},":"],["app",{"sourceInterval":[1496,1500]},"Type",[]],["terminal",{"sourceInterval":[1501,1504]},";"]]],"Constant":["define",{"sourceInterval":[1360,1531]},null,[],["alt",{"sourceInterval":[1371,1531]},["app",{"sourceInterval":[1371,1431]},"Constant_withValue",[]],["app",{"sourceInterval":[1459,1504]},"Constant_withEmpty",[]]]],"Struct_originary":["define",{"sourceInterval":[1560,1612]},null,[],["seq",{"sourceInterval":[1560,1600]},["terminal",{"sourceInterval":[1560,1568]},"struct"],["app",{"sourceInterval":[1569,1580]},"typeLiteral",[]],["terminal",{"sourceInterval":[1581,1584]},"{"],["star",{"sourceInterval":[1585,1596]},["app",{"sourceInterval":[1585,1595]},"StructBody",[]]],["terminal",{"sourceInterval":[1597,1600]},"}"]]],"Struct_message":["define",{"sourceInterval":[1626,1677]},null,[],["seq",{"sourceInterval":[1626,1667]},["terminal",{"sourceInterval":[1626,1635]},"message"],["app",{"sourceInterval":[1636,1647]},"typeLiteral",[]],["terminal",{"sourceInterval":[1648,1651]},"{"],["star",{"sourceInterval":[1652,1663]},["app",{"sourceInterval":[1652,1662]},"StructBody",[]]],["terminal",{"sourceInterval":[1664,1667]},"}"]]],"Struct_messageWithId":["define",{"sourceInterval":[1691,1771]},null,[],["seq",{"sourceInterval":[1691,1755]},["terminal",{"sourceInterval":[1691,1700]},"message"],["terminal",{"sourceInterval":[1701,1704]},"("],["app",{"sourceInterval":[1705,1719]},"integerLiteral",[]],["terminal",{"sourceInterval":[1720,1723]},")"],["app",{"sourceInterval":[1724,1735]},"typeLiteral",[]],["terminal",{"sourceInterval":[1736,1739]},"{"],["star",{"sourceInterval":[1740,1751]},["app",{"sourceInterval":[1740,1750]},"StructBody",[]]],["terminal",{"sourceInterval":[1752,1755]},"}"]]],"Struct":["define",{"sourceInterval":[1551,1771]},null,[],["alt",{"sourceInterval":[1560,1771]},["app",{"sourceInterval":[1560,1600]},"Struct_originary",[]],["app",{"sourceInterval":[1626,1667]},"Struct_message",[]],["app",{"sourceInterval":[1691,1755]},"Struct_messageWithId",[]]]],"StructBody":["define",{"sourceInterval":[1776,1794]},null,[],["app",{"sourceInterval":[1789,1794]},"Field",[]]],"Contract_simple":["define",{"sourceInterval":[1827,1888]},null,[],["seq",{"sourceInterval":[1827,1879]},["star",{"sourceInterval":[1827,1845]},["app",{"sourceInterval":[1827,1844]},"ContractAttribute",[]]],["app",{"sourceInterval":[1846,1854]},"contract",[]],["app",{"sourceInterval":[1855,1857]},"id",[]],["terminal",{"sourceInterval":[1858,1861]},"{"],["star",{"sourceInterval":[1862,1875]},["app",{"sourceInterval":[1862,1874]},"ContractBody",[]]],["terminal",{"sourceInterval":[1876,1879]},"}"]]],"Contract_withTraits":["define",{"sourceInterval":[1904,1989]},null,[],["seq",{"sourceInterval":[1904,1976]},["star",{"sourceInterval":[1904,1922]},["app",{"sourceInterval":[1904,1921]},"ContractAttribute",[]]],["app",{"sourceInterval":[1923,1931]},"contract",[]],["app",{"sourceInterval":[1932,1934]},"id",[]],["app",{"sourceInterval":[1935,1939]},"with",[]],["app",{"sourceInterval":[1940,1954]},"ListOf",[["app",{"sourceInterval":[1947,1949]},"id",[]],["terminal",{"sourceInterval":[1950,1953]},","]]],["terminal",{"sourceInterval":[1955,1958]},"{"],["star",{"sourceInterval":[1959,1972]},["app",{"sourceInterval":[1959,1971]},"ContractBody",[]]],["terminal",{"sourceInterval":[1973,1976]},"}"]]],"Contract":["define",{"sourceInterval":[1816,1989]},null,[],["alt",{"sourceInterval":[1827,1989]},["app",{"sourceInterval":[1827,1879]},"Contract_simple",[]],["app",{"sourceInterval":[1904,1976]},"Contract_withTraits",[]]]],"ContractInit":["define",{"sourceInterval":[1994,2066]},null,[],["seq",{"sourceInterval":[2009,2066]},["terminal",{"sourceInterval":[2009,2015]},"init"],["terminal",{"sourceInterval":[2016,2019]},"("],["app",{"sourceInterval":[2020,2043]},"ListOf",[["app",{"sourceInterval":[2027,2038]},"FunctionArg",[]],["terminal",{"sourceInterval":[2039,2042]},","]]],["terminal",{"sourceInterval":[2044,2047]},")"],["terminal",{"sourceInterval":[2048,2051]},"{"],["star",{"sourceInterval":[2052,2062]},["app",{"sourceInterval":[2052,2061]},"Statement",[]]],["terminal",{"sourceInterval":[2063,2066]},"}"]]],"ContractBody":["define",{"sourceInterval":[2071,2214]},null,[],["alt",{"sourceInterval":[2086,2214]},["app",{"sourceInterval":[2086,2091]},"Field",[]],["app",{"sourceInterval":[2111,2123]},"ContractInit",[]],["app",{"sourceInterval":[2143,2158]},"ReceiveFunction",[]],["app",{"sourceInterval":[2178,2186]},"Function",[]],["app",{"sourceInterval":[2206,2214]},"Constant",[]]]],"Trait_originary":["define",{"sourceInterval":[2245,2303]},null,[],["seq",{"sourceInterval":[2245,2291]},["star",{"sourceInterval":[2245,2263]},["app",{"sourceInterval":[2245,2262]},"ContractAttribute",[]]],["app",{"sourceInterval":[2264,2269]},"trait",[]],["app",{"sourceInterval":[2270,2272]},"id",[]],["terminal",{"sourceInterval":[2273,2276]},"{"],["star",{"sourceInterval":[2277,2287]},["app",{"sourceInterval":[2277,2286]},"TraitBody",[]]],["terminal",{"sourceInterval":[2288,2291]},"}"]]],"Trait_withTraits":["define",{"sourceInterval":[2316,2395]},null,[],["seq",{"sourceInterval":[2316,2382]},["star",{"sourceInterval":[2316,2334]},["app",{"sourceInterval":[2316,2333]},"ContractAttribute",[]]],["app",{"sourceInterval":[2335,2340]},"trait",[]],["app",{"sourceInterval":[2341,2343]},"id",[]],["app",{"sourceInterval":[2344,2348]},"with",[]],["app",{"sourceInterval":[2349,2363]},"ListOf",[["app",{"sourceInterval":[2356,2358]},"id",[]],["terminal",{"sourceInterval":[2359,2362]},","]]],["terminal",{"sourceInterval":[2364,2367]},"{"],["star",{"sourceInterval":[2368,2378]},["app",{"sourceInterval":[2368,2377]},"TraitBody",[]]],["terminal",{"sourceInterval":[2379,2382]},"}"]]],"Trait":["define",{"sourceInterval":[2237,2395]},null,[],["alt",{"sourceInterval":[2245,2395]},["app",{"sourceInterval":[2245,2291]},"Trait_originary",[]],["app",{"sourceInterval":[2316,2382]},"Trait_withTraits",[]]]],"TraitBody":["define",{"sourceInterval":[2400,2499]},null,[],["alt",{"sourceInterval":[2412,2499]},["app",{"sourceInterval":[2412,2417]},"Field",[]],["app",{"sourceInterval":[2434,2449]},"ReceiveFunction",[]],["app",{"sourceInterval":[2466,2474]},"Function",[]],["app",{"sourceInterval":[2491,2499]},"Constant",[]]]],"ContractAttribute_interface":["define",{"sourceInterval":[2552,2598]},null,[],["seq",{"sourceInterval":[2552,2586]},["terminal",{"sourceInterval":[2552,2564]},"@interface"],["terminal",{"sourceInterval":[2565,2568]},"("],["app",{"sourceInterval":[2569,2582]},"stringLiteral",[]],["terminal",{"sourceInterval":[2583,2586]},")"]]],"ContractAttribute":["define",{"sourceInterval":[2532,2598]},null,[],["app",{"sourceInterval":[2552,2598]},"ContractAttribute_interface",[]]],"FunctionAttribute_getter":["define",{"sourceInterval":[2640,2658]},null,[],["terminal",{"sourceInterval":[2640,2645]},"get"]],"FunctionAttribute_mutates":["define",{"sourceInterval":[2683,2702]},null,[],["app",{"sourceInterval":[2683,2690]},"mutates",[]]],"FunctionAttribute_extends":["define",{"sourceInterval":[2727,2746]},null,[],["app",{"sourceInterval":[2727,2734]},"extends",[]]],"FunctionAttribute_virtual":["define",{"sourceInterval":[2771,2790]},null,[],["app",{"sourceInterval":[2771,2778]},"virtual",[]]],"FunctionAttribute_override":["define",{"sourceInterval":[2815,2835]},null,[],["app",{"sourceInterval":[2815,2823]},"override",[]]],"FunctionAttribute_inline":["define",{"sourceInterval":[2860,2878]},null,[],["app",{"sourceInterval":[2860,2866]},"inline",[]]],"FunctionAttribute_abstract":["define",{"sourceInterval":[2903,2923]},null,[],["app",{"sourceInterval":[2903,2911]},"abstract",[]]],"FunctionAttribute":["define",{"sourceInterval":[2620,2923]},null,[],["alt",{"sourceInterval":[2640,2923]},["app",{"sourceInterval":[2640,2645]},"FunctionAttribute_getter",[]],["app",{"sourceInterval":[2683,2690]},"FunctionAttribute_mutates",[]],["app",{"sourceInterval":[2727,2734]},"FunctionAttribute_extends",[]],["app",{"sourceInterval":[2771,2778]},"FunctionAttribute_virtual",[]],["app",{"sourceInterval":[2815,2823]},"FunctionAttribute_override",[]],["app",{"sourceInterval":[2860,2866]},"FunctionAttribute_inline",[]],["app",{"sourceInterval":[2903,2911]},"FunctionAttribute_abstract",[]]]],"Function_withVoid":["define",{"sourceInterval":[2939,3031]},null,[],["seq",{"sourceInterval":[2939,3020]},["star",{"sourceInterval":[2939,2957]},["app",{"sourceInterval":[2939,2956]},"FunctionAttribute",[]]],["app",{"sourceInterval":[2958,2961]},"fun",[]],["app",{"sourceInterval":[2962,2964]},"id",[]],["terminal",{"sourceInterval":[2965,2968]},"("],["app",{"sourceInterval":[2969,2992]},"ListOf",[["app",{"sourceInterval":[2976,2987]},"FunctionArg",[]],["terminal",{"sourceInterval":[2988,2991]},","]]],["opt",{"sourceInterval":[2993,2997]},["terminal",{"sourceInterval":[2993,2996]},","]],["terminal",{"sourceInterval":[2998,3001]},")"],["terminal",{"sourceInterval":[3002,3005]},"{"],["star",{"sourceInterval":[3006,3016]},["app",{"sourceInterval":[3006,3015]},"Statement",[]]],["terminal",{"sourceInterval":[3017,3020]},"}"]]],"Function_withType":["define",{"sourceInterval":[3047,3148]},null,[],["seq",{"sourceInterval":[3047,3137]},["star",{"sourceInterval":[3047,3065]},["app",{"sourceInterval":[3047,3064]},"FunctionAttribute",[]]],["app",{"sourceInterval":[3066,3069]},"fun",[]],["app",{"sourceInterval":[3070,3072]},"id",[]],["terminal",{"sourceInterval":[3073,3076]},"("],["app",{"sourceInterval":[3077,3100]},"ListOf",[["app",{"sourceInterval":[3084,3095]},"FunctionArg",[]],["terminal",{"sourceInterval":[3096,3099]},","]]],["opt",{"sourceInterval":[3101,3105]},["terminal",{"sourceInterval":[3101,3104]},","]],["terminal",{"sourceInterval":[3106,3109]},")"],["terminal",{"sourceInterval":[3110,3113]},":"],["app",{"sourceInterval":[3114,3118]},"Type",[]],["terminal",{"sourceInterval":[3119,3122]},"{"],["star",{"sourceInterval":[3123,3133]},["app",{"sourceInterval":[3123,3132]},"Statement",[]]],["terminal",{"sourceInterval":[3134,3137]},"}"]]],"Function_abstractVoid":["define",{"sourceInterval":[3164,3245]},null,[],["seq",{"sourceInterval":[3164,3230]},["star",{"sourceInterval":[3164,3182]},["app",{"sourceInterval":[3164,3181]},"FunctionAttribute",[]]],["app",{"sourceInterval":[3183,3186]},"fun",[]],["app",{"sourceInterval":[3187,3189]},"id",[]],["terminal",{"sourceInterval":[3190,3193]},"("],["app",{"sourceInterval":[3194,3217]},"ListOf",[["app",{"sourceInterval":[3201,3212]},"FunctionArg",[]],["terminal",{"sourceInterval":[3213,3216]},","]]],["opt",{"sourceInterval":[3218,3222]},["terminal",{"sourceInterval":[3218,3221]},","]],["terminal",{"sourceInterval":[3223,3226]},")"],["terminal",{"sourceInterval":[3227,3230]},";"]]],"Function_abstractType":["define",{"sourceInterval":[3261,3351]},null,[],["seq",{"sourceInterval":[3261,3336]},["star",{"sourceInterval":[3261,3279]},["app",{"sourceInterval":[3261,3278]},"FunctionAttribute",[]]],["app",{"sourceInterval":[3280,3283]},"fun",[]],["app",{"sourceInterval":[3284,3286]},"id",[]],["terminal",{"sourceInterval":[3287,3290]},"("],["app",{"sourceInterval":[3291,3314]},"ListOf",[["app",{"sourceInterval":[3298,3309]},"FunctionArg",[]],["terminal",{"sourceInterval":[3310,3313]},","]]],["opt",{"sourceInterval":[3315,3319]},["terminal",{"sourceInterval":[3315,3318]},","]],["terminal",{"sourceInterval":[3320,3323]},")"],["terminal",{"sourceInterval":[3324,3327]},":"],["app",{"sourceInterval":[3328,3332]},"Type",[]],["terminal",{"sourceInterval":[3333,3336]},";"]]],"Function":["define",{"sourceInterval":[2928,3351]},null,[],["alt",{"sourceInterval":[2939,3351]},["app",{"sourceInterval":[2939,3020]},"Function_withVoid",[]],["app",{"sourceInterval":[3047,3137]},"Function_withType",[]],["app",{"sourceInterval":[3164,3230]},"Function_abstractVoid",[]],["app",{"sourceInterval":[3261,3336]},"Function_abstractType",[]]]],"FunctionArg":["define",{"sourceInterval":[3356,3381]},null,[],["seq",{"sourceInterval":[3370,3381]},["app",{"sourceInterval":[3370,3372]},"id",[]],["terminal",{"sourceInterval":[3373,3376]},":"],["app",{"sourceInterval":[3377,3381]},"Type",[]]]],"ReceiveFunction_simple":["define",{"sourceInterval":[3409,3466]},null,[],["seq",{"sourceInterval":[3409,3457]},["terminal",{"sourceInterval":[3409,3418]},"receive"],["terminal",{"sourceInterval":[3419,3422]},"("],["app",{"sourceInterval":[3423,3434]},"FunctionArg",[]],["terminal",{"sourceInterval":[3435,3438]},")"],["terminal",{"sourceInterval":[3439,3442]},"{"],["star",{"sourceInterval":[3443,3453]},["app",{"sourceInterval":[3443,3452]},"Statement",[]]],["terminal",{"sourceInterval":[3454,3457]},"}"]]],"ReceiveFunction_empty":["define",{"sourceInterval":[3489,3533]},null,[],["seq",{"sourceInterval":[3489,3525]},["terminal",{"sourceInterval":[3489,3498]},"receive"],["terminal",{"sourceInterval":[3499,3502]},"("],["terminal",{"sourceInterval":[3503,3506]},")"],["terminal",{"sourceInterval":[3507,3510]},"{"],["star",{"sourceInterval":[3511,3521]},["app",{"sourceInterval":[3511,3520]},"Statement",[]]],["terminal",{"sourceInterval":[3522,3525]},"}"]]],"ReceiveFunction_comment":["define",{"sourceInterval":[3556,3616]},null,[],["seq",{"sourceInterval":[3556,3606]},["terminal",{"sourceInterval":[3556,3565]},"receive"],["terminal",{"sourceInterval":[3566,3569]},"("],["app",{"sourceInterval":[3570,3583]},"stringLiteral",[]],["terminal",{"sourceInterval":[3584,3587]},")"],["terminal",{"sourceInterval":[3588,3591]},"{"],["star",{"sourceInterval":[3592,3602]},["app",{"sourceInterval":[3592,3601]},"Statement",[]]],["terminal",{"sourceInterval":[3603,3606]},"}"]]],"ReceiveFunction_bounced":["define",{"sourceInterval":[3639,3697]},null,[],["seq",{"sourceInterval":[3639,3687]},["terminal",{"sourceInterval":[3639,3648]},"bounced"],["terminal",{"sourceInterval":[3649,3652]},"("],["app",{"sourceInterval":[3653,3664]},"FunctionArg",[]],["terminal",{"sourceInterval":[3665,3668]},")"],["terminal",{"sourceInterval":[3669,3672]},"{"],["star",{"sourceInterval":[3673,3683]},["app",{"sourceInterval":[3673,3682]},"Statement",[]]],["terminal",{"sourceInterval":[3684,3687]},"}"]]],"ReceiveFunction_externalSimple":["define",{"sourceInterval":[3720,3786]},null,[],["seq",{"sourceInterval":[3720,3769]},["terminal",{"sourceInterval":[3720,3730]},"external"],["terminal",{"sourceInterval":[3731,3734]},"("],["app",{"sourceInterval":[3735,3746]},"FunctionArg",[]],["terminal",{"sourceInterval":[3747,3750]},")"],["terminal",{"sourceInterval":[3751,3754]},"{"],["star",{"sourceInterval":[3755,3765]},["app",{"sourceInterval":[3755,3764]},"Statement",[]]],["terminal",{"sourceInterval":[3766,3769]},"}"]]],"ReceiveFunction_externalComment":["define",{"sourceInterval":[3809,3878]},null,[],["seq",{"sourceInterval":[3809,3860]},["terminal",{"sourceInterval":[3809,3819]},"external"],["terminal",{"sourceInterval":[3820,3823]},"("],["app",{"sourceInterval":[3824,3837]},"stringLiteral",[]],["terminal",{"sourceInterval":[3838,3841]},")"],["terminal",{"sourceInterval":[3842,3845]},"{"],["star",{"sourceInterval":[3846,3856]},["app",{"sourceInterval":[3846,3855]},"Statement",[]]],["terminal",{"sourceInterval":[3857,3860]},"}"]]],"ReceiveFunction_externalEmpty":["define",{"sourceInterval":[3901,3954]},null,[],["seq",{"sourceInterval":[3901,3938]},["terminal",{"sourceInterval":[3901,3911]},"external"],["terminal",{"sourceInterval":[3912,3915]},"("],["terminal",{"sourceInterval":[3916,3919]},")"],["terminal",{"sourceInterval":[3920,3923]},"{"],["star",{"sourceInterval":[3924,3934]},["app",{"sourceInterval":[3924,3933]},"Statement",[]]],["terminal",{"sourceInterval":[3935,3938]},"}"]]],"ReceiveFunction":["define",{"sourceInterval":[3391,3954]},null,[],["alt",{"sourceInterval":[3409,3954]},["app",{"sourceInterval":[3409,3457]},"ReceiveFunction_simple",[]],["app",{"sourceInterval":[3489,3525]},"ReceiveFunction_empty",[]],["app",{"sourceInterval":[3556,3606]},"ReceiveFunction_comment",[]],["app",{"sourceInterval":[3639,3687]},"ReceiveFunction_bounced",[]],["app",{"sourceInterval":[3720,3769]},"ReceiveFunction_externalSimple",[]],["app",{"sourceInterval":[3809,3860]},"ReceiveFunction_externalComment",[]],["app",{"sourceInterval":[3901,3938]},"ReceiveFunction_externalEmpty",[]]]],"Statement":["define",{"sourceInterval":[3978,4303]},null,[],["alt",{"sourceInterval":[3990,4303]},["app",{"sourceInterval":[3990,4002]},"StatementLet",[]],["app",{"sourceInterval":[4019,4033]},"StatementBlock",[]],["app",{"sourceInterval":[4050,4065]},"StatementReturn",[]],["app",{"sourceInterval":[4082,4101]},"StatementExpression",[]],["app",{"sourceInterval":[4118,4133]},"StatementAssign",[]],["app",{"sourceInterval":[4150,4174]},"StatementAugmentedAssign",[]],["app",{"sourceInterval":[4191,4209]},"StatementCondition",[]],["app",{"sourceInterval":[4226,4240]},"StatementWhile",[]],["app",{"sourceInterval":[4257,4272]},"StatementRepeat",[]],["app",{"sourceInterval":[4289,4303]},"StatementUntil",[]]]],"StatementBlock":["define",{"sourceInterval":[4308,4343]},null,[],["seq",{"sourceInterval":[4325,4343]},["terminal",{"sourceInterval":[4325,4328]},"{"],["star",{"sourceInterval":[4329,4339]},["app",{"sourceInterval":[4329,4338]},"Statement",[]]],["terminal",{"sourceInterval":[4340,4343]},"}"]]],"StatementLet":["define",{"sourceInterval":[4348,4397]},null,[],["seq",{"sourceInterval":[4363,4397]},["app",{"sourceInterval":[4363,4366]},"let",[]],["app",{"sourceInterval":[4367,4369]},"id",[]],["terminal",{"sourceInterval":[4370,4373]},":"],["app",{"sourceInterval":[4374,4378]},"Type",[]],["terminal",{"sourceInterval":[4379,4382]},"="],["app",{"sourceInterval":[4383,4393]},"Expression",[]],["terminal",{"sourceInterval":[4394,4397]},";"]]],"StatementReturn_withExpression":["define",{"sourceInterval":[4420,4458]},null,[],["seq",{"sourceInterval":[4420,4441]},["app",{"sourceInterval":[4420,4426]},"return",[]],["app",{"sourceInterval":[4427,4437]},"Expression",[]],["terminal",{"sourceInterval":[4438,4441]},";"]]],"StatementReturn_withoutExpression":["define",{"sourceInterval":[4481,4511]},null,[],["seq",{"sourceInterval":[4481,4491]},["app",{"sourceInterval":[4481,4487]},"return",[]],["terminal",{"sourceInterval":[4488,4491]},";"]]],"StatementReturn":["define",{"sourceInterval":[4402,4511]},null,[],["alt",{"sourceInterval":[4420,4511]},["app",{"sourceInterval":[4420,4441]},"StatementReturn_withExpression",[]],["app",{"sourceInterval":[4481,4491]},"StatementReturn_withoutExpression",[]]]],"StatementExpression":["define",{"sourceInterval":[4520,4556]},null,[],["seq",{"sourceInterval":[4542,4556]},["app",{"sourceInterval":[4542,4552]},"Expression",[]],["terminal",{"sourceInterval":[4553,4556]},";"]]],"StatementAssign":["define",{"sourceInterval":[4561,4604]},null,[],["seq",{"sourceInterval":[4579,4604]},["app",{"sourceInterval":[4579,4585]},"LValue",[]],["terminal",{"sourceInterval":[4586,4589]},"="],["app",{"sourceInterval":[4590,4600]},"Expression",[]],["terminal",{"sourceInterval":[4601,4604]},";"]]],"StatementAugmentedAssign":["define",{"sourceInterval":[4609,4899]},null,[],["alt",{"sourceInterval":[4636,4899]},["app",{"sourceInterval":[4636,4663]},"StatementAugmentedAssignAdd",[]],["app",{"sourceInterval":[4695,4722]},"StatementAugmentedAssignSub",[]],["app",{"sourceInterval":[4754,4781]},"StatementAugmentedAssignMul",[]],["app",{"sourceInterval":[4813,4840]},"StatementAugmentedAssignDiv",[]],["app",{"sourceInterval":[4872,4899]},"StatementAugmentedAssignRem",[]]]],"StatementAugmentedAssignAdd":["define",{"sourceInterval":[4904,4960]},null,[],["seq",{"sourceInterval":[4934,4960]},["app",{"sourceInterval":[4934,4940]},"LValue",[]],["terminal",{"sourceInterval":[4941,4945]},"+="],["app",{"sourceInterval":[4946,4956]},"Expression",[]],["terminal",{"sourceInterval":[4957,4960]},";"]]],"StatementAugmentedAssignSub":["define",{"sourceInterval":[4965,5021]},null,[],["seq",{"sourceInterval":[4995,5021]},["app",{"sourceInterval":[4995,5001]},"LValue",[]],["terminal",{"sourceInterval":[5002,5006]},"-="],["app",{"sourceInterval":[5007,5017]},"Expression",[]],["terminal",{"sourceInterval":[5018,5021]},";"]]],"StatementAugmentedAssignMul":["define",{"sourceInterval":[5026,5082]},null,[],["seq",{"sourceInterval":[5056,5082]},["app",{"sourceInterval":[5056,5062]},"LValue",[]],["terminal",{"sourceInterval":[5063,5067]},"*="],["app",{"sourceInterval":[5068,5078]},"Expression",[]],["terminal",{"sourceInterval":[5079,5082]},";"]]],"StatementAugmentedAssignDiv":["define",{"sourceInterval":[5087,5143]},null,[],["seq",{"sourceInterval":[5117,5143]},["app",{"sourceInterval":[5117,5123]},"LValue",[]],["terminal",{"sourceInterval":[5124,5128]},"/="],["app",{"sourceInterval":[5129,5139]},"Expression",[]],["terminal",{"sourceInterval":[5140,5143]},";"]]],"StatementAugmentedAssignRem":["define",{"sourceInterval":[5148,5204]},null,[],["seq",{"sourceInterval":[5178,5204]},["app",{"sourceInterval":[5178,5184]},"LValue",[]],["terminal",{"sourceInterval":[5185,5189]},"%="],["app",{"sourceInterval":[5190,5200]},"Expression",[]],["terminal",{"sourceInterval":[5201,5204]},";"]]],"StatementCondition_simple":["define",{"sourceInterval":[5230,5277]},null,[],["seq",{"sourceInterval":[5230,5268]},["app",{"sourceInterval":[5230,5232]},"if",[]],["app",{"sourceInterval":[5233,5243]},"Expression",[]],["terminal",{"sourceInterval":[5244,5247]},"{"],["star",{"sourceInterval":[5248,5258]},["app",{"sourceInterval":[5248,5257]},"Statement",[]]],["terminal",{"sourceInterval":[5259,5262]},"}"],["not",{"sourceInterval":[5263,5268]},["app",{"sourceInterval":[5264,5268]},"else",[]]]]],"StatementCondition_withElse":["define",{"sourceInterval":[5303,5370]},null,[],["seq",{"sourceInterval":[5303,5359]},["app",{"sourceInterval":[5303,5305]},"if",[]],["app",{"sourceInterval":[5306,5316]},"Expression",[]],["terminal",{"sourceInterval":[5317,5320]},"{"],["star",{"sourceInterval":[5321,5331]},["app",{"sourceInterval":[5321,5330]},"Statement",[]]],["terminal",{"sourceInterval":[5332,5335]},"}"],["app",{"sourceInterval":[5336,5340]},"else",[]],["terminal",{"sourceInterval":[5341,5344]},"{"],["star",{"sourceInterval":[5345,5355]},["app",{"sourceInterval":[5345,5354]},"Statement",[]]],["terminal",{"sourceInterval":[5356,5359]},"}"]]],"StatementCondition_withElseIf":["define",{"sourceInterval":[5396,5465]},null,[],["seq",{"sourceInterval":[5396,5452]},["app",{"sourceInterval":[5396,5398]},"if",[]],["app",{"sourceInterval":[5399,5409]},"Expression",[]],["terminal",{"sourceInterval":[5410,5413]},"{"],["star",{"sourceInterval":[5414,5424]},["app",{"sourceInterval":[5414,5423]},"Statement",[]]],["terminal",{"sourceInterval":[5425,5428]},"}"],["app",{"sourceInterval":[5429,5433]},"else",[]],["app",{"sourceInterval":[5434,5452]},"StatementCondition",[]]]],"StatementCondition":["define",{"sourceInterval":[5209,5465]},null,[],["alt",{"sourceInterval":[5230,5465]},["app",{"sourceInterval":[5230,5268]},"StatementCondition_simple",[]],["app",{"sourceInterval":[5303,5359]},"StatementCondition_withElse",[]],["app",{"sourceInterval":[5396,5452]},"StatementCondition_withElseIf",[]]]],"StatementWhile":["define",{"sourceInterval":[5470,5530]},null,[],["seq",{"sourceInterval":[5487,5530]},["app",{"sourceInterval":[5487,5492]},"while",[]],["terminal",{"sourceInterval":[5493,5496]},"("],["app",{"sourceInterval":[5497,5507]},"Expression",[]],["terminal",{"sourceInterval":[5508,5511]},")"],["terminal",{"sourceInterval":[5512,5515]},"{"],["star",{"sourceInterval":[5516,5526]},["app",{"sourceInterval":[5516,5525]},"Statement",[]]],["terminal",{"sourceInterval":[5527,5530]},"}"]]],"StatementRepeat":["define",{"sourceInterval":[5535,5597]},null,[],["seq",{"sourceInterval":[5553,5597]},["app",{"sourceInterval":[5553,5559]},"repeat",[]],["terminal",{"sourceInterval":[5560,5563]},"("],["app",{"sourceInterval":[5564,5574]},"Expression",[]],["terminal",{"sourceInterval":[5575,5578]},")"],["terminal",{"sourceInterval":[5579,5582]},"{"],["star",{"sourceInterval":[5583,5593]},["app",{"sourceInterval":[5583,5592]},"Statement",[]]],["terminal",{"sourceInterval":[5594,5597]},"}"]]],"StatementUntil":["define",{"sourceInterval":[5602,5669]},null,[],["seq",{"sourceInterval":[5619,5669]},["app",{"sourceInterval":[5619,5621]},"do",[]],["terminal",{"sourceInterval":[5622,5625]},"{"],["star",{"sourceInterval":[5626,5636]},["app",{"sourceInterval":[5626,5635]},"Statement",[]]],["terminal",{"sourceInterval":[5637,5640]},"}"],["app",{"sourceInterval":[5641,5646]},"until",[]],["terminal",{"sourceInterval":[5647,5650]},"("],["app",{"sourceInterval":[5651,5661]},"Expression",[]],["terminal",{"sourceInterval":[5662,5665]},")"],["terminal",{"sourceInterval":[5666,5669]},";"]]],"LValue_more":["define",{"sourceInterval":[5699,5719]},null,[],["seq",{"sourceInterval":[5699,5712]},["app",{"sourceInterval":[5699,5701]},"id",[]],["terminal",{"sourceInterval":[5702,5705]},"."],["app",{"sourceInterval":[5706,5712]},"LValue",[]]]],"LValue_single":["define",{"sourceInterval":[5733,5744]},null,[],["app",{"sourceInterval":[5733,5735]},"id",[]]],"LValue":["define",{"sourceInterval":[5690,5744]},null,[],["alt",{"sourceInterval":[5699,5744]},["app",{"sourceInterval":[5699,5712]},"LValue_more",[]],["app",{"sourceInterval":[5733,5735]},"LValue_single",[]]]],"Expression":["define",{"sourceInterval":[5769,5803]},null,[],["app",{"sourceInterval":[5782,5803]},"ExpressionConditional",[]]],"ExpressionConditional_ternary":["define",{"sourceInterval":[5832,5897]},null,[],["seq",{"sourceInterval":[5832,5887]},["app",{"sourceInterval":[5832,5844]},"ExpressionOr",[]],["terminal",{"sourceInterval":[5845,5848]},"?"],["app",{"sourceInterval":[5849,5861]},"ExpressionOr",[]],["terminal",{"sourceInterval":[5862,5865]},":"],["app",{"sourceInterval":[5866,5887]},"ExpressionConditional",[]]]],"ExpressionConditional":["define",{"sourceInterval":[5808,5938]},null,[],["alt",{"sourceInterval":[5832,5938]},["app",{"sourceInterval":[5832,5887]},"ExpressionConditional_ternary",[]],["app",{"sourceInterval":[5926,5938]},"ExpressionOr",[]]]],"ExpressionOr_or":["define",{"sourceInterval":[5958,5994]},null,[],["seq",{"sourceInterval":[5958,5989]},["app",{"sourceInterval":[5958,5970]},"ExpressionOr",[]],["terminal",{"sourceInterval":[5971,5975]},"||"],["app",{"sourceInterval":[5976,5989]},"ExpressionAnd",[]]]],"ExpressionOr":["define",{"sourceInterval":[5943,6027]},null,[],["alt",{"sourceInterval":[5958,6027]},["app",{"sourceInterval":[5958,5989]},"ExpressionOr_or",[]],["app",{"sourceInterval":[6014,6027]},"ExpressionAnd",[]]]],"ExpressionAnd_and":["define",{"sourceInterval":[6048,6090]},null,[],["seq",{"sourceInterval":[6048,6084]},["app",{"sourceInterval":[6048,6061]},"ExpressionAnd",[]],["terminal",{"sourceInterval":[6062,6066]},"&&"],["app",{"sourceInterval":[6067,6084]},"ExpressionCompare",[]]]],"ExpressionAnd":["define",{"sourceInterval":[6032,6128]},null,[],["alt",{"sourceInterval":[6048,6128]},["app",{"sourceInterval":[6048,6084]},"ExpressionAnd_and",[]],["app",{"sourceInterval":[6111,6128]},"ExpressionCompare",[]]]],"ExpressionCompare_not":["define",{"sourceInterval":[6153,6198]},null,[],["seq",{"sourceInterval":[6153,6192]},["app",{"sourceInterval":[6153,6170]},"ExpressionCompare",[]],["terminal",{"sourceInterval":[6171,6175]},"!="],["app",{"sourceInterval":[6176,6192]},"ExpressionBinary",[]]]],"ExpressionCompare_eq":["define",{"sourceInterval":[6223,6267]},null,[],["seq",{"sourceInterval":[6223,6262]},["app",{"sourceInterval":[6223,6240]},"ExpressionCompare",[]],["terminal",{"sourceInterval":[6241,6245]},"=="],["app",{"sourceInterval":[6246,6262]},"ExpressionBinary",[]]]],"ExpressionCompare_gt":["define",{"sourceInterval":[6292,6335]},null,[],["seq",{"sourceInterval":[6292,6330]},["app",{"sourceInterval":[6292,6309]},"ExpressionCompare",[]],["terminal",{"sourceInterval":[6310,6313]},">"],["app",{"sourceInterval":[6314,6330]},"ExpressionBinary",[]]]],"ExpressionCompare_gte":["define",{"sourceInterval":[6360,6405]},null,[],["seq",{"sourceInterval":[6360,6399]},["app",{"sourceInterval":[6360,6377]},"ExpressionCompare",[]],["terminal",{"sourceInterval":[6378,6382]},">="],["app",{"sourceInterval":[6383,6399]},"ExpressionBinary",[]]]],"ExpressionCompare_lt":["define",{"sourceInterval":[6430,6473]},null,[],["seq",{"sourceInterval":[6430,6468]},["app",{"sourceInterval":[6430,6447]},"ExpressionCompare",[]],["terminal",{"sourceInterval":[6448,6451]},"<"],["app",{"sourceInterval":[6452,6468]},"ExpressionBinary",[]]]],"ExpressionCompare_lte":["define",{"sourceInterval":[6498,6543]},null,[],["seq",{"sourceInterval":[6498,6537]},["app",{"sourceInterval":[6498,6515]},"ExpressionCompare",[]],["terminal",{"sourceInterval":[6516,6520]},"<="],["app",{"sourceInterval":[6521,6537]},"ExpressionBinary",[]]]],"ExpressionCompare":["define",{"sourceInterval":[6133,6584]},null,[],["alt",{"sourceInterval":[6153,6584]},["app",{"sourceInterval":[6153,6192]},"ExpressionCompare_not",[]],["app",{"sourceInterval":[6223,6262]},"ExpressionCompare_eq",[]],["app",{"sourceInterval":[6292,6330]},"ExpressionCompare_gt",[]],["app",{"sourceInterval":[6360,6399]},"ExpressionCompare_gte",[]],["app",{"sourceInterval":[6430,6468]},"ExpressionCompare_lt",[]],["app",{"sourceInterval":[6498,6537]},"ExpressionCompare_lte",[]],["app",{"sourceInterval":[6568,6584]},"ExpressionBinary",[]]]],"ExpressionBinary_shr":["define",{"sourceInterval":[6608,6649]},null,[],["seq",{"sourceInterval":[6608,6643]},["app",{"sourceInterval":[6608,6624]},"ExpressionBinary",[]],["terminal",{"sourceInterval":[6625,6629]},">>"],["app",{"sourceInterval":[6630,6643]},"ExpressionAdd",[]]]],"ExpressionBinary_shl":["define",{"sourceInterval":[6672,6713]},null,[],["seq",{"sourceInterval":[6672,6707]},["app",{"sourceInterval":[6672,6688]},"ExpressionBinary",[]],["terminal",{"sourceInterval":[6689,6693]},"<<"],["app",{"sourceInterval":[6694,6707]},"ExpressionAdd",[]]]],"ExpressionBinary_bin_and":["define",{"sourceInterval":[6736,6780]},null,[],["seq",{"sourceInterval":[6736,6770]},["app",{"sourceInterval":[6736,6752]},"ExpressionBinary",[]],["terminal",{"sourceInterval":[6753,6756]},"&"],["app",{"sourceInterval":[6757,6770]},"ExpressionAdd",[]]]],"ExpressionBinary_bin_or":["define",{"sourceInterval":[6803,6846]},null,[],["seq",{"sourceInterval":[6803,6837]},["app",{"sourceInterval":[6803,6819]},"ExpressionBinary",[]],["terminal",{"sourceInterval":[6820,6823]},"|"],["app",{"sourceInterval":[6824,6837]},"ExpressionAdd",[]]]],"ExpressionBinary":["define",{"sourceInterval":[6589,6882]},null,[],["alt",{"sourceInterval":[6608,6882]},["app",{"sourceInterval":[6608,6643]},"ExpressionBinary_shr",[]],["app",{"sourceInterval":[6672,6707]},"ExpressionBinary_shl",[]],["app",{"sourceInterval":[6736,6770]},"ExpressionBinary_bin_and",[]],["app",{"sourceInterval":[6803,6837]},"ExpressionBinary_bin_or",[]],["app",{"sourceInterval":[6869,6882]},"ExpressionAdd",[]]]],"ExpressionAdd_add":["define",{"sourceInterval":[6903,6945]},null,[],["seq",{"sourceInterval":[6903,6939]},["app",{"sourceInterval":[6903,6916]},"ExpressionAdd",[]],["terminal",{"sourceInterval":[6917,6920]},"+"],["not",{"sourceInterval":[6921,6925]},["terminal",{"sourceInterval":[6922,6925]},"+"]],["app",{"sourceInterval":[6926,6939]},"ExpressionMul",[]]]],"ExpressionAdd_sub":["define",{"sourceInterval":[6966,7008]},null,[],["seq",{"sourceInterval":[6966,7002]},["app",{"sourceInterval":[6966,6979]},"ExpressionAdd",[]],["terminal",{"sourceInterval":[6980,6983]},"-"],["not",{"sourceInterval":[6984,6988]},["terminal",{"sourceInterval":[6985,6988]},"-"]],["app",{"sourceInterval":[6989,7002]},"ExpressionMul",[]]]],"ExpressionAdd":["define",{"sourceInterval":[6887,7042]},null,[],["alt",{"sourceInterval":[6903,7042]},["app",{"sourceInterval":[6903,6939]},"ExpressionAdd_add",[]],["app",{"sourceInterval":[6966,7002]},"ExpressionAdd_sub",[]],["app",{"sourceInterval":[7029,7042]},"ExpressionMul",[]]]],"ExpressionMul_mul":["define",{"sourceInterval":[7063,7102]},null,[],["seq",{"sourceInterval":[7063,7096]},["app",{"sourceInterval":[7063,7076]},"ExpressionMul",[]],["terminal",{"sourceInterval":[7077,7080]},"*"],["app",{"sourceInterval":[7081,7096]},"ExpressionUnary",[]]]],"ExpressionMul_div":["define",{"sourceInterval":[7123,7162]},null,[],["seq",{"sourceInterval":[7123,7156]},["app",{"sourceInterval":[7123,7136]},"ExpressionMul",[]],["terminal",{"sourceInterval":[7137,7140]},"/"],["app",{"sourceInterval":[7141,7156]},"ExpressionUnary",[]]]],"ExpressionMul_rem":["define",{"sourceInterval":[7183,7222]},null,[],["seq",{"sourceInterval":[7183,7216]},["app",{"sourceInterval":[7183,7196]},"ExpressionMul",[]],["terminal",{"sourceInterval":[7197,7200]},"%"],["app",{"sourceInterval":[7201,7216]},"ExpressionUnary",[]]]],"ExpressionMul":["define",{"sourceInterval":[7047,7258]},null,[],["alt",{"sourceInterval":[7063,7258]},["app",{"sourceInterval":[7063,7096]},"ExpressionMul_mul",[]],["app",{"sourceInterval":[7123,7156]},"ExpressionMul_div",[]],["app",{"sourceInterval":[7183,7216]},"ExpressionMul_rem",[]],["app",{"sourceInterval":[7243,7258]},"ExpressionUnary",[]]]],"ExpressionUnary_neg":["define",{"sourceInterval":[7281,7312]},null,[],["seq",{"sourceInterval":[7281,7306]},["terminal",{"sourceInterval":[7281,7284]},"-"],["app",{"sourceInterval":[7285,7306]},"ExpressionUnarySuffix",[]]]],"ExpressionUnary_add":["define",{"sourceInterval":[7335,7366]},null,[],["seq",{"sourceInterval":[7335,7360]},["terminal",{"sourceInterval":[7335,7338]},"+"],["app",{"sourceInterval":[7339,7360]},"ExpressionUnarySuffix",[]]]],"ExpressionUnary_not":["define",{"sourceInterval":[7389,7420]},null,[],["seq",{"sourceInterval":[7389,7414]},["terminal",{"sourceInterval":[7389,7392]},"!"],["app",{"sourceInterval":[7393,7414]},"ExpressionUnarySuffix",[]]]],"ExpressionUnary":["define",{"sourceInterval":[7263,7464]},null,[],["alt",{"sourceInterval":[7281,7464]},["app",{"sourceInterval":[7281,7306]},"ExpressionUnary_neg",[]],["app",{"sourceInterval":[7335,7360]},"ExpressionUnary_add",[]],["app",{"sourceInterval":[7389,7414]},"ExpressionUnary_not",[]],["app",{"sourceInterval":[7443,7464]},"ExpressionUnarySuffix",[]]]],"ExpressionUnarySuffix_notNull":["define",{"sourceInterval":[7493,7523]},null,[],["seq",{"sourceInterval":[7493,7513]},["app",{"sourceInterval":[7493,7508]},"ExpressionValue",[]],["terminal",{"sourceInterval":[7509,7513]},"!!"]]],"ExpressionUnarySuffix":["define",{"sourceInterval":[7469,7567]},null,[],["alt",{"sourceInterval":[7493,7567]},["app",{"sourceInterval":[7493,7513]},"ExpressionUnarySuffix_notNull",[]],["app",{"sourceInterval":[7552,7567]},"ExpressionValue",[]]]],"ExpressionBracket":["define",{"sourceInterval":[7572,7610]},null,[],["seq",{"sourceInterval":[7592,7610]},["terminal",{"sourceInterval":[7592,7595]},"("],["app",{"sourceInterval":[7596,7606]},"Expression",[]],["terminal",{"sourceInterval":[7607,7610]},")"]]],"ExpressionValue":["define",{"sourceInterval":[7642,8032]},null,[],["alt",{"sourceInterval":[7660,8032]},["app",{"sourceInterval":[7660,7674]},"ExpressionCall",[]],["app",{"sourceInterval":[7697,7712]},"ExpressionField",[]],["app",{"sourceInterval":[7735,7755]},"ExpressionStaticCall",[]],["app",{"sourceInterval":[7778,7795]},"ExpressionBracket",[]],["app",{"sourceInterval":[7818,7831]},"ExpressionNew",[]],["app",{"sourceInterval":[7854,7868]},"integerLiteral",[]],["app",{"sourceInterval":[7891,7902]},"boolLiteral",[]],["app",{"sourceInterval":[7925,7927]},"id",[]],["app",{"sourceInterval":[7950,7954]},"null",[]],["app",{"sourceInterval":[7977,7993]},"ExpressionInitOf",[]],["app",{"sourceInterval":[8016,8032]},"ExpressionString",[]]]],"ExpressionString":["define",{"sourceInterval":[8037,8069]},null,[],["app",{"sourceInterval":[8056,8069]},"stringLiteral",[]]],"ExpressionField":["define",{"sourceInterval":[8074,8119]},null,[],["seq",{"sourceInterval":[8092,8119]},["app",{"sourceInterval":[8092,8107]},"ExpressionValue",[]],["terminal",{"sourceInterval":[8108,8111]},"."],["app",{"sourceInterval":[8112,8114]},"id",[]],["not",{"sourceInterval":[8115,8119]},["terminal",{"sourceInterval":[8116,8119]},"("]]]],"ExpressionCall":["define",{"sourceInterval":[8124,8195]},null,[],["seq",{"sourceInterval":[8141,8195]},["app",{"sourceInterval":[8141,8156]},"ExpressionValue",[]],["terminal",{"sourceInterval":[8157,8160]},"."],["app",{"sourceInterval":[8161,8163]},"id",[]],["terminal",{"sourceInterval":[8164,8167]},"("],["app",{"sourceInterval":[8168,8191]},"ListOf",[["app",{"sourceInterval":[8175,8185]},"Expression",[]],["terminal",{"sourceInterval":[8187,8190]},","]]],["terminal",{"sourceInterval":[8192,8195]},")"]]],"ExpressionNew":["define",{"sourceInterval":[8200,8257]},null,[],["seq",{"sourceInterval":[8216,8257]},["app",{"sourceInterval":[8216,8218]},"id",[]],["terminal",{"sourceInterval":[8219,8222]},"{"],["app",{"sourceInterval":[8223,8248]},"ListOf",[["app",{"sourceInterval":[8230,8242]},"NewParameter",[]],["terminal",{"sourceInterval":[8244,8247]},","]]],["opt",{"sourceInterval":[8249,8253]},["terminal",{"sourceInterval":[8249,8252]},","]],["terminal",{"sourceInterval":[8254,8257]},"}"]]],"NewParameter":["define",{"sourceInterval":[8262,8294]},null,[],["seq",{"sourceInterval":[8277,8294]},["app",{"sourceInterval":[8277,8279]},"id",[]],["terminal",{"sourceInterval":[8280,8283]},":"],["app",{"sourceInterval":[8284,8294]},"Expression",[]]]],"ExpressionStaticCall":["define",{"sourceInterval":[8299,8356]},null,[],["seq",{"sourceInterval":[8322,8356]},["app",{"sourceInterval":[8322,8324]},"id",[]],["terminal",{"sourceInterval":[8325,8328]},"("],["app",{"sourceInterval":[8329,8352]},"ListOf",[["app",{"sourceInterval":[8336,8346]},"Expression",[]],["terminal",{"sourceInterval":[8348,8351]},","]]],["terminal",{"sourceInterval":[8353,8356]},")"]]],"ExpressionInitOf":["define",{"sourceInterval":[8361,8421]},null,[],["seq",{"sourceInterval":[8380,8421]},["app",{"sourceInterval":[8380,8386]},"initOf",[]],["app",{"sourceInterval":[8387,8389]},"id",[]],["terminal",{"sourceInterval":[8390,8393]},"("],["app",{"sourceInterval":[8394,8417]},"ListOf",[["app",{"sourceInterval":[8401,8411]},"Expression",[]],["terminal",{"sourceInterval":[8413,8416]},","]]],["terminal",{"sourceInterval":[8418,8421]},")"]]],"typeLiteral":["define",{"sourceInterval":[8447,8491]},null,[],["seq",{"sourceInterval":[8461,8491]},["app",{"sourceInterval":[8461,8474]},"letterAsciiUC",[]],["star",{"sourceInterval":[8475,8491]},["app",{"sourceInterval":[8475,8490]},"typeLiteralPart",[]]]]],"typeLiteralPart":["define",{"sourceInterval":[8496,8539]},null,[],["alt",{"sourceInterval":[8514,8539]},["app",{"sourceInterval":[8514,8525]},"letterAscii",[]],["app",{"sourceInterval":[8528,8533]},"digit",[]],["terminal",{"sourceInterval":[8536,8539]},"_"]]],"integerLiteral":["define",{"sourceInterval":[8746,8840]},null,[],["alt",{"sourceInterval":[8763,8840]},["app",{"sourceInterval":[8763,8780]},"integerLiteralHex",[]],["app",{"sourceInterval":[8783,8800]},"integerLiteralBin",[]],["app",{"sourceInterval":[8803,8820]},"integerLiteralOct",[]],["app",{"sourceInterval":[8823,8840]},"integerLiteralDec",[]]]],"integerLiteralDec_nonZeroIntegerLiteralDec":["define",{"sourceInterval":[8887,8941]},null,[],["seq",{"sourceInterval":[8887,8913]},["app",{"sourceInterval":[8887,8899]},"nonZeroDigit",[]],["star",{"sourceInterval":[8900,8913]},["seq",{"sourceInterval":[8901,8911]},["opt",{"sourceInterval":[8901,8905]},["terminal",{"sourceInterval":[8901,8904]},"_"]],["app",{"sourceInterval":[8906,8911]},"digit",[]]]]]],"integerLiteralDec_integerLiteralWithLeadingZero":["define",{"sourceInterval":[8966,9025]},null,[],["seq",{"sourceInterval":[8966,8976]},["terminal",{"sourceInterval":[8966,8969]},"0"],["star",{"sourceInterval":[8970,8976]},["app",{"sourceInterval":[8970,8975]},"digit",[]]]]],"integerLiteralDec":["define",{"sourceInterval":[8867,9025]},null,[],["alt",{"sourceInterval":[8887,9025]},["app",{"sourceInterval":[8887,8913]},"integerLiteralDec_nonZeroIntegerLiteralDec",[]],["app",{"sourceInterval":[8966,8976]},"integerLiteralDec_integerLiteralWithLeadingZero",[]]]],"integerLiteralHex":["define",{"sourceInterval":[9030,9089]},null,[],["seq",{"sourceInterval":[9050,9089]},["alt",{"sourceInterval":[9051,9062]},["terminal",{"sourceInterval":[9051,9055]},"0x"],["terminal",{"sourceInterval":[9058,9062]},"0X"]],["app",{"sourceInterval":[9064,9072]},"hexDigit",[]],["star",{"sourceInterval":[9073,9089]},["seq",{"sourceInterval":[9074,9087]},["opt",{"sourceInterval":[9074,9078]},["terminal",{"sourceInterval":[9074,9077]},"_"]],["app",{"sourceInterval":[9079,9087]},"hexDigit",[]]]]]],"integerLiteralBin":["define",{"sourceInterval":[9094,9153]},null,[],["seq",{"sourceInterval":[9114,9153]},["alt",{"sourceInterval":[9115,9126]},["terminal",{"sourceInterval":[9115,9119]},"0b"],["terminal",{"sourceInterval":[9122,9126]},"0B"]],["app",{"sourceInterval":[9128,9136]},"binDigit",[]],["star",{"sourceInterval":[9137,9153]},["seq",{"sourceInterval":[9138,9151]},["opt",{"sourceInterval":[9138,9142]},["terminal",{"sourceInterval":[9138,9141]},"_"]],["app",{"sourceInterval":[9143,9151]},"binDigit",[]]]]]],"integerLiteralOct":["define",{"sourceInterval":[9158,9217]},null,[],["seq",{"sourceInterval":[9178,9217]},["alt",{"sourceInterval":[9179,9190]},["terminal",{"sourceInterval":[9179,9183]},"0o"],["terminal",{"sourceInterval":[9186,9190]},"0O"]],["app",{"sourceInterval":[9192,9200]},"octDigit",[]],["star",{"sourceInterval":[9201,9217]},["seq",{"sourceInterval":[9202,9215]},["opt",{"sourceInterval":[9202,9206]},["terminal",{"sourceInterval":[9202,9205]},"_"]],["app",{"sourceInterval":[9207,9215]},"octDigit",[]]]]]],"binDigit":["define",{"sourceInterval":[9222,9242]},null,[],["alt",{"sourceInterval":[9233,9242]},["terminal",{"sourceInterval":[9233,9236]},"0"],["terminal",{"sourceInterval":[9239,9242]},"1"]]],"octDigit":["define",{"sourceInterval":[9247,9266]},null,[],["range",{"sourceInterval":[9258,9266]},"0","7"]],"nonZeroDigit":["define",{"sourceInterval":[9271,9294]},null,[],["range",{"sourceInterval":[9286,9294]},"1","9"]],"letterAsciiLC":["define",{"sourceInterval":[9315,9339]},null,[],["range",{"sourceInterval":[9331,9339]},"a","z"]],"letterAsciiUC":["define",{"sourceInterval":[9344,9368]},null,[],["range",{"sourceInterval":[9360,9368]},"A","Z"]],"letterAscii":["define",{"sourceInterval":[9373,9416]},null,[],["alt",{"sourceInterval":[9387,9416]},["app",{"sourceInterval":[9387,9400]},"letterAsciiLC",[]],["app",{"sourceInterval":[9403,9416]},"letterAsciiUC",[]]]],"letterComment":["define",{"sourceInterval":[9421,9480]},null,[],["alt",{"sourceInterval":[9437,9480]},["app",{"sourceInterval":[9437,9450]},"letterAsciiLC",[]],["app",{"sourceInterval":[9453,9466]},"letterAsciiUC",[]],["app",{"sourceInterval":[9469,9474]},"digit",[]],["terminal",{"sourceInterval":[9477,9480]},"_"]]],"idStart":["define",{"sourceInterval":[9504,9531]},null,[],["alt",{"sourceInterval":[9514,9531]},["app",{"sourceInterval":[9514,9525]},"letterAscii",[]],["terminal",{"sourceInterval":[9528,9531]},"_"]]],"idPart":["define",{"sourceInterval":[9536,9570]},null,[],["alt",{"sourceInterval":[9545,9570]},["app",{"sourceInterval":[9545,9556]},"letterAscii",[]],["app",{"sourceInterval":[9559,9564]},"digit",[]],["terminal",{"sourceInterval":[9567,9570]},"_"]]],"id":["define",{"sourceInterval":[9575,9613]},null,[],["seq",{"sourceInterval":[9580,9613]},["not",{"sourceInterval":[9580,9593]},["app",{"sourceInterval":[9581,9593]},"reservedWord",[]]],["lex",{"sourceInterval":[9594,9602]},["app",{"sourceInterval":[9595,9602]},"idStart",[]]],["lex",{"sourceInterval":[9603,9613]},["star",{"sourceInterval":[9605,9612]},["app",{"sourceInterval":[9605,9611]},"idPart",[]]]]]],"funcLetter":["define",{"sourceInterval":[9634,9695]},null,[],["alt",{"sourceInterval":[9647,9695]},["app",{"sourceInterval":[9647,9658]},"letterAscii",[]],["terminal",{"sourceInterval":[9661,9664]},"_"],["terminal",{"sourceInterval":[9667,9670]},"'"],["terminal",{"sourceInterval":[9673,9676]},"?"],["terminal",{"sourceInterval":[9679,9682]},"!"],["terminal",{"sourceInterval":[9685,9689]},"::"],["terminal",{"sourceInterval":[9692,9695]},"&"]]],"funcId":["define",{"sourceInterval":[9700,9742]},null,[],["seq",{"sourceInterval":[9709,9742]},["app",{"sourceInterval":[9709,9719]},"funcLetter",[]],["star",{"sourceInterval":[9720,9742]},["lex",{"sourceInterval":[9720,9741]},["alt",{"sourceInterval":[9722,9740]},["app",{"sourceInterval":[9722,9732]},"funcLetter",[]],["app",{"sourceInterval":[9735,9740]},"digit",[]]]]]]],"boolLiteral":["define",{"sourceInterval":[9768,9808]},null,[],["seq",{"sourceInterval":[9782,9808]},["alt",{"sourceInterval":[9783,9799]},["terminal",{"sourceInterval":[9783,9789]},"true"],["terminal",{"sourceInterval":[9792,9799]},"false"]],["not",{"sourceInterval":[9801,9808]},["app",{"sourceInterval":[9802,9808]},"idPart",[]]]]],"stringLiteralCharacter":["define",{"sourceInterval":[9836,9896]},null,[],["seq",{"sourceInterval":[9861,9896]},["not",{"sourceInterval":[9861,9892]},["alt",{"sourceInterval":[9863,9891]},["terminal",{"sourceInterval":[9863,9867]},"\""],["terminal",{"sourceInterval":[9870,9874]},"\\"],["app",{"sourceInterval":[9877,9891]},"lineTerminator",[]]]],["app",{"sourceInterval":[9893,9896]},"any",[]]]],"stringLiteral":["define",{"sourceInterval":[9901,9950]},null,[],["seq",{"sourceInterval":[9917,9950]},["terminal",{"sourceInterval":[9917,9921]},"\""],["star",{"sourceInterval":[9922,9945]},["app",{"sourceInterval":[9922,9944]},"stringLiteralCharacter",[]]],["terminal",{"sourceInterval":[9946,9950]},"\""]]],"keyword":["define",{"sourceInterval":[10003,10516]},null,[],["alt",{"sourceInterval":[10013,10516]},["app",{"sourceInterval":[10013,10016]},"fun",[]],["app",{"sourceInterval":[10032,10035]},"let",[]],["app",{"sourceInterval":[10050,10056]},"return",[]],["app",{"sourceInterval":[10072,10078]},"extend",[]],["app",{"sourceInterval":[10094,10100]},"native",[]],["app",{"sourceInterval":[10116,10122]},"public",[]],["app",{"sourceInterval":[10138,10142]},"null",[]],["app",{"sourceInterval":[10158,10160]},"if",[]],["app",{"sourceInterval":[10176,10180]},"else",[]],["app",{"sourceInterval":[10196,10201]},"while",[]],["app",{"sourceInterval":[10217,10223]},"repeat",[]],["app",{"sourceInterval":[10239,10241]},"do",[]],["app",{"sourceInterval":[10257,10262]},"until",[]],["app",{"sourceInterval":[10278,10280]},"as",[]],["app",{"sourceInterval":[10297,10304]},"mutates",[]],["app",{"sourceInterval":[10319,10326]},"extends",[]],["app",{"sourceInterval":[10341,10347]},"import",[]],["app",{"sourceInterval":[10362,10366]},"with",[]],["app",{"sourceInterval":[10381,10386]},"trait",[]],["app",{"sourceInterval":[10401,10407]},"initOf",[]],["app",{"sourceInterval":[10422,10430]},"override",[]],["app",{"sourceInterval":[10445,10453]},"abstract",[]],["app",{"sourceInterval":[10468,10475]},"virtual",[]],["app",{"sourceInterval":[10490,10496]},"inline",[]],["app",{"sourceInterval":[10511,10516]},"const",[]]]],"contract":["define",{"sourceInterval":[10521,10550]},null,[],["seq",{"sourceInterval":[10532,10550]},["terminal",{"sourceInterval":[10532,10542]},"contract"],["not",{"sourceInterval":[10543,10550]},["app",{"sourceInterval":[10544,10550]},"idPart",[]]]]],"let":["define",{"sourceInterval":[10555,10574]},null,[],["seq",{"sourceInterval":[10561,10574]},["terminal",{"sourceInterval":[10561,10566]},"let"],["not",{"sourceInterval":[10567,10574]},["app",{"sourceInterval":[10568,10574]},"idPart",[]]]]],"fun":["define",{"sourceInterval":[10579,10598]},null,[],["seq",{"sourceInterval":[10585,10598]},["terminal",{"sourceInterval":[10585,10590]},"fun"],["not",{"sourceInterval":[10591,10598]},["app",{"sourceInterval":[10592,10598]},"idPart",[]]]]],"return":["define",{"sourceInterval":[10603,10628]},null,[],["seq",{"sourceInterval":[10612,10628]},["terminal",{"sourceInterval":[10612,10620]},"return"],["not",{"sourceInterval":[10621,10628]},["app",{"sourceInterval":[10622,10628]},"idPart",[]]]]],"extend":["define",{"sourceInterval":[10633,10658]},null,[],["seq",{"sourceInterval":[10642,10658]},["terminal",{"sourceInterval":[10642,10650]},"extend"],["not",{"sourceInterval":[10651,10658]},["app",{"sourceInterval":[10652,10658]},"idPart",[]]]]],"native":["define",{"sourceInterval":[10663,10688]},null,[],["seq",{"sourceInterval":[10672,10688]},["terminal",{"sourceInterval":[10672,10680]},"native"],["not",{"sourceInterval":[10681,10688]},["app",{"sourceInterval":[10682,10688]},"idPart",[]]]]],"public":["define",{"sourceInterval":[10693,10718]},null,[],["seq",{"sourceInterval":[10702,10718]},["terminal",{"sourceInterval":[10702,10710]},"public"],["not",{"sourceInterval":[10711,10718]},["app",{"sourceInterval":[10712,10718]},"idPart",[]]]]],"null":["define",{"sourceInterval":[10723,10744]},null,[],["seq",{"sourceInterval":[10730,10744]},["terminal",{"sourceInterval":[10730,10736]},"null"],["not",{"sourceInterval":[10737,10744]},["app",{"sourceInterval":[10738,10744]},"idPart",[]]]]],"if":["define",{"sourceInterval":[10749,10766]},null,[],["seq",{"sourceInterval":[10754,10766]},["terminal",{"sourceInterval":[10754,10758]},"if"],["not",{"sourceInterval":[10759,10766]},["app",{"sourceInterval":[10760,10766]},"idPart",[]]]]],"else":["define",{"sourceInterval":[10771,10792]},null,[],["seq",{"sourceInterval":[10778,10792]},["terminal",{"sourceInterval":[10778,10784]},"else"],["not",{"sourceInterval":[10785,10792]},["app",{"sourceInterval":[10786,10792]},"idPart",[]]]]],"while":["define",{"sourceInterval":[10797,10820]},null,[],["seq",{"sourceInterval":[10805,10820]},["terminal",{"sourceInterval":[10805,10812]},"while"],["not",{"sourceInterval":[10813,10820]},["app",{"sourceInterval":[10814,10820]},"idPart",[]]]]],"repeat":["define",{"sourceInterval":[10825,10850]},null,[],["seq",{"sourceInterval":[10834,10850]},["terminal",{"sourceInterval":[10834,10842]},"repeat"],["not",{"sourceInterval":[10843,10850]},["app",{"sourceInterval":[10844,10850]},"idPart",[]]]]],"do":["define",{"sourceInterval":[10855,10872]},null,[],["seq",{"sourceInterval":[10860,10872]},["terminal",{"sourceInterval":[10860,10864]},"do"],["not",{"sourceInterval":[10865,10872]},["app",{"sourceInterval":[10866,10872]},"idPart",[]]]]],"until":["define",{"sourceInterval":[10877,10900]},null,[],["seq",{"sourceInterval":[10885,10900]},["terminal",{"sourceInterval":[10885,10892]},"until"],["not",{"sourceInterval":[10893,10900]},["app",{"sourceInterval":[10894,10900]},"idPart",[]]]]],"as":["define",{"sourceInterval":[10905,10922]},null,[],["seq",{"sourceInterval":[10910,10922]},["terminal",{"sourceInterval":[10910,10914]},"as"],["not",{"sourceInterval":[10915,10922]},["app",{"sourceInterval":[10916,10922]},"idPart",[]]]]],"mutates":["define",{"sourceInterval":[10927,10954]},null,[],["seq",{"sourceInterval":[10937,10954]},["terminal",{"sourceInterval":[10937,10946]},"mutates"],["not",{"sourceInterval":[10947,10954]},["app",{"sourceInterval":[10948,10954]},"idPart",[]]]]],"extends":["define",{"sourceInterval":[10959,10986]},null,[],["seq",{"sourceInterval":[10969,10986]},["terminal",{"sourceInterval":[10969,10978]},"extends"],["not",{"sourceInterval":[10979,10986]},["app",{"sourceInterval":[10980,10986]},"idPart",[]]]]],"import":["define",{"sourceInterval":[10991,11016]},null,[],["seq",{"sourceInterval":[11000,11016]},["terminal",{"sourceInterval":[11000,11008]},"import"],["not",{"sourceInterval":[11009,11016]},["app",{"sourceInterval":[11010,11016]},"idPart",[]]]]],"with":["define",{"sourceInterval":[11021,11042]},null,[],["seq",{"sourceInterval":[11028,11042]},["terminal",{"sourceInterval":[11028,11034]},"with"],["not",{"sourceInterval":[11035,11042]},["app",{"sourceInterval":[11036,11042]},"idPart",[]]]]],"trait":["define",{"sourceInterval":[11047,11070]},null,[],["seq",{"sourceInterval":[11055,11070]},["terminal",{"sourceInterval":[11055,11062]},"trait"],["not",{"sourceInterval":[11063,11070]},["app",{"sourceInterval":[11064,11070]},"idPart",[]]]]],"initOf":["define",{"sourceInterval":[11075,11100]},null,[],["seq",{"sourceInterval":[11084,11100]},["terminal",{"sourceInterval":[11084,11092]},"initOf"],["not",{"sourceInterval":[11093,11100]},["app",{"sourceInterval":[11094,11100]},"idPart",[]]]]],"virtual":["define",{"sourceInterval":[11105,11132]},null,[],["seq",{"sourceInterval":[11115,11132]},["terminal",{"sourceInterval":[11115,11124]},"virtual"],["not",{"sourceInterval":[11125,11132]},["app",{"sourceInterval":[11126,11132]},"idPart",[]]]]],"override":["define",{"sourceInterval":[11137,11166]},null,[],["seq",{"sourceInterval":[11148,11166]},["terminal",{"sourceInterval":[11148,11158]},"override"],["not",{"sourceInterval":[11159,11166]},["app",{"sourceInterval":[11160,11166]},"idPart",[]]]]],"inline":["define",{"sourceInterval":[11171,11196]},null,[],["seq",{"sourceInterval":[11180,11196]},["terminal",{"sourceInterval":[11180,11188]},"inline"],["not",{"sourceInterval":[11189,11196]},["app",{"sourceInterval":[11190,11196]},"idPart",[]]]]],"const":["define",{"sourceInterval":[11201,11224]},null,[],["seq",{"sourceInterval":[11209,11224]},["terminal",{"sourceInterval":[11209,11216]},"const"],["not",{"sourceInterval":[11217,11224]},["app",{"sourceInterval":[11218,11224]},"idPart",[]]]]],"abstract":["define",{"sourceInterval":[11229,11258]},null,[],["seq",{"sourceInterval":[11240,11258]},["terminal",{"sourceInterval":[11240,11250]},"abstract"],["not",{"sourceInterval":[11251,11258]},["app",{"sourceInterval":[11252,11258]},"idPart",[]]]]],"nameAttribute":["define",{"sourceInterval":[11282,11305]},null,[],["terminal",{"sourceInterval":[11298,11305]},"@name"]],"reservedWord":["define",{"sourceInterval":[11327,11349]},null,[],["app",{"sourceInterval":[11342,11349]},"keyword",[]]],"space":["extend",{"sourceInterval":[11371,11404]},null,[],["alt",{"sourceInterval":[11380,11404]},["app",{"sourceInterval":[11380,11387]},"comment",[]],["app",{"sourceInterval":[11390,11404]},"lineTerminator",[]]]],"comment":["define",{"sourceInterval":[11409,11455]},null,[],["alt",{"sourceInterval":[11419,11455]},["app",{"sourceInterval":[11419,11435]},"multiLineComment",[]],["app",{"sourceInterval":[11438,11455]},"singleLineComment",[]]]],"lineTerminator":["define",{"sourceInterval":[11460,11510]},null,[],["alt",{"sourceInterval":[11477,11510]},["terminal",{"sourceInterval":[11477,11481]},"\n"],["terminal",{"sourceInterval":[11484,11488]},"\r"],["terminal",{"sourceInterval":[11491,11499]},"\u2028"],["terminal",{"sourceInterval":[11502,11510]},"\u2029"]]],"multiLineComment":["define",{"sourceInterval":[11515,11556]},null,[],["seq",{"sourceInterval":[11534,11556]},["terminal",{"sourceInterval":[11534,11538]},"/*"],["star",{"sourceInterval":[11539,11551]},["seq",{"sourceInterval":[11540,11549]},["not",{"sourceInterval":[11540,11545]},["terminal",{"sourceInterval":[11541,11545]},"*/"]],["app",{"sourceInterval":[11546,11549]},"any",[]]]],["terminal",{"sourceInterval":[11552,11556]},"*/"]]],"singleLineComment":["define",{"sourceInterval":[11561,11608]},null,[],["seq",{"sourceInterval":[11581,11608]},["terminal",{"sourceInterval":[11581,11585]},"//"],["star",{"sourceInterval":[11586,11608]},["seq",{"sourceInterval":[11587,11606]},["not",{"sourceInterval":[11587,11602]},["app",{"sourceInterval":[11588,11602]},"lineTerminator",[]]],["app",{"sourceInterval":[11603,11606]},"any",[]]]]]]}]);module.exports=result; \ No newline at end of file +'use strict';const ohm=(require('ohm-js').default || require('ohm-js'));const result=ohm.makeRecipe(["grammar",{"source":"Tact {\n\n // Starting point of the program\n Program = ProgramItem*\n ProgramItem = Struct\n | Contract\n | Primitive\n | StaticFunction\n | NativeFunction\n | ProgramImport\n | Trait\n | Constant\n ProgramImport = import stringLiteral \";\"\n\n // Built-in declarations\n Primitive = \"primitive\" Type \";\"\n\n // Static function\n StaticFunction = Function\n NativeFunction = nameAttribute \"(\" funcId \")\" FunctionAttribute* native id \"(\" ListOf \",\"? \")\" \";\" --withVoid\n | nameAttribute \"(\" funcId \")\" FunctionAttribute* native id \"(\" ListOf \",\"? \")\" \":\" Type \";\" --withType\n \n // Field declarations\n Type = typeLiteral \"?\" --optional\n | typeLiteral --required\n | \"map\" \"<\" typeLiteral (as id)? \",\" typeLiteral (as id)? \">\" --map\n | \"bounced\" \"<\" typeLiteral \">\" --bounced\n Field = id \":\" Type \";\" --default\n | id \":\" Type \"=\" Expression \";\" --defaultWithInit\n | id \":\" Type as id \";\" --withSerialization\n | id \":\" Type as id \"=\" Expression \";\" --withSerializationAndInit\n \n // Constant\n ConstantAttribute = virtual --virtual\n | override --override\n | abstract --abstract\n Constant = ConstantAttribute* ~fun const id \":\" Type \"=\" Expression \";\" --withValue\n | ConstantAttribute* ~fun const id \":\" Type \";\" --withEmpty\n\n // Struct\n Struct = \"struct\" typeLiteral \"{\" StructBody* \"}\" --originary\n | \"message\" typeLiteral \"{\" StructBody* \"}\" --message\n | \"message\" \"(\" integerLiteral \")\" typeLiteral \"{\" StructBody* \"}\" --messageWithId\n StructBody = Field\n\n // Contract\n Contract = ContractAttribute* contract id \"{\" ContractBody* \"}\" --simple\n | ContractAttribute* contract id with ListOf \"{\" ContractBody* \"}\" --withTraits\n ContractInit = \"init\" \"(\" ListOf \")\" \"{\" Statement* \"}\"\n ContractBody = Field\n | ContractInit\n | ReceiveFunction\n | Function\n | Constant\n \n // Trait\n Trait = ContractAttribute* trait id \"{\" TraitBody* \"}\" --originary\n | ContractAttribute* trait id with ListOf \"{\" TraitBody* \"}\" --withTraits\n TraitBody = Field\n | ReceiveFunction\n | Function\n | Constant\n\n // Contract attributes\n ContractAttribute = \"@interface\" \"(\" stringLiteral \")\" --interface\n\n // Function\n FunctionAttribute = \"get\" --getter\n | mutates --mutates\n | extends --extends\n | virtual --virtual\n | override --override\n | inline --inline\n | abstract --abstract\n Function = FunctionAttribute* fun id \"(\" ListOf \",\"? \")\" \"{\" Statement* \"}\" --withVoid\n | FunctionAttribute* fun id \"(\" ListOf \",\"? \")\" \":\" Type \"{\" Statement* \"}\" --withType\n | FunctionAttribute* fun id \"(\" ListOf \",\"? \")\" \";\" --abstractVoid\n | FunctionAttribute* fun id \"(\" ListOf \",\"? \")\" \":\" Type \";\" --abstractType\n FunctionArg = id \":\" Type\n \n ReceiveFunction = \"receive\" \"(\" FunctionArg \")\" \"{\" Statement* \"}\" --simple\n | \"receive\" \"(\" \")\" \"{\" Statement* \"}\" --empty\n | \"receive\" \"(\" stringLiteral \")\" \"{\" Statement* \"}\" --comment\n | \"bounced\" \"(\" FunctionArg \")\" \"{\" Statement* \"}\" --bounced\n | \"external\" \"(\" FunctionArg \")\" \"{\" Statement* \"}\" --externalSimple\n | \"external\" \"(\" stringLiteral \")\" \"{\" Statement* \"}\" --externalComment\n | \"external\" \"(\" \")\" \"{\" Statement* \"}\" --externalEmpty\n\n // Statements\n Statement = StatementLet\n | StatementBlock\n | StatementReturn\n | StatementExpression\n | StatementAssign\n | StatementAugmentedAssign\n | StatementCondition\n | StatementWhile\n | StatementRepeat\n | StatementUntil\n StatementBlock = \"{\" Statement* \"}\"\n StatementLet = let id \":\" Type \"=\" Expression \";\"\n StatementReturn = return Expression \";\" --withExpression\n | return \";\" --withoutExpression \n StatementExpression = Expression \";\"\n StatementAssign = LValue \"=\" Expression \";\"\n StatementAugmentedAssign = StatementAugmentedAssignAdd\n | StatementAugmentedAssignSub\n | StatementAugmentedAssignMul\n | StatementAugmentedAssignDiv\n | StatementAugmentedAssignRem\n StatementAugmentedAssignAdd = LValue \"+=\" Expression \";\"\n StatementAugmentedAssignSub = LValue \"-=\" Expression \";\"\n StatementAugmentedAssignMul = LValue \"*=\" Expression \";\"\n StatementAugmentedAssignDiv = LValue \"/=\" Expression \";\"\n StatementAugmentedAssignRem = LValue \"%=\" Expression \";\"\n StatementCondition = if Expression \"{\" Statement* \"}\" ~else --simple\n | if Expression \"{\" Statement* \"}\" else \"{\" Statement* \"}\" --withElse\n | if Expression \"{\" Statement* \"}\" else StatementCondition --withElseIf\n StatementWhile = while \"(\" Expression \")\" \"{\" Statement* \"}\"\n StatementRepeat = repeat \"(\" Expression \")\" \"{\" Statement* \"}\"\n StatementUntil = do \"{\" Statement* \"}\" until \"(\" Expression \")\" \";\"\n\n // L-value\n LValue = id \".\" LValue --more\n | id --single\n\n // Expressions\n Expression = ExpressionConditional\n ExpressionConditional = ExpressionOr \"?\" ExpressionOr \":\" ExpressionConditional --ternary\n | ExpressionOr\n ExpressionOr = ExpressionOr \"||\" ExpressionAnd --or\n | ExpressionAnd\n ExpressionAnd = ExpressionAnd \"&&\" ExpressionCompare --and\n | ExpressionCompare\n ExpressionCompare = ExpressionCompare \"!=\" ExpressionBinary --not\n | ExpressionCompare \"==\" ExpressionBinary --eq\n | ExpressionCompare \">\" ExpressionBinary --gt\n | ExpressionCompare \">=\" ExpressionBinary --gte\n | ExpressionCompare \"<\" ExpressionBinary --lt\n | ExpressionCompare \"<=\" ExpressionBinary --lte\n | ExpressionBinary\n ExpressionBinary = ExpressionBinary \">>\" ExpressionAdd --shr\n | ExpressionBinary \"<<\" ExpressionAdd --shl\n | ExpressionBinary \"&\" ExpressionAdd --bin_and\n | ExpressionBinary \"|\" ExpressionAdd --bin_or\n | ExpressionAdd\n ExpressionAdd = ExpressionAdd \"+\" ~\"+\" ExpressionMul --add\n | ExpressionAdd \"-\" ~\"-\" ExpressionMul --sub\n | ExpressionMul\n ExpressionMul = ExpressionMul \"*\" ExpressionUnary --mul\n | ExpressionMul \"/\" ExpressionUnary --div\n | ExpressionMul \"%\" ExpressionUnary --rem\n | ExpressionUnary\n ExpressionUnary = \"-\" ExpressionUnarySuffix --neg\n | \"+\" ExpressionUnarySuffix --add\n | \"!\" ExpressionUnarySuffix --not\n | ExpressionUnarySuffix\n ExpressionUnarySuffix = ExpressionValue \"!!\" --notNull\n | ExpressionValue\n ExpressionBracket = \"(\" Expression \")\"\n\n // Order is important\n ExpressionValue = ExpressionCall\n | ExpressionField\n | ExpressionStaticCall\n | ExpressionBracket\n | ExpressionNew\n | integerLiteral\n | boolLiteral\n | id\n | null\n | ExpressionInitOf\n | ExpressionString\n ExpressionString = stringLiteral\n ExpressionField = ExpressionValue \".\" id ~\"(\"\n ExpressionCall = ExpressionValue \".\" id \"(\" ListOf \",\"? \")\"\n ExpressionNew = id \"{\" ListOf \",\"? \"}\"\n NewParameter = id \":\" Expression\n ExpressionStaticCall = id \"(\" ListOf \",\"? \")\"\n ExpressionInitOf = initOf id \"(\" ListOf \",\"? \")\"\n\n // Type Literal\n typeLiteral = letterAsciiUC typeLiteralPart*\n typeLiteralPart = letterAscii | digit | \"_\"\n\n // Integer Literal\n // hexDigit defined in Ohm's built-in rules (otherwise: hexDigit = \"0\"..\"9\" | \"a\"..\"f\" | \"A\"..\"F\")\n // digit defined in Ohm's built-in rules (otherwise: digit = \"0\"..\"9\")\n integerLiteral = integerLiteralHex | integerLiteralBin | integerLiteralOct | integerLiteralDec // Order is important\n integerLiteralDec = nonZeroDigit (\"_\"? digit)* --nonZeroIntegerLiteralDec\n | \"0\" digit* --integerLiteralWithLeadingZero\n integerLiteralHex = (\"0x\" | \"0X\") hexDigit (\"_\"? hexDigit)*\n integerLiteralBin = (\"0b\" | \"0B\") binDigit (\"_\"? binDigit)*\n integerLiteralOct = (\"0o\" | \"0O\") octDigit (\"_\"? octDigit)*\n binDigit = \"0\" | \"1\"\n octDigit = \"0\"..\"7\"\n nonZeroDigit = \"1\"..\"9\"\n\n // Letters\n letterAsciiLC = \"a\"..\"z\"\n letterAsciiUC = \"A\"..\"Z\"\n letterAscii = letterAsciiLC | letterAsciiUC\n letterComment = letterAsciiLC | letterAsciiUC | digit | \"_\"\n\n // ID Literal\n idStart = letterAscii | \"_\"\n idPart = letterAscii | digit | \"_\"\n id = ~reservedWord #idStart #(idPart*)\n\n // FunC id\n funcLetter = letterAscii | \"_\" | \"'\" | \"?\" | \"!\" | \"::\" | \"&\"\n funcId = funcLetter #(funcLetter | digit)*\n\n // Bool Literal\n boolLiteral = (\"true\" | \"false\") ~idPart\n\n // String literal\n 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,597]},null,[],["seq",{"sourceInterval":[488,586]},["app",{"sourceInterval":[488,501]},"nameAttribute",[]],["terminal",{"sourceInterval":[502,505]},"("],["app",{"sourceInterval":[506,512]},"funcId",[]],["terminal",{"sourceInterval":[513,516]},")"],["star",{"sourceInterval":[517,535]},["app",{"sourceInterval":[517,534]},"FunctionAttribute",[]]],["app",{"sourceInterval":[536,542]},"native",[]],["app",{"sourceInterval":[543,545]},"id",[]],["terminal",{"sourceInterval":[546,549]},"("],["app",{"sourceInterval":[550,573]},"ListOf",[["app",{"sourceInterval":[557,568]},"FunctionArg",[]],["terminal",{"sourceInterval":[569,572]},","]]],["opt",{"sourceInterval":[574,578]},["terminal",{"sourceInterval":[574,577]},","]],["terminal",{"sourceInterval":[579,582]},")"],["terminal",{"sourceInterval":[583,586]},";"]]],"NativeFunction_withType":["define",{"sourceInterval":[619,737]},null,[],["seq",{"sourceInterval":[619,726]},["app",{"sourceInterval":[619,632]},"nameAttribute",[]],["terminal",{"sourceInterval":[633,636]},"("],["app",{"sourceInterval":[637,643]},"funcId",[]],["terminal",{"sourceInterval":[644,647]},")"],["star",{"sourceInterval":[648,666]},["app",{"sourceInterval":[648,665]},"FunctionAttribute",[]]],["app",{"sourceInterval":[667,673]},"native",[]],["app",{"sourceInterval":[674,676]},"id",[]],["terminal",{"sourceInterval":[677,680]},"("],["app",{"sourceInterval":[681,704]},"ListOf",[["app",{"sourceInterval":[688,699]},"FunctionArg",[]],["terminal",{"sourceInterval":[700,703]},","]]],["opt",{"sourceInterval":[705,709]},["terminal",{"sourceInterval":[705,708]},","]],["terminal",{"sourceInterval":[710,713]},")"],["terminal",{"sourceInterval":[714,717]},":"],["app",{"sourceInterval":[718,722]},"Type",[]],["terminal",{"sourceInterval":[723,726]},";"]]],"NativeFunction":["define",{"sourceInterval":[471,737]},null,[],["alt",{"sourceInterval":[488,737]},["app",{"sourceInterval":[488,586]},"NativeFunction_withVoid",[]],["app",{"sourceInterval":[619,726]},"NativeFunction_withType",[]]]],"Type_optional":["define",{"sourceInterval":[780,806]},null,[],["seq",{"sourceInterval":[780,795]},["app",{"sourceInterval":[780,791]},"typeLiteral",[]],["terminal",{"sourceInterval":[792,795]},"?"]]],"Type_required":["define",{"sourceInterval":[818,840]},null,[],["app",{"sourceInterval":[818,829]},"typeLiteral",[]]],"Type_map":["define",{"sourceInterval":[852,917]},null,[],["seq",{"sourceInterval":[852,911]},["terminal",{"sourceInterval":[852,857]},"map"],["terminal",{"sourceInterval":[858,861]},"<"],["app",{"sourceInterval":[862,873]},"typeLiteral",[]],["opt",{"sourceInterval":[874,882]},["seq",{"sourceInterval":[875,880]},["app",{"sourceInterval":[875,877]},"as",[]],["app",{"sourceInterval":[878,880]},"id",[]]]],["terminal",{"sourceInterval":[883,886]},","],["app",{"sourceInterval":[887,898]},"typeLiteral",[]],["opt",{"sourceInterval":[899,907]},["seq",{"sourceInterval":[900,905]},["app",{"sourceInterval":[900,902]},"as",[]],["app",{"sourceInterval":[903,905]},"id",[]]]],["terminal",{"sourceInterval":[908,911]},">"]]],"Type_bounced":["define",{"sourceInterval":[929,968]},null,[],["seq",{"sourceInterval":[929,958]},["terminal",{"sourceInterval":[929,938]},"bounced"],["terminal",{"sourceInterval":[939,942]},"<"],["app",{"sourceInterval":[943,954]},"typeLiteral",[]],["terminal",{"sourceInterval":[955,958]},">"]]],"Type":["define",{"sourceInterval":[773,968]},null,[],["alt",{"sourceInterval":[780,968]},["app",{"sourceInterval":[780,795]},"Type_optional",[]],["app",{"sourceInterval":[818,829]},"Type_required",[]],["app",{"sourceInterval":[852,911]},"Type_map",[]],["app",{"sourceInterval":[929,958]},"Type_bounced",[]]]],"Field_default":["define",{"sourceInterval":[981,1006]},null,[],["seq",{"sourceInterval":[981,996]},["app",{"sourceInterval":[981,983]},"id",[]],["terminal",{"sourceInterval":[984,987]},":"],["app",{"sourceInterval":[988,992]},"Type",[]],["terminal",{"sourceInterval":[993,996]},";"]]],"Field_defaultWithInit":["define",{"sourceInterval":[1019,1067]},null,[],["seq",{"sourceInterval":[1019,1049]},["app",{"sourceInterval":[1019,1021]},"id",[]],["terminal",{"sourceInterval":[1022,1025]},":"],["app",{"sourceInterval":[1026,1030]},"Type",[]],["terminal",{"sourceInterval":[1031,1034]},"="],["app",{"sourceInterval":[1035,1045]},"Expression",[]],["terminal",{"sourceInterval":[1046,1049]},";"]]],"Field_withSerialization":["define",{"sourceInterval":[1080,1121]},null,[],["seq",{"sourceInterval":[1080,1101]},["app",{"sourceInterval":[1080,1082]},"id",[]],["terminal",{"sourceInterval":[1083,1086]},":"],["app",{"sourceInterval":[1087,1091]},"Type",[]],["app",{"sourceInterval":[1092,1094]},"as",[]],["app",{"sourceInterval":[1095,1097]},"id",[]],["terminal",{"sourceInterval":[1098,1101]},";"]]],"Field_withSerializationAndInit":["define",{"sourceInterval":[1134,1197]},null,[],["seq",{"sourceInterval":[1134,1170]},["app",{"sourceInterval":[1134,1136]},"id",[]],["terminal",{"sourceInterval":[1137,1140]},":"],["app",{"sourceInterval":[1141,1145]},"Type",[]],["app",{"sourceInterval":[1146,1148]},"as",[]],["app",{"sourceInterval":[1149,1151]},"id",[]],["terminal",{"sourceInterval":[1152,1155]},"="],["app",{"sourceInterval":[1156,1166]},"Expression",[]],["terminal",{"sourceInterval":[1167,1170]},";"]]],"Field":["define",{"sourceInterval":[973,1197]},null,[],["alt",{"sourceInterval":[981,1197]},["app",{"sourceInterval":[981,996]},"Field_default",[]],["app",{"sourceInterval":[1019,1049]},"Field_defaultWithInit",[]],["app",{"sourceInterval":[1080,1101]},"Field_withSerialization",[]],["app",{"sourceInterval":[1134,1170]},"Field_withSerializationAndInit",[]]]],"ConstantAttribute_virtual":["define",{"sourceInterval":[1243,1263]},null,[],["app",{"sourceInterval":[1243,1250]},"virtual",[]]],"ConstantAttribute_override":["define",{"sourceInterval":[1288,1309]},null,[],["app",{"sourceInterval":[1288,1296]},"override",[]]],"ConstantAttribute_abstract":["define",{"sourceInterval":[1334,1355]},null,[],["app",{"sourceInterval":[1334,1342]},"abstract",[]]],"ConstantAttribute":["define",{"sourceInterval":[1223,1355]},null,[],["alt",{"sourceInterval":[1243,1355]},["app",{"sourceInterval":[1243,1250]},"ConstantAttribute_virtual",[]],["app",{"sourceInterval":[1288,1296]},"ConstantAttribute_override",[]],["app",{"sourceInterval":[1334,1342]},"ConstantAttribute_abstract",[]]]],"Constant_withValue":["define",{"sourceInterval":[1371,1443]},null,[],["seq",{"sourceInterval":[1371,1431]},["star",{"sourceInterval":[1371,1389]},["app",{"sourceInterval":[1371,1388]},"ConstantAttribute",[]]],["not",{"sourceInterval":[1390,1394]},["app",{"sourceInterval":[1391,1394]},"fun",[]]],["app",{"sourceInterval":[1395,1400]},"const",[]],["app",{"sourceInterval":[1401,1403]},"id",[]],["terminal",{"sourceInterval":[1404,1407]},":"],["app",{"sourceInterval":[1408,1412]},"Type",[]],["terminal",{"sourceInterval":[1413,1416]},"="],["app",{"sourceInterval":[1417,1427]},"Expression",[]],["terminal",{"sourceInterval":[1428,1431]},";"]]],"Constant_withEmpty":["define",{"sourceInterval":[1459,1531]},null,[],["seq",{"sourceInterval":[1459,1504]},["star",{"sourceInterval":[1459,1477]},["app",{"sourceInterval":[1459,1476]},"ConstantAttribute",[]]],["not",{"sourceInterval":[1478,1482]},["app",{"sourceInterval":[1479,1482]},"fun",[]]],["app",{"sourceInterval":[1483,1488]},"const",[]],["app",{"sourceInterval":[1489,1491]},"id",[]],["terminal",{"sourceInterval":[1492,1495]},":"],["app",{"sourceInterval":[1496,1500]},"Type",[]],["terminal",{"sourceInterval":[1501,1504]},";"]]],"Constant":["define",{"sourceInterval":[1360,1531]},null,[],["alt",{"sourceInterval":[1371,1531]},["app",{"sourceInterval":[1371,1431]},"Constant_withValue",[]],["app",{"sourceInterval":[1459,1504]},"Constant_withEmpty",[]]]],"Struct_originary":["define",{"sourceInterval":[1560,1612]},null,[],["seq",{"sourceInterval":[1560,1600]},["terminal",{"sourceInterval":[1560,1568]},"struct"],["app",{"sourceInterval":[1569,1580]},"typeLiteral",[]],["terminal",{"sourceInterval":[1581,1584]},"{"],["star",{"sourceInterval":[1585,1596]},["app",{"sourceInterval":[1585,1595]},"StructBody",[]]],["terminal",{"sourceInterval":[1597,1600]},"}"]]],"Struct_message":["define",{"sourceInterval":[1626,1677]},null,[],["seq",{"sourceInterval":[1626,1667]},["terminal",{"sourceInterval":[1626,1635]},"message"],["app",{"sourceInterval":[1636,1647]},"typeLiteral",[]],["terminal",{"sourceInterval":[1648,1651]},"{"],["star",{"sourceInterval":[1652,1663]},["app",{"sourceInterval":[1652,1662]},"StructBody",[]]],["terminal",{"sourceInterval":[1664,1667]},"}"]]],"Struct_messageWithId":["define",{"sourceInterval":[1691,1771]},null,[],["seq",{"sourceInterval":[1691,1755]},["terminal",{"sourceInterval":[1691,1700]},"message"],["terminal",{"sourceInterval":[1701,1704]},"("],["app",{"sourceInterval":[1705,1719]},"integerLiteral",[]],["terminal",{"sourceInterval":[1720,1723]},")"],["app",{"sourceInterval":[1724,1735]},"typeLiteral",[]],["terminal",{"sourceInterval":[1736,1739]},"{"],["star",{"sourceInterval":[1740,1751]},["app",{"sourceInterval":[1740,1750]},"StructBody",[]]],["terminal",{"sourceInterval":[1752,1755]},"}"]]],"Struct":["define",{"sourceInterval":[1551,1771]},null,[],["alt",{"sourceInterval":[1560,1771]},["app",{"sourceInterval":[1560,1600]},"Struct_originary",[]],["app",{"sourceInterval":[1626,1667]},"Struct_message",[]],["app",{"sourceInterval":[1691,1755]},"Struct_messageWithId",[]]]],"StructBody":["define",{"sourceInterval":[1776,1794]},null,[],["app",{"sourceInterval":[1789,1794]},"Field",[]]],"Contract_simple":["define",{"sourceInterval":[1827,1888]},null,[],["seq",{"sourceInterval":[1827,1879]},["star",{"sourceInterval":[1827,1845]},["app",{"sourceInterval":[1827,1844]},"ContractAttribute",[]]],["app",{"sourceInterval":[1846,1854]},"contract",[]],["app",{"sourceInterval":[1855,1857]},"id",[]],["terminal",{"sourceInterval":[1858,1861]},"{"],["star",{"sourceInterval":[1862,1875]},["app",{"sourceInterval":[1862,1874]},"ContractBody",[]]],["terminal",{"sourceInterval":[1876,1879]},"}"]]],"Contract_withTraits":["define",{"sourceInterval":[1904,1989]},null,[],["seq",{"sourceInterval":[1904,1976]},["star",{"sourceInterval":[1904,1922]},["app",{"sourceInterval":[1904,1921]},"ContractAttribute",[]]],["app",{"sourceInterval":[1923,1931]},"contract",[]],["app",{"sourceInterval":[1932,1934]},"id",[]],["app",{"sourceInterval":[1935,1939]},"with",[]],["app",{"sourceInterval":[1940,1954]},"ListOf",[["app",{"sourceInterval":[1947,1949]},"id",[]],["terminal",{"sourceInterval":[1950,1953]},","]]],["terminal",{"sourceInterval":[1955,1958]},"{"],["star",{"sourceInterval":[1959,1972]},["app",{"sourceInterval":[1959,1971]},"ContractBody",[]]],["terminal",{"sourceInterval":[1973,1976]},"}"]]],"Contract":["define",{"sourceInterval":[1816,1989]},null,[],["alt",{"sourceInterval":[1827,1989]},["app",{"sourceInterval":[1827,1879]},"Contract_simple",[]],["app",{"sourceInterval":[1904,1976]},"Contract_withTraits",[]]]],"ContractInit":["define",{"sourceInterval":[1994,2066]},null,[],["seq",{"sourceInterval":[2009,2066]},["terminal",{"sourceInterval":[2009,2015]},"init"],["terminal",{"sourceInterval":[2016,2019]},"("],["app",{"sourceInterval":[2020,2043]},"ListOf",[["app",{"sourceInterval":[2027,2038]},"FunctionArg",[]],["terminal",{"sourceInterval":[2039,2042]},","]]],["terminal",{"sourceInterval":[2044,2047]},")"],["terminal",{"sourceInterval":[2048,2051]},"{"],["star",{"sourceInterval":[2052,2062]},["app",{"sourceInterval":[2052,2061]},"Statement",[]]],["terminal",{"sourceInterval":[2063,2066]},"}"]]],"ContractBody":["define",{"sourceInterval":[2071,2214]},null,[],["alt",{"sourceInterval":[2086,2214]},["app",{"sourceInterval":[2086,2091]},"Field",[]],["app",{"sourceInterval":[2111,2123]},"ContractInit",[]],["app",{"sourceInterval":[2143,2158]},"ReceiveFunction",[]],["app",{"sourceInterval":[2178,2186]},"Function",[]],["app",{"sourceInterval":[2206,2214]},"Constant",[]]]],"Trait_originary":["define",{"sourceInterval":[2245,2303]},null,[],["seq",{"sourceInterval":[2245,2291]},["star",{"sourceInterval":[2245,2263]},["app",{"sourceInterval":[2245,2262]},"ContractAttribute",[]]],["app",{"sourceInterval":[2264,2269]},"trait",[]],["app",{"sourceInterval":[2270,2272]},"id",[]],["terminal",{"sourceInterval":[2273,2276]},"{"],["star",{"sourceInterval":[2277,2287]},["app",{"sourceInterval":[2277,2286]},"TraitBody",[]]],["terminal",{"sourceInterval":[2288,2291]},"}"]]],"Trait_withTraits":["define",{"sourceInterval":[2316,2395]},null,[],["seq",{"sourceInterval":[2316,2382]},["star",{"sourceInterval":[2316,2334]},["app",{"sourceInterval":[2316,2333]},"ContractAttribute",[]]],["app",{"sourceInterval":[2335,2340]},"trait",[]],["app",{"sourceInterval":[2341,2343]},"id",[]],["app",{"sourceInterval":[2344,2348]},"with",[]],["app",{"sourceInterval":[2349,2363]},"ListOf",[["app",{"sourceInterval":[2356,2358]},"id",[]],["terminal",{"sourceInterval":[2359,2362]},","]]],["terminal",{"sourceInterval":[2364,2367]},"{"],["star",{"sourceInterval":[2368,2378]},["app",{"sourceInterval":[2368,2377]},"TraitBody",[]]],["terminal",{"sourceInterval":[2379,2382]},"}"]]],"Trait":["define",{"sourceInterval":[2237,2395]},null,[],["alt",{"sourceInterval":[2245,2395]},["app",{"sourceInterval":[2245,2291]},"Trait_originary",[]],["app",{"sourceInterval":[2316,2382]},"Trait_withTraits",[]]]],"TraitBody":["define",{"sourceInterval":[2400,2499]},null,[],["alt",{"sourceInterval":[2412,2499]},["app",{"sourceInterval":[2412,2417]},"Field",[]],["app",{"sourceInterval":[2434,2449]},"ReceiveFunction",[]],["app",{"sourceInterval":[2466,2474]},"Function",[]],["app",{"sourceInterval":[2491,2499]},"Constant",[]]]],"ContractAttribute_interface":["define",{"sourceInterval":[2552,2598]},null,[],["seq",{"sourceInterval":[2552,2586]},["terminal",{"sourceInterval":[2552,2564]},"@interface"],["terminal",{"sourceInterval":[2565,2568]},"("],["app",{"sourceInterval":[2569,2582]},"stringLiteral",[]],["terminal",{"sourceInterval":[2583,2586]},")"]]],"ContractAttribute":["define",{"sourceInterval":[2532,2598]},null,[],["app",{"sourceInterval":[2552,2598]},"ContractAttribute_interface",[]]],"FunctionAttribute_getter":["define",{"sourceInterval":[2640,2658]},null,[],["terminal",{"sourceInterval":[2640,2645]},"get"]],"FunctionAttribute_mutates":["define",{"sourceInterval":[2683,2702]},null,[],["app",{"sourceInterval":[2683,2690]},"mutates",[]]],"FunctionAttribute_extends":["define",{"sourceInterval":[2727,2746]},null,[],["app",{"sourceInterval":[2727,2734]},"extends",[]]],"FunctionAttribute_virtual":["define",{"sourceInterval":[2771,2790]},null,[],["app",{"sourceInterval":[2771,2778]},"virtual",[]]],"FunctionAttribute_override":["define",{"sourceInterval":[2815,2835]},null,[],["app",{"sourceInterval":[2815,2823]},"override",[]]],"FunctionAttribute_inline":["define",{"sourceInterval":[2860,2878]},null,[],["app",{"sourceInterval":[2860,2866]},"inline",[]]],"FunctionAttribute_abstract":["define",{"sourceInterval":[2903,2923]},null,[],["app",{"sourceInterval":[2903,2911]},"abstract",[]]],"FunctionAttribute":["define",{"sourceInterval":[2620,2923]},null,[],["alt",{"sourceInterval":[2640,2923]},["app",{"sourceInterval":[2640,2645]},"FunctionAttribute_getter",[]],["app",{"sourceInterval":[2683,2690]},"FunctionAttribute_mutates",[]],["app",{"sourceInterval":[2727,2734]},"FunctionAttribute_extends",[]],["app",{"sourceInterval":[2771,2778]},"FunctionAttribute_virtual",[]],["app",{"sourceInterval":[2815,2823]},"FunctionAttribute_override",[]],["app",{"sourceInterval":[2860,2866]},"FunctionAttribute_inline",[]],["app",{"sourceInterval":[2903,2911]},"FunctionAttribute_abstract",[]]]],"Function_withVoid":["define",{"sourceInterval":[2939,3031]},null,[],["seq",{"sourceInterval":[2939,3020]},["star",{"sourceInterval":[2939,2957]},["app",{"sourceInterval":[2939,2956]},"FunctionAttribute",[]]],["app",{"sourceInterval":[2958,2961]},"fun",[]],["app",{"sourceInterval":[2962,2964]},"id",[]],["terminal",{"sourceInterval":[2965,2968]},"("],["app",{"sourceInterval":[2969,2992]},"ListOf",[["app",{"sourceInterval":[2976,2987]},"FunctionArg",[]],["terminal",{"sourceInterval":[2988,2991]},","]]],["opt",{"sourceInterval":[2993,2997]},["terminal",{"sourceInterval":[2993,2996]},","]],["terminal",{"sourceInterval":[2998,3001]},")"],["terminal",{"sourceInterval":[3002,3005]},"{"],["star",{"sourceInterval":[3006,3016]},["app",{"sourceInterval":[3006,3015]},"Statement",[]]],["terminal",{"sourceInterval":[3017,3020]},"}"]]],"Function_withType":["define",{"sourceInterval":[3047,3148]},null,[],["seq",{"sourceInterval":[3047,3137]},["star",{"sourceInterval":[3047,3065]},["app",{"sourceInterval":[3047,3064]},"FunctionAttribute",[]]],["app",{"sourceInterval":[3066,3069]},"fun",[]],["app",{"sourceInterval":[3070,3072]},"id",[]],["terminal",{"sourceInterval":[3073,3076]},"("],["app",{"sourceInterval":[3077,3100]},"ListOf",[["app",{"sourceInterval":[3084,3095]},"FunctionArg",[]],["terminal",{"sourceInterval":[3096,3099]},","]]],["opt",{"sourceInterval":[3101,3105]},["terminal",{"sourceInterval":[3101,3104]},","]],["terminal",{"sourceInterval":[3106,3109]},")"],["terminal",{"sourceInterval":[3110,3113]},":"],["app",{"sourceInterval":[3114,3118]},"Type",[]],["terminal",{"sourceInterval":[3119,3122]},"{"],["star",{"sourceInterval":[3123,3133]},["app",{"sourceInterval":[3123,3132]},"Statement",[]]],["terminal",{"sourceInterval":[3134,3137]},"}"]]],"Function_abstractVoid":["define",{"sourceInterval":[3164,3245]},null,[],["seq",{"sourceInterval":[3164,3230]},["star",{"sourceInterval":[3164,3182]},["app",{"sourceInterval":[3164,3181]},"FunctionAttribute",[]]],["app",{"sourceInterval":[3183,3186]},"fun",[]],["app",{"sourceInterval":[3187,3189]},"id",[]],["terminal",{"sourceInterval":[3190,3193]},"("],["app",{"sourceInterval":[3194,3217]},"ListOf",[["app",{"sourceInterval":[3201,3212]},"FunctionArg",[]],["terminal",{"sourceInterval":[3213,3216]},","]]],["opt",{"sourceInterval":[3218,3222]},["terminal",{"sourceInterval":[3218,3221]},","]],["terminal",{"sourceInterval":[3223,3226]},")"],["terminal",{"sourceInterval":[3227,3230]},";"]]],"Function_abstractType":["define",{"sourceInterval":[3261,3351]},null,[],["seq",{"sourceInterval":[3261,3336]},["star",{"sourceInterval":[3261,3279]},["app",{"sourceInterval":[3261,3278]},"FunctionAttribute",[]]],["app",{"sourceInterval":[3280,3283]},"fun",[]],["app",{"sourceInterval":[3284,3286]},"id",[]],["terminal",{"sourceInterval":[3287,3290]},"("],["app",{"sourceInterval":[3291,3314]},"ListOf",[["app",{"sourceInterval":[3298,3309]},"FunctionArg",[]],["terminal",{"sourceInterval":[3310,3313]},","]]],["opt",{"sourceInterval":[3315,3319]},["terminal",{"sourceInterval":[3315,3318]},","]],["terminal",{"sourceInterval":[3320,3323]},")"],["terminal",{"sourceInterval":[3324,3327]},":"],["app",{"sourceInterval":[3328,3332]},"Type",[]],["terminal",{"sourceInterval":[3333,3336]},";"]]],"Function":["define",{"sourceInterval":[2928,3351]},null,[],["alt",{"sourceInterval":[2939,3351]},["app",{"sourceInterval":[2939,3020]},"Function_withVoid",[]],["app",{"sourceInterval":[3047,3137]},"Function_withType",[]],["app",{"sourceInterval":[3164,3230]},"Function_abstractVoid",[]],["app",{"sourceInterval":[3261,3336]},"Function_abstractType",[]]]],"FunctionArg":["define",{"sourceInterval":[3356,3381]},null,[],["seq",{"sourceInterval":[3370,3381]},["app",{"sourceInterval":[3370,3372]},"id",[]],["terminal",{"sourceInterval":[3373,3376]},":"],["app",{"sourceInterval":[3377,3381]},"Type",[]]]],"ReceiveFunction_simple":["define",{"sourceInterval":[3409,3466]},null,[],["seq",{"sourceInterval":[3409,3457]},["terminal",{"sourceInterval":[3409,3418]},"receive"],["terminal",{"sourceInterval":[3419,3422]},"("],["app",{"sourceInterval":[3423,3434]},"FunctionArg",[]],["terminal",{"sourceInterval":[3435,3438]},")"],["terminal",{"sourceInterval":[3439,3442]},"{"],["star",{"sourceInterval":[3443,3453]},["app",{"sourceInterval":[3443,3452]},"Statement",[]]],["terminal",{"sourceInterval":[3454,3457]},"}"]]],"ReceiveFunction_empty":["define",{"sourceInterval":[3489,3533]},null,[],["seq",{"sourceInterval":[3489,3525]},["terminal",{"sourceInterval":[3489,3498]},"receive"],["terminal",{"sourceInterval":[3499,3502]},"("],["terminal",{"sourceInterval":[3503,3506]},")"],["terminal",{"sourceInterval":[3507,3510]},"{"],["star",{"sourceInterval":[3511,3521]},["app",{"sourceInterval":[3511,3520]},"Statement",[]]],["terminal",{"sourceInterval":[3522,3525]},"}"]]],"ReceiveFunction_comment":["define",{"sourceInterval":[3556,3616]},null,[],["seq",{"sourceInterval":[3556,3606]},["terminal",{"sourceInterval":[3556,3565]},"receive"],["terminal",{"sourceInterval":[3566,3569]},"("],["app",{"sourceInterval":[3570,3583]},"stringLiteral",[]],["terminal",{"sourceInterval":[3584,3587]},")"],["terminal",{"sourceInterval":[3588,3591]},"{"],["star",{"sourceInterval":[3592,3602]},["app",{"sourceInterval":[3592,3601]},"Statement",[]]],["terminal",{"sourceInterval":[3603,3606]},"}"]]],"ReceiveFunction_bounced":["define",{"sourceInterval":[3639,3697]},null,[],["seq",{"sourceInterval":[3639,3687]},["terminal",{"sourceInterval":[3639,3648]},"bounced"],["terminal",{"sourceInterval":[3649,3652]},"("],["app",{"sourceInterval":[3653,3664]},"FunctionArg",[]],["terminal",{"sourceInterval":[3665,3668]},")"],["terminal",{"sourceInterval":[3669,3672]},"{"],["star",{"sourceInterval":[3673,3683]},["app",{"sourceInterval":[3673,3682]},"Statement",[]]],["terminal",{"sourceInterval":[3684,3687]},"}"]]],"ReceiveFunction_externalSimple":["define",{"sourceInterval":[3720,3786]},null,[],["seq",{"sourceInterval":[3720,3769]},["terminal",{"sourceInterval":[3720,3730]},"external"],["terminal",{"sourceInterval":[3731,3734]},"("],["app",{"sourceInterval":[3735,3746]},"FunctionArg",[]],["terminal",{"sourceInterval":[3747,3750]},")"],["terminal",{"sourceInterval":[3751,3754]},"{"],["star",{"sourceInterval":[3755,3765]},["app",{"sourceInterval":[3755,3764]},"Statement",[]]],["terminal",{"sourceInterval":[3766,3769]},"}"]]],"ReceiveFunction_externalComment":["define",{"sourceInterval":[3809,3878]},null,[],["seq",{"sourceInterval":[3809,3860]},["terminal",{"sourceInterval":[3809,3819]},"external"],["terminal",{"sourceInterval":[3820,3823]},"("],["app",{"sourceInterval":[3824,3837]},"stringLiteral",[]],["terminal",{"sourceInterval":[3838,3841]},")"],["terminal",{"sourceInterval":[3842,3845]},"{"],["star",{"sourceInterval":[3846,3856]},["app",{"sourceInterval":[3846,3855]},"Statement",[]]],["terminal",{"sourceInterval":[3857,3860]},"}"]]],"ReceiveFunction_externalEmpty":["define",{"sourceInterval":[3901,3954]},null,[],["seq",{"sourceInterval":[3901,3938]},["terminal",{"sourceInterval":[3901,3911]},"external"],["terminal",{"sourceInterval":[3912,3915]},"("],["terminal",{"sourceInterval":[3916,3919]},")"],["terminal",{"sourceInterval":[3920,3923]},"{"],["star",{"sourceInterval":[3924,3934]},["app",{"sourceInterval":[3924,3933]},"Statement",[]]],["terminal",{"sourceInterval":[3935,3938]},"}"]]],"ReceiveFunction":["define",{"sourceInterval":[3391,3954]},null,[],["alt",{"sourceInterval":[3409,3954]},["app",{"sourceInterval":[3409,3457]},"ReceiveFunction_simple",[]],["app",{"sourceInterval":[3489,3525]},"ReceiveFunction_empty",[]],["app",{"sourceInterval":[3556,3606]},"ReceiveFunction_comment",[]],["app",{"sourceInterval":[3639,3687]},"ReceiveFunction_bounced",[]],["app",{"sourceInterval":[3720,3769]},"ReceiveFunction_externalSimple",[]],["app",{"sourceInterval":[3809,3860]},"ReceiveFunction_externalComment",[]],["app",{"sourceInterval":[3901,3938]},"ReceiveFunction_externalEmpty",[]]]],"Statement":["define",{"sourceInterval":[3978,4303]},null,[],["alt",{"sourceInterval":[3990,4303]},["app",{"sourceInterval":[3990,4002]},"StatementLet",[]],["app",{"sourceInterval":[4019,4033]},"StatementBlock",[]],["app",{"sourceInterval":[4050,4065]},"StatementReturn",[]],["app",{"sourceInterval":[4082,4101]},"StatementExpression",[]],["app",{"sourceInterval":[4118,4133]},"StatementAssign",[]],["app",{"sourceInterval":[4150,4174]},"StatementAugmentedAssign",[]],["app",{"sourceInterval":[4191,4209]},"StatementCondition",[]],["app",{"sourceInterval":[4226,4240]},"StatementWhile",[]],["app",{"sourceInterval":[4257,4272]},"StatementRepeat",[]],["app",{"sourceInterval":[4289,4303]},"StatementUntil",[]]]],"StatementBlock":["define",{"sourceInterval":[4308,4343]},null,[],["seq",{"sourceInterval":[4325,4343]},["terminal",{"sourceInterval":[4325,4328]},"{"],["star",{"sourceInterval":[4329,4339]},["app",{"sourceInterval":[4329,4338]},"Statement",[]]],["terminal",{"sourceInterval":[4340,4343]},"}"]]],"StatementLet":["define",{"sourceInterval":[4348,4397]},null,[],["seq",{"sourceInterval":[4363,4397]},["app",{"sourceInterval":[4363,4366]},"let",[]],["app",{"sourceInterval":[4367,4369]},"id",[]],["terminal",{"sourceInterval":[4370,4373]},":"],["app",{"sourceInterval":[4374,4378]},"Type",[]],["terminal",{"sourceInterval":[4379,4382]},"="],["app",{"sourceInterval":[4383,4393]},"Expression",[]],["terminal",{"sourceInterval":[4394,4397]},";"]]],"StatementReturn_withExpression":["define",{"sourceInterval":[4420,4458]},null,[],["seq",{"sourceInterval":[4420,4441]},["app",{"sourceInterval":[4420,4426]},"return",[]],["app",{"sourceInterval":[4427,4437]},"Expression",[]],["terminal",{"sourceInterval":[4438,4441]},";"]]],"StatementReturn_withoutExpression":["define",{"sourceInterval":[4481,4511]},null,[],["seq",{"sourceInterval":[4481,4491]},["app",{"sourceInterval":[4481,4487]},"return",[]],["terminal",{"sourceInterval":[4488,4491]},";"]]],"StatementReturn":["define",{"sourceInterval":[4402,4511]},null,[],["alt",{"sourceInterval":[4420,4511]},["app",{"sourceInterval":[4420,4441]},"StatementReturn_withExpression",[]],["app",{"sourceInterval":[4481,4491]},"StatementReturn_withoutExpression",[]]]],"StatementExpression":["define",{"sourceInterval":[4520,4556]},null,[],["seq",{"sourceInterval":[4542,4556]},["app",{"sourceInterval":[4542,4552]},"Expression",[]],["terminal",{"sourceInterval":[4553,4556]},";"]]],"StatementAssign":["define",{"sourceInterval":[4561,4604]},null,[],["seq",{"sourceInterval":[4579,4604]},["app",{"sourceInterval":[4579,4585]},"LValue",[]],["terminal",{"sourceInterval":[4586,4589]},"="],["app",{"sourceInterval":[4590,4600]},"Expression",[]],["terminal",{"sourceInterval":[4601,4604]},";"]]],"StatementAugmentedAssign":["define",{"sourceInterval":[4609,4899]},null,[],["alt",{"sourceInterval":[4636,4899]},["app",{"sourceInterval":[4636,4663]},"StatementAugmentedAssignAdd",[]],["app",{"sourceInterval":[4695,4722]},"StatementAugmentedAssignSub",[]],["app",{"sourceInterval":[4754,4781]},"StatementAugmentedAssignMul",[]],["app",{"sourceInterval":[4813,4840]},"StatementAugmentedAssignDiv",[]],["app",{"sourceInterval":[4872,4899]},"StatementAugmentedAssignRem",[]]]],"StatementAugmentedAssignAdd":["define",{"sourceInterval":[4904,4960]},null,[],["seq",{"sourceInterval":[4934,4960]},["app",{"sourceInterval":[4934,4940]},"LValue",[]],["terminal",{"sourceInterval":[4941,4945]},"+="],["app",{"sourceInterval":[4946,4956]},"Expression",[]],["terminal",{"sourceInterval":[4957,4960]},";"]]],"StatementAugmentedAssignSub":["define",{"sourceInterval":[4965,5021]},null,[],["seq",{"sourceInterval":[4995,5021]},["app",{"sourceInterval":[4995,5001]},"LValue",[]],["terminal",{"sourceInterval":[5002,5006]},"-="],["app",{"sourceInterval":[5007,5017]},"Expression",[]],["terminal",{"sourceInterval":[5018,5021]},";"]]],"StatementAugmentedAssignMul":["define",{"sourceInterval":[5026,5082]},null,[],["seq",{"sourceInterval":[5056,5082]},["app",{"sourceInterval":[5056,5062]},"LValue",[]],["terminal",{"sourceInterval":[5063,5067]},"*="],["app",{"sourceInterval":[5068,5078]},"Expression",[]],["terminal",{"sourceInterval":[5079,5082]},";"]]],"StatementAugmentedAssignDiv":["define",{"sourceInterval":[5087,5143]},null,[],["seq",{"sourceInterval":[5117,5143]},["app",{"sourceInterval":[5117,5123]},"LValue",[]],["terminal",{"sourceInterval":[5124,5128]},"/="],["app",{"sourceInterval":[5129,5139]},"Expression",[]],["terminal",{"sourceInterval":[5140,5143]},";"]]],"StatementAugmentedAssignRem":["define",{"sourceInterval":[5148,5204]},null,[],["seq",{"sourceInterval":[5178,5204]},["app",{"sourceInterval":[5178,5184]},"LValue",[]],["terminal",{"sourceInterval":[5185,5189]},"%="],["app",{"sourceInterval":[5190,5200]},"Expression",[]],["terminal",{"sourceInterval":[5201,5204]},";"]]],"StatementCondition_simple":["define",{"sourceInterval":[5230,5277]},null,[],["seq",{"sourceInterval":[5230,5268]},["app",{"sourceInterval":[5230,5232]},"if",[]],["app",{"sourceInterval":[5233,5243]},"Expression",[]],["terminal",{"sourceInterval":[5244,5247]},"{"],["star",{"sourceInterval":[5248,5258]},["app",{"sourceInterval":[5248,5257]},"Statement",[]]],["terminal",{"sourceInterval":[5259,5262]},"}"],["not",{"sourceInterval":[5263,5268]},["app",{"sourceInterval":[5264,5268]},"else",[]]]]],"StatementCondition_withElse":["define",{"sourceInterval":[5303,5370]},null,[],["seq",{"sourceInterval":[5303,5359]},["app",{"sourceInterval":[5303,5305]},"if",[]],["app",{"sourceInterval":[5306,5316]},"Expression",[]],["terminal",{"sourceInterval":[5317,5320]},"{"],["star",{"sourceInterval":[5321,5331]},["app",{"sourceInterval":[5321,5330]},"Statement",[]]],["terminal",{"sourceInterval":[5332,5335]},"}"],["app",{"sourceInterval":[5336,5340]},"else",[]],["terminal",{"sourceInterval":[5341,5344]},"{"],["star",{"sourceInterval":[5345,5355]},["app",{"sourceInterval":[5345,5354]},"Statement",[]]],["terminal",{"sourceInterval":[5356,5359]},"}"]]],"StatementCondition_withElseIf":["define",{"sourceInterval":[5396,5465]},null,[],["seq",{"sourceInterval":[5396,5452]},["app",{"sourceInterval":[5396,5398]},"if",[]],["app",{"sourceInterval":[5399,5409]},"Expression",[]],["terminal",{"sourceInterval":[5410,5413]},"{"],["star",{"sourceInterval":[5414,5424]},["app",{"sourceInterval":[5414,5423]},"Statement",[]]],["terminal",{"sourceInterval":[5425,5428]},"}"],["app",{"sourceInterval":[5429,5433]},"else",[]],["app",{"sourceInterval":[5434,5452]},"StatementCondition",[]]]],"StatementCondition":["define",{"sourceInterval":[5209,5465]},null,[],["alt",{"sourceInterval":[5230,5465]},["app",{"sourceInterval":[5230,5268]},"StatementCondition_simple",[]],["app",{"sourceInterval":[5303,5359]},"StatementCondition_withElse",[]],["app",{"sourceInterval":[5396,5452]},"StatementCondition_withElseIf",[]]]],"StatementWhile":["define",{"sourceInterval":[5470,5530]},null,[],["seq",{"sourceInterval":[5487,5530]},["app",{"sourceInterval":[5487,5492]},"while",[]],["terminal",{"sourceInterval":[5493,5496]},"("],["app",{"sourceInterval":[5497,5507]},"Expression",[]],["terminal",{"sourceInterval":[5508,5511]},")"],["terminal",{"sourceInterval":[5512,5515]},"{"],["star",{"sourceInterval":[5516,5526]},["app",{"sourceInterval":[5516,5525]},"Statement",[]]],["terminal",{"sourceInterval":[5527,5530]},"}"]]],"StatementRepeat":["define",{"sourceInterval":[5535,5597]},null,[],["seq",{"sourceInterval":[5553,5597]},["app",{"sourceInterval":[5553,5559]},"repeat",[]],["terminal",{"sourceInterval":[5560,5563]},"("],["app",{"sourceInterval":[5564,5574]},"Expression",[]],["terminal",{"sourceInterval":[5575,5578]},")"],["terminal",{"sourceInterval":[5579,5582]},"{"],["star",{"sourceInterval":[5583,5593]},["app",{"sourceInterval":[5583,5592]},"Statement",[]]],["terminal",{"sourceInterval":[5594,5597]},"}"]]],"StatementUntil":["define",{"sourceInterval":[5602,5669]},null,[],["seq",{"sourceInterval":[5619,5669]},["app",{"sourceInterval":[5619,5621]},"do",[]],["terminal",{"sourceInterval":[5622,5625]},"{"],["star",{"sourceInterval":[5626,5636]},["app",{"sourceInterval":[5626,5635]},"Statement",[]]],["terminal",{"sourceInterval":[5637,5640]},"}"],["app",{"sourceInterval":[5641,5646]},"until",[]],["terminal",{"sourceInterval":[5647,5650]},"("],["app",{"sourceInterval":[5651,5661]},"Expression",[]],["terminal",{"sourceInterval":[5662,5665]},")"],["terminal",{"sourceInterval":[5666,5669]},";"]]],"LValue_more":["define",{"sourceInterval":[5699,5719]},null,[],["seq",{"sourceInterval":[5699,5712]},["app",{"sourceInterval":[5699,5701]},"id",[]],["terminal",{"sourceInterval":[5702,5705]},"."],["app",{"sourceInterval":[5706,5712]},"LValue",[]]]],"LValue_single":["define",{"sourceInterval":[5733,5744]},null,[],["app",{"sourceInterval":[5733,5735]},"id",[]]],"LValue":["define",{"sourceInterval":[5690,5744]},null,[],["alt",{"sourceInterval":[5699,5744]},["app",{"sourceInterval":[5699,5712]},"LValue_more",[]],["app",{"sourceInterval":[5733,5735]},"LValue_single",[]]]],"Expression":["define",{"sourceInterval":[5769,5803]},null,[],["app",{"sourceInterval":[5782,5803]},"ExpressionConditional",[]]],"ExpressionConditional_ternary":["define",{"sourceInterval":[5832,5897]},null,[],["seq",{"sourceInterval":[5832,5887]},["app",{"sourceInterval":[5832,5844]},"ExpressionOr",[]],["terminal",{"sourceInterval":[5845,5848]},"?"],["app",{"sourceInterval":[5849,5861]},"ExpressionOr",[]],["terminal",{"sourceInterval":[5862,5865]},":"],["app",{"sourceInterval":[5866,5887]},"ExpressionConditional",[]]]],"ExpressionConditional":["define",{"sourceInterval":[5808,5938]},null,[],["alt",{"sourceInterval":[5832,5938]},["app",{"sourceInterval":[5832,5887]},"ExpressionConditional_ternary",[]],["app",{"sourceInterval":[5926,5938]},"ExpressionOr",[]]]],"ExpressionOr_or":["define",{"sourceInterval":[5958,5994]},null,[],["seq",{"sourceInterval":[5958,5989]},["app",{"sourceInterval":[5958,5970]},"ExpressionOr",[]],["terminal",{"sourceInterval":[5971,5975]},"||"],["app",{"sourceInterval":[5976,5989]},"ExpressionAnd",[]]]],"ExpressionOr":["define",{"sourceInterval":[5943,6027]},null,[],["alt",{"sourceInterval":[5958,6027]},["app",{"sourceInterval":[5958,5989]},"ExpressionOr_or",[]],["app",{"sourceInterval":[6014,6027]},"ExpressionAnd",[]]]],"ExpressionAnd_and":["define",{"sourceInterval":[6048,6090]},null,[],["seq",{"sourceInterval":[6048,6084]},["app",{"sourceInterval":[6048,6061]},"ExpressionAnd",[]],["terminal",{"sourceInterval":[6062,6066]},"&&"],["app",{"sourceInterval":[6067,6084]},"ExpressionCompare",[]]]],"ExpressionAnd":["define",{"sourceInterval":[6032,6128]},null,[],["alt",{"sourceInterval":[6048,6128]},["app",{"sourceInterval":[6048,6084]},"ExpressionAnd_and",[]],["app",{"sourceInterval":[6111,6128]},"ExpressionCompare",[]]]],"ExpressionCompare_not":["define",{"sourceInterval":[6153,6198]},null,[],["seq",{"sourceInterval":[6153,6192]},["app",{"sourceInterval":[6153,6170]},"ExpressionCompare",[]],["terminal",{"sourceInterval":[6171,6175]},"!="],["app",{"sourceInterval":[6176,6192]},"ExpressionBinary",[]]]],"ExpressionCompare_eq":["define",{"sourceInterval":[6223,6267]},null,[],["seq",{"sourceInterval":[6223,6262]},["app",{"sourceInterval":[6223,6240]},"ExpressionCompare",[]],["terminal",{"sourceInterval":[6241,6245]},"=="],["app",{"sourceInterval":[6246,6262]},"ExpressionBinary",[]]]],"ExpressionCompare_gt":["define",{"sourceInterval":[6292,6335]},null,[],["seq",{"sourceInterval":[6292,6330]},["app",{"sourceInterval":[6292,6309]},"ExpressionCompare",[]],["terminal",{"sourceInterval":[6310,6313]},">"],["app",{"sourceInterval":[6314,6330]},"ExpressionBinary",[]]]],"ExpressionCompare_gte":["define",{"sourceInterval":[6360,6405]},null,[],["seq",{"sourceInterval":[6360,6399]},["app",{"sourceInterval":[6360,6377]},"ExpressionCompare",[]],["terminal",{"sourceInterval":[6378,6382]},">="],["app",{"sourceInterval":[6383,6399]},"ExpressionBinary",[]]]],"ExpressionCompare_lt":["define",{"sourceInterval":[6430,6473]},null,[],["seq",{"sourceInterval":[6430,6468]},["app",{"sourceInterval":[6430,6447]},"ExpressionCompare",[]],["terminal",{"sourceInterval":[6448,6451]},"<"],["app",{"sourceInterval":[6452,6468]},"ExpressionBinary",[]]]],"ExpressionCompare_lte":["define",{"sourceInterval":[6498,6543]},null,[],["seq",{"sourceInterval":[6498,6537]},["app",{"sourceInterval":[6498,6515]},"ExpressionCompare",[]],["terminal",{"sourceInterval":[6516,6520]},"<="],["app",{"sourceInterval":[6521,6537]},"ExpressionBinary",[]]]],"ExpressionCompare":["define",{"sourceInterval":[6133,6584]},null,[],["alt",{"sourceInterval":[6153,6584]},["app",{"sourceInterval":[6153,6192]},"ExpressionCompare_not",[]],["app",{"sourceInterval":[6223,6262]},"ExpressionCompare_eq",[]],["app",{"sourceInterval":[6292,6330]},"ExpressionCompare_gt",[]],["app",{"sourceInterval":[6360,6399]},"ExpressionCompare_gte",[]],["app",{"sourceInterval":[6430,6468]},"ExpressionCompare_lt",[]],["app",{"sourceInterval":[6498,6537]},"ExpressionCompare_lte",[]],["app",{"sourceInterval":[6568,6584]},"ExpressionBinary",[]]]],"ExpressionBinary_shr":["define",{"sourceInterval":[6608,6649]},null,[],["seq",{"sourceInterval":[6608,6643]},["app",{"sourceInterval":[6608,6624]},"ExpressionBinary",[]],["terminal",{"sourceInterval":[6625,6629]},">>"],["app",{"sourceInterval":[6630,6643]},"ExpressionAdd",[]]]],"ExpressionBinary_shl":["define",{"sourceInterval":[6672,6713]},null,[],["seq",{"sourceInterval":[6672,6707]},["app",{"sourceInterval":[6672,6688]},"ExpressionBinary",[]],["terminal",{"sourceInterval":[6689,6693]},"<<"],["app",{"sourceInterval":[6694,6707]},"ExpressionAdd",[]]]],"ExpressionBinary_bin_and":["define",{"sourceInterval":[6736,6780]},null,[],["seq",{"sourceInterval":[6736,6770]},["app",{"sourceInterval":[6736,6752]},"ExpressionBinary",[]],["terminal",{"sourceInterval":[6753,6756]},"&"],["app",{"sourceInterval":[6757,6770]},"ExpressionAdd",[]]]],"ExpressionBinary_bin_or":["define",{"sourceInterval":[6803,6846]},null,[],["seq",{"sourceInterval":[6803,6837]},["app",{"sourceInterval":[6803,6819]},"ExpressionBinary",[]],["terminal",{"sourceInterval":[6820,6823]},"|"],["app",{"sourceInterval":[6824,6837]},"ExpressionAdd",[]]]],"ExpressionBinary":["define",{"sourceInterval":[6589,6882]},null,[],["alt",{"sourceInterval":[6608,6882]},["app",{"sourceInterval":[6608,6643]},"ExpressionBinary_shr",[]],["app",{"sourceInterval":[6672,6707]},"ExpressionBinary_shl",[]],["app",{"sourceInterval":[6736,6770]},"ExpressionBinary_bin_and",[]],["app",{"sourceInterval":[6803,6837]},"ExpressionBinary_bin_or",[]],["app",{"sourceInterval":[6869,6882]},"ExpressionAdd",[]]]],"ExpressionAdd_add":["define",{"sourceInterval":[6903,6945]},null,[],["seq",{"sourceInterval":[6903,6939]},["app",{"sourceInterval":[6903,6916]},"ExpressionAdd",[]],["terminal",{"sourceInterval":[6917,6920]},"+"],["not",{"sourceInterval":[6921,6925]},["terminal",{"sourceInterval":[6922,6925]},"+"]],["app",{"sourceInterval":[6926,6939]},"ExpressionMul",[]]]],"ExpressionAdd_sub":["define",{"sourceInterval":[6966,7008]},null,[],["seq",{"sourceInterval":[6966,7002]},["app",{"sourceInterval":[6966,6979]},"ExpressionAdd",[]],["terminal",{"sourceInterval":[6980,6983]},"-"],["not",{"sourceInterval":[6984,6988]},["terminal",{"sourceInterval":[6985,6988]},"-"]],["app",{"sourceInterval":[6989,7002]},"ExpressionMul",[]]]],"ExpressionAdd":["define",{"sourceInterval":[6887,7042]},null,[],["alt",{"sourceInterval":[6903,7042]},["app",{"sourceInterval":[6903,6939]},"ExpressionAdd_add",[]],["app",{"sourceInterval":[6966,7002]},"ExpressionAdd_sub",[]],["app",{"sourceInterval":[7029,7042]},"ExpressionMul",[]]]],"ExpressionMul_mul":["define",{"sourceInterval":[7063,7102]},null,[],["seq",{"sourceInterval":[7063,7096]},["app",{"sourceInterval":[7063,7076]},"ExpressionMul",[]],["terminal",{"sourceInterval":[7077,7080]},"*"],["app",{"sourceInterval":[7081,7096]},"ExpressionUnary",[]]]],"ExpressionMul_div":["define",{"sourceInterval":[7123,7162]},null,[],["seq",{"sourceInterval":[7123,7156]},["app",{"sourceInterval":[7123,7136]},"ExpressionMul",[]],["terminal",{"sourceInterval":[7137,7140]},"/"],["app",{"sourceInterval":[7141,7156]},"ExpressionUnary",[]]]],"ExpressionMul_rem":["define",{"sourceInterval":[7183,7222]},null,[],["seq",{"sourceInterval":[7183,7216]},["app",{"sourceInterval":[7183,7196]},"ExpressionMul",[]],["terminal",{"sourceInterval":[7197,7200]},"%"],["app",{"sourceInterval":[7201,7216]},"ExpressionUnary",[]]]],"ExpressionMul":["define",{"sourceInterval":[7047,7258]},null,[],["alt",{"sourceInterval":[7063,7258]},["app",{"sourceInterval":[7063,7096]},"ExpressionMul_mul",[]],["app",{"sourceInterval":[7123,7156]},"ExpressionMul_div",[]],["app",{"sourceInterval":[7183,7216]},"ExpressionMul_rem",[]],["app",{"sourceInterval":[7243,7258]},"ExpressionUnary",[]]]],"ExpressionUnary_neg":["define",{"sourceInterval":[7281,7312]},null,[],["seq",{"sourceInterval":[7281,7306]},["terminal",{"sourceInterval":[7281,7284]},"-"],["app",{"sourceInterval":[7285,7306]},"ExpressionUnarySuffix",[]]]],"ExpressionUnary_add":["define",{"sourceInterval":[7335,7366]},null,[],["seq",{"sourceInterval":[7335,7360]},["terminal",{"sourceInterval":[7335,7338]},"+"],["app",{"sourceInterval":[7339,7360]},"ExpressionUnarySuffix",[]]]],"ExpressionUnary_not":["define",{"sourceInterval":[7389,7420]},null,[],["seq",{"sourceInterval":[7389,7414]},["terminal",{"sourceInterval":[7389,7392]},"!"],["app",{"sourceInterval":[7393,7414]},"ExpressionUnarySuffix",[]]]],"ExpressionUnary":["define",{"sourceInterval":[7263,7464]},null,[],["alt",{"sourceInterval":[7281,7464]},["app",{"sourceInterval":[7281,7306]},"ExpressionUnary_neg",[]],["app",{"sourceInterval":[7335,7360]},"ExpressionUnary_add",[]],["app",{"sourceInterval":[7389,7414]},"ExpressionUnary_not",[]],["app",{"sourceInterval":[7443,7464]},"ExpressionUnarySuffix",[]]]],"ExpressionUnarySuffix_notNull":["define",{"sourceInterval":[7493,7523]},null,[],["seq",{"sourceInterval":[7493,7513]},["app",{"sourceInterval":[7493,7508]},"ExpressionValue",[]],["terminal",{"sourceInterval":[7509,7513]},"!!"]]],"ExpressionUnarySuffix":["define",{"sourceInterval":[7469,7567]},null,[],["alt",{"sourceInterval":[7493,7567]},["app",{"sourceInterval":[7493,7513]},"ExpressionUnarySuffix_notNull",[]],["app",{"sourceInterval":[7552,7567]},"ExpressionValue",[]]]],"ExpressionBracket":["define",{"sourceInterval":[7572,7610]},null,[],["seq",{"sourceInterval":[7592,7610]},["terminal",{"sourceInterval":[7592,7595]},"("],["app",{"sourceInterval":[7596,7606]},"Expression",[]],["terminal",{"sourceInterval":[7607,7610]},")"]]],"ExpressionValue":["define",{"sourceInterval":[7642,8032]},null,[],["alt",{"sourceInterval":[7660,8032]},["app",{"sourceInterval":[7660,7674]},"ExpressionCall",[]],["app",{"sourceInterval":[7697,7712]},"ExpressionField",[]],["app",{"sourceInterval":[7735,7755]},"ExpressionStaticCall",[]],["app",{"sourceInterval":[7778,7795]},"ExpressionBracket",[]],["app",{"sourceInterval":[7818,7831]},"ExpressionNew",[]],["app",{"sourceInterval":[7854,7868]},"integerLiteral",[]],["app",{"sourceInterval":[7891,7902]},"boolLiteral",[]],["app",{"sourceInterval":[7925,7927]},"id",[]],["app",{"sourceInterval":[7950,7954]},"null",[]],["app",{"sourceInterval":[7977,7993]},"ExpressionInitOf",[]],["app",{"sourceInterval":[8016,8032]},"ExpressionString",[]]]],"ExpressionString":["define",{"sourceInterval":[8037,8069]},null,[],["app",{"sourceInterval":[8056,8069]},"stringLiteral",[]]],"ExpressionField":["define",{"sourceInterval":[8074,8119]},null,[],["seq",{"sourceInterval":[8092,8119]},["app",{"sourceInterval":[8092,8107]},"ExpressionValue",[]],["terminal",{"sourceInterval":[8108,8111]},"."],["app",{"sourceInterval":[8112,8114]},"id",[]],["not",{"sourceInterval":[8115,8119]},["terminal",{"sourceInterval":[8116,8119]},"("]]]],"ExpressionCall":["define",{"sourceInterval":[8124,8200]},null,[],["seq",{"sourceInterval":[8141,8200]},["app",{"sourceInterval":[8141,8156]},"ExpressionValue",[]],["terminal",{"sourceInterval":[8157,8160]},"."],["app",{"sourceInterval":[8161,8163]},"id",[]],["terminal",{"sourceInterval":[8164,8167]},"("],["app",{"sourceInterval":[8168,8191]},"ListOf",[["app",{"sourceInterval":[8175,8185]},"Expression",[]],["terminal",{"sourceInterval":[8187,8190]},","]]],["opt",{"sourceInterval":[8192,8196]},["terminal",{"sourceInterval":[8192,8195]},","]],["terminal",{"sourceInterval":[8197,8200]},")"]]],"ExpressionNew":["define",{"sourceInterval":[8205,8262]},null,[],["seq",{"sourceInterval":[8221,8262]},["app",{"sourceInterval":[8221,8223]},"id",[]],["terminal",{"sourceInterval":[8224,8227]},"{"],["app",{"sourceInterval":[8228,8253]},"ListOf",[["app",{"sourceInterval":[8235,8247]},"NewParameter",[]],["terminal",{"sourceInterval":[8249,8252]},","]]],["opt",{"sourceInterval":[8254,8258]},["terminal",{"sourceInterval":[8254,8257]},","]],["terminal",{"sourceInterval":[8259,8262]},"}"]]],"NewParameter":["define",{"sourceInterval":[8267,8299]},null,[],["seq",{"sourceInterval":[8282,8299]},["app",{"sourceInterval":[8282,8284]},"id",[]],["terminal",{"sourceInterval":[8285,8288]},":"],["app",{"sourceInterval":[8289,8299]},"Expression",[]]]],"ExpressionStaticCall":["define",{"sourceInterval":[8304,8366]},null,[],["seq",{"sourceInterval":[8327,8366]},["app",{"sourceInterval":[8327,8329]},"id",[]],["terminal",{"sourceInterval":[8330,8333]},"("],["app",{"sourceInterval":[8334,8357]},"ListOf",[["app",{"sourceInterval":[8341,8351]},"Expression",[]],["terminal",{"sourceInterval":[8353,8356]},","]]],["opt",{"sourceInterval":[8358,8362]},["terminal",{"sourceInterval":[8358,8361]},","]],["terminal",{"sourceInterval":[8363,8366]},")"]]],"ExpressionInitOf":["define",{"sourceInterval":[8371,8436]},null,[],["seq",{"sourceInterval":[8390,8436]},["app",{"sourceInterval":[8390,8396]},"initOf",[]],["app",{"sourceInterval":[8397,8399]},"id",[]],["terminal",{"sourceInterval":[8400,8403]},"("],["app",{"sourceInterval":[8404,8427]},"ListOf",[["app",{"sourceInterval":[8411,8421]},"Expression",[]],["terminal",{"sourceInterval":[8423,8426]},","]]],["opt",{"sourceInterval":[8428,8432]},["terminal",{"sourceInterval":[8428,8431]},","]],["terminal",{"sourceInterval":[8433,8436]},")"]]],"typeLiteral":["define",{"sourceInterval":[8462,8506]},null,[],["seq",{"sourceInterval":[8476,8506]},["app",{"sourceInterval":[8476,8489]},"letterAsciiUC",[]],["star",{"sourceInterval":[8490,8506]},["app",{"sourceInterval":[8490,8505]},"typeLiteralPart",[]]]]],"typeLiteralPart":["define",{"sourceInterval":[8511,8554]},null,[],["alt",{"sourceInterval":[8529,8554]},["app",{"sourceInterval":[8529,8540]},"letterAscii",[]],["app",{"sourceInterval":[8543,8548]},"digit",[]],["terminal",{"sourceInterval":[8551,8554]},"_"]]],"integerLiteral":["define",{"sourceInterval":[8761,8855]},null,[],["alt",{"sourceInterval":[8778,8855]},["app",{"sourceInterval":[8778,8795]},"integerLiteralHex",[]],["app",{"sourceInterval":[8798,8815]},"integerLiteralBin",[]],["app",{"sourceInterval":[8818,8835]},"integerLiteralOct",[]],["app",{"sourceInterval":[8838,8855]},"integerLiteralDec",[]]]],"integerLiteralDec_nonZeroIntegerLiteralDec":["define",{"sourceInterval":[8902,8956]},null,[],["seq",{"sourceInterval":[8902,8928]},["app",{"sourceInterval":[8902,8914]},"nonZeroDigit",[]],["star",{"sourceInterval":[8915,8928]},["seq",{"sourceInterval":[8916,8926]},["opt",{"sourceInterval":[8916,8920]},["terminal",{"sourceInterval":[8916,8919]},"_"]],["app",{"sourceInterval":[8921,8926]},"digit",[]]]]]],"integerLiteralDec_integerLiteralWithLeadingZero":["define",{"sourceInterval":[8981,9040]},null,[],["seq",{"sourceInterval":[8981,8991]},["terminal",{"sourceInterval":[8981,8984]},"0"],["star",{"sourceInterval":[8985,8991]},["app",{"sourceInterval":[8985,8990]},"digit",[]]]]],"integerLiteralDec":["define",{"sourceInterval":[8882,9040]},null,[],["alt",{"sourceInterval":[8902,9040]},["app",{"sourceInterval":[8902,8928]},"integerLiteralDec_nonZeroIntegerLiteralDec",[]],["app",{"sourceInterval":[8981,8991]},"integerLiteralDec_integerLiteralWithLeadingZero",[]]]],"integerLiteralHex":["define",{"sourceInterval":[9045,9104]},null,[],["seq",{"sourceInterval":[9065,9104]},["alt",{"sourceInterval":[9066,9077]},["terminal",{"sourceInterval":[9066,9070]},"0x"],["terminal",{"sourceInterval":[9073,9077]},"0X"]],["app",{"sourceInterval":[9079,9087]},"hexDigit",[]],["star",{"sourceInterval":[9088,9104]},["seq",{"sourceInterval":[9089,9102]},["opt",{"sourceInterval":[9089,9093]},["terminal",{"sourceInterval":[9089,9092]},"_"]],["app",{"sourceInterval":[9094,9102]},"hexDigit",[]]]]]],"integerLiteralBin":["define",{"sourceInterval":[9109,9168]},null,[],["seq",{"sourceInterval":[9129,9168]},["alt",{"sourceInterval":[9130,9141]},["terminal",{"sourceInterval":[9130,9134]},"0b"],["terminal",{"sourceInterval":[9137,9141]},"0B"]],["app",{"sourceInterval":[9143,9151]},"binDigit",[]],["star",{"sourceInterval":[9152,9168]},["seq",{"sourceInterval":[9153,9166]},["opt",{"sourceInterval":[9153,9157]},["terminal",{"sourceInterval":[9153,9156]},"_"]],["app",{"sourceInterval":[9158,9166]},"binDigit",[]]]]]],"integerLiteralOct":["define",{"sourceInterval":[9173,9232]},null,[],["seq",{"sourceInterval":[9193,9232]},["alt",{"sourceInterval":[9194,9205]},["terminal",{"sourceInterval":[9194,9198]},"0o"],["terminal",{"sourceInterval":[9201,9205]},"0O"]],["app",{"sourceInterval":[9207,9215]},"octDigit",[]],["star",{"sourceInterval":[9216,9232]},["seq",{"sourceInterval":[9217,9230]},["opt",{"sourceInterval":[9217,9221]},["terminal",{"sourceInterval":[9217,9220]},"_"]],["app",{"sourceInterval":[9222,9230]},"octDigit",[]]]]]],"binDigit":["define",{"sourceInterval":[9237,9257]},null,[],["alt",{"sourceInterval":[9248,9257]},["terminal",{"sourceInterval":[9248,9251]},"0"],["terminal",{"sourceInterval":[9254,9257]},"1"]]],"octDigit":["define",{"sourceInterval":[9262,9281]},null,[],["range",{"sourceInterval":[9273,9281]},"0","7"]],"nonZeroDigit":["define",{"sourceInterval":[9286,9309]},null,[],["range",{"sourceInterval":[9301,9309]},"1","9"]],"letterAsciiLC":["define",{"sourceInterval":[9330,9354]},null,[],["range",{"sourceInterval":[9346,9354]},"a","z"]],"letterAsciiUC":["define",{"sourceInterval":[9359,9383]},null,[],["range",{"sourceInterval":[9375,9383]},"A","Z"]],"letterAscii":["define",{"sourceInterval":[9388,9431]},null,[],["alt",{"sourceInterval":[9402,9431]},["app",{"sourceInterval":[9402,9415]},"letterAsciiLC",[]],["app",{"sourceInterval":[9418,9431]},"letterAsciiUC",[]]]],"letterComment":["define",{"sourceInterval":[9436,9495]},null,[],["alt",{"sourceInterval":[9452,9495]},["app",{"sourceInterval":[9452,9465]},"letterAsciiLC",[]],["app",{"sourceInterval":[9468,9481]},"letterAsciiUC",[]],["app",{"sourceInterval":[9484,9489]},"digit",[]],["terminal",{"sourceInterval":[9492,9495]},"_"]]],"idStart":["define",{"sourceInterval":[9519,9546]},null,[],["alt",{"sourceInterval":[9529,9546]},["app",{"sourceInterval":[9529,9540]},"letterAscii",[]],["terminal",{"sourceInterval":[9543,9546]},"_"]]],"idPart":["define",{"sourceInterval":[9551,9585]},null,[],["alt",{"sourceInterval":[9560,9585]},["app",{"sourceInterval":[9560,9571]},"letterAscii",[]],["app",{"sourceInterval":[9574,9579]},"digit",[]],["terminal",{"sourceInterval":[9582,9585]},"_"]]],"id":["define",{"sourceInterval":[9590,9628]},null,[],["seq",{"sourceInterval":[9595,9628]},["not",{"sourceInterval":[9595,9608]},["app",{"sourceInterval":[9596,9608]},"reservedWord",[]]],["lex",{"sourceInterval":[9609,9617]},["app",{"sourceInterval":[9610,9617]},"idStart",[]]],["lex",{"sourceInterval":[9618,9628]},["star",{"sourceInterval":[9620,9627]},["app",{"sourceInterval":[9620,9626]},"idPart",[]]]]]],"funcLetter":["define",{"sourceInterval":[9649,9710]},null,[],["alt",{"sourceInterval":[9662,9710]},["app",{"sourceInterval":[9662,9673]},"letterAscii",[]],["terminal",{"sourceInterval":[9676,9679]},"_"],["terminal",{"sourceInterval":[9682,9685]},"'"],["terminal",{"sourceInterval":[9688,9691]},"?"],["terminal",{"sourceInterval":[9694,9697]},"!"],["terminal",{"sourceInterval":[9700,9704]},"::"],["terminal",{"sourceInterval":[9707,9710]},"&"]]],"funcId":["define",{"sourceInterval":[9715,9757]},null,[],["seq",{"sourceInterval":[9724,9757]},["app",{"sourceInterval":[9724,9734]},"funcLetter",[]],["star",{"sourceInterval":[9735,9757]},["lex",{"sourceInterval":[9735,9756]},["alt",{"sourceInterval":[9737,9755]},["app",{"sourceInterval":[9737,9747]},"funcLetter",[]],["app",{"sourceInterval":[9750,9755]},"digit",[]]]]]]],"boolLiteral":["define",{"sourceInterval":[9783,9823]},null,[],["seq",{"sourceInterval":[9797,9823]},["alt",{"sourceInterval":[9798,9814]},["terminal",{"sourceInterval":[9798,9804]},"true"],["terminal",{"sourceInterval":[9807,9814]},"false"]],["not",{"sourceInterval":[9816,9823]},["app",{"sourceInterval":[9817,9823]},"idPart",[]]]]],"stringLiteralCharacter":["define",{"sourceInterval":[9851,9911]},null,[],["seq",{"sourceInterval":[9876,9911]},["not",{"sourceInterval":[9876,9907]},["alt",{"sourceInterval":[9878,9906]},["terminal",{"sourceInterval":[9878,9882]},"\""],["terminal",{"sourceInterval":[9885,9889]},"\\"],["app",{"sourceInterval":[9892,9906]},"lineTerminator",[]]]],["app",{"sourceInterval":[9908,9911]},"any",[]]]],"stringLiteral":["define",{"sourceInterval":[9916,9965]},null,[],["seq",{"sourceInterval":[9932,9965]},["terminal",{"sourceInterval":[9932,9936]},"\""],["star",{"sourceInterval":[9937,9960]},["app",{"sourceInterval":[9937,9959]},"stringLiteralCharacter",[]]],["terminal",{"sourceInterval":[9961,9965]},"\""]]],"keyword":["define",{"sourceInterval":[10018,10531]},null,[],["alt",{"sourceInterval":[10028,10531]},["app",{"sourceInterval":[10028,10031]},"fun",[]],["app",{"sourceInterval":[10047,10050]},"let",[]],["app",{"sourceInterval":[10065,10071]},"return",[]],["app",{"sourceInterval":[10087,10093]},"extend",[]],["app",{"sourceInterval":[10109,10115]},"native",[]],["app",{"sourceInterval":[10131,10137]},"public",[]],["app",{"sourceInterval":[10153,10157]},"null",[]],["app",{"sourceInterval":[10173,10175]},"if",[]],["app",{"sourceInterval":[10191,10195]},"else",[]],["app",{"sourceInterval":[10211,10216]},"while",[]],["app",{"sourceInterval":[10232,10238]},"repeat",[]],["app",{"sourceInterval":[10254,10256]},"do",[]],["app",{"sourceInterval":[10272,10277]},"until",[]],["app",{"sourceInterval":[10293,10295]},"as",[]],["app",{"sourceInterval":[10312,10319]},"mutates",[]],["app",{"sourceInterval":[10334,10341]},"extends",[]],["app",{"sourceInterval":[10356,10362]},"import",[]],["app",{"sourceInterval":[10377,10381]},"with",[]],["app",{"sourceInterval":[10396,10401]},"trait",[]],["app",{"sourceInterval":[10416,10422]},"initOf",[]],["app",{"sourceInterval":[10437,10445]},"override",[]],["app",{"sourceInterval":[10460,10468]},"abstract",[]],["app",{"sourceInterval":[10483,10490]},"virtual",[]],["app",{"sourceInterval":[10505,10511]},"inline",[]],["app",{"sourceInterval":[10526,10531]},"const",[]]]],"contract":["define",{"sourceInterval":[10536,10565]},null,[],["seq",{"sourceInterval":[10547,10565]},["terminal",{"sourceInterval":[10547,10557]},"contract"],["not",{"sourceInterval":[10558,10565]},["app",{"sourceInterval":[10559,10565]},"idPart",[]]]]],"let":["define",{"sourceInterval":[10570,10589]},null,[],["seq",{"sourceInterval":[10576,10589]},["terminal",{"sourceInterval":[10576,10581]},"let"],["not",{"sourceInterval":[10582,10589]},["app",{"sourceInterval":[10583,10589]},"idPart",[]]]]],"fun":["define",{"sourceInterval":[10594,10613]},null,[],["seq",{"sourceInterval":[10600,10613]},["terminal",{"sourceInterval":[10600,10605]},"fun"],["not",{"sourceInterval":[10606,10613]},["app",{"sourceInterval":[10607,10613]},"idPart",[]]]]],"return":["define",{"sourceInterval":[10618,10643]},null,[],["seq",{"sourceInterval":[10627,10643]},["terminal",{"sourceInterval":[10627,10635]},"return"],["not",{"sourceInterval":[10636,10643]},["app",{"sourceInterval":[10637,10643]},"idPart",[]]]]],"extend":["define",{"sourceInterval":[10648,10673]},null,[],["seq",{"sourceInterval":[10657,10673]},["terminal",{"sourceInterval":[10657,10665]},"extend"],["not",{"sourceInterval":[10666,10673]},["app",{"sourceInterval":[10667,10673]},"idPart",[]]]]],"native":["define",{"sourceInterval":[10678,10703]},null,[],["seq",{"sourceInterval":[10687,10703]},["terminal",{"sourceInterval":[10687,10695]},"native"],["not",{"sourceInterval":[10696,10703]},["app",{"sourceInterval":[10697,10703]},"idPart",[]]]]],"public":["define",{"sourceInterval":[10708,10733]},null,[],["seq",{"sourceInterval":[10717,10733]},["terminal",{"sourceInterval":[10717,10725]},"public"],["not",{"sourceInterval":[10726,10733]},["app",{"sourceInterval":[10727,10733]},"idPart",[]]]]],"null":["define",{"sourceInterval":[10738,10759]},null,[],["seq",{"sourceInterval":[10745,10759]},["terminal",{"sourceInterval":[10745,10751]},"null"],["not",{"sourceInterval":[10752,10759]},["app",{"sourceInterval":[10753,10759]},"idPart",[]]]]],"if":["define",{"sourceInterval":[10764,10781]},null,[],["seq",{"sourceInterval":[10769,10781]},["terminal",{"sourceInterval":[10769,10773]},"if"],["not",{"sourceInterval":[10774,10781]},["app",{"sourceInterval":[10775,10781]},"idPart",[]]]]],"else":["define",{"sourceInterval":[10786,10807]},null,[],["seq",{"sourceInterval":[10793,10807]},["terminal",{"sourceInterval":[10793,10799]},"else"],["not",{"sourceInterval":[10800,10807]},["app",{"sourceInterval":[10801,10807]},"idPart",[]]]]],"while":["define",{"sourceInterval":[10812,10835]},null,[],["seq",{"sourceInterval":[10820,10835]},["terminal",{"sourceInterval":[10820,10827]},"while"],["not",{"sourceInterval":[10828,10835]},["app",{"sourceInterval":[10829,10835]},"idPart",[]]]]],"repeat":["define",{"sourceInterval":[10840,10865]},null,[],["seq",{"sourceInterval":[10849,10865]},["terminal",{"sourceInterval":[10849,10857]},"repeat"],["not",{"sourceInterval":[10858,10865]},["app",{"sourceInterval":[10859,10865]},"idPart",[]]]]],"do":["define",{"sourceInterval":[10870,10887]},null,[],["seq",{"sourceInterval":[10875,10887]},["terminal",{"sourceInterval":[10875,10879]},"do"],["not",{"sourceInterval":[10880,10887]},["app",{"sourceInterval":[10881,10887]},"idPart",[]]]]],"until":["define",{"sourceInterval":[10892,10915]},null,[],["seq",{"sourceInterval":[10900,10915]},["terminal",{"sourceInterval":[10900,10907]},"until"],["not",{"sourceInterval":[10908,10915]},["app",{"sourceInterval":[10909,10915]},"idPart",[]]]]],"as":["define",{"sourceInterval":[10920,10937]},null,[],["seq",{"sourceInterval":[10925,10937]},["terminal",{"sourceInterval":[10925,10929]},"as"],["not",{"sourceInterval":[10930,10937]},["app",{"sourceInterval":[10931,10937]},"idPart",[]]]]],"mutates":["define",{"sourceInterval":[10942,10969]},null,[],["seq",{"sourceInterval":[10952,10969]},["terminal",{"sourceInterval":[10952,10961]},"mutates"],["not",{"sourceInterval":[10962,10969]},["app",{"sourceInterval":[10963,10969]},"idPart",[]]]]],"extends":["define",{"sourceInterval":[10974,11001]},null,[],["seq",{"sourceInterval":[10984,11001]},["terminal",{"sourceInterval":[10984,10993]},"extends"],["not",{"sourceInterval":[10994,11001]},["app",{"sourceInterval":[10995,11001]},"idPart",[]]]]],"import":["define",{"sourceInterval":[11006,11031]},null,[],["seq",{"sourceInterval":[11015,11031]},["terminal",{"sourceInterval":[11015,11023]},"import"],["not",{"sourceInterval":[11024,11031]},["app",{"sourceInterval":[11025,11031]},"idPart",[]]]]],"with":["define",{"sourceInterval":[11036,11057]},null,[],["seq",{"sourceInterval":[11043,11057]},["terminal",{"sourceInterval":[11043,11049]},"with"],["not",{"sourceInterval":[11050,11057]},["app",{"sourceInterval":[11051,11057]},"idPart",[]]]]],"trait":["define",{"sourceInterval":[11062,11085]},null,[],["seq",{"sourceInterval":[11070,11085]},["terminal",{"sourceInterval":[11070,11077]},"trait"],["not",{"sourceInterval":[11078,11085]},["app",{"sourceInterval":[11079,11085]},"idPart",[]]]]],"initOf":["define",{"sourceInterval":[11090,11115]},null,[],["seq",{"sourceInterval":[11099,11115]},["terminal",{"sourceInterval":[11099,11107]},"initOf"],["not",{"sourceInterval":[11108,11115]},["app",{"sourceInterval":[11109,11115]},"idPart",[]]]]],"virtual":["define",{"sourceInterval":[11120,11147]},null,[],["seq",{"sourceInterval":[11130,11147]},["terminal",{"sourceInterval":[11130,11139]},"virtual"],["not",{"sourceInterval":[11140,11147]},["app",{"sourceInterval":[11141,11147]},"idPart",[]]]]],"override":["define",{"sourceInterval":[11152,11181]},null,[],["seq",{"sourceInterval":[11163,11181]},["terminal",{"sourceInterval":[11163,11173]},"override"],["not",{"sourceInterval":[11174,11181]},["app",{"sourceInterval":[11175,11181]},"idPart",[]]]]],"inline":["define",{"sourceInterval":[11186,11211]},null,[],["seq",{"sourceInterval":[11195,11211]},["terminal",{"sourceInterval":[11195,11203]},"inline"],["not",{"sourceInterval":[11204,11211]},["app",{"sourceInterval":[11205,11211]},"idPart",[]]]]],"const":["define",{"sourceInterval":[11216,11239]},null,[],["seq",{"sourceInterval":[11224,11239]},["terminal",{"sourceInterval":[11224,11231]},"const"],["not",{"sourceInterval":[11232,11239]},["app",{"sourceInterval":[11233,11239]},"idPart",[]]]]],"abstract":["define",{"sourceInterval":[11244,11273]},null,[],["seq",{"sourceInterval":[11255,11273]},["terminal",{"sourceInterval":[11255,11265]},"abstract"],["not",{"sourceInterval":[11266,11273]},["app",{"sourceInterval":[11267,11273]},"idPart",[]]]]],"nameAttribute":["define",{"sourceInterval":[11297,11320]},null,[],["terminal",{"sourceInterval":[11313,11320]},"@name"]],"reservedWord":["define",{"sourceInterval":[11342,11364]},null,[],["app",{"sourceInterval":[11357,11364]},"keyword",[]]],"space":["extend",{"sourceInterval":[11386,11419]},null,[],["alt",{"sourceInterval":[11395,11419]},["app",{"sourceInterval":[11395,11402]},"comment",[]],["app",{"sourceInterval":[11405,11419]},"lineTerminator",[]]]],"comment":["define",{"sourceInterval":[11424,11470]},null,[],["alt",{"sourceInterval":[11434,11470]},["app",{"sourceInterval":[11434,11450]},"multiLineComment",[]],["app",{"sourceInterval":[11453,11470]},"singleLineComment",[]]]],"lineTerminator":["define",{"sourceInterval":[11475,11525]},null,[],["alt",{"sourceInterval":[11492,11525]},["terminal",{"sourceInterval":[11492,11496]},"\n"],["terminal",{"sourceInterval":[11499,11503]},"\r"],["terminal",{"sourceInterval":[11506,11514]},"\u2028"],["terminal",{"sourceInterval":[11517,11525]},"\u2029"]]],"multiLineComment":["define",{"sourceInterval":[11530,11571]},null,[],["seq",{"sourceInterval":[11549,11571]},["terminal",{"sourceInterval":[11549,11553]},"/*"],["star",{"sourceInterval":[11554,11566]},["seq",{"sourceInterval":[11555,11564]},["not",{"sourceInterval":[11555,11560]},["terminal",{"sourceInterval":[11556,11560]},"*/"]],["app",{"sourceInterval":[11561,11564]},"any",[]]]],["terminal",{"sourceInterval":[11567,11571]},"*/"]]],"singleLineComment":["define",{"sourceInterval":[11576,11623]},null,[],["seq",{"sourceInterval":[11596,11623]},["terminal",{"sourceInterval":[11596,11600]},"//"],["star",{"sourceInterval":[11601,11623]},["seq",{"sourceInterval":[11602,11621]},["not",{"sourceInterval":[11602,11617]},["app",{"sourceInterval":[11603,11617]},"lineTerminator",[]]],["app",{"sourceInterval":[11618,11621]},"any",[]]]]]]}]);module.exports=result; \ No newline at end of file diff --git a/src/grammar/grammar.ts b/src/grammar/grammar.ts index 5d4fb4c61..bd5cfda37 100644 --- a/src/grammar/grammar.ts +++ b/src/grammar/grammar.ts @@ -706,10 +706,10 @@ semantics.addOperation('resolve_expression', { ExpressionField(arg0, _arg1, arg2) { return createNode({ kind: 'op_field', src: arg0.resolve_expression(), name: arg2.sourceString, ref: createRef(this) }); }, - ExpressionCall(arg0, _arg1, arg2, _arg3, arg4, _arg5) { + ExpressionCall(arg0, _arg1, arg2, _arg3, arg4, _arg5, _arg6) { return createNode({ kind: 'op_call', src: arg0.resolve_expression(), name: arg2.sourceString, args: arg4.asIteration().children.map((v) => v.resolve_expression()), ref: createRef(this) }); }, - ExpressionStaticCall(arg0, _arg1, arg2, _arg3) { + ExpressionStaticCall(arg0, _arg1, arg2, _arg3, _arg4) { return createNode({ kind: 'op_static_call', name: arg0.sourceString, args: arg2.asIteration().children.map((v) => v.resolve_expression()), ref: createRef(this) }); }, ExpressionNew(arg0, _arg1, arg2, _arg3, _arg4) { @@ -718,7 +718,7 @@ semantics.addOperation('resolve_expression', { NewParameter(arg0, _arg1, arg2) { return createNode({ kind: 'new_parameter', name: arg0.sourceString, exp: arg2.resolve_expression(), ref: createRef(this) }); }, - ExpressionInitOf(_arg0, arg1, _arg2, arg3, _arg4) { + ExpressionInitOf(_arg0, arg1, _arg2, arg3, _arg4, _arg5) { return createNode({ kind: 'init_of', name: arg1.sourceString, args: arg3.asIteration().children.map((v) => v.resolve_expression()), ref: createRef(this) }); }, diff --git a/src/grammar/test/case-25.tact b/src/grammar/test/case-25.tact index 6187b026c..6e1506150 100644 --- a/src/grammar/test/case-25.tact +++ b/src/grammar/test/case-25.tact @@ -9,6 +9,13 @@ fun anotherFunction( return (a >> b) || (a << (32 - b)); } +fun coverage(a: Int, b: Int) { + let c: Int = anotherFunction( + a, + b, + ); +} + fun oneMoreFunction( a: Int, b: Int, From 9703fecec881c711a049d0dc15ec4afacc44105f Mon Sep 17 00:00:00 2001 From: Vitor Py Braga <12871+vitorpy@users.noreply.github.com> Date: Thu, 21 Mar 2024 21:02:35 +0100 Subject: [PATCH 11/22] Expand test cases --- src/grammar/test/case-25.tact | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/src/grammar/test/case-25.tact b/src/grammar/test/case-25.tact index 6e1506150..dd2bfcd1e 100644 --- a/src/grammar/test/case-25.tact +++ b/src/grammar/test/case-25.tact @@ -9,7 +9,16 @@ fun anotherFunction( return (a >> b) || (a << (32 - b)); } +extends fun extension(self: Int, c: Int, d: Int) { + return self + c + d; +} + fun coverage(a: Int, b: Int) { + let k: Int = a.extension( + b, + 4, + ); + let c: Int = anotherFunction( a, b, @@ -24,4 +33,15 @@ fun oneMoreFunction( a, b, ); -} \ No newline at end of file +} + +contract TestContract { + init(arg1: Int, arg2: Int) {} +} + +fun test() { + let k: StateInit = initOf TestContract( + 2, + 3, + ); +} From baf26c5a6717a1e1541f48a28aee7ae34697dd44 Mon Sep 17 00:00:00 2001 From: Vitor Py <12871+vitorpy@users.noreply.github.com> Date: Fri, 22 Mar 2024 09:27:39 +0100 Subject: [PATCH 12/22] Update src/grammar/test/case-17.tact Co-authored-by: Anton Trunov --- src/grammar/test/case-17.tact | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/grammar/test/case-17.tact b/src/grammar/test/case-17.tact index b8e9af803..da78a62df 100644 --- a/src/grammar/test/case-17.tact +++ b/src/grammar/test/case-17.tact @@ -23,5 +23,5 @@ const b: B = new { }; fun getB(): B { - return B { x = 1, y = 5, }; + return B { x: 1, y: 5, }; } From 9bde284c0a1d0ef8e5281a303ee4c0260da3925b Mon Sep 17 00:00:00 2001 From: Vitor Py Braga <12871+vitorpy@users.noreply.github.com> Date: Fri, 22 Mar 2024 19:09:38 +0100 Subject: [PATCH 13/22] Fix tests --- .../__snapshots__/grammar.spec.ts.snap | 784 +++++++++++++++++- src/grammar/grammar.ts | 12 +- 2 files changed, 788 insertions(+), 8 deletions(-) diff --git a/src/grammar/__snapshots__/grammar.spec.ts.snap b/src/grammar/__snapshots__/grammar.spec.ts.snap index 9cc6eb23c..048f582cb 100644 --- a/src/grammar/__snapshots__/grammar.spec.ts.snap +++ b/src/grammar/__snapshots__/grammar.spec.ts.snap @@ -182,6 +182,14 @@ Line 2, col 15: " `; +exports[`grammar should fail case-19 1`] = ` +":1:14: Empty parameter list should not have a dangling comma. +Line 1, col 14: +> 1 | fun function(,) {} + ^ +" +`; + exports[`grammar should parse case-0 1`] = ` { "entries": [ @@ -2081,8 +2089,23 @@ exports[`grammar should parse case-17 1`] = ` "ref": Int, }, }, + { + "as": null, + "id": 4, + "init": null, + "kind": "def_field", + "name": "y", + "ref": y: Int;, + "type": { + "id": 3, + "kind": "type_ref_simple", + "name": "Int", + "optional": false, + "ref": Int, + }, + }, ], - "id": 3, + "id": 5, "kind": "def_struct", "message": false, "name": "A", @@ -2090,19 +2113,135 @@ exports[`grammar should parse case-17 1`] = ` "prefix": null, "ref": struct A { x: Int; + y: Int; }, }, + { + "attributes": [], + "id": 10, + "kind": "def_constant", + "name": "a", + "ref": const a: A = new { x: 1 };, + "type": { + "id": 6, + "kind": "type_ref_simple", + "name": "A", + "optional": false, + "ref": A, + }, + "value": { + "args": [ + { + "exp": { + "id": 7, + "kind": "number", + "ref": 1, + "value": 1n, + }, + "id": 8, + "kind": "new_parameter", + "name": "x", + "ref": x: 1, + }, + ], + "id": 9, + "kind": "op_new", + "ref": new { x: 1 }, + "type": "new", + }, + }, + { + "args": [], + "attributes": [], + "id": 18, + "kind": "def_function", + "name": "getA", + "origin": "user", + "ref": fun getA(): A { + return A { + x: 1, + y: 2, + }; +}, + "return": { + "id": 11, + "kind": "type_ref_simple", + "name": "A", + "optional": false, + "ref": A, + }, + "statements": [ + { + "expression": { + "args": [ + { + "exp": { + "id": 12, + "kind": "number", + "ref": 1, + "value": 1n, + }, + "id": 13, + "kind": "new_parameter", + "name": "x", + "ref": x: 1, + }, + { + "exp": { + "id": 14, + "kind": "number", + "ref": 2, + "value": 2n, + }, + "id": 15, + "kind": "new_parameter", + "name": "y", + "ref": y: 2, + }, + ], + "id": 16, + "kind": "op_new", + "ref": A { + x: 1, + y: 2, + }, + "type": "A", + }, + "id": 17, + "kind": "statement_return", + "ref": return A { + x: 1, + y: 2, + };, + }, + ], + }, { "fields": [ { "as": null, - "id": 5, + "id": 20, "init": null, "kind": "def_field", "name": "x", "ref": x: Int;, "type": { - "id": 4, + "id": 19, + "kind": "type_ref_simple", + "name": "Int", + "optional": false, + "ref": Int, + }, + }, + { + "as": null, + "id": 22, + "init": null, + "kind": "def_field", + "name": "y", + "ref": y: Int;, + "type": { + "id": 21, "kind": "type_ref_simple", "name": "Int", "optional": false, @@ -2110,7 +2249,7 @@ exports[`grammar should parse case-17 1`] = ` }, }, ], - "id": 6, + "id": 23, "kind": "def_struct", "message": true, "name": "B", @@ -2118,10 +2257,120 @@ exports[`grammar should parse case-17 1`] = ` "prefix": null, "ref": message B { x: Int; + y: Int; }, }, + { + "attributes": [], + "id": 30, + "kind": "def_constant", + "name": "b", + "ref": const b: B = new { + x: 2, + y: 3, +};, + "type": { + "id": 24, + "kind": "type_ref_simple", + "name": "B", + "optional": false, + "ref": B, + }, + "value": { + "args": [ + { + "exp": { + "id": 25, + "kind": "number", + "ref": 2, + "value": 2n, + }, + "id": 26, + "kind": "new_parameter", + "name": "x", + "ref": x: 2, + }, + { + "exp": { + "id": 27, + "kind": "number", + "ref": 3, + "value": 3n, + }, + "id": 28, + "kind": "new_parameter", + "name": "y", + "ref": y: 3, + }, + ], + "id": 29, + "kind": "op_new", + "ref": new { + x: 2, + y: 3, +}, + "type": "new", + }, + }, + { + "args": [], + "attributes": [], + "id": 38, + "kind": "def_function", + "name": "getB", + "origin": "user", + "ref": fun getB(): B { + return B { x: 1, y: 5, }; +}, + "return": { + "id": 31, + "kind": "type_ref_simple", + "name": "B", + "optional": false, + "ref": B, + }, + "statements": [ + { + "expression": { + "args": [ + { + "exp": { + "id": 32, + "kind": "number", + "ref": 1, + "value": 1n, + }, + "id": 33, + "kind": "new_parameter", + "name": "x", + "ref": x: 1, + }, + { + "exp": { + "id": 34, + "kind": "number", + "ref": 5, + "value": 5n, + }, + "id": 35, + "kind": "new_parameter", + "name": "y", + "ref": y: 5, + }, + ], + "id": 36, + "kind": "op_new", + "ref": B { x: 1, y: 5, }, + "type": "B", + }, + "id": 37, + "kind": "statement_return", + "ref": return B { x: 1, y: 5, };, + }, + ], + }, ], - "id": 7, + "id": 39, "kind": "program", } `; @@ -2902,8 +3151,531 @@ exports[`grammar should parse case-25 1`] = ` }, ], }, + { + "args": [ + { + "id": 19, + "kind": "def_argument", + "name": "a", + "ref": a: Int, + "type": { + "id": 18, + "kind": "type_ref_simple", + "name": "Int", + "optional": false, + "ref": Int, + }, + }, + { + "id": 21, + "kind": "def_argument", + "name": "b", + "ref": b: Int, + "type": { + "id": 20, + "kind": "type_ref_simple", + "name": "Int", + "optional": false, + "ref": Int, + }, + }, + ], + "attributes": [], + "id": 32, + "kind": "def_function", + "name": "anotherFunction", + "origin": "user", + "ref": fun anotherFunction( + a: Int, + b: Int, + ): Int { + return (a >> b) || (a << (32 - b)); +}, + "return": { + "id": 17, + "kind": "type_ref_simple", + "name": "Int", + "optional": false, + "ref": Int, + }, + "statements": [ + { + "expression": { + "id": 30, + "kind": "op_binary", + "left": { + "id": 24, + "kind": "op_binary", + "left": { + "id": 22, + "kind": "id", + "ref": a, + "value": "a", + }, + "op": ">>", + "ref": a >> b, + "right": { + "id": 23, + "kind": "id", + "ref": b, + "value": "b", + }, + }, + "op": "||", + "ref": (a >> b) || (a << (32 - b)), + "right": { + "id": 29, + "kind": "op_binary", + "left": { + "id": 25, + "kind": "id", + "ref": a, + "value": "a", + }, + "op": "<<", + "ref": a << (32 - b), + "right": { + "id": 28, + "kind": "op_binary", + "left": { + "id": 26, + "kind": "number", + "ref": 32, + "value": 32n, + }, + "op": "-", + "ref": 32 - b, + "right": { + "id": 27, + "kind": "id", + "ref": b, + "value": "b", + }, + }, + }, + }, + "id": 31, + "kind": "statement_return", + "ref": return (a >> b) || (a << (32 - b));, + }, + ], + }, + { + "args": [ + { + "id": 34, + "kind": "def_argument", + "name": "self", + "ref": self: Int, + "type": { + "id": 33, + "kind": "type_ref_simple", + "name": "Int", + "optional": false, + "ref": Int, + }, + }, + { + "id": 36, + "kind": "def_argument", + "name": "c", + "ref": c: Int, + "type": { + "id": 35, + "kind": "type_ref_simple", + "name": "Int", + "optional": false, + "ref": Int, + }, + }, + { + "id": 38, + "kind": "def_argument", + "name": "d", + "ref": d: Int, + "type": { + "id": 37, + "kind": "type_ref_simple", + "name": "Int", + "optional": false, + "ref": Int, + }, + }, + ], + "attributes": [ + { + "ref": extends, + "type": "extends", + }, + ], + "id": 45, + "kind": "def_function", + "name": "extension", + "origin": "user", + "ref": extends fun extension(self: Int, c: Int, d: Int) { + return self + c + d; +}, + "return": null, + "statements": [ + { + "expression": { + "id": 43, + "kind": "op_binary", + "left": { + "id": 41, + "kind": "op_binary", + "left": { + "id": 39, + "kind": "id", + "ref": self, + "value": "self", + }, + "op": "+", + "ref": self + c, + "right": { + "id": 40, + "kind": "id", + "ref": c, + "value": "c", + }, + }, + "op": "+", + "ref": self + c + d, + "right": { + "id": 42, + "kind": "id", + "ref": d, + "value": "d", + }, + }, + "id": 44, + "kind": "statement_return", + "ref": return self + c + d;, + }, + ], + }, + { + "args": [ + { + "id": 47, + "kind": "def_argument", + "name": "a", + "ref": a: Int, + "type": { + "id": 46, + "kind": "type_ref_simple", + "name": "Int", + "optional": false, + "ref": Int, + }, + }, + { + "id": 49, + "kind": "def_argument", + "name": "b", + "ref": b: Int, + "type": { + "id": 48, + "kind": "type_ref_simple", + "name": "Int", + "optional": false, + "ref": Int, + }, + }, + ], + "attributes": [], + "id": 61, + "kind": "def_function", + "name": "coverage", + "origin": "user", + "ref": fun coverage(a: Int, b: Int) { + let k: Int = a.extension( + b, + 4, + ); + + let c: Int = anotherFunction( + a, + b, + ); +}, + "return": null, + "statements": [ + { + "expression": { + "args": [ + { + "id": 52, + "kind": "id", + "ref": b, + "value": "b", + }, + { + "id": 53, + "kind": "number", + "ref": 4, + "value": 4n, + }, + ], + "id": 54, + "kind": "op_call", + "name": "extension", + "ref": a.extension( + b, + 4, + ), + "src": { + "id": 51, + "kind": "id", + "ref": a, + "value": "a", + }, + }, + "id": 55, + "kind": "statement_let", + "name": "k", + "ref": let k: Int = a.extension( + b, + 4, + );, + "type": { + "id": 50, + "kind": "type_ref_simple", + "name": "Int", + "optional": false, + "ref": Int, + }, + }, + { + "expression": { + "args": [ + { + "id": 57, + "kind": "id", + "ref": a, + "value": "a", + }, + { + "id": 58, + "kind": "id", + "ref": b, + "value": "b", + }, + ], + "id": 59, + "kind": "op_static_call", + "name": "anotherFunction", + "ref": anotherFunction( + a, + b, + ), + }, + "id": 60, + "kind": "statement_let", + "name": "c", + "ref": let c: Int = anotherFunction( + a, + b, + );, + "type": { + "id": 56, + "kind": "type_ref_simple", + "name": "Int", + "optional": false, + "ref": Int, + }, + }, + ], + }, + { + "args": [ + { + "id": 64, + "kind": "def_argument", + "name": "a", + "ref": a: Int, + "type": { + "id": 63, + "kind": "type_ref_simple", + "name": "Int", + "optional": false, + "ref": Int, + }, + }, + { + "id": 66, + "kind": "def_argument", + "name": "b", + "ref": b: Int, + "type": { + "id": 65, + "kind": "type_ref_simple", + "name": "Int", + "optional": false, + "ref": Int, + }, + }, + ], + "attributes": [], + "id": 71, + "kind": "def_function", + "name": "oneMoreFunction", + "origin": "user", + "ref": fun oneMoreFunction( + a: Int, + b: Int, + ): Int { + return anotherFunction( + a, + b, + ); +}, + "return": { + "id": 62, + "kind": "type_ref_simple", + "name": "Int", + "optional": false, + "ref": Int, + }, + "statements": [ + { + "expression": { + "args": [ + { + "id": 67, + "kind": "id", + "ref": a, + "value": "a", + }, + { + "id": 68, + "kind": "id", + "ref": b, + "value": "b", + }, + ], + "id": 69, + "kind": "op_static_call", + "name": "anotherFunction", + "ref": anotherFunction( + a, + b, + ), + }, + "id": 70, + "kind": "statement_return", + "ref": return anotherFunction( + a, + b, + );, + }, + ], + }, + { + "attributes": [], + "declarations": [ + { + "args": [ + { + "id": 73, + "kind": "def_argument", + "name": "arg1", + "ref": arg1: Int, + "type": { + "id": 72, + "kind": "type_ref_simple", + "name": "Int", + "optional": false, + "ref": Int, + }, + }, + { + "id": 75, + "kind": "def_argument", + "name": "arg2", + "ref": arg2: Int, + "type": { + "id": 74, + "kind": "type_ref_simple", + "name": "Int", + "optional": false, + "ref": Int, + }, + }, + ], + "id": 76, + "kind": "def_init_function", + "ref": init(arg1: Int, arg2: Int) {}, + "statements": [], + }, + ], + "id": 77, + "kind": "def_contract", + "name": "TestContract", + "origin": "user", + "ref": contract TestContract { + init(arg1: Int, arg2: Int) {} +}, + "traits": [], + }, + { + "args": [], + "attributes": [], + "id": 83, + "kind": "def_function", + "name": "test", + "origin": "user", + "ref": fun test() { + let k: StateInit = initOf TestContract( + 2, + 3, + ); +}, + "return": null, + "statements": [ + { + "expression": { + "args": [ + { + "id": 79, + "kind": "number", + "ref": 2, + "value": 2n, + }, + { + "id": 80, + "kind": "number", + "ref": 3, + "value": 3n, + }, + ], + "id": 81, + "kind": "init_of", + "name": "TestContract", + "ref": initOf TestContract( + 2, + 3, + ), + }, + "id": 82, + "kind": "statement_let", + "name": "k", + "ref": let k: StateInit = initOf TestContract( + 2, + 3, + );, + "type": { + "id": 78, + "kind": "type_ref_simple", + "name": "StateInit", + "optional": false, + "ref": StateInit, + }, + }, + ], + }, ], - "id": 17, + "id": 84, "kind": "program", } `; diff --git a/src/grammar/grammar.ts b/src/grammar/grammar.ts index bd5cfda37..9d7556a8f 100644 --- a/src/grammar/grammar.ts +++ b/src/grammar/grammar.ts @@ -282,7 +282,11 @@ semantics.addOperation('resolve_declaration', { ref: createRef(this) }) }, - Function_withType(arg0, _arg1, arg2, _arg3, arg4, _arg5, _arg6, _arg7, arg8, _arg9, arg10, _arg11) { + Function_withType(arg0, _arg1, arg2, _arg3, arg4, arg5, _arg6, _arg7, arg8, _arg9, arg10, _arg11) { + if (arg4.source.contents === '' && arg5.sourceString === ',') { + throwError('Empty parameter list should not have a dangling comma.', createRef(arg5)); + } + const attributes = arg0.children.map((v) => v.resolve_attributes()) as ASTFunctionAttribute[]; checkVariableName(arg2.sourceString, createRef(arg2)); checkFunctionAttributes(false, attributes, createRef(this)); @@ -297,7 +301,11 @@ semantics.addOperation('resolve_declaration', { ref: createRef(this) }) }, - Function_withVoid(arg0, _arg1, arg2, _arg3, arg4, _arg5, _arg6, _arg7, arg8, _arg9) { + Function_withVoid(arg0, _arg1, arg2, _arg3, arg4, arg5, _arg6, _arg7, arg8, _arg9) { + if (arg4.source.contents === '' && arg5.sourceString === ',') { + throwError('Empty parameter list should not have a dangling comma.', createRef(arg5)); + } + const attributes = arg0.children.map((v) => v.resolve_attributes()) as ASTFunctionAttribute[]; checkVariableName(arg2.sourceString, createRef(arg2)); checkFunctionAttributes(false, attributes, createRef(this)); From d9d392fadbb47599f61d513c3d748886bd9d58be Mon Sep 17 00:00:00 2001 From: Vitor Py Braga <12871+vitorpy@users.noreply.github.com> Date: Sun, 24 Mar 2024 19:35:59 +0100 Subject: [PATCH 14/22] Expand tests and checks for dangling commas --- .../__snapshots__/grammar.spec.ts.snap | 29 +++++++++++++++++++ src/grammar/grammar.ts | 24 ++++++++++++--- src/grammar/test-failed/case-19.tact | 2 +- src/grammar/test-failed/case-20.tact | 3 ++ src/grammar/test-failed/case-21.tact | 3 ++ src/grammar/test-failed/case-22.tact | 7 +++++ 6 files changed, 63 insertions(+), 5 deletions(-) create mode 100644 src/grammar/test-failed/case-20.tact create mode 100644 src/grammar/test-failed/case-21.tact create mode 100644 src/grammar/test-failed/case-22.tact diff --git a/src/grammar/__snapshots__/grammar.spec.ts.snap b/src/grammar/__snapshots__/grammar.spec.ts.snap index 048f582cb..ab59affab 100644 --- a/src/grammar/__snapshots__/grammar.spec.ts.snap +++ b/src/grammar/__snapshots__/grammar.spec.ts.snap @@ -187,6 +187,35 @@ exports[`grammar should fail case-19 1`] = ` Line 1, col 14: > 1 | fun function(,) {} ^ + 2 | +" +`; + +exports[`grammar should fail case-20 1`] = ` +":2:24: Empty parameter list should not have a dangling comma. +Line 2, col 24: + 1 | fun another() { +> 2 | return 42.toString(,); + ^ + 3 | } +" +`; + +exports[`grammar should fail case-21 1`] = ` +":1:14: Empty parameter list should not have a dangling comma. +Line 1, col 14: +> 1 | fun function(,) : Int { + ^ + 2 | return 42; +" +`; + +exports[`grammar should fail case-22 1`] = ` +":1:4: Syntax error: expected not an idPart +Line 1, col 4: +> 1 | function a(): Int { + ^ + 2 | return 42; " `; diff --git a/src/grammar/grammar.ts b/src/grammar/grammar.ts index 9d7556a8f..3d37edbf8 100644 --- a/src/grammar/grammar.ts +++ b/src/grammar/grammar.ts @@ -714,19 +714,35 @@ semantics.addOperation('resolve_expression', { ExpressionField(arg0, _arg1, arg2) { return createNode({ kind: 'op_field', src: arg0.resolve_expression(), name: arg2.sourceString, ref: createRef(this) }); }, - ExpressionCall(arg0, _arg1, arg2, _arg3, arg4, _arg5, _arg6) { + ExpressionCall(arg0, _arg1, arg2, _arg3, arg4, arg5, _arg6) { + if (arg4.source.contents === '' && arg5.sourceString === ',') { + throwError('Empty parameter list should not have a dangling comma.', createRef(arg5)); + } + return createNode({ kind: 'op_call', src: arg0.resolve_expression(), name: arg2.sourceString, args: arg4.asIteration().children.map((v) => v.resolve_expression()), ref: createRef(this) }); }, - ExpressionStaticCall(arg0, _arg1, arg2, _arg3, _arg4) { + ExpressionStaticCall(arg0, _arg1, arg2, arg3, _arg4) { + if (arg2.source.contents === '' && arg3.sourceString === ',') { + throwError('Empty parameter list should not have a dangling comma.', createRef(arg3)); + } + return createNode({ kind: 'op_static_call', name: arg0.sourceString, args: arg2.asIteration().children.map((v) => v.resolve_expression()), ref: createRef(this) }); }, - ExpressionNew(arg0, _arg1, arg2, _arg3, _arg4) { + ExpressionNew(arg0, _arg1, arg2, arg3, _arg4) { + if (arg2.source.contents === '' && arg3.sourceString === ',') { + throwError('Empty parameter list should not have a dangling comma.', createRef(arg3)); + } + return createNode({ kind: 'op_new', type: arg0.sourceString, args: arg2.asIteration().children.map((v) => v.resolve_expression()), ref: createRef(this) }); }, NewParameter(arg0, _arg1, arg2) { return createNode({ kind: 'new_parameter', name: arg0.sourceString, exp: arg2.resolve_expression(), ref: createRef(this) }); }, - ExpressionInitOf(_arg0, arg1, _arg2, arg3, _arg4, _arg5) { + ExpressionInitOf(_arg0, arg1, _arg2, arg3, arg4, _arg5) { + if (arg3.source.contents === '' && arg4.sourceString === ',') { + throwError('Empty parameter list should not have a dangling comma.', createRef(arg4)); + } + return createNode({ kind: 'init_of', name: arg1.sourceString, args: arg3.asIteration().children.map((v) => v.resolve_expression()), ref: createRef(this) }); }, diff --git a/src/grammar/test-failed/case-19.tact b/src/grammar/test-failed/case-19.tact index b181390aa..6de325c04 100644 --- a/src/grammar/test-failed/case-19.tact +++ b/src/grammar/test-failed/case-19.tact @@ -1 +1 @@ -fun function(,) {} \ No newline at end of file +fun function(,) {} diff --git a/src/grammar/test-failed/case-20.tact b/src/grammar/test-failed/case-20.tact new file mode 100644 index 000000000..4eeea7ca7 --- /dev/null +++ b/src/grammar/test-failed/case-20.tact @@ -0,0 +1,3 @@ +fun another() { + return 42.toString(,); +} diff --git a/src/grammar/test-failed/case-21.tact b/src/grammar/test-failed/case-21.tact new file mode 100644 index 000000000..c4b5dd91a --- /dev/null +++ b/src/grammar/test-failed/case-21.tact @@ -0,0 +1,3 @@ +fun function(,) : Int { + return 42; +} diff --git a/src/grammar/test-failed/case-22.tact b/src/grammar/test-failed/case-22.tact new file mode 100644 index 000000000..4119c9915 --- /dev/null +++ b/src/grammar/test-failed/case-22.tact @@ -0,0 +1,7 @@ +function a(): Int { + return 42; +} + +fucntion b(): Int { + return a(,); +} From 24998a665b293fe24e144ca9e6d26a0e38edc479 Mon Sep 17 00:00:00 2001 From: Vitor Py Braga <12871+vitorpy@users.noreply.github.com> Date: Mon, 25 Mar 2024 19:02:11 +0100 Subject: [PATCH 15/22] Fix and expand tests --- .../__snapshots__/grammar.spec.ts.snap | 21 ++++++++++++++----- src/grammar/test-failed/case-22.tact | 4 ++-- src/grammar/test-failed/case-23.tact | 9 ++++++++ 3 files changed, 27 insertions(+), 7 deletions(-) create mode 100644 src/grammar/test-failed/case-23.tact diff --git a/src/grammar/__snapshots__/grammar.spec.ts.snap b/src/grammar/__snapshots__/grammar.spec.ts.snap index ab59affab..07aa65442 100644 --- a/src/grammar/__snapshots__/grammar.spec.ts.snap +++ b/src/grammar/__snapshots__/grammar.spec.ts.snap @@ -211,11 +211,22 @@ Line 1, col 14: `; exports[`grammar should fail case-22 1`] = ` -":1:4: Syntax error: expected not an idPart -Line 1, col 4: -> 1 | function a(): Int { - ^ - 2 | return 42; +":6:14: Empty parameter list should not have a dangling comma. +Line 6, col 14: + 5 | fun b(): Int { +> 6 | return a(,); + ^ + 7 | } +" +`; + +exports[`grammar should fail case-23 1`] = ` +":7:1: Abstract function doesn't have abstract modifier +Line 7, col 1: + 6 | +> 7 | fun testFuncAbstract(,); + ^~~~~~~~~~~~~~~~~~~~~~~~ + 8 | " `; diff --git a/src/grammar/test-failed/case-22.tact b/src/grammar/test-failed/case-22.tact index 4119c9915..29f9f5595 100644 --- a/src/grammar/test-failed/case-22.tact +++ b/src/grammar/test-failed/case-22.tact @@ -1,7 +1,7 @@ -function a(): Int { +fun a(): Int { return 42; } -fucntion b(): Int { +fun b(): Int { return a(,); } diff --git a/src/grammar/test-failed/case-23.tact b/src/grammar/test-failed/case-23.tact new file mode 100644 index 000000000..3cfc99968 --- /dev/null +++ b/src/grammar/test-failed/case-23.tact @@ -0,0 +1,9 @@ +@name(native_name_1) +native testNativeFunc(,); + +@name(native_name_2) +native testNativeFuncWithType(,): Int; + +fun testFuncAbstract(,); + +fun testFuncAbstractWithType(,): Int; \ No newline at end of file From 58b7d22f33eb6eefc6324ffcc223282446f1921a Mon Sep 17 00:00:00 2001 From: Vitor Py Braga <12871+vitorpy@users.noreply.github.com> Date: Mon, 25 Mar 2024 19:13:52 +0100 Subject: [PATCH 16/22] Fix parsing and tests for abstract functions. --- src/grammar/__snapshots__/grammar.spec.ts.snap | 8 ++++---- src/grammar/grammar.ts | 12 ++++++++++-- src/grammar/test-failed/case-23.tact | 4 ++-- 3 files changed, 16 insertions(+), 8 deletions(-) diff --git a/src/grammar/__snapshots__/grammar.spec.ts.snap b/src/grammar/__snapshots__/grammar.spec.ts.snap index 07aa65442..75df231c8 100644 --- a/src/grammar/__snapshots__/grammar.spec.ts.snap +++ b/src/grammar/__snapshots__/grammar.spec.ts.snap @@ -221,11 +221,11 @@ Line 6, col 14: `; exports[`grammar should fail case-23 1`] = ` -":7:1: Abstract function doesn't have abstract modifier -Line 7, col 1: +":7:31: Empty parameter list should not have a dangling comma. +Line 7, col 31: 6 | -> 7 | fun testFuncAbstract(,); - ^~~~~~~~~~~~~~~~~~~~~~~~ +> 7 | abstract fun testFuncAbstract(,); + ^ 8 | " `; diff --git a/src/grammar/grammar.ts b/src/grammar/grammar.ts index 3d37edbf8..7672932ef 100644 --- a/src/grammar/grammar.ts +++ b/src/grammar/grammar.ts @@ -320,7 +320,11 @@ semantics.addOperation('resolve_declaration', { ref: createRef(this) }) }, - Function_abstractVoid(arg0, _arg1, arg2, _arg3, arg4, _arg5, _arg6, _arg7) { + Function_abstractVoid(arg0, _arg1, arg2, _arg3, arg4, arg5, _arg6, _arg7) { + if (arg4.source.contents === '' && arg5.sourceString === ',') { + throwError('Empty parameter list should not have a dangling comma.', createRef(arg5)); + } + const attributes = arg0.children.map((v) => v.resolve_attributes()) as ASTFunctionAttribute[]; checkVariableName(arg2.sourceString, createRef(arg2)); checkFunctionAttributes(true, attributes, createRef(this)); @@ -335,7 +339,11 @@ semantics.addOperation('resolve_declaration', { ref: createRef(this) }) }, - Function_abstractType(arg0, _arg1, arg2, _arg3, arg4, _arg5, _arg6, _arg7, arg8, _arg9) { + Function_abstractType(arg0, _arg1, arg2, _arg3, arg4, arg5, _arg6, _arg7, arg8, _arg9) { + if (arg4.source.contents === '' && arg5.sourceString === ',') { + throwError('Empty parameter list should not have a dangling comma.', createRef(arg5)); + } + const attributes = arg0.children.map((v) => v.resolve_attributes()) as ASTFunctionAttribute[]; checkVariableName(arg2.sourceString, createRef(arg2)); checkFunctionAttributes(true, attributes, createRef(this)); diff --git a/src/grammar/test-failed/case-23.tact b/src/grammar/test-failed/case-23.tact index 3cfc99968..6037f335f 100644 --- a/src/grammar/test-failed/case-23.tact +++ b/src/grammar/test-failed/case-23.tact @@ -4,6 +4,6 @@ native testNativeFunc(,); @name(native_name_2) native testNativeFuncWithType(,): Int; -fun testFuncAbstract(,); +abstract fun testFuncAbstract(,); -fun testFuncAbstractWithType(,): Int; \ No newline at end of file +abstract fun testFuncAbstractWithType(,): Int; \ No newline at end of file From f161773ba423c8cf61253d193bdb06a298d9a62d Mon Sep 17 00:00:00 2001 From: Vitor Py Braga <12871+vitorpy@users.noreply.github.com> Date: Mon, 25 Mar 2024 22:02:07 +0100 Subject: [PATCH 17/22] Fix support for native functions --- .../__snapshots__/grammar.spec.ts.snap | 19 ++++++++++++++----- src/grammar/grammar.ts | 14 ++++++++++---- src/grammar/test-failed/case-23.tact | 4 ---- src/grammar/test-failed/case-24.tact | 3 +++ 4 files changed, 27 insertions(+), 13 deletions(-) create mode 100644 src/grammar/test-failed/case-24.tact diff --git a/src/grammar/__snapshots__/grammar.spec.ts.snap b/src/grammar/__snapshots__/grammar.spec.ts.snap index 75df231c8..3aaad493a 100644 --- a/src/grammar/__snapshots__/grammar.spec.ts.snap +++ b/src/grammar/__snapshots__/grammar.spec.ts.snap @@ -221,12 +221,21 @@ Line 6, col 14: `; exports[`grammar should fail case-23 1`] = ` -":7:31: Empty parameter list should not have a dangling comma. -Line 7, col 31: - 6 | -> 7 | abstract fun testFuncAbstract(,); +":2:23: Empty parameter list should not have a dangling comma. +Line 2, col 23: + 1 | @name(native_name_1) +> 2 | native testNativeFunc(,); + ^ + 3 | +" +`; + +exports[`grammar should fail case-24 1`] = ` +":1:31: Empty parameter list should not have a dangling comma. +Line 1, col 31: +> 1 | abstract fun testFuncAbstract(,); ^ - 8 | + 2 | " `; diff --git a/src/grammar/grammar.ts b/src/grammar/grammar.ts index 7672932ef..9b34c3b90 100644 --- a/src/grammar/grammar.ts +++ b/src/grammar/grammar.ts @@ -345,8 +345,6 @@ semantics.addOperation('resolve_declaration', { } const attributes = arg0.children.map((v) => v.resolve_attributes()) as ASTFunctionAttribute[]; - checkVariableName(arg2.sourceString, createRef(arg2)); - checkFunctionAttributes(true, attributes, createRef(this)); return createNode({ kind: 'def_function', origin: ctx!.origin, @@ -358,7 +356,11 @@ semantics.addOperation('resolve_declaration', { ref: createRef(this) }) }, - NativeFunction_withType(_arg0, _arg1, arg2, _arg3, arg4, arg5, arg6, _arg7, arg8, _arg9, _arg10, _arg11, arg12, _arg13) { + NativeFunction_withType(_arg0, _arg1, arg2, _arg3, arg4, arg5, arg6, _arg7, arg8, arg9, _arg10, _arg11, arg12, _arg13) { + if (arg8.source.contents === '' && arg9.sourceString === ',') { + throwError('Empty parameter list should not have a dangling comma.', createRef(arg9)); + } + checkVariableName(arg5.sourceString, createRef(arg5)); return createNode({ kind: 'def_native_function', @@ -371,7 +373,11 @@ semantics.addOperation('resolve_declaration', { ref: createRef(this) }) }, - NativeFunction_withVoid(_arg0, _arg1, arg2, _arg3, arg4, arg5, arg6, _arg7, arg8, _arg9, _arg10, _arg11) { + NativeFunction_withVoid(_arg0, _arg1, arg2, _arg3, arg4, arg5, arg6, _arg7, arg8, arg9, _arg10, _arg11) { + if (arg8.source.contents === '' && arg9.sourceString === ',') { + throwError('Empty parameter list should not have a dangling comma.', createRef(arg9)); + } + checkVariableName(arg5.sourceString, createRef(arg5)); return createNode({ kind: 'def_native_function', diff --git a/src/grammar/test-failed/case-23.tact b/src/grammar/test-failed/case-23.tact index 6037f335f..9ee5bcfc0 100644 --- a/src/grammar/test-failed/case-23.tact +++ b/src/grammar/test-failed/case-23.tact @@ -3,7 +3,3 @@ native testNativeFunc(,); @name(native_name_2) native testNativeFuncWithType(,): Int; - -abstract fun testFuncAbstract(,); - -abstract fun testFuncAbstractWithType(,): Int; \ No newline at end of file diff --git a/src/grammar/test-failed/case-24.tact b/src/grammar/test-failed/case-24.tact new file mode 100644 index 000000000..54a56e33a --- /dev/null +++ b/src/grammar/test-failed/case-24.tact @@ -0,0 +1,3 @@ +abstract fun testFuncAbstract(,); + +abstract fun testFuncAbstractWithType(,): Int; \ No newline at end of file From 572dedd623bd7a36be6b19f6d95196a50718fee2 Mon Sep 17 00:00:00 2001 From: Vitor Py Braga <12871+vitorpy@users.noreply.github.com> Date: Sun, 31 Mar 2024 20:31:40 +0200 Subject: [PATCH 18/22] Split test cases into different files --- .../__snapshots__/grammar.spec.ts.snap | 20 +++++++++++++++++-- src/grammar/test-failed/case-23.tact | 5 +---- src/grammar/test-failed/case-24.tact | 4 +--- src/grammar/test-failed/case-25.tact | 2 ++ src/grammar/test-failed/case-26.tact | 3 +++ 5 files changed, 25 insertions(+), 9 deletions(-) create mode 100644 src/grammar/test-failed/case-25.tact create mode 100644 src/grammar/test-failed/case-26.tact diff --git a/src/grammar/__snapshots__/grammar.spec.ts.snap b/src/grammar/__snapshots__/grammar.spec.ts.snap index 3aaad493a..ef48ba821 100644 --- a/src/grammar/__snapshots__/grammar.spec.ts.snap +++ b/src/grammar/__snapshots__/grammar.spec.ts.snap @@ -226,7 +226,6 @@ Line 2, col 23: 1 | @name(native_name_1) > 2 | native testNativeFunc(,); ^ - 3 | " `; @@ -235,7 +234,24 @@ exports[`grammar should fail case-24 1`] = ` Line 1, col 31: > 1 | abstract fun testFuncAbstract(,); ^ - 2 | +" +`; + +exports[`grammar should fail case-25 1`] = ` +":2:39: Empty parameter list should not have a dangling comma. +Line 2, col 39: + 1 | +> 2 | abstract fun testFuncAbstractWithType(,): Int; + ^ +" +`; + +exports[`grammar should fail case-26 1`] = ` +":3:31: Empty parameter list should not have a dangling comma. +Line 3, col 31: + 2 | @name(native_name_2) +> 3 | native testNativeFuncWithType(,): Int; + ^ " `; diff --git a/src/grammar/test-failed/case-23.tact b/src/grammar/test-failed/case-23.tact index 9ee5bcfc0..7bb4d0a21 100644 --- a/src/grammar/test-failed/case-23.tact +++ b/src/grammar/test-failed/case-23.tact @@ -1,5 +1,2 @@ @name(native_name_1) -native testNativeFunc(,); - -@name(native_name_2) -native testNativeFuncWithType(,): Int; +native testNativeFunc(,); \ No newline at end of file diff --git a/src/grammar/test-failed/case-24.tact b/src/grammar/test-failed/case-24.tact index 54a56e33a..7122d84bb 100644 --- a/src/grammar/test-failed/case-24.tact +++ b/src/grammar/test-failed/case-24.tact @@ -1,3 +1 @@ -abstract fun testFuncAbstract(,); - -abstract fun testFuncAbstractWithType(,): Int; \ No newline at end of file +abstract fun testFuncAbstract(,); \ No newline at end of file diff --git a/src/grammar/test-failed/case-25.tact b/src/grammar/test-failed/case-25.tact new file mode 100644 index 000000000..8cb987f89 --- /dev/null +++ b/src/grammar/test-failed/case-25.tact @@ -0,0 +1,2 @@ + +abstract fun testFuncAbstractWithType(,): Int; \ No newline at end of file diff --git a/src/grammar/test-failed/case-26.tact b/src/grammar/test-failed/case-26.tact new file mode 100644 index 000000000..ed957e3fe --- /dev/null +++ b/src/grammar/test-failed/case-26.tact @@ -0,0 +1,3 @@ + +@name(native_name_2) +native testNativeFuncWithType(,): Int; \ No newline at end of file From 4f4de39b6132c2425267b5f3cfadc6be2b2d4785 Mon Sep 17 00:00:00 2001 From: Anton Trunov Date: Tue, 2 Apr 2024 21:54:20 +0300 Subject: [PATCH 19/22] revert accidental deletion in grammar.ts --- src/grammar/grammar.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/grammar/grammar.ts b/src/grammar/grammar.ts index 9b34c3b90..91c631751 100644 --- a/src/grammar/grammar.ts +++ b/src/grammar/grammar.ts @@ -345,6 +345,8 @@ semantics.addOperation('resolve_declaration', { } const attributes = arg0.children.map((v) => v.resolve_attributes()) as ASTFunctionAttribute[]; + checkVariableName(arg2.sourceString, createRef(arg2)); + checkFunctionAttributes(true, attributes, createRef(this)); return createNode({ kind: 'def_function', origin: ctx!.origin, From 6984209374ad67a1a8ace5a0d596ef72078cf7d3 Mon Sep 17 00:00:00 2001 From: Anton Trunov Date: Tue, 2 Apr 2024 22:05:21 +0300 Subject: [PATCH 20/22] Update src/grammar/test-failed/case-26.tact --- src/grammar/test-failed/case-26.tact | 1 - 1 file changed, 1 deletion(-) diff --git a/src/grammar/test-failed/case-26.tact b/src/grammar/test-failed/case-26.tact index ed957e3fe..5f13a9844 100644 --- a/src/grammar/test-failed/case-26.tact +++ b/src/grammar/test-failed/case-26.tact @@ -1,3 +1,2 @@ - @name(native_name_2) native testNativeFuncWithType(,): Int; \ No newline at end of file From 9f8f8086bf32228cd3638967503c0365b46da874 Mon Sep 17 00:00:00 2001 From: Anton Trunov Date: Tue, 2 Apr 2024 22:05:29 +0300 Subject: [PATCH 21/22] Update src/grammar/test-failed/case-25.tact --- src/grammar/test-failed/case-25.tact | 1 - 1 file changed, 1 deletion(-) diff --git a/src/grammar/test-failed/case-25.tact b/src/grammar/test-failed/case-25.tact index 8cb987f89..6f8231ffe 100644 --- a/src/grammar/test-failed/case-25.tact +++ b/src/grammar/test-failed/case-25.tact @@ -1,2 +1 @@ - abstract fun testFuncAbstractWithType(,): Int; \ No newline at end of file From 46e45f7e591f8a40814b88497e7a93796c40ce61 Mon Sep 17 00:00:00 2001 From: Anton Trunov Date: Tue, 2 Apr 2024 22:12:03 +0300 Subject: [PATCH 22/22] update snapshot --- src/grammar/__snapshots__/grammar.spec.ts.snap | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/src/grammar/__snapshots__/grammar.spec.ts.snap b/src/grammar/__snapshots__/grammar.spec.ts.snap index ef48ba821..8492e3c7c 100644 --- a/src/grammar/__snapshots__/grammar.spec.ts.snap +++ b/src/grammar/__snapshots__/grammar.spec.ts.snap @@ -238,19 +238,18 @@ Line 1, col 31: `; exports[`grammar should fail case-25 1`] = ` -":2:39: Empty parameter list should not have a dangling comma. -Line 2, col 39: - 1 | -> 2 | abstract fun testFuncAbstractWithType(,): Int; +":1:39: Empty parameter list should not have a dangling comma. +Line 1, col 39: +> 1 | abstract fun testFuncAbstractWithType(,): Int; ^ " `; exports[`grammar should fail case-26 1`] = ` -":3:31: Empty parameter list should not have a dangling comma. -Line 3, col 31: - 2 | @name(native_name_2) -> 3 | native testNativeFuncWithType(,): Int; +":2:31: Empty parameter list should not have a dangling comma. +Line 2, col 31: + 1 | @name(native_name_2) +> 2 | native testNativeFuncWithType(,): Int; ^ " `;