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] 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,