diff --git a/README.md b/README.md index 7584e4b0..adfcc041 100644 --- a/README.md +++ b/README.md @@ -50,8 +50,7 @@ DiceScript将更好的实现骰点功能,语法规范化的同时,具有更 ## 进度 -- [x] 基础类型 int float string -- [x] 基础类型 undefined null +- [x] 基础类型 int float string null - [x] 一元算符 + - - [x] 二元算符 +-*/% >,>=,==,!=,<,<=,&,|,&&,|| - [x] 三元算符 ? : @@ -76,7 +75,7 @@ DiceScript将更好的实现骰点功能,语法规范化的同时,具有更 - [ ] 报错信息优化 - [x] 线程安全 - [x] 变量作用域 -- [ ] 测试覆盖率 77% / 90% +- [ ] 测试覆盖率 81% / 90% ## 更新记录 diff --git a/roll.peg b/roll.peg index 154e74e9..0b695fb0 100644 --- a/roll.peg +++ b/roll.peg @@ -30,10 +30,13 @@ func toStr(x []byte) string { } // 出口 -dicescript <- sp stmtRoot sp { +dicescript <- sp stmtSt sp { c.data.AddOp(typeHalt) } +stmtSt <- "^st" st_expr + / stmtRoot + stmtRoot <- stmtLines sp stmtLines <- &{return !c.data.Config.DisableStmts} stmtWithBlock stmtLines? @@ -422,8 +425,8 @@ commentLineRest2 <- (![\r\n] .)* [\r\n] // st &手枪=(1d6+2) st_expr <- st_modify_multi_1 - / st_assign_multi - / st_modify_multi_2 + / st_assign_multi + / st_modify_multi_2 // est <- eDice / &'(' ? e0 // est <- e0 @@ -451,7 +454,7 @@ st_modify_multi_1 <- ((st_name2 st_modify_rest1 / st_name2r st_modify_rest1 / st st_modify_rest1 <- sp ( "+=" sp text:< e0 > {c.data.AddStModify("+", text.(string))} / "-=" sp text:< e0 > {c.data.AddStModify("-", text.(string))} - ) +) // 第二类,在第一种基础上增加: // 力量123+1d3 @@ -466,7 +469,7 @@ st_modify_rest <- sp ( '+' '='? sp text:< e0 > {c.data.AddStModify("+", text.(string))} / &( '-' ) sp text:< e0 > {c.data.AddStModify("-", text.(string))} / '-' '='? sp text:< e0 > {c.data.AddStModify("-", text.(string))} - ) +) st_name1 <- text:<( id_ch0+ ":" id_ch0+ )> { c.data.PushStr(text.(string)) } // 结尾不带数字 st_name1r <- text: <( id_ch0+ )> { c.data.PushStr(text.(string)) } // 结尾不带数字 diff --git a/roll.peg.go b/roll.peg.go index 2f264376..0577642f 100644 --- a/roll.peg.go +++ b/roll.peg.go @@ -31,19 +31,33 @@ var g = &grammar{ run: (*parser).call_ondicescript_1, expr: &seqExpr{ exprs: []any{ - &ruleIRefExpr{index: 114 /* sp */}, - &ruleIRefExpr{index: 1 /* stmtRoot */}, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, + &ruleIRefExpr{index: 1 /* stmtSt */}, + &ruleIRefExpr{index: 115 /* sp */}, }, }, }, }, + { + name: "stmtSt", + expr: &choiceExpr{ + alternatives: []any{ + &seqExpr{ + exprs: []any{ + &litMatcher{val: "^st", want: "\"^st\""}, + &ruleIRefExpr{index: 122 /* st_expr */}, + }, + }, + &ruleIRefExpr{index: 2 /* stmtRoot */}, + }, + }, + }, { name: "stmtRoot", expr: &seqExpr{ exprs: []any{ - &ruleIRefExpr{index: 2 /* stmtLines */}, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 3 /* stmtLines */}, + &ruleIRefExpr{index: 115 /* sp */}, }, }, }, @@ -54,34 +68,34 @@ var g = &grammar{ &seqExpr{ exprs: []any{ &andCodeExpr{run: (*parser).call_onstmtLines_3}, - &ruleIRefExpr{index: 5 /* stmtWithBlock */}, + &ruleIRefExpr{index: 6 /* stmtWithBlock */}, &zeroOrOneExpr{ - expr: &ruleIRefExpr{index: 2 /* stmtLines */}, + expr: &ruleIRefExpr{index: 3 /* stmtLines */}, }, }, }, &seqExpr{ exprs: []any{ - &ruleIRefExpr{index: 3 /* flagsSwitch */}, + &ruleIRefExpr{index: 4 /* flagsSwitch */}, &zeroOrOneExpr{ - expr: &ruleIRefExpr{index: 2 /* stmtLines */}, + expr: &ruleIRefExpr{index: 3 /* stmtLines */}, }, }, }, &seqExpr{ exprs: []any{ - &ruleIRefExpr{index: 118 /* comment */}, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 119 /* comment */}, + &ruleIRefExpr{index: 115 /* sp */}, &zeroOrOneExpr{ - expr: &ruleIRefExpr{index: 2 /* stmtLines */}, + expr: &ruleIRefExpr{index: 3 /* stmtLines */}, }, }, }, &seqExpr{ exprs: []any{ - &ruleIRefExpr{index: 4 /* stmtWithSemicolon */}, + &ruleIRefExpr{index: 5 /* stmtWithSemicolon */}, &zeroOrOneExpr{ - expr: &ruleIRefExpr{index: 6 /* nextLine */}, + expr: &ruleIRefExpr{index: 7 /* nextLine */}, }, }, }, @@ -91,12 +105,12 @@ var g = &grammar{ expr: &seqExpr{ exprs: []any{ &litMatcher{val: ";", want: "\";\""}, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, }, }, }, &zeroOrOneExpr{ - expr: &ruleIRefExpr{index: 2 /* stmtLines */}, + expr: &ruleIRefExpr{index: 3 /* stmtLines */}, }, }, }, @@ -111,14 +125,14 @@ var g = &grammar{ expr: &seqExpr{ exprs: []any{ &litMatcher{val: "//", want: "\"//\""}, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, &litMatcher{val: "#EnableDice", want: "\"#EnableDice\""}, - &ruleIRefExpr{index: 116 /* sp1x */}, + &ruleIRefExpr{index: 117 /* sp1x */}, &labeledExpr{ label: "id", - expr: &ruleIRefExpr{index: 89 /* identifier */}, + expr: &ruleIRefExpr{index: 90 /* identifier */}, }, - &ruleIRefExpr{index: 116 /* sp1x */}, + &ruleIRefExpr{index: 117 /* sp1x */}, &labeledExpr{ label: "on", expr: &choiceExpr{ @@ -129,7 +143,7 @@ var g = &grammar{ }, textCapture: true, }, - &ruleIRefExpr{index: 119 /* commentLineRest */}, + &ruleIRefExpr{index: 120 /* commentLineRest */}, }, }, }, @@ -138,10 +152,10 @@ var g = &grammar{ name: "stmtWithSemicolon", expr: &choiceExpr{ alternatives: []any{ - &ruleIRefExpr{index: 23 /* stmtAssign */}, - &ruleIRefExpr{index: 7 /* stmtBreak */}, - &ruleIRefExpr{index: 8 /* stmtContinue */}, - &ruleIRefExpr{index: 25 /* exprRoot */}, + &ruleIRefExpr{index: 24 /* stmtAssign */}, + &ruleIRefExpr{index: 8 /* stmtBreak */}, + &ruleIRefExpr{index: 9 /* stmtContinue */}, + &ruleIRefExpr{index: 26 /* exprRoot */}, }, }, }, @@ -149,10 +163,10 @@ var g = &grammar{ name: "stmtWithBlock", expr: &choiceExpr{ alternatives: []any{ - &ruleIRefExpr{index: 13 /* stmtIf */}, - &ruleIRefExpr{index: 15 /* stmtFunc */}, - &ruleIRefExpr{index: 10 /* stmtWhile */}, - &ruleIRefExpr{index: 9 /* stmtReturn */}, + &ruleIRefExpr{index: 14 /* stmtIf */}, + &ruleIRefExpr{index: 16 /* stmtFunc */}, + &ruleIRefExpr{index: 11 /* stmtWhile */}, + &ruleIRefExpr{index: 10 /* stmtReturn */}, }, }, }, @@ -167,24 +181,24 @@ var g = &grammar{ alternatives: []any{ &seqExpr{ exprs: []any{ - &ruleIRefExpr{index: 117 /* spNoCR */}, + &ruleIRefExpr{index: 118 /* spNoCR */}, &litMatcher{val: "\n", want: "\"\\n\""}, }, }, &seqExpr{ exprs: []any{ - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, &litMatcher{val: ";", want: "\";\""}, }, }, }, }, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, }, }, }, &zeroOrOneExpr{ - expr: &ruleIRefExpr{index: 2 /* stmtLines */}, + expr: &ruleIRefExpr{index: 3 /* stmtLines */}, }, }, }, @@ -196,7 +210,7 @@ var g = &grammar{ expr: &seqExpr{ exprs: []any{ &litMatcher{val: "break", want: "\"break\""}, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, }, }, }, @@ -208,7 +222,7 @@ var g = &grammar{ expr: &seqExpr{ exprs: []any{ &litMatcher{val: "continue", want: "\"continue\""}, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, }, }, }, @@ -222,8 +236,8 @@ var g = &grammar{ expr: &seqExpr{ exprs: []any{ &litMatcher{val: "return", want: "\"return\""}, - &ruleIRefExpr{index: 116 /* sp1x */}, - &ruleIRefExpr{index: 25 /* exprRoot */}, + &ruleIRefExpr{index: 117 /* sp1x */}, + &ruleIRefExpr{index: 26 /* exprRoot */}, }, }, }, @@ -232,7 +246,7 @@ var g = &grammar{ expr: &seqExpr{ exprs: []any{ &litMatcher{val: "return", want: "\"return\""}, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, }, }, }, @@ -251,14 +265,14 @@ var g = &grammar{ run: (*parser).call_onstmtWhile_4, expr: &seqExpr{ exprs: []any{ - &ruleIRefExpr{index: 116 /* sp1x */}, - &ruleIRefExpr{index: 25 /* exprRoot */}, + &ruleIRefExpr{index: 117 /* sp1x */}, + &ruleIRefExpr{index: 26 /* exprRoot */}, }, }, }, &actionExpr{ run: (*parser).call_onstmtWhile_8, - expr: &ruleIRefExpr{index: 11 /* block */}, + expr: &ruleIRefExpr{index: 12 /* block */}, }, }, }, @@ -272,21 +286,21 @@ var g = &grammar{ &seqExpr{ exprs: []any{ &litMatcher{val: "{", want: "\"{\""}, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, &litMatcher{val: "}", want: "\"}\""}, }, }, &seqExpr{ exprs: []any{ &litMatcher{val: "{", want: "\"{\""}, - &ruleIRefExpr{index: 114 /* sp */}, - &ruleIRefExpr{index: 1 /* stmtRoot */}, + &ruleIRefExpr{index: 115 /* sp */}, + &ruleIRefExpr{index: 2 /* stmtRoot */}, &litMatcher{val: "}", want: "\"}\""}, }, }, }, }, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, }, }, }, @@ -299,14 +313,14 @@ var g = &grammar{ alternatives: []any{ &seqExpr{ exprs: []any{ - &ruleIRefExpr{index: 114 /* sp */}, - &ruleIRefExpr{index: 11 /* block */}, + &ruleIRefExpr{index: 115 /* sp */}, + &ruleIRefExpr{index: 12 /* block */}, }, }, &seqExpr{ exprs: []any{ - &ruleIRefExpr{index: 116 /* sp1x */}, - &ruleIRefExpr{index: 13 /* stmtIf */}, + &ruleIRefExpr{index: 117 /* sp1x */}, + &ruleIRefExpr{index: 14 /* stmtIf */}, }, }, }, @@ -323,19 +337,19 @@ var g = &grammar{ expr: &seqExpr{ exprs: []any{ &litMatcher{val: "if", want: "\"if\""}, - &ruleIRefExpr{index: 116 /* sp1x */}, - &ruleIRefExpr{index: 25 /* exprRoot */}, + &ruleIRefExpr{index: 117 /* sp1x */}, + &ruleIRefExpr{index: 26 /* exprRoot */}, }, }, }, &actionExpr{ run: (*parser).call_onstmtIf_7, - expr: &ruleIRefExpr{index: 11 /* block */}, + expr: &ruleIRefExpr{index: 12 /* block */}, }, &actionExpr{ run: (*parser).call_onstmtIf_9, expr: &zeroOrOneExpr{ - expr: &ruleIRefExpr{index: 12 /* stmtElse */}, + expr: &ruleIRefExpr{index: 13 /* stmtElse */}, }, }, }, @@ -351,9 +365,9 @@ var g = &grammar{ expr: &seqExpr{ exprs: []any{ &litMatcher{val: "(", want: "\"(\""}, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, &litMatcher{val: ")", want: "\")\""}, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, }, }, }, @@ -364,7 +378,7 @@ var g = &grammar{ expr: &seqExpr{ exprs: []any{ &litMatcher{val: "(", want: "\"(\""}, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, }, }, }, @@ -374,9 +388,9 @@ var g = &grammar{ exprs: []any{ &labeledExpr{ label: "id", - expr: &ruleIRefExpr{index: 89 /* identifier */}, + expr: &ruleIRefExpr{index: 90 /* identifier */}, }, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, }, }, }, @@ -390,12 +404,12 @@ var g = &grammar{ expr: &seqExpr{ exprs: []any{ &litMatcher{val: ",", want: "\",\""}, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, &labeledExpr{ label: "id2", - expr: &ruleIRefExpr{index: 89 /* identifier */}, + expr: &ruleIRefExpr{index: 90 /* identifier */}, }, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, }, }, }, @@ -406,7 +420,7 @@ var g = &grammar{ }, }, &litMatcher{val: ")", want: "\")\""}, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, }, }, }, @@ -424,12 +438,12 @@ var g = &grammar{ expr: &seqExpr{ exprs: []any{ &litMatcher{val: "func", want: "\"func\""}, - &ruleIRefExpr{index: 116 /* sp1x */}, + &ruleIRefExpr{index: 117 /* sp1x */}, &labeledExpr{ label: "id", - expr: &ruleIRefExpr{index: 89 /* identifier */}, + expr: &ruleIRefExpr{index: 90 /* identifier */}, }, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, }, }, }, @@ -437,9 +451,9 @@ var g = &grammar{ run: (*parser).call_onstmtFunc_9, expr: &seqExpr{ exprs: []any{ - &ruleIRefExpr{index: 14 /* func_def_params */}, + &ruleIRefExpr{index: 15 /* func_def_params */}, &litMatcher{val: "{", want: "\"{\""}, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, }, }, }, @@ -450,12 +464,12 @@ var g = &grammar{ &labeledExpr{ label: "exprText", expr: &zeroOrOneExpr{ - expr: &ruleIRefExpr{index: 1 /* stmtRoot */}, + expr: &ruleIRefExpr{index: 2 /* stmtRoot */}, }, textCapture: true, }, &litMatcher{val: "}", want: "\"}\""}, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, }, }, }, @@ -473,9 +487,9 @@ var g = &grammar{ exprs: []any{ &labeledExpr{ label: "id", - expr: &ruleIRefExpr{index: 89 /* identifier */}, + expr: &ruleIRefExpr{index: 90 /* identifier */}, }, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, }, }, }, @@ -484,8 +498,8 @@ var g = &grammar{ expr: &seqExpr{ exprs: []any{ &litMatcher{val: "=", want: "\"=\""}, - &ruleIRefExpr{index: 114 /* sp */}, - &ruleIRefExpr{index: 25 /* exprRoot */}, + &ruleIRefExpr{index: 115 /* sp */}, + &ruleIRefExpr{index: 26 /* exprRoot */}, }, }, }, @@ -504,9 +518,9 @@ var g = &grammar{ &litMatcher{val: "&", want: "\"&\""}, &labeledExpr{ label: "id", - expr: &ruleIRefExpr{index: 89 /* identifier */}, + expr: &ruleIRefExpr{index: 90 /* identifier */}, }, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, }, }, }, @@ -515,7 +529,7 @@ var g = &grammar{ expr: &seqExpr{ exprs: []any{ &litMatcher{val: "=", want: "\"=\""}, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, }, }, }, @@ -523,7 +537,7 @@ var g = &grammar{ run: (*parser).call_onstmtAssignType2_12, expr: &labeledExpr{ label: "expr", - expr: &ruleIRefExpr{index: 25 /* exprRoot */}, + expr: &ruleIRefExpr{index: 26 /* exprRoot */}, textCapture: true, }, }, @@ -542,9 +556,9 @@ var g = &grammar{ &litMatcher{val: "&", want: "\"&\""}, &labeledExpr{ label: "id", - expr: &ruleIRefExpr{index: 89 /* identifier */}, + expr: &ruleIRefExpr{index: 90 /* identifier */}, }, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, }, }, }, @@ -555,9 +569,9 @@ var g = &grammar{ &litMatcher{val: ".", want: "\".\""}, &labeledExpr{ label: "id2", - expr: &ruleIRefExpr{index: 89 /* identifier */}, + expr: &ruleIRefExpr{index: 90 /* identifier */}, }, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, }, }, }, @@ -565,10 +579,10 @@ var g = &grammar{ run: (*parser).call_onstmtAssignType3_14, expr: &seqExpr{ exprs: []any{ - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, &litMatcher{val: "=", want: "\"=\""}, - &ruleIRefExpr{index: 114 /* sp */}, - &ruleIRefExpr{index: 25 /* exprRoot */}, + &ruleIRefExpr{index: 115 /* sp */}, + &ruleIRefExpr{index: 26 /* exprRoot */}, }, }, }, @@ -585,14 +599,14 @@ var g = &grammar{ expr: &seqExpr{ exprs: []any{ &litMatcher{val: "this", want: "\"this\""}, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, &litMatcher{val: ".", want: "\".\""}, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, &labeledExpr{ label: "id", - expr: &ruleIRefExpr{index: 89 /* identifier */}, + expr: &ruleIRefExpr{index: 90 /* identifier */}, }, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, }, }, }, @@ -601,8 +615,8 @@ var g = &grammar{ expr: &seqExpr{ exprs: []any{ &litMatcher{val: "=", want: "\"=\""}, - &ruleIRefExpr{index: 114 /* sp */}, - &ruleIRefExpr{index: 25 /* exprRoot */}, + &ruleIRefExpr{index: 115 /* sp */}, + &ruleIRefExpr{index: 26 /* exprRoot */}, }, }, }, @@ -620,9 +634,9 @@ var g = &grammar{ exprs: []any{ &labeledExpr{ label: "id", - expr: &ruleIRefExpr{index: 89 /* identifier */}, + expr: &ruleIRefExpr{index: 90 /* identifier */}, }, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, }, }, }, @@ -631,12 +645,12 @@ var g = &grammar{ expr: &seqExpr{ exprs: []any{ &litMatcher{val: ".", want: "\".\""}, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, &labeledExpr{ label: "id2", - expr: &ruleIRefExpr{index: 89 /* identifier */}, + expr: &ruleIRefExpr{index: 90 /* identifier */}, }, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, }, }, }, @@ -645,8 +659,8 @@ var g = &grammar{ expr: &seqExpr{ exprs: []any{ &litMatcher{val: "=", want: "\"=\""}, - &ruleIRefExpr{index: 114 /* sp */}, - &ruleIRefExpr{index: 25 /* exprRoot */}, + &ruleIRefExpr{index: 115 /* sp */}, + &ruleIRefExpr{index: 26 /* exprRoot */}, }, }, }, @@ -659,15 +673,15 @@ var g = &grammar{ run: (*parser).call_onstmtAssignType6_1, expr: &seqExpr{ exprs: []any{ - &ruleIRefExpr{index: 25 /* exprRoot */}, + &ruleIRefExpr{index: 26 /* exprRoot */}, &litMatcher{val: "[", want: "\"[\""}, - &ruleIRefExpr{index: 114 /* sp */}, - &ruleIRefExpr{index: 25 /* exprRoot */}, + &ruleIRefExpr{index: 115 /* sp */}, + &ruleIRefExpr{index: 26 /* exprRoot */}, &litMatcher{val: "]", want: "\"]\""}, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, &litMatcher{val: "=", want: "\"=\""}, - &ruleIRefExpr{index: 114 /* sp */}, - &ruleIRefExpr{index: 25 /* exprRoot */}, + &ruleIRefExpr{index: 115 /* sp */}, + &ruleIRefExpr{index: 26 /* exprRoot */}, }, }, }, @@ -678,11 +692,11 @@ var g = &grammar{ run: (*parser).call_onstmtAssignType7_1, expr: &seqExpr{ exprs: []any{ - &ruleIRefExpr{index: 25 /* exprRoot */}, - &ruleIRefExpr{index: 27 /* _sliceSuffix */}, + &ruleIRefExpr{index: 26 /* exprRoot */}, + &ruleIRefExpr{index: 28 /* _sliceSuffix */}, &litMatcher{val: "=", want: "\"=\""}, - &ruleIRefExpr{index: 114 /* sp */}, - &ruleIRefExpr{index: 25 /* exprRoot */}, + &ruleIRefExpr{index: 115 /* sp */}, + &ruleIRefExpr{index: 26 /* exprRoot */}, }, }, }, @@ -694,57 +708,57 @@ var g = &grammar{ &seqExpr{ exprs: []any{ &andExpr{ - expr: &ruleIRefExpr{index: 16 /* stmtAssignType1 */}, + expr: &ruleIRefExpr{index: 17 /* stmtAssignType1 */}, }, - &ruleIRefExpr{index: 16 /* stmtAssignType1 */}, + &ruleIRefExpr{index: 17 /* stmtAssignType1 */}, }, }, &seqExpr{ exprs: []any{ &andExpr{ - expr: &ruleIRefExpr{index: 17 /* stmtAssignType2 */}, + expr: &ruleIRefExpr{index: 18 /* stmtAssignType2 */}, }, - &ruleIRefExpr{index: 17 /* stmtAssignType2 */}, + &ruleIRefExpr{index: 18 /* stmtAssignType2 */}, }, }, &seqExpr{ exprs: []any{ &andExpr{ - expr: &ruleIRefExpr{index: 18 /* stmtAssignType3 */}, + expr: &ruleIRefExpr{index: 19 /* stmtAssignType3 */}, }, - &ruleIRefExpr{index: 18 /* stmtAssignType3 */}, + &ruleIRefExpr{index: 19 /* stmtAssignType3 */}, }, }, &seqExpr{ exprs: []any{ &andExpr{ - expr: &ruleIRefExpr{index: 19 /* stmtAssignType4 */}, + expr: &ruleIRefExpr{index: 20 /* stmtAssignType4 */}, }, - &ruleIRefExpr{index: 19 /* stmtAssignType4 */}, + &ruleIRefExpr{index: 20 /* stmtAssignType4 */}, }, }, &seqExpr{ exprs: []any{ &andExpr{ - expr: &ruleIRefExpr{index: 20 /* stmtAssignType5 */}, + expr: &ruleIRefExpr{index: 21 /* stmtAssignType5 */}, }, - &ruleIRefExpr{index: 20 /* stmtAssignType5 */}, + &ruleIRefExpr{index: 21 /* stmtAssignType5 */}, }, }, &seqExpr{ exprs: []any{ &andExpr{ - expr: &ruleIRefExpr{index: 21 /* stmtAssignType6 */}, + expr: &ruleIRefExpr{index: 22 /* stmtAssignType6 */}, }, - &ruleIRefExpr{index: 21 /* stmtAssignType6 */}, + &ruleIRefExpr{index: 22 /* stmtAssignType6 */}, }, }, &seqExpr{ exprs: []any{ &andExpr{ - expr: &ruleIRefExpr{index: 22 /* stmtAssignType7 */}, + expr: &ruleIRefExpr{index: 23 /* stmtAssignType7 */}, }, - &ruleIRefExpr{index: 22 /* stmtAssignType7 */}, + &ruleIRefExpr{index: 23 /* stmtAssignType7 */}, }, }, }, @@ -759,8 +773,8 @@ var g = &grammar{ &andExpr{ expr: &seqExpr{ exprs: []any{ - &ruleIRefExpr{index: 94 /* subX */}, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 95 /* subX */}, + &ruleIRefExpr{index: 115 /* sp */}, &charClassMatcher{ val: "[-+*/%^dDcCaA&|?<>=]", chars: []rune{'-', '+', '*', '/', '%', '^', 'd', 'D', 'c', 'C', 'a', 'A', '&', '|', '?', '<', '>', '='}, @@ -768,15 +782,15 @@ var g = &grammar{ }, }, }, - &ruleIRefExpr{index: 29 /* exprSlice */}, + &ruleIRefExpr{index: 30 /* exprSlice */}, }, }, &seqExpr{ exprs: []any{ &andExpr{ - expr: &ruleIRefExpr{index: 94 /* subX */}, + expr: &ruleIRefExpr{index: 95 /* subX */}, }, - &ruleIRefExpr{index: 94 /* subX */}, + &ruleIRefExpr{index: 95 /* subX */}, }, }, }, @@ -788,11 +802,11 @@ var g = &grammar{ exprs: []any{ &choiceExpr{ alternatives: []any{ - &ruleIRefExpr{index: 24 /* nestedBoost */}, - &ruleIRefExpr{index: 29 /* exprSlice */}, + &ruleIRefExpr{index: 25 /* nestedBoost */}, + &ruleIRefExpr{index: 30 /* exprSlice */}, }, }, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, }, }, }, @@ -803,13 +817,13 @@ var g = &grammar{ &seqExpr{ exprs: []any{ &litMatcher{val: ":", want: "\":\""}, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, &choiceExpr{ alternatives: []any{ - &ruleIRefExpr{index: 25 /* exprRoot */}, + &ruleIRefExpr{index: 26 /* exprRoot */}, &actionExpr{ run: (*parser).call_on_step_7, - expr: &ruleIRefExpr{index: 114 /* sp */}, + expr: &ruleIRefExpr{index: 115 /* sp */}, }, }, }, @@ -817,7 +831,7 @@ var g = &grammar{ }, &actionExpr{ run: (*parser).call_on_step_9, - expr: &ruleIRefExpr{index: 114 /* sp */}, + expr: &ruleIRefExpr{index: 115 /* sp */}, }, }, }, @@ -827,30 +841,30 @@ var g = &grammar{ expr: &seqExpr{ exprs: []any{ &litMatcher{val: "[", want: "\"[\""}, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, &choiceExpr{ alternatives: []any{ - &ruleIRefExpr{index: 25 /* exprRoot */}, + &ruleIRefExpr{index: 26 /* exprRoot */}, &actionExpr{ run: (*parser).call_on_sliceSuffix_6, - expr: &ruleIRefExpr{index: 114 /* sp */}, + expr: &ruleIRefExpr{index: 115 /* sp */}, }, }, }, &litMatcher{val: ":", want: "\":\""}, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, &choiceExpr{ alternatives: []any{ - &ruleIRefExpr{index: 25 /* exprRoot */}, + &ruleIRefExpr{index: 26 /* exprRoot */}, &actionExpr{ run: (*parser).call_on_sliceSuffix_12, - expr: &ruleIRefExpr{index: 114 /* sp */}, + expr: &ruleIRefExpr{index: 115 /* sp */}, }, }, }, - &ruleIRefExpr{index: 26 /* _step */}, + &ruleIRefExpr{index: 27 /* _step */}, &litMatcher{val: "]", want: "\"]\""}, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, }, }, }, @@ -860,8 +874,8 @@ var g = &grammar{ run: (*parser).call_onexprSliceType1_1, expr: &seqExpr{ exprs: []any{ - &ruleIRefExpr{index: 33 /* exprTernary */}, - &ruleIRefExpr{index: 27 /* _sliceSuffix */}, + &ruleIRefExpr{index: 34 /* exprTernary */}, + &ruleIRefExpr{index: 28 /* _sliceSuffix */}, ¬Expr{ expr: &litMatcher{val: "=", want: "\"=\""}, }, @@ -876,12 +890,12 @@ var g = &grammar{ &seqExpr{ exprs: []any{ &andExpr{ - expr: &ruleIRefExpr{index: 28 /* exprSliceType1 */}, + expr: &ruleIRefExpr{index: 29 /* exprSliceType1 */}, }, - &ruleIRefExpr{index: 28 /* exprSliceType1 */}, + &ruleIRefExpr{index: 29 /* exprSliceType1 */}, }, }, - &ruleIRefExpr{index: 33 /* exprTernary */}, + &ruleIRefExpr{index: 34 /* exprTernary */}, }, }, }, @@ -893,10 +907,10 @@ var g = &grammar{ run: (*parser).call_onexprValueIfExists_2, expr: &seqExpr{ exprs: []any{ - &ruleIRefExpr{index: 34 /* exprLogicOr */}, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 35 /* exprLogicOr */}, + &ruleIRefExpr{index: 115 /* sp */}, &litMatcher{val: "?", want: "\"?\""}, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, }, }, }, @@ -904,8 +918,8 @@ var g = &grammar{ run: (*parser).call_onexprValueIfExists_8, expr: &seqExpr{ exprs: []any{ - &ruleIRefExpr{index: 34 /* exprLogicOr */}, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 35 /* exprLogicOr */}, + &ruleIRefExpr{index: 115 /* sp */}, }, }, }, @@ -920,10 +934,10 @@ var g = &grammar{ run: (*parser).call_onexprTernaryType1_2, expr: &seqExpr{ exprs: []any{ - &ruleIRefExpr{index: 34 /* exprLogicOr */}, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 35 /* exprLogicOr */}, + &ruleIRefExpr{index: 115 /* sp */}, &litMatcher{val: "?", want: "\"?\""}, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, }, }, }, @@ -931,10 +945,10 @@ var g = &grammar{ run: (*parser).call_onexprTernaryType1_8, expr: &seqExpr{ exprs: []any{ - &ruleIRefExpr{index: 34 /* exprLogicOr */}, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 35 /* exprLogicOr */}, + &ruleIRefExpr{index: 115 /* sp */}, &litMatcher{val: ":", want: "\":\""}, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, }, }, }, @@ -942,8 +956,8 @@ var g = &grammar{ run: (*parser).call_onexprTernaryType1_14, expr: &seqExpr{ exprs: []any{ - &ruleIRefExpr{index: 34 /* exprLogicOr */}, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 35 /* exprLogicOr */}, + &ruleIRefExpr{index: 115 /* sp */}, }, }, }, @@ -956,7 +970,7 @@ var g = &grammar{ exprs: []any{ &actionExpr{ run: (*parser).call_onexprTernaryType2_2, - expr: &ruleIRefExpr{index: 30 /* exprValueIfExists */}, + expr: &ruleIRefExpr{index: 31 /* exprValueIfExists */}, }, &actionExpr{ run: (*parser).call_onexprTernaryType2_4, @@ -966,8 +980,8 @@ var g = &grammar{ expr: &seqExpr{ exprs: []any{ &litMatcher{val: ",", want: "\",\""}, - &ruleIRefExpr{index: 114 /* sp */}, - &ruleIRefExpr{index: 30 /* exprValueIfExists */}, + &ruleIRefExpr{index: 115 /* sp */}, + &ruleIRefExpr{index: 31 /* exprValueIfExists */}, }, }, }, @@ -983,20 +997,20 @@ var g = &grammar{ &seqExpr{ exprs: []any{ &andExpr{ - expr: &ruleIRefExpr{index: 31 /* exprTernaryType1 */}, + expr: &ruleIRefExpr{index: 32 /* exprTernaryType1 */}, }, - &ruleIRefExpr{index: 31 /* exprTernaryType1 */}, + &ruleIRefExpr{index: 32 /* exprTernaryType1 */}, }, }, &seqExpr{ exprs: []any{ &andExpr{ - expr: &ruleIRefExpr{index: 32 /* exprTernaryType2 */}, + expr: &ruleIRefExpr{index: 33 /* exprTernaryType2 */}, }, - &ruleIRefExpr{index: 32 /* exprTernaryType2 */}, + &ruleIRefExpr{index: 33 /* exprTernaryType2 */}, }, }, - &ruleIRefExpr{index: 34 /* exprLogicOr */}, + &ruleIRefExpr{index: 35 /* exprLogicOr */}, }, }, }, @@ -1004,18 +1018,18 @@ var g = &grammar{ name: "exprLogicOr", expr: &seqExpr{ exprs: []any{ - &ruleIRefExpr{index: 35 /* exprLogicAnd */}, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 36 /* exprLogicAnd */}, + &ruleIRefExpr{index: 115 /* sp */}, &zeroOrMoreExpr{ expr: &seqExpr{ exprs: []any{ &actionExpr{ run: (*parser).call_onexprLogicOr_6, - expr: &ruleIRefExpr{index: 106 /* logicOr */}, + expr: &ruleIRefExpr{index: 107 /* logicOr */}, }, &actionExpr{ run: (*parser).call_onexprLogicOr_8, - expr: &ruleIRefExpr{index: 35 /* exprLogicAnd */}, + expr: &ruleIRefExpr{index: 36 /* exprLogicAnd */}, }, &codeExpr{ run: (*parser).call_onexprLogicOr_10, @@ -1030,15 +1044,15 @@ var g = &grammar{ name: "exprLogicAnd", expr: &seqExpr{ exprs: []any{ - &ruleIRefExpr{index: 36 /* exprBitwiseOr */}, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 37 /* exprBitwiseOr */}, + &ruleIRefExpr{index: 115 /* sp */}, &zeroOrMoreExpr{ expr: &actionExpr{ run: (*parser).call_onexprLogicAnd_5, expr: &seqExpr{ exprs: []any{ - &ruleIRefExpr{index: 107 /* logicAnd */}, - &ruleIRefExpr{index: 36 /* exprBitwiseOr */}, + &ruleIRefExpr{index: 108 /* logicAnd */}, + &ruleIRefExpr{index: 37 /* exprBitwiseOr */}, }, }, }, @@ -1053,20 +1067,20 @@ var g = &grammar{ &seqExpr{ exprs: []any{ &andCodeExpr{run: (*parser).call_onexprBitwiseOr_3}, - &ruleIRefExpr{index: 38 /* exprCompare */}, + &ruleIRefExpr{index: 39 /* exprCompare */}, }, }, &seqExpr{ exprs: []any{ - &ruleIRefExpr{index: 37 /* exprBitwiseAnd */}, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 38 /* exprBitwiseAnd */}, + &ruleIRefExpr{index: 115 /* sp */}, &zeroOrMoreExpr{ expr: &actionExpr{ run: (*parser).call_onexprBitwiseOr_9, expr: &seqExpr{ exprs: []any{ - &ruleIRefExpr{index: 104 /* bitwiseOr */}, - &ruleIRefExpr{index: 37 /* exprBitwiseAnd */}, + &ruleIRefExpr{index: 105 /* bitwiseOr */}, + &ruleIRefExpr{index: 38 /* exprBitwiseAnd */}, }, }, }, @@ -1080,15 +1094,15 @@ var g = &grammar{ name: "exprBitwiseAnd", expr: &seqExpr{ exprs: []any{ - &ruleIRefExpr{index: 38 /* exprCompare */}, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 39 /* exprCompare */}, + &ruleIRefExpr{index: 115 /* sp */}, &zeroOrMoreExpr{ expr: &actionExpr{ run: (*parser).call_onexprBitwiseAnd_5, expr: &seqExpr{ exprs: []any{ - &ruleIRefExpr{index: 105 /* bitwiseAnd */}, - &ruleIRefExpr{index: 38 /* exprCompare */}, + &ruleIRefExpr{index: 106 /* bitwiseAnd */}, + &ruleIRefExpr{index: 39 /* exprCompare */}, }, }, }, @@ -1100,8 +1114,8 @@ var g = &grammar{ name: "exprCompare", expr: &seqExpr{ exprs: []any{ - &ruleIRefExpr{index: 39 /* exprAdditive */}, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 40 /* exprAdditive */}, + &ruleIRefExpr{index: 115 /* sp */}, &zeroOrMoreExpr{ expr: &choiceExpr{ alternatives: []any{ @@ -1109,8 +1123,8 @@ var g = &grammar{ run: (*parser).call_onexprCompare_6, expr: &seqExpr{ exprs: []any{ - &ruleIRefExpr{index: 108 /* lt */}, - &ruleIRefExpr{index: 39 /* exprAdditive */}, + &ruleIRefExpr{index: 109 /* lt */}, + &ruleIRefExpr{index: 40 /* exprAdditive */}, }, }, }, @@ -1118,8 +1132,8 @@ var g = &grammar{ run: (*parser).call_onexprCompare_10, expr: &seqExpr{ exprs: []any{ - &ruleIRefExpr{index: 110 /* le */}, - &ruleIRefExpr{index: 39 /* exprAdditive */}, + &ruleIRefExpr{index: 111 /* le */}, + &ruleIRefExpr{index: 40 /* exprAdditive */}, }, }, }, @@ -1127,8 +1141,8 @@ var g = &grammar{ run: (*parser).call_onexprCompare_14, expr: &seqExpr{ exprs: []any{ - &ruleIRefExpr{index: 112 /* eq */}, - &ruleIRefExpr{index: 39 /* exprAdditive */}, + &ruleIRefExpr{index: 113 /* eq */}, + &ruleIRefExpr{index: 40 /* exprAdditive */}, }, }, }, @@ -1136,8 +1150,8 @@ var g = &grammar{ run: (*parser).call_onexprCompare_18, expr: &seqExpr{ exprs: []any{ - &ruleIRefExpr{index: 113 /* ne */}, - &ruleIRefExpr{index: 39 /* exprAdditive */}, + &ruleIRefExpr{index: 114 /* ne */}, + &ruleIRefExpr{index: 40 /* exprAdditive */}, }, }, }, @@ -1145,8 +1159,8 @@ var g = &grammar{ run: (*parser).call_onexprCompare_22, expr: &seqExpr{ exprs: []any{ - &ruleIRefExpr{index: 111 /* ge */}, - &ruleIRefExpr{index: 39 /* exprAdditive */}, + &ruleIRefExpr{index: 112 /* ge */}, + &ruleIRefExpr{index: 40 /* exprAdditive */}, }, }, }, @@ -1154,8 +1168,8 @@ var g = &grammar{ run: (*parser).call_onexprCompare_26, expr: &seqExpr{ exprs: []any{ - &ruleIRefExpr{index: 109 /* gt */}, - &ruleIRefExpr{index: 39 /* exprAdditive */}, + &ruleIRefExpr{index: 110 /* gt */}, + &ruleIRefExpr{index: 40 /* exprAdditive */}, }, }, }, @@ -1169,8 +1183,8 @@ var g = &grammar{ name: "exprAdditive", expr: &seqExpr{ exprs: []any{ - &ruleIRefExpr{index: 40 /* exprMultiplicative */}, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 41 /* exprMultiplicative */}, + &ruleIRefExpr{index: 115 /* sp */}, &zeroOrMoreExpr{ expr: &choiceExpr{ alternatives: []any{ @@ -1178,8 +1192,8 @@ var g = &grammar{ run: (*parser).call_onexprAdditive_6, expr: &seqExpr{ exprs: []any{ - &ruleIRefExpr{index: 97 /* add */}, - &ruleIRefExpr{index: 40 /* exprMultiplicative */}, + &ruleIRefExpr{index: 98 /* add */}, + &ruleIRefExpr{index: 41 /* exprMultiplicative */}, }, }, }, @@ -1187,8 +1201,8 @@ var g = &grammar{ run: (*parser).call_onexprAdditive_10, expr: &seqExpr{ exprs: []any{ - &ruleIRefExpr{index: 98 /* minus */}, - &ruleIRefExpr{index: 40 /* exprMultiplicative */}, + &ruleIRefExpr{index: 99 /* minus */}, + &ruleIRefExpr{index: 41 /* exprMultiplicative */}, }, }, }, @@ -1202,8 +1216,8 @@ var g = &grammar{ name: "exprMultiplicative", expr: &seqExpr{ exprs: []any{ - &ruleIRefExpr{index: 41 /* exprNullCoalescing */}, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 42 /* exprNullCoalescing */}, + &ruleIRefExpr{index: 115 /* sp */}, &zeroOrMoreExpr{ expr: &choiceExpr{ alternatives: []any{ @@ -1211,8 +1225,8 @@ var g = &grammar{ run: (*parser).call_onexprMultiplicative_6, expr: &seqExpr{ exprs: []any{ - &ruleIRefExpr{index: 99 /* multiply */}, - &ruleIRefExpr{index: 42 /* exprExp */}, + &ruleIRefExpr{index: 100 /* multiply */}, + &ruleIRefExpr{index: 43 /* exprExp */}, }, }, }, @@ -1220,8 +1234,8 @@ var g = &grammar{ run: (*parser).call_onexprMultiplicative_10, expr: &seqExpr{ exprs: []any{ - &ruleIRefExpr{index: 100 /* divide */}, - &ruleIRefExpr{index: 42 /* exprExp */}, + &ruleIRefExpr{index: 101 /* divide */}, + &ruleIRefExpr{index: 43 /* exprExp */}, }, }, }, @@ -1229,8 +1243,8 @@ var g = &grammar{ run: (*parser).call_onexprMultiplicative_14, expr: &seqExpr{ exprs: []any{ - &ruleIRefExpr{index: 101 /* modulus */}, - &ruleIRefExpr{index: 42 /* exprExp */}, + &ruleIRefExpr{index: 102 /* modulus */}, + &ruleIRefExpr{index: 43 /* exprExp */}, }, }, }, @@ -1244,15 +1258,15 @@ var g = &grammar{ name: "exprNullCoalescing", expr: &seqExpr{ exprs: []any{ - &ruleIRefExpr{index: 42 /* exprExp */}, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 43 /* exprExp */}, + &ruleIRefExpr{index: 115 /* sp */}, &zeroOrMoreExpr{ expr: &actionExpr{ run: (*parser).call_onexprNullCoalescing_5, expr: &seqExpr{ exprs: []any{ - &ruleIRefExpr{index: 103 /* nullCoalescing */}, - &ruleIRefExpr{index: 42 /* exprExp */}, + &ruleIRefExpr{index: 104 /* nullCoalescing */}, + &ruleIRefExpr{index: 43 /* exprExp */}, }, }, }, @@ -1264,15 +1278,15 @@ var g = &grammar{ name: "exprExp", expr: &seqExpr{ exprs: []any{ - &ruleIRefExpr{index: 43 /* exprUnaryNeg */}, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 44 /* exprUnaryNeg */}, + &ruleIRefExpr{index: 115 /* sp */}, &zeroOrMoreExpr{ expr: &actionExpr{ run: (*parser).call_onexprExp_5, expr: &seqExpr{ exprs: []any{ - &ruleIRefExpr{index: 102 /* exponentiation */}, - &ruleIRefExpr{index: 43 /* exprUnaryNeg */}, + &ruleIRefExpr{index: 103 /* exponentiation */}, + &ruleIRefExpr{index: 44 /* exprUnaryNeg */}, }, }, }, @@ -1288,12 +1302,12 @@ var g = &grammar{ run: (*parser).call_onexprUnaryNeg_2, expr: &seqExpr{ exprs: []any{ - &ruleIRefExpr{index: 98 /* minus */}, - &ruleIRefExpr{index: 25 /* exprRoot */}, + &ruleIRefExpr{index: 99 /* minus */}, + &ruleIRefExpr{index: 26 /* exprRoot */}, }, }, }, - &ruleIRefExpr{index: 44 /* exprUnaryPos */}, + &ruleIRefExpr{index: 45 /* exprUnaryPos */}, }, }, }, @@ -1305,12 +1319,12 @@ var g = &grammar{ run: (*parser).call_onexprUnaryPos_2, expr: &seqExpr{ exprs: []any{ - &ruleIRefExpr{index: 97 /* add */}, - &ruleIRefExpr{index: 25 /* exprRoot */}, + &ruleIRefExpr{index: 98 /* add */}, + &ruleIRefExpr{index: 26 /* exprRoot */}, }, }, }, - &ruleIRefExpr{index: 67 /* exprDice */}, + &ruleIRefExpr{index: 68 /* exprDice */}, }, }, }, @@ -1318,8 +1332,8 @@ var g = &grammar{ name: "nos", expr: &choiceExpr{ alternatives: []any{ - &ruleIRefExpr{index: 79 /* number */}, - &ruleIRefExpr{index: 93 /* sub */}, + &ruleIRefExpr{index: 80 /* number */}, + &ruleIRefExpr{index: 94 /* sub */}, }, }, }, @@ -1352,7 +1366,7 @@ var g = &grammar{ }, }, }, - &ruleIRefExpr{index: 45 /* nos */}, + &ruleIRefExpr{index: 46 /* nos */}, }, }, }, @@ -1381,7 +1395,7 @@ var g = &grammar{ }, }, }, - &ruleIRefExpr{index: 45 /* nos */}, + &ruleIRefExpr{index: 46 /* nos */}, }, }, }, @@ -1402,7 +1416,7 @@ var g = &grammar{ expr: &seqExpr{ exprs: []any{ &litMatcher{val: "dh", want: "\"dh\""}, - &ruleIRefExpr{index: 45 /* nos */}, + &ruleIRefExpr{index: 46 /* nos */}, }, }, }, @@ -1415,7 +1429,7 @@ var g = &grammar{ expr: &seqExpr{ exprs: []any{ &litMatcher{val: "dl", want: "\"dl\""}, - &ruleIRefExpr{index: 45 /* nos */}, + &ruleIRefExpr{index: 46 /* nos */}, }, }, }, @@ -1435,7 +1449,7 @@ var g = &grammar{ expr: &seqExpr{ exprs: []any{ &litMatcher{val: "min", want: "\"min\""}, - &ruleIRefExpr{index: 45 /* nos */}, + &ruleIRefExpr{index: 46 /* nos */}, }, }, }, @@ -1444,7 +1458,7 @@ var g = &grammar{ expr: &seqExpr{ exprs: []any{ &litMatcher{val: "max", want: "\"max\""}, - &ruleIRefExpr{index: 45 /* nos */}, + &ruleIRefExpr{index: 46 /* nos */}, }, }, }, @@ -1470,12 +1484,12 @@ var g = &grammar{ name: "_diceType1", expr: &seqExpr{ exprs: []any{ - &ruleIRefExpr{index: 45 /* nos */}, + &ruleIRefExpr{index: 46 /* nos */}, &charClassMatcher{ val: "[dD]", chars: []rune{'d', 'D'}, }, - &ruleIRefExpr{index: 45 /* nos */}, + &ruleIRefExpr{index: 46 /* nos */}, }, }, }, @@ -1487,7 +1501,7 @@ var g = &grammar{ val: "[dD]", chars: []rune{'d', 'D'}, }, - &ruleIRefExpr{index: 45 /* nos */}, + &ruleIRefExpr{index: 46 /* nos */}, }, }, }, @@ -1495,7 +1509,7 @@ var g = &grammar{ name: "_diceType3", expr: &seqExpr{ exprs: []any{ - &ruleIRefExpr{index: 45 /* nos */}, + &ruleIRefExpr{index: 46 /* nos */}, &charClassMatcher{ val: "[dD]", chars: []rune{'d', 'D'}, @@ -1523,12 +1537,12 @@ var g = &grammar{ }, &seqExpr{ exprs: []any{ - &ruleIRefExpr{index: 45 /* nos */}, + &ruleIRefExpr{index: 46 /* nos */}, &zeroOrOneExpr{ - expr: &ruleIRefExpr{index: 48 /* _diceMod */}, + expr: &ruleIRefExpr{index: 49 /* _diceMod */}, }, &zeroOrOneExpr{ - expr: &ruleIRefExpr{index: 49 /* _diceModType2 */}, + expr: &ruleIRefExpr{index: 50 /* _diceModType2 */}, }, }, }, @@ -1548,17 +1562,17 @@ var g = &grammar{ }, &seqExpr{ exprs: []any{ - &ruleIRefExpr{index: 45 /* nos */}, + &ruleIRefExpr{index: 46 /* nos */}, &zeroOrOneExpr{ expr: &choiceExpr{ alternatives: []any{ - &ruleIRefExpr{index: 50 /* _dicePearMod */}, - &ruleIRefExpr{index: 48 /* _diceMod */}, + &ruleIRefExpr{index: 51 /* _dicePearMod */}, + &ruleIRefExpr{index: 49 /* _diceMod */}, }, }, }, &zeroOrOneExpr{ - expr: &ruleIRefExpr{index: 49 /* _diceModType2 */}, + expr: &ruleIRefExpr{index: 50 /* _diceModType2 */}, }, }, }, @@ -1581,13 +1595,13 @@ var g = &grammar{ &zeroOrOneExpr{ expr: &choiceExpr{ alternatives: []any{ - &ruleIRefExpr{index: 50 /* _dicePearMod */}, - &ruleIRefExpr{index: 48 /* _diceMod */}, + &ruleIRefExpr{index: 51 /* _dicePearMod */}, + &ruleIRefExpr{index: 49 /* _diceMod */}, }, }, }, &zeroOrOneExpr{ - expr: &ruleIRefExpr{index: 49 /* _diceModType2 */}, + expr: &ruleIRefExpr{index: 50 /* _diceModType2 */}, }, }, }, @@ -1601,11 +1615,11 @@ var g = &grammar{ expr: &seqExpr{ exprs: []any{ &andExpr{ - expr: &ruleIRefExpr{index: 52 /* _diceType2 */}, + expr: &ruleIRefExpr{index: 53 /* _diceType2 */}, }, - &ruleIRefExpr{index: 46 /* detailStart */}, - &ruleIRefExpr{index: 55 /* _diceExpr1 */}, - &ruleIRefExpr{index: 47 /* detailEnd */}, + &ruleIRefExpr{index: 47 /* detailStart */}, + &ruleIRefExpr{index: 56 /* _diceExpr1 */}, + &ruleIRefExpr{index: 48 /* detailEnd */}, }, }, }, @@ -1618,7 +1632,7 @@ var g = &grammar{ val: "[aA]", chars: []rune{'a', 'A'}, }, - &ruleIRefExpr{index: 45 /* nos */}, + &ruleIRefExpr{index: 46 /* nos */}, &zeroOrMoreExpr{ expr: &choiceExpr{ alternatives: []any{ @@ -1628,7 +1642,7 @@ var g = &grammar{ val: "[mM]", chars: []rune{'m', 'M'}, }, - &ruleIRefExpr{index: 45 /* nos */}, + &ruleIRefExpr{index: 46 /* nos */}, }, }, &seqExpr{ @@ -1637,7 +1651,7 @@ var g = &grammar{ val: "[kK]", chars: []rune{'k', 'K'}, }, - &ruleIRefExpr{index: 45 /* nos */}, + &ruleIRefExpr{index: 46 /* nos */}, }, }, &seqExpr{ @@ -1646,7 +1660,7 @@ var g = &grammar{ val: "[qQ]", chars: []rune{'q', 'Q'}, }, - &ruleIRefExpr{index: 45 /* nos */}, + &ruleIRefExpr{index: 46 /* nos */}, }, }, }, @@ -1661,15 +1675,15 @@ var g = &grammar{ alternatives: []any{ &seqExpr{ exprs: []any{ - &ruleIRefExpr{index: 45 /* nos */}, - &ruleIRefExpr{index: 59 /* _wodTypeMain */}, + &ruleIRefExpr{index: 46 /* nos */}, + &ruleIRefExpr{index: 60 /* _wodTypeMain */}, }, }, &seqExpr{ exprs: []any{ - &ruleIRefExpr{index: 59 /* _wodTypeMain */}, + &ruleIRefExpr{index: 60 /* _wodTypeMain */}, ¬Expr{ - expr: &ruleIRefExpr{index: 92 /* xidContinue */}, + expr: &ruleIRefExpr{index: 93 /* xidContinue */}, }, }, }, @@ -1684,7 +1698,7 @@ var g = &grammar{ val: "[aA]", chars: []rune{'a', 'A'}, }, - &ruleIRefExpr{index: 45 /* nos */}, + &ruleIRefExpr{index: 46 /* nos */}, &zeroOrMoreExpr{ expr: &choiceExpr{ alternatives: []any{ @@ -1696,7 +1710,7 @@ var g = &grammar{ val: "[mM]", chars: []rune{'m', 'M'}, }, - &ruleIRefExpr{index: 45 /* nos */}, + &ruleIRefExpr{index: 46 /* nos */}, }, }, }, @@ -1708,7 +1722,7 @@ var g = &grammar{ val: "[kK]", chars: []rune{'k', 'K'}, }, - &ruleIRefExpr{index: 45 /* nos */}, + &ruleIRefExpr{index: 46 /* nos */}, }, }, }, @@ -1720,7 +1734,7 @@ var g = &grammar{ val: "[qQ]", chars: []rune{'q', 'Q'}, }, - &ruleIRefExpr{index: 45 /* nos */}, + &ruleIRefExpr{index: 46 /* nos */}, }, }, }, @@ -1742,14 +1756,14 @@ var g = &grammar{ alternatives: []any{ &seqExpr{ exprs: []any{ - &ruleIRefExpr{index: 45 /* nos */}, + &ruleIRefExpr{index: 46 /* nos */}, ¬Expr{ - expr: &ruleIRefExpr{index: 92 /* xidContinue */}, + expr: &ruleIRefExpr{index: 93 /* xidContinue */}, }, }, }, ¬Expr{ - expr: &ruleIRefExpr{index: 92 /* xidContinue */}, + expr: &ruleIRefExpr{index: 93 /* xidContinue */}, }, }, }, @@ -1770,21 +1784,21 @@ var g = &grammar{ alternatives: []any{ &seqExpr{ exprs: []any{ - &ruleIRefExpr{index: 45 /* nos */}, + &ruleIRefExpr{index: 46 /* nos */}, ¬Expr{ - expr: &ruleIRefExpr{index: 92 /* xidContinue */}, + expr: &ruleIRefExpr{index: 93 /* xidContinue */}, }, }, }, &actionExpr{ run: (*parser).call_on_diceCocBonus_9, expr: ¬Expr{ - expr: &ruleIRefExpr{index: 92 /* xidContinue */}, + expr: &ruleIRefExpr{index: 93 /* xidContinue */}, }, }, }, }, - &ruleIRefExpr{index: 47 /* detailEnd */}, + &ruleIRefExpr{index: 48 /* detailEnd */}, }, }, }, @@ -1803,21 +1817,21 @@ var g = &grammar{ alternatives: []any{ &seqExpr{ exprs: []any{ - &ruleIRefExpr{index: 45 /* nos */}, + &ruleIRefExpr{index: 46 /* nos */}, ¬Expr{ - expr: &ruleIRefExpr{index: 92 /* xidContinue */}, + expr: &ruleIRefExpr{index: 93 /* xidContinue */}, }, }, }, &actionExpr{ run: (*parser).call_on_diceCocPenalty_9, expr: ¬Expr{ - expr: &ruleIRefExpr{index: 92 /* xidContinue */}, + expr: &ruleIRefExpr{index: 93 /* xidContinue */}, }, }, }, }, - &ruleIRefExpr{index: 47 /* detailEnd */}, + &ruleIRefExpr{index: 48 /* detailEnd */}, }, }, }, @@ -1826,12 +1840,12 @@ var g = &grammar{ name: "_dcDiceType", expr: &seqExpr{ exprs: []any{ - &ruleIRefExpr{index: 45 /* nos */}, + &ruleIRefExpr{index: 46 /* nos */}, &charClassMatcher{ val: "[cC]", chars: []rune{'c', 'C'}, }, - &ruleIRefExpr{index: 45 /* nos */}, + &ruleIRefExpr{index: 46 /* nos */}, &zeroOrMoreExpr{ expr: &seqExpr{ exprs: []any{ @@ -1839,7 +1853,7 @@ var g = &grammar{ val: "[mM]", chars: []rune{'m', 'M'}, }, - &ruleIRefExpr{index: 45 /* nos */}, + &ruleIRefExpr{index: 46 /* nos */}, }, }, }, @@ -1855,7 +1869,7 @@ var g = &grammar{ chars: []rune{'f', 'F'}, }, ¬Expr{ - expr: &ruleIRefExpr{index: 92 /* xidContinue */}, + expr: &ruleIRefExpr{index: 93 /* xidContinue */}, }, }, }, @@ -1871,17 +1885,17 @@ var g = &grammar{ expr: &seqExpr{ exprs: []any{ &andExpr{ - expr: &ruleIRefExpr{index: 51 /* _diceType1 */}, + expr: &ruleIRefExpr{index: 52 /* _diceType1 */}, }, - &ruleIRefExpr{index: 46 /* detailStart */}, - &ruleIRefExpr{index: 45 /* nos */}, - &ruleIRefExpr{index: 55 /* _diceExpr1 */}, - &ruleIRefExpr{index: 47 /* detailEnd */}, + &ruleIRefExpr{index: 47 /* detailStart */}, + &ruleIRefExpr{index: 46 /* nos */}, + &ruleIRefExpr{index: 56 /* _diceExpr1 */}, + &ruleIRefExpr{index: 48 /* detailEnd */}, }, }, }, &zeroOrMoreExpr{ - expr: &ruleIRefExpr{index: 58 /* _diceExprX */}, + expr: &ruleIRefExpr{index: 59 /* _diceExprX */}, }, }, }, @@ -1892,16 +1906,16 @@ var g = &grammar{ expr: &seqExpr{ exprs: []any{ &andExpr{ - expr: &ruleIRefExpr{index: 52 /* _diceType2 */}, + expr: &ruleIRefExpr{index: 53 /* _diceType2 */}, }, - &ruleIRefExpr{index: 46 /* detailStart */}, - &ruleIRefExpr{index: 56 /* _diceExpr2 */}, - &ruleIRefExpr{index: 47 /* detailEnd */}, + &ruleIRefExpr{index: 47 /* detailStart */}, + &ruleIRefExpr{index: 57 /* _diceExpr2 */}, + &ruleIRefExpr{index: 48 /* detailEnd */}, }, }, }, &zeroOrMoreExpr{ - expr: &ruleIRefExpr{index: 58 /* _diceExprX */}, + expr: &ruleIRefExpr{index: 59 /* _diceExprX */}, }, }, }, @@ -1913,17 +1927,17 @@ var g = &grammar{ exprs: []any{ &andCodeExpr{run: (*parser).call_onexprDice_26}, &andExpr{ - expr: &ruleIRefExpr{index: 53 /* _diceType3 */}, + expr: &ruleIRefExpr{index: 54 /* _diceType3 */}, }, - &ruleIRefExpr{index: 46 /* detailStart */}, - &ruleIRefExpr{index: 45 /* nos */}, - &ruleIRefExpr{index: 57 /* _diceExpr3 */}, - &ruleIRefExpr{index: 47 /* detailEnd */}, + &ruleIRefExpr{index: 47 /* detailStart */}, + &ruleIRefExpr{index: 46 /* nos */}, + &ruleIRefExpr{index: 58 /* _diceExpr3 */}, + &ruleIRefExpr{index: 48 /* detailEnd */}, }, }, }, &zeroOrMoreExpr{ - expr: &ruleIRefExpr{index: 58 /* _diceExprX */}, + expr: &ruleIRefExpr{index: 59 /* _diceExprX */}, }, }, }, @@ -1935,9 +1949,9 @@ var g = &grammar{ exprs: []any{ &andCodeExpr{run: (*parser).call_onexprDice_38}, &andExpr{ - expr: &ruleIRefExpr{index: 54 /* _diceType4 */}, + expr: &ruleIRefExpr{index: 55 /* _diceType4 */}, }, - &ruleIRefExpr{index: 46 /* detailStart */}, + &ruleIRefExpr{index: 47 /* detailStart */}, }, }, }, @@ -1945,13 +1959,13 @@ var g = &grammar{ run: (*parser).call_onexprDice_42, expr: &seqExpr{ exprs: []any{ - &ruleIRefExpr{index: 57 /* _diceExpr3 */}, - &ruleIRefExpr{index: 47 /* detailEnd */}, + &ruleIRefExpr{index: 58 /* _diceExpr3 */}, + &ruleIRefExpr{index: 48 /* detailEnd */}, }, }, }, &zeroOrMoreExpr{ - expr: &ruleIRefExpr{index: 58 /* _diceExprX */}, + expr: &ruleIRefExpr{index: 59 /* _diceExprX */}, }, }, }, @@ -1959,13 +1973,13 @@ var g = &grammar{ exprs: []any{ &andCodeExpr{run: (*parser).call_onexprDice_49}, &andExpr{ - expr: &ruleIRefExpr{index: 62 /* _cocDiceType */}, + expr: &ruleIRefExpr{index: 63 /* _cocDiceType */}, }, - &ruleIRefExpr{index: 46 /* detailStart */}, + &ruleIRefExpr{index: 47 /* detailStart */}, &choiceExpr{ alternatives: []any{ - &ruleIRefExpr{index: 63 /* _diceCocBonus */}, - &ruleIRefExpr{index: 64 /* _diceCocPenalty */}, + &ruleIRefExpr{index: 64 /* _diceCocBonus */}, + &ruleIRefExpr{index: 65 /* _diceCocPenalty */}, }, }, }, @@ -1978,9 +1992,9 @@ var g = &grammar{ exprs: []any{ &andCodeExpr{run: (*parser).call_onexprDice_59}, &andExpr{ - expr: &ruleIRefExpr{index: 60 /* _wodDiceType */}, + expr: &ruleIRefExpr{index: 61 /* _wodDiceType */}, }, - &ruleIRefExpr{index: 46 /* detailStart */}, + &ruleIRefExpr{index: 47 /* detailStart */}, }, }, }, @@ -1994,22 +2008,22 @@ var g = &grammar{ exprs: []any{ &actionExpr{ run: (*parser).call_onexprDice_67, - expr: &ruleIRefExpr{index: 45 /* nos */}, + expr: &ruleIRefExpr{index: 46 /* nos */}, }, - &ruleIRefExpr{index: 61 /* _wodMain */}, + &ruleIRefExpr{index: 62 /* _wodMain */}, }, }, &seqExpr{ exprs: []any{ - &ruleIRefExpr{index: 61 /* _wodMain */}, + &ruleIRefExpr{index: 62 /* _wodMain */}, ¬Expr{ - expr: &ruleIRefExpr{index: 92 /* xidContinue */}, + expr: &ruleIRefExpr{index: 93 /* xidContinue */}, }, }, }, }, }, - &ruleIRefExpr{index: 47 /* detailEnd */}, + &ruleIRefExpr{index: 48 /* detailEnd */}, }, }, }, @@ -2023,15 +2037,15 @@ var g = &grammar{ exprs: []any{ &andCodeExpr{run: (*parser).call_onexprDice_78}, &andExpr{ - expr: &ruleIRefExpr{index: 65 /* _dcDiceType */}, + expr: &ruleIRefExpr{index: 66 /* _dcDiceType */}, }, - &ruleIRefExpr{index: 46 /* detailStart */}, + &ruleIRefExpr{index: 47 /* detailStart */}, }, }, }, &actionExpr{ run: (*parser).call_onexprDice_82, - expr: &ruleIRefExpr{index: 45 /* nos */}, + expr: &ruleIRefExpr{index: 46 /* nos */}, }, &actionExpr{ run: (*parser).call_onexprDice_84, @@ -2041,7 +2055,7 @@ var g = &grammar{ val: "[cC]", chars: []rune{'c', 'C'}, }, - &ruleIRefExpr{index: 45 /* nos */}, + &ruleIRefExpr{index: 46 /* nos */}, &zeroOrMoreExpr{ expr: &actionExpr{ run: (*parser).call_onexprDice_89, @@ -2051,12 +2065,12 @@ var g = &grammar{ val: "[mM]", chars: []rune{'m', 'M'}, }, - &ruleIRefExpr{index: 45 /* nos */}, + &ruleIRefExpr{index: 46 /* nos */}, }, }, }, }, - &ruleIRefExpr{index: 47 /* detailEnd */}, + &ruleIRefExpr{index: 48 /* detailEnd */}, }, }, }, @@ -2068,21 +2082,21 @@ var g = &grammar{ exprs: []any{ &andCodeExpr{run: (*parser).call_onexprDice_96}, &andExpr{ - expr: &ruleIRefExpr{index: 66 /* _fateDiceType */}, + expr: &ruleIRefExpr{index: 67 /* _fateDiceType */}, }, - &ruleIRefExpr{index: 46 /* detailStart */}, + &ruleIRefExpr{index: 47 /* detailStart */}, &charClassMatcher{ val: "[fF]", chars: []rune{'f', 'F'}, }, ¬Expr{ - expr: &ruleIRefExpr{index: 92 /* xidContinue */}, + expr: &ruleIRefExpr{index: 93 /* xidContinue */}, }, - &ruleIRefExpr{index: 47 /* detailEnd */}, + &ruleIRefExpr{index: 48 /* detailEnd */}, }, }, }, - &ruleIRefExpr{index: 78 /* value */}, + &ruleIRefExpr{index: 79 /* value */}, }, }, }, @@ -2100,7 +2114,7 @@ var g = &grammar{ alternatives: []any{ &actionExpr{ run: (*parser).call_onarray_call_6, - expr: &ruleIRefExpr{index: 79 /* number */}, + expr: &ruleIRefExpr{index: 80 /* number */}, }, &codeExpr{ run: (*parser).call_onarray_call_8, @@ -2119,7 +2133,7 @@ var g = &grammar{ alternatives: []any{ &actionExpr{ run: (*parser).call_onarray_call_13, - expr: &ruleIRefExpr{index: 79 /* number */}, + expr: &ruleIRefExpr{index: 80 /* number */}, }, &codeExpr{ run: (*parser).call_onarray_call_15, @@ -2134,10 +2148,10 @@ var g = &grammar{ expr: &seqExpr{ exprs: []any{ &litMatcher{val: "[", want: "\"[\""}, - &ruleIRefExpr{index: 114 /* sp */}, - &ruleIRefExpr{index: 25 /* exprRoot */}, + &ruleIRefExpr{index: 115 /* sp */}, + &ruleIRefExpr{index: 26 /* exprRoot */}, &litMatcher{val: "]", want: "\"]\""}, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, }, }, }, @@ -2155,11 +2169,11 @@ var g = &grammar{ expr: &seqExpr{ exprs: []any{ &litMatcher{val: "[", want: "\"[\""}, - &ruleIRefExpr{index: 114 /* sp */}, - &ruleIRefExpr{index: 25 /* exprRoot */}, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, + &ruleIRefExpr{index: 26 /* exprRoot */}, + &ruleIRefExpr{index: 115 /* sp */}, &litMatcher{val: "]", want: "\"]\""}, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, ¬Expr{ expr: &litMatcher{val: "=", want: "\"=\""}, }, @@ -2167,7 +2181,7 @@ var g = &grammar{ }, }, &zeroOrOneExpr{ - expr: &ruleIRefExpr{index: 73 /* func_invoke */}, + expr: &ruleIRefExpr{index: 74 /* func_invoke */}, }, }, }, @@ -2179,9 +2193,9 @@ var g = &grammar{ expr: &seqExpr{ exprs: []any{ &andLogicalExpr{ - expr: &ruleIRefExpr{index: 69 /* item_getX */}, + expr: &ruleIRefExpr{index: 70 /* item_getX */}, }, - &ruleIRefExpr{index: 69 /* item_getX */}, + &ruleIRefExpr{index: 70 /* item_getX */}, }, }, }, @@ -2197,17 +2211,17 @@ var g = &grammar{ run: (*parser).call_onattr_getX_4, expr: &seqExpr{ exprs: []any{ - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, &labeledExpr{ label: "id", - expr: &ruleIRefExpr{index: 89 /* identifier */}, + expr: &ruleIRefExpr{index: 90 /* identifier */}, }, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, }, }, }, &zeroOrOneExpr{ - expr: &ruleIRefExpr{index: 73 /* func_invoke */}, + expr: &ruleIRefExpr{index: 74 /* func_invoke */}, }, }, }, @@ -2219,9 +2233,9 @@ var g = &grammar{ expr: &seqExpr{ exprs: []any{ &andLogicalExpr{ - expr: &ruleIRefExpr{index: 71 /* attr_getX */}, + expr: &ruleIRefExpr{index: 72 /* attr_getX */}, }, - &ruleIRefExpr{index: 71 /* attr_getX */}, + &ruleIRefExpr{index: 72 /* attr_getX */}, }, }, }, @@ -2235,9 +2249,9 @@ var g = &grammar{ expr: &seqExpr{ exprs: []any{ &litMatcher{val: "(", want: "\"(\""}, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, &litMatcher{val: ")", want: "\")\""}, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, }, }, }, @@ -2248,7 +2262,7 @@ var g = &grammar{ expr: &seqExpr{ exprs: []any{ &litMatcher{val: "(", want: "\"(\""}, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, }, }, }, @@ -2256,21 +2270,21 @@ var g = &grammar{ run: (*parser).call_onfunc_invoke_13, expr: &seqExpr{ exprs: []any{ - &ruleIRefExpr{index: 25 /* exprRoot */}, + &ruleIRefExpr{index: 26 /* exprRoot */}, &zeroOrMoreExpr{ expr: &actionExpr{ run: (*parser).call_onfunc_invoke_17, expr: &seqExpr{ exprs: []any{ &litMatcher{val: ",", want: "\",\""}, - &ruleIRefExpr{index: 114 /* sp */}, - &ruleIRefExpr{index: 25 /* exprRoot */}, + &ruleIRefExpr{index: 115 /* sp */}, + &ruleIRefExpr{index: 26 /* exprRoot */}, }, }, }, }, &litMatcher{val: ")", want: "\")\""}, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, }, }, }, @@ -2289,17 +2303,17 @@ var g = &grammar{ exprs: []any{ &choiceExpr{ alternatives: []any{ - &ruleIRefExpr{index: 75 /* value_id_without_colon */}, - &ruleIRefExpr{index: 25 /* exprRoot */}, + &ruleIRefExpr{index: 76 /* value_id_without_colon */}, + &ruleIRefExpr{index: 26 /* exprRoot */}, }, }, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, &litMatcher{val: ":", want: "\":\""}, - &ruleIRefExpr{index: 114 /* sp */}, - &ruleIRefExpr{index: 25 /* exprRoot */}, + &ruleIRefExpr{index: 115 /* sp */}, + &ruleIRefExpr{index: 26 /* exprRoot */}, }, }, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, }, }, }, @@ -2315,19 +2329,19 @@ var g = &grammar{ exprs: []any{ &labeledExpr{ label: "id", - expr: &ruleIRefExpr{index: 90 /* identifierWithoutColon */}, + expr: &ruleIRefExpr{index: 91 /* identifierWithoutColon */}, }, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, }, }, }, &seqExpr{ exprs: []any{ &zeroOrOneExpr{ - expr: &ruleIRefExpr{index: 73 /* func_invoke */}, + expr: &ruleIRefExpr{index: 74 /* func_invoke */}, }, - &ruleIRefExpr{index: 70 /* item_get */}, - &ruleIRefExpr{index: 72 /* attr_get */}, + &ruleIRefExpr{index: 71 /* item_get */}, + &ruleIRefExpr{index: 73 /* attr_get */}, }, }, }, @@ -2340,13 +2354,13 @@ var g = &grammar{ expr: &seqExpr{ exprs: []any{ &litMatcher{val: "[", want: "\"[\""}, - &ruleIRefExpr{index: 114 /* sp */}, - &ruleIRefExpr{index: 25 /* exprRoot */}, + &ruleIRefExpr{index: 115 /* sp */}, + &ruleIRefExpr{index: 26 /* exprRoot */}, &litMatcher{val: "..", want: "\"..\""}, - &ruleIRefExpr{index: 114 /* sp */}, - &ruleIRefExpr{index: 25 /* exprRoot */}, + &ruleIRefExpr{index: 115 /* sp */}, + &ruleIRefExpr{index: 26 /* exprRoot */}, &litMatcher{val: "]", want: "\"]\""}, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, }, }, }, @@ -2360,7 +2374,7 @@ var g = &grammar{ expr: &seqExpr{ exprs: []any{ &litMatcher{val: "[", want: "\"[\""}, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, }, }, }, @@ -2368,21 +2382,21 @@ var g = &grammar{ run: (*parser).call_onvalue_array_6, expr: &seqExpr{ exprs: []any{ - &ruleIRefExpr{index: 25 /* exprRoot */}, + &ruleIRefExpr{index: 26 /* exprRoot */}, &zeroOrMoreExpr{ expr: &actionExpr{ run: (*parser).call_onvalue_array_10, expr: &seqExpr{ exprs: []any{ &litMatcher{val: ",", want: "\",\""}, - &ruleIRefExpr{index: 114 /* sp */}, - &ruleIRefExpr{index: 25 /* exprRoot */}, + &ruleIRefExpr{index: 115 /* sp */}, + &ruleIRefExpr{index: 26 /* exprRoot */}, }, }, }, }, &litMatcher{val: "]", want: "\"]\""}, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, }, }, }, @@ -2399,7 +2413,7 @@ var g = &grammar{ expr: &seqExpr{ exprs: []any{ &litMatcher{val: "true", want: "\"true\""}, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, }, }, }, @@ -2408,7 +2422,7 @@ var g = &grammar{ expr: &seqExpr{ exprs: []any{ &litMatcher{val: "false", want: "\"false\""}, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, }, }, }, @@ -2417,7 +2431,7 @@ var g = &grammar{ expr: &seqExpr{ exprs: []any{ &litMatcher{val: "null", want: "\"null\""}, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, }, }, }, @@ -2428,14 +2442,14 @@ var g = &grammar{ expr: &seqExpr{ exprs: []any{ &litMatcher{val: "this", want: "\"this\""}, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, }, }, }, &seqExpr{ exprs: []any{ - &ruleIRefExpr{index: 70 /* item_get */}, - &ruleIRefExpr{index: 72 /* attr_get */}, + &ruleIRefExpr{index: 71 /* item_get */}, + &ruleIRefExpr{index: 73 /* attr_get */}, }, }, }, @@ -2449,17 +2463,17 @@ var g = &grammar{ &litMatcher{val: "&", want: "\"&\""}, &labeledExpr{ label: "id", - expr: &ruleIRefExpr{index: 89 /* identifier */}, + expr: &ruleIRefExpr{index: 90 /* identifier */}, }, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, }, }, }, - &ruleIRefExpr{index: 72 /* attr_get */}, + &ruleIRefExpr{index: 73 /* attr_get */}, }, }, - &ruleIRefExpr{index: 80 /* float */}, - &ruleIRefExpr{index: 79 /* number */}, + &ruleIRefExpr{index: 81 /* float */}, + &ruleIRefExpr{index: 80 /* number */}, &seqExpr{ exprs: []any{ &actionExpr{ @@ -2469,38 +2483,38 @@ var g = &grammar{ &andExpr{ expr: &seqExpr{ exprs: []any{ - &ruleIRefExpr{index: 89 /* identifier */}, - &ruleIRefExpr{index: 117 /* spNoCR */}, + &ruleIRefExpr{index: 90 /* identifier */}, + &ruleIRefExpr{index: 118 /* spNoCR */}, }, }, }, - &ruleIRefExpr{index: 46 /* detailStart */}, + &ruleIRefExpr{index: 47 /* detailStart */}, &labeledExpr{ label: "id", - expr: &ruleIRefExpr{index: 89 /* identifier */}, + expr: &ruleIRefExpr{index: 90 /* identifier */}, }, - &ruleIRefExpr{index: 47 /* detailEnd */}, - &ruleIRefExpr{index: 117 /* spNoCR */}, + &ruleIRefExpr{index: 48 /* detailEnd */}, + &ruleIRefExpr{index: 118 /* spNoCR */}, }, }, }, &seqExpr{ exprs: []any{ &zeroOrOneExpr{ - expr: &ruleIRefExpr{index: 73 /* func_invoke */}, + expr: &ruleIRefExpr{index: 74 /* func_invoke */}, }, - &ruleIRefExpr{index: 70 /* item_get */}, - &ruleIRefExpr{index: 72 /* attr_get */}, + &ruleIRefExpr{index: 71 /* item_get */}, + &ruleIRefExpr{index: 73 /* attr_get */}, }, }, }, }, - &ruleIRefExpr{index: 85 /* fstring */}, + &ruleIRefExpr{index: 86 /* fstring */}, &seqExpr{ exprs: []any{ - &ruleIRefExpr{index: 93 /* sub */}, - &ruleIRefExpr{index: 70 /* item_get */}, - &ruleIRefExpr{index: 72 /* attr_get */}, + &ruleIRefExpr{index: 94 /* sub */}, + &ruleIRefExpr{index: 71 /* item_get */}, + &ruleIRefExpr{index: 73 /* attr_get */}, }, }, &seqExpr{ @@ -2510,18 +2524,18 @@ var g = &grammar{ expr: &seqExpr{ exprs: []any{ &litMatcher{val: "[", want: "\"[\""}, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, &litMatcher{val: "]", want: "\"]\""}, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, }, }, }, &seqExpr{ exprs: []any{ &zeroOrOneExpr{ - expr: &ruleIRefExpr{index: 68 /* array_call */}, + expr: &ruleIRefExpr{index: 69 /* array_call */}, }, - &ruleIRefExpr{index: 72 /* attr_get */}, + &ruleIRefExpr{index: 73 /* attr_get */}, }, }, }, @@ -2529,25 +2543,25 @@ var g = &grammar{ &seqExpr{ exprs: []any{ &andExpr{ - expr: &ruleIRefExpr{index: 76 /* value_array_range */}, + expr: &ruleIRefExpr{index: 77 /* value_array_range */}, }, - &ruleIRefExpr{index: 76 /* value_array_range */}, + &ruleIRefExpr{index: 77 /* value_array_range */}, &zeroOrOneExpr{ - expr: &ruleIRefExpr{index: 68 /* array_call */}, + expr: &ruleIRefExpr{index: 69 /* array_call */}, }, - &ruleIRefExpr{index: 72 /* attr_get */}, + &ruleIRefExpr{index: 73 /* attr_get */}, }, }, &seqExpr{ exprs: []any{ &andExpr{ - expr: &ruleIRefExpr{index: 77 /* value_array */}, + expr: &ruleIRefExpr{index: 78 /* value_array */}, }, - &ruleIRefExpr{index: 77 /* value_array */}, + &ruleIRefExpr{index: 78 /* value_array */}, &zeroOrOneExpr{ - expr: &ruleIRefExpr{index: 68 /* array_call */}, + expr: &ruleIRefExpr{index: 69 /* array_call */}, }, - &ruleIRefExpr{index: 72 /* attr_get */}, + &ruleIRefExpr{index: 73 /* attr_get */}, }, }, &seqExpr{ @@ -2557,16 +2571,16 @@ var g = &grammar{ expr: &seqExpr{ exprs: []any{ &litMatcher{val: "{", want: "\"{\""}, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, &litMatcher{val: "}", want: "\"}\""}, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, }, }, }, &seqExpr{ exprs: []any{ - &ruleIRefExpr{index: 70 /* item_get */}, - &ruleIRefExpr{index: 72 /* attr_get */}, + &ruleIRefExpr{index: 71 /* item_get */}, + &ruleIRefExpr{index: 73 /* attr_get */}, }, }, }, @@ -2578,7 +2592,7 @@ var g = &grammar{ expr: &seqExpr{ exprs: []any{ &litMatcher{val: "{", want: "\"{\""}, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, }, }, }, @@ -2586,13 +2600,13 @@ var g = &grammar{ run: (*parser).call_onvalue_94, expr: &seqExpr{ exprs: []any{ - &ruleIRefExpr{index: 74 /* dict_item */}, + &ruleIRefExpr{index: 75 /* dict_item */}, &zeroOrMoreExpr{ expr: &seqExpr{ exprs: []any{ &litMatcher{val: ",", want: "\",\""}, - &ruleIRefExpr{index: 114 /* sp */}, - &ruleIRefExpr{index: 74 /* dict_item */}, + &ruleIRefExpr{index: 115 /* sp */}, + &ruleIRefExpr{index: 75 /* dict_item */}, }, }, }, @@ -2600,14 +2614,14 @@ var g = &grammar{ expr: &litMatcher{val: ",", want: "\",\""}, }, &litMatcher{val: "}", want: "\"}\""}, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, }, }, }, &seqExpr{ exprs: []any{ - &ruleIRefExpr{index: 70 /* item_get */}, - &ruleIRefExpr{index: 72 /* attr_get */}, + &ruleIRefExpr{index: 71 /* item_get */}, + &ruleIRefExpr{index: 73 /* attr_get */}, }, }, }, @@ -2660,7 +2674,7 @@ var g = &grammar{ expr: &oneOrMoreExpr{ expr: &choiceExpr{ alternatives: []any{ - &ruleIRefExpr{index: 86 /* escape */}, + &ruleIRefExpr{index: 87 /* escape */}, &seqExpr{ exprs: []any{ ¬Expr{ @@ -2689,7 +2703,7 @@ var g = &grammar{ expr: &oneOrMoreExpr{ expr: &choiceExpr{ alternatives: []any{ - &ruleIRefExpr{index: 86 /* escape */}, + &ruleIRefExpr{index: 87 /* escape */}, &seqExpr{ exprs: []any{ ¬Expr{ @@ -2718,7 +2732,7 @@ var g = &grammar{ expr: &oneOrMoreExpr{ expr: &choiceExpr{ alternatives: []any{ - &ruleIRefExpr{index: 86 /* escape */}, + &ruleIRefExpr{index: 87 /* escape */}, &seqExpr{ exprs: []any{ ¬Expr{ @@ -2747,7 +2761,7 @@ var g = &grammar{ expr: &oneOrMoreExpr{ expr: &choiceExpr{ alternatives: []any{ - &ruleIRefExpr{index: 86 /* escape */}, + &ruleIRefExpr{index: 87 /* escape */}, &seqExpr{ exprs: []any{ ¬Expr{ @@ -2828,8 +2842,8 @@ var g = &grammar{ expr: &seqExpr{ exprs: []any{ &litMatcher{val: "{", want: "\"{\""}, - &ruleIRefExpr{index: 114 /* sp */}, - &ruleIRefExpr{index: 25 /* exprRoot */}, + &ruleIRefExpr{index: 115 /* sp */}, + &ruleIRefExpr{index: 26 /* exprRoot */}, }, }, }, @@ -2843,15 +2857,15 @@ var g = &grammar{ expr: &seqExpr{ exprs: []any{ &litMatcher{val: "{%", want: "\"{%\""}, - &ruleIRefExpr{index: 114 /* sp */}, - &ruleIRefExpr{index: 25 /* exprRoot */}, + &ruleIRefExpr{index: 115 /* sp */}, + &ruleIRefExpr{index: 26 /* exprRoot */}, }, }, }, &litMatcher{val: "%}", want: "\"%}\""}, }, }, - &ruleIRefExpr{index: 81 /* strPart */}, + &ruleIRefExpr{index: 82 /* strPart */}, }, }, }, @@ -2881,8 +2895,8 @@ var g = &grammar{ expr: &seqExpr{ exprs: []any{ &litMatcher{val: "{", want: "\"{\""}, - &ruleIRefExpr{index: 114 /* sp */}, - &ruleIRefExpr{index: 25 /* exprRoot */}, + &ruleIRefExpr{index: 115 /* sp */}, + &ruleIRefExpr{index: 26 /* exprRoot */}, }, }, }, @@ -2896,15 +2910,15 @@ var g = &grammar{ expr: &seqExpr{ exprs: []any{ &litMatcher{val: "{%", want: "\"{%\""}, - &ruleIRefExpr{index: 114 /* sp */}, - &ruleIRefExpr{index: 25 /* exprRoot */}, + &ruleIRefExpr{index: 115 /* sp */}, + &ruleIRefExpr{index: 26 /* exprRoot */}, }, }, }, &litMatcher{val: "%}", want: "\"%}\""}, }, }, - &ruleIRefExpr{index: 82 /* strPart1 */}, + &ruleIRefExpr{index: 83 /* strPart1 */}, }, }, }, @@ -2925,7 +2939,7 @@ var g = &grammar{ expr: &seqExpr{ exprs: []any{ &zeroOrMoreExpr{ - expr: &ruleIRefExpr{index: 83 /* strPart2 */}, + expr: &ruleIRefExpr{index: 84 /* strPart2 */}, }, &litMatcher{val: "\"", want: "\"\\\"\""}, }, @@ -2944,7 +2958,7 @@ var g = &grammar{ expr: &seqExpr{ exprs: []any{ &zeroOrMoreExpr{ - expr: &ruleIRefExpr{index: 84 /* strPart3 */}, + expr: &ruleIRefExpr{index: 85 /* strPart3 */}, }, &litMatcher{val: "'", want: "\"'\""}, }, @@ -2954,7 +2968,7 @@ var g = &grammar{ }, }, }, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, }, }, }, @@ -2989,9 +3003,9 @@ var g = &grammar{ expr: ¬Expr{ expr: &seqExpr{ exprs: []any{ - &ruleIRefExpr{index: 87 /* keywords */}, + &ruleIRefExpr{index: 88 /* keywords */}, ¬Expr{ - expr: &ruleIRefExpr{index: 92 /* xidContinue */}, + expr: &ruleIRefExpr{index: 93 /* xidContinue */}, }, }, }, @@ -3003,12 +3017,12 @@ var g = &grammar{ run: (*parser).call_onidentifier_1, expr: &seqExpr{ exprs: []any{ - &ruleIRefExpr{index: 88 /* keywords_test */}, - &ruleIRefExpr{index: 91 /* xidStart */}, + &ruleIRefExpr{index: 89 /* keywords_test */}, + &ruleIRefExpr{index: 92 /* xidStart */}, &zeroOrMoreExpr{ expr: &choiceExpr{ alternatives: []any{ - &ruleIRefExpr{index: 92 /* xidContinue */}, + &ruleIRefExpr{index: 93 /* xidContinue */}, &litMatcher{val: ":", want: "\":\""}, }, }, @@ -3023,10 +3037,10 @@ var g = &grammar{ run: (*parser).call_onidentifierWithoutColon_1, expr: &seqExpr{ exprs: []any{ - &ruleIRefExpr{index: 88 /* keywords_test */}, - &ruleIRefExpr{index: 91 /* xidStart */}, + &ruleIRefExpr{index: 89 /* keywords_test */}, + &ruleIRefExpr{index: 92 /* xidStart */}, &zeroOrMoreExpr{ - expr: &ruleIRefExpr{index: 92 /* xidContinue */}, + expr: &ruleIRefExpr{index: 93 /* xidContinue */}, }, }, }, @@ -3052,9 +3066,9 @@ var g = &grammar{ name: "sub", expr: &seqExpr{ exprs: []any{ - &ruleIRefExpr{index: 95 /* parenOpen */}, - &ruleIRefExpr{index: 25 /* exprRoot */}, - &ruleIRefExpr{index: 96 /* parenClose */}, + &ruleIRefExpr{index: 96 /* parenOpen */}, + &ruleIRefExpr{index: 26 /* exprRoot */}, + &ruleIRefExpr{index: 97 /* parenClose */}, }, }, }, @@ -3062,9 +3076,9 @@ var g = &grammar{ name: "subX", expr: &seqExpr{ exprs: []any{ - &ruleIRefExpr{index: 93 /* sub */}, - &ruleIRefExpr{index: 70 /* item_get */}, - &ruleIRefExpr{index: 72 /* attr_get */}, + &ruleIRefExpr{index: 94 /* sub */}, + &ruleIRefExpr{index: 71 /* item_get */}, + &ruleIRefExpr{index: 73 /* attr_get */}, }, }, }, @@ -3073,7 +3087,7 @@ var g = &grammar{ expr: &seqExpr{ exprs: []any{ &litMatcher{val: "(", want: "\"(\""}, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, }, }, }, @@ -3082,7 +3096,7 @@ var g = &grammar{ expr: &seqExpr{ exprs: []any{ &litMatcher{val: ")", want: "\")\""}, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, }, }, }, @@ -3096,7 +3110,7 @@ var g = &grammar{ &litMatcher{val: "+", want: "\"+\""}, }, }, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, }, }, }, @@ -3110,7 +3124,7 @@ var g = &grammar{ &litMatcher{val: "-", want: "\"-\""}, }, }, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, }, }, }, @@ -3124,7 +3138,7 @@ var g = &grammar{ &litMatcher{val: "*", want: "\"*\""}, }, }, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, }, }, }, @@ -3138,7 +3152,7 @@ var g = &grammar{ &litMatcher{val: "/", want: "\"/\""}, }, }, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, }, }, }, @@ -3147,7 +3161,7 @@ var g = &grammar{ expr: &seqExpr{ exprs: []any{ &litMatcher{val: "%", want: "\"%\""}, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, }, }, }, @@ -3158,13 +3172,13 @@ var g = &grammar{ &seqExpr{ exprs: []any{ &litMatcher{val: "^", want: "\"^\""}, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, }, }, &seqExpr{ exprs: []any{ &litMatcher{val: "**", want: "\"**\""}, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, }, }, }, @@ -3175,7 +3189,7 @@ var g = &grammar{ expr: &seqExpr{ exprs: []any{ &litMatcher{val: "??", want: "\"??\""}, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, }, }, }, @@ -3184,7 +3198,7 @@ var g = &grammar{ expr: &seqExpr{ exprs: []any{ &litMatcher{val: "|", want: "\"|\""}, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, }, }, }, @@ -3193,7 +3207,7 @@ var g = &grammar{ expr: &seqExpr{ exprs: []any{ &litMatcher{val: "&", want: "\"&\""}, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, }, }, }, @@ -3202,7 +3216,7 @@ var g = &grammar{ expr: &seqExpr{ exprs: []any{ &litMatcher{val: "||", want: "\"||\""}, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, }, }, }, @@ -3211,7 +3225,7 @@ var g = &grammar{ expr: &seqExpr{ exprs: []any{ &litMatcher{val: "&&", want: "\"&&\""}, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, }, }, }, @@ -3220,7 +3234,7 @@ var g = &grammar{ expr: &seqExpr{ exprs: []any{ &litMatcher{val: "<", want: "\"<\""}, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, }, }, }, @@ -3229,7 +3243,7 @@ var g = &grammar{ expr: &seqExpr{ exprs: []any{ &litMatcher{val: ">", want: "\">\""}, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, }, }, }, @@ -3238,7 +3252,7 @@ var g = &grammar{ expr: &seqExpr{ exprs: []any{ &litMatcher{val: "<=", want: "\"<=\""}, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, }, }, }, @@ -3247,7 +3261,7 @@ var g = &grammar{ expr: &seqExpr{ exprs: []any{ &litMatcher{val: ">=", want: "\">=\""}, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, }, }, }, @@ -3256,7 +3270,7 @@ var g = &grammar{ expr: &seqExpr{ exprs: []any{ &litMatcher{val: "==", want: "\"==\""}, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, }, }, }, @@ -3265,7 +3279,7 @@ var g = &grammar{ expr: &seqExpr{ exprs: []any{ &litMatcher{val: "!=", want: "\"!=\""}, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, }, }, }, @@ -3290,7 +3304,7 @@ var g = &grammar{ val: "[ \\n\\t\\r]", chars: []rune{' ', '\n', '\t', '\r'}, }, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, }, }, ¬Expr{ @@ -3303,8 +3317,8 @@ var g = &grammar{ name: "sp1x", expr: &seqExpr{ exprs: []any{ - &ruleIRefExpr{index: 115 /* sp1 */}, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 116 /* sp1 */}, + &ruleIRefExpr{index: 115 /* sp */}, }, }, }, @@ -3321,9 +3335,9 @@ var g = &grammar{ name: "comment", expr: &seqExpr{ exprs: []any{ - &ruleIRefExpr{index: 117 /* spNoCR */}, + &ruleIRefExpr{index: 118 /* spNoCR */}, &litMatcher{val: "//", want: "\"//\""}, - &ruleIRefExpr{index: 119 /* commentLineRest */}, + &ruleIRefExpr{index: 120 /* commentLineRest */}, }, }, }, @@ -3386,15 +3400,15 @@ var g = &grammar{ name: "st_expr", expr: &choiceExpr{ alternatives: []any{ - &ruleIRefExpr{index: 127 /* st_modify_multi_1 */}, - &ruleIRefExpr{index: 124 /* st_assign_multi */}, - &ruleIRefExpr{index: 129 /* st_modify_multi_2 */}, + &ruleIRefExpr{index: 128 /* st_modify_multi_1 */}, + &ruleIRefExpr{index: 125 /* st_assign_multi */}, + &ruleIRefExpr{index: 130 /* st_modify_multi_2 */}, }, }, }, { name: "e0", - expr: &ruleIRefExpr{index: 1 /* stmtRoot */}, + expr: &ruleIRefExpr{index: 2 /* stmtRoot */}, }, { name: "est", @@ -3405,7 +3419,7 @@ var g = &grammar{ &andExpr{ expr: &litMatcher{val: "(", want: "\"(\""}, }, - &ruleIRefExpr{index: 122 /* e0 */}, + &ruleIRefExpr{index: 123 /* e0 */}, }, }, &seqExpr{ @@ -3413,12 +3427,12 @@ var g = &grammar{ &actionExpr{ run: (*parser).call_onest_7, expr: &andExpr{ - expr: &ruleIRefExpr{index: 122 /* e0 */}, + expr: &ruleIRefExpr{index: 123 /* e0 */}, }, }, &actionExpr{ run: (*parser).call_onest_10, - expr: &ruleIRefExpr{index: 122 /* e0 */}, + expr: &ruleIRefExpr{index: 123 /* e0 */}, }, }, }, @@ -3430,12 +3444,12 @@ var g = &grammar{ expr: &oneOrMoreExpr{ expr: &seqExpr{ exprs: []any{ - &ruleIRefExpr{index: 126 /* st_assign */}, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 127 /* st_assign */}, + &ruleIRefExpr{index: 115 /* sp */}, &zeroOrOneExpr{ expr: &litMatcher{val: ",", want: "\",\""}, }, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, }, }, }, @@ -3445,12 +3459,12 @@ var g = &grammar{ expr: &seqExpr{ exprs: []any{ &litMatcher{val: "*", want: "\"*\""}, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, &choiceExpr{ alternatives: []any{ - &ruleIRefExpr{index: 80 /* float */}, - &ruleIRefExpr{index: 79 /* number */}, - &ruleIRefExpr{index: 93 /* sub */}, + &ruleIRefExpr{index: 81 /* float */}, + &ruleIRefExpr{index: 80 /* number */}, + &ruleIRefExpr{index: 94 /* sub */}, }, }, }, @@ -3465,16 +3479,16 @@ var g = &grammar{ run: (*parser).call_onst_assign_2, expr: &seqExpr{ exprs: []any{ - &ruleIRefExpr{index: 135 /* st_name2 */}, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 136 /* st_name2 */}, + &ruleIRefExpr{index: 115 /* sp */}, &choiceExpr{ alternatives: []any{ &litMatcher{val: ":", want: "\":\""}, &litMatcher{val: "=", want: "\"=\""}, }, }, - &ruleIRefExpr{index: 114 /* sp */}, - &ruleIRefExpr{index: 123 /* est */}, + &ruleIRefExpr{index: 115 /* sp */}, + &ruleIRefExpr{index: 124 /* est */}, }, }, }, @@ -3482,8 +3496,8 @@ var g = &grammar{ run: (*parser).call_onst_assign_11, expr: &seqExpr{ exprs: []any{ - &ruleIRefExpr{index: 133 /* st_name1 */}, - &ruleIRefExpr{index: 123 /* est */}, + &ruleIRefExpr{index: 134 /* st_name1 */}, + &ruleIRefExpr{index: 124 /* est */}, }, }, }, @@ -3491,18 +3505,18 @@ var g = &grammar{ run: (*parser).call_onst_assign_15, expr: &seqExpr{ exprs: []any{ - &ruleIRefExpr{index: 136 /* st_name2r */}, - &ruleIRefExpr{index: 114 /* sp */}, - &ruleIRefExpr{index: 125 /* st_star */}, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 137 /* st_name2r */}, + &ruleIRefExpr{index: 115 /* sp */}, + &ruleIRefExpr{index: 126 /* st_star */}, + &ruleIRefExpr{index: 115 /* sp */}, &choiceExpr{ alternatives: []any{ &litMatcher{val: ":", want: "\":\""}, &litMatcher{val: "=", want: "\"=\""}, }, }, - &ruleIRefExpr{index: 114 /* sp */}, - &ruleIRefExpr{index: 123 /* est */}, + &ruleIRefExpr{index: 115 /* sp */}, + &ruleIRefExpr{index: 124 /* est */}, }, }, }, @@ -3510,18 +3524,18 @@ var g = &grammar{ run: (*parser).call_onst_assign_26, expr: &seqExpr{ exprs: []any{ - &ruleIRefExpr{index: 136 /* st_name2r */}, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 137 /* st_name2r */}, + &ruleIRefExpr{index: 115 /* sp */}, &litMatcher{val: "*", want: "\"*\""}, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, &choiceExpr{ alternatives: []any{ &litMatcher{val: ":", want: "\":\""}, &litMatcher{val: "=", want: "\"=\""}, }, }, - &ruleIRefExpr{index: 114 /* sp */}, - &ruleIRefExpr{index: 123 /* est */}, + &ruleIRefExpr{index: 115 /* sp */}, + &ruleIRefExpr{index: 124 /* est */}, }, }, }, @@ -3529,16 +3543,16 @@ var g = &grammar{ run: (*parser).call_onst_assign_37, expr: &seqExpr{ exprs: []any{ - &ruleIRefExpr{index: 136 /* st_name2r */}, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 137 /* st_name2r */}, + &ruleIRefExpr{index: 115 /* sp */}, &choiceExpr{ alternatives: []any{ &litMatcher{val: ":", want: "\":\""}, &litMatcher{val: "=", want: "\"=\""}, }, }, - &ruleIRefExpr{index: 114 /* sp */}, - &ruleIRefExpr{index: 123 /* est */}, + &ruleIRefExpr{index: 115 /* sp */}, + &ruleIRefExpr{index: 124 /* est */}, }, }, }, @@ -3546,8 +3560,8 @@ var g = &grammar{ run: (*parser).call_onst_assign_46, expr: &seqExpr{ exprs: []any{ - &ruleIRefExpr{index: 134 /* st_name1r */}, - &ruleIRefExpr{index: 123 /* est */}, + &ruleIRefExpr{index: 135 /* st_name1r */}, + &ruleIRefExpr{index: 124 /* est */}, }, }, }, @@ -3558,15 +3572,15 @@ var g = &grammar{ expr: &seqExpr{ exprs: []any{ &litMatcher{val: "&", want: "\"&\""}, - &ruleIRefExpr{index: 135 /* st_name2 */}, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 136 /* st_name2 */}, + &ruleIRefExpr{index: 115 /* sp */}, &choiceExpr{ alternatives: []any{ &litMatcher{val: ":", want: "\":\""}, &litMatcher{val: "=", want: "\"=\""}, }, }, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, }, }, }, @@ -3574,7 +3588,7 @@ var g = &grammar{ run: (*parser).call_onst_assign_60, expr: &labeledExpr{ label: "text", - expr: &ruleIRefExpr{index: 123 /* est */}, + expr: &ruleIRefExpr{index: 124 /* est */}, textCapture: true, }, }, @@ -3587,15 +3601,15 @@ var g = &grammar{ expr: &seqExpr{ exprs: []any{ &litMatcher{val: "&", want: "\"&\""}, - &ruleIRefExpr{index: 136 /* st_name2r */}, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 137 /* st_name2r */}, + &ruleIRefExpr{index: 115 /* sp */}, &choiceExpr{ alternatives: []any{ &litMatcher{val: ":", want: "\":\""}, &litMatcher{val: "=", want: "\"=\""}, }, }, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, }, }, }, @@ -3603,7 +3617,7 @@ var g = &grammar{ run: (*parser).call_onst_assign_73, expr: &labeledExpr{ label: "text", - expr: &ruleIRefExpr{index: 123 /* est */}, + expr: &ruleIRefExpr{index: 124 /* est */}, textCapture: true, }, }, @@ -3622,38 +3636,38 @@ var g = &grammar{ alternatives: []any{ &seqExpr{ exprs: []any{ - &ruleIRefExpr{index: 135 /* st_name2 */}, - &ruleIRefExpr{index: 128 /* st_modify_rest1 */}, + &ruleIRefExpr{index: 136 /* st_name2 */}, + &ruleIRefExpr{index: 129 /* st_modify_rest1 */}, }, }, &seqExpr{ exprs: []any{ - &ruleIRefExpr{index: 136 /* st_name2r */}, - &ruleIRefExpr{index: 128 /* st_modify_rest1 */}, + &ruleIRefExpr{index: 137 /* st_name2r */}, + &ruleIRefExpr{index: 129 /* st_modify_rest1 */}, }, }, &seqExpr{ exprs: []any{ - &ruleIRefExpr{index: 133 /* st_name1 */}, - &ruleIRefExpr{index: 132 /* st_modify_rest */}, + &ruleIRefExpr{index: 134 /* st_name1 */}, + &ruleIRefExpr{index: 133 /* st_modify_rest */}, }, }, &seqExpr{ exprs: []any{ - &ruleIRefExpr{index: 134 /* st_name1r */}, - &ruleIRefExpr{index: 132 /* st_modify_rest */}, + &ruleIRefExpr{index: 135 /* st_name1r */}, + &ruleIRefExpr{index: 133 /* st_modify_rest */}, }, }, }, }, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, &zeroOrOneExpr{ expr: &litMatcher{val: ",", want: "\",\""}, }, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, }, }, - &ruleIRefExpr{index: 130 /* st_modify_multi_rest */}, + &ruleIRefExpr{index: 131 /* st_modify_multi_rest */}, }, }, }, @@ -3662,7 +3676,7 @@ var g = &grammar{ varExists: true, expr: &seqExpr{ exprs: []any{ - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, &choiceExpr{ alternatives: []any{ &actionExpr{ @@ -3670,10 +3684,10 @@ var g = &grammar{ expr: &seqExpr{ exprs: []any{ &litMatcher{val: "+=", want: "\"+=\""}, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, &labeledExpr{ label: "text", - expr: &ruleIRefExpr{index: 122 /* e0 */}, + expr: &ruleIRefExpr{index: 123 /* e0 */}, textCapture: true, }, }, @@ -3684,10 +3698,10 @@ var g = &grammar{ expr: &seqExpr{ exprs: []any{ &litMatcher{val: "-=", want: "\"-=\""}, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, &labeledExpr{ label: "text", - expr: &ruleIRefExpr{index: 122 /* e0 */}, + expr: &ruleIRefExpr{index: 123 /* e0 */}, textCapture: true, }, }, @@ -3704,15 +3718,15 @@ var g = &grammar{ exprs: []any{ &seqExpr{ exprs: []any{ - &ruleIRefExpr{index: 131 /* st_modify2 */}, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 132 /* st_modify2 */}, + &ruleIRefExpr{index: 115 /* sp */}, &zeroOrOneExpr{ expr: &litMatcher{val: ",", want: "\",\""}, }, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, }, }, - &ruleIRefExpr{index: 130 /* st_modify_multi_rest */}, + &ruleIRefExpr{index: 131 /* st_modify_multi_rest */}, }, }, }, @@ -3721,12 +3735,12 @@ var g = &grammar{ expr: &zeroOrMoreExpr{ expr: &seqExpr{ exprs: []any{ - &ruleIRefExpr{index: 131 /* st_modify2 */}, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 132 /* st_modify2 */}, + &ruleIRefExpr{index: 115 /* sp */}, &zeroOrOneExpr{ expr: &litMatcher{val: ",", want: "\",\""}, }, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, }, }, }, @@ -3737,14 +3751,14 @@ var g = &grammar{ alternatives: []any{ &seqExpr{ exprs: []any{ - &ruleIRefExpr{index: 135 /* st_name2 */}, - &ruleIRefExpr{index: 132 /* st_modify_rest */}, + &ruleIRefExpr{index: 136 /* st_name2 */}, + &ruleIRefExpr{index: 133 /* st_modify_rest */}, }, }, &seqExpr{ exprs: []any{ - &ruleIRefExpr{index: 136 /* st_name2r */}, - &ruleIRefExpr{index: 132 /* st_modify_rest */}, + &ruleIRefExpr{index: 137 /* st_name2r */}, + &ruleIRefExpr{index: 133 /* st_modify_rest */}, }, }, }, @@ -3755,7 +3769,7 @@ var g = &grammar{ varExists: true, expr: &seqExpr{ exprs: []any{ - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, &choiceExpr{ alternatives: []any{ &actionExpr{ @@ -3766,10 +3780,10 @@ var g = &grammar{ &zeroOrOneExpr{ expr: &litMatcher{val: "=", want: "\"=\""}, }, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, &labeledExpr{ label: "text", - expr: &ruleIRefExpr{index: 122 /* e0 */}, + expr: &ruleIRefExpr{index: 123 /* e0 */}, textCapture: true, }, }, @@ -3782,10 +3796,10 @@ var g = &grammar{ &andExpr{ expr: &litMatcher{val: "-", want: "\"-\""}, }, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, &labeledExpr{ label: "text", - expr: &ruleIRefExpr{index: 122 /* e0 */}, + expr: &ruleIRefExpr{index: 123 /* e0 */}, textCapture: true, }, }, @@ -3799,10 +3813,10 @@ var g = &grammar{ &zeroOrOneExpr{ expr: &litMatcher{val: "=", want: "\"=\""}, }, - &ruleIRefExpr{index: 114 /* sp */}, + &ruleIRefExpr{index: 115 /* sp */}, &labeledExpr{ label: "text", - expr: &ruleIRefExpr{index: 122 /* e0 */}, + expr: &ruleIRefExpr{index: 123 /* e0 */}, textCapture: true, }, }, @@ -3823,11 +3837,11 @@ var g = &grammar{ expr: &seqExpr{ exprs: []any{ &oneOrMoreExpr{ - expr: &ruleIRefExpr{index: 137 /* id_ch0 */}, + expr: &ruleIRefExpr{index: 138 /* id_ch0 */}, }, &litMatcher{val: ":", want: "\":\""}, &oneOrMoreExpr{ - expr: &ruleIRefExpr{index: 137 /* id_ch0 */}, + expr: &ruleIRefExpr{index: 138 /* id_ch0 */}, }, }, }, @@ -3843,7 +3857,7 @@ var g = &grammar{ expr: &labeledExpr{ label: "text", expr: &oneOrMoreExpr{ - expr: &ruleIRefExpr{index: 137 /* id_ch0 */}, + expr: &ruleIRefExpr{index: 138 /* id_ch0 */}, }, textCapture: true, }, @@ -3858,15 +3872,15 @@ var g = &grammar{ label: "text", expr: &seqExpr{ exprs: []any{ - &ruleIRefExpr{index: 137 /* id_ch0 */}, + &ruleIRefExpr{index: 138 /* id_ch0 */}, &zeroOrMoreExpr{ - expr: &ruleIRefExpr{index: 138 /* id_ch */}, + expr: &ruleIRefExpr{index: 139 /* id_ch */}, }, &seqExpr{ exprs: []any{ &litMatcher{val: ":", want: "\":\""}, &oneOrMoreExpr{ - expr: &ruleIRefExpr{index: 138 /* id_ch */}, + expr: &ruleIRefExpr{index: 139 /* id_ch */}, }, }, }, @@ -3887,9 +3901,9 @@ var g = &grammar{ label: "text", expr: &seqExpr{ exprs: []any{ - &ruleIRefExpr{index: 137 /* id_ch0 */}, + &ruleIRefExpr{index: 138 /* id_ch0 */}, &zeroOrMoreExpr{ - expr: &ruleIRefExpr{index: 138 /* id_ch */}, + expr: &ruleIRefExpr{index: 139 /* id_ch */}, }, }, }, @@ -3906,7 +3920,7 @@ var g = &grammar{ expr: &oneOrMoreExpr{ expr: &choiceExpr{ alternatives: []any{ - &ruleIRefExpr{index: 137 /* id_ch0 */}, + &ruleIRefExpr{index: 138 /* id_ch0 */}, &charClassMatcher{ val: "[0-9]", ranges: []rune{'0', '9'}, @@ -3927,11 +3941,11 @@ var g = &grammar{ }, { name: "id_ch0", - expr: &ruleIRefExpr{index: 91 /* xidStart */}, + expr: &ruleIRefExpr{index: 92 /* xidStart */}, }, { name: "id_ch", - expr: &ruleIRefExpr{index: 91 /* xidStart */}, + expr: &ruleIRefExpr{index: 92 /* xidStart */}, }, }, } diff --git a/rollvm_st_test.go b/rollvm_st_test.go new file mode 100644 index 00000000..e4710fc0 --- /dev/null +++ b/rollvm_st_test.go @@ -0,0 +1,63 @@ +package dicescript + +import ( + "github.com/stretchr/testify/assert" + "testing" +) + +func TestStBasic(t *testing.T) { + vm := NewVM() + + vm.Config.CallbackSt = func(_type string, name string, val *VMValue, extra *VMValue, op string, detail string) { + // fmt.Println("!!", _type, name, val, extra, op, detail) + assert.Equal(t, name, "A") + assert.True(t, valueEqual(val, ni(1))) + assert.Equal(t, _type, "set") + } + + err := vm.Run(`^stA:1`) + assert.NoError(t, err) +} + +func TestStBasicMod(t *testing.T) { + vm := NewVM() + + vm.Config.CallbackSt = func(_type string, name string, val *VMValue, extra *VMValue, op string, detail string) { + // fmt.Println("!!", _type, name, val, extra, op, detail) + assert.Equal(t, name, "A") + assert.True(t, valueEqual(val, ni(2))) + assert.Equal(t, _type, "mod") + } + + err := vm.Run(`^stA+2`) + assert.NoError(t, err) +} + +func TestStBasicStX0(t *testing.T) { + vm := NewVM() + + vm.Config.CallbackSt = func(_type string, name string, val *VMValue, extra *VMValue, op string, detail string) { + // fmt.Println("!!", _type, name, val, extra, op, detail) + assert.Equal(t, name, "A") + assert.True(t, valueEqual(val, ni(3))) + assert.Equal(t, _type, "set.x0") + } + + err := vm.Run(`^stA*:3`) + assert.NoError(t, err) +} + +func TestStBasicStX1(t *testing.T) { + vm := NewVM() + + vm.Config.CallbackSt = func(_type string, name string, val *VMValue, extra *VMValue, op string, detail string) { + // fmt.Println("!!", _type, name, val, extra, op, detail) + assert.Equal(t, name, "A") + assert.True(t, valueEqual(val, ni(3))) + assert.True(t, valueEqual(extra, nf(2.1))) + assert.Equal(t, _type, "set.x1") + } + + err := vm.Run(`^stA*2.1: 3`) + assert.NoError(t, err) +}