diff --git a/go/cases-to-do.txt b/go/cases-to-do.txt deleted file mode 100644 index b0b92f1cd..000000000 --- a/go/cases-to-do.txt +++ /dev/null @@ -1,116 +0,0 @@ -================================================================ -BUG: - -rrv ./reg-test/cases/case-c-dsl-mapvar-assignments.sh -* probably buggy in the C impl - -rrv ./reg-test/cases/case-c-dsl-forbind-typedecl.sh -rrv ./reg-test/cases/case-c-dsl-localvar-typedecl.sh -rrv ./reg-test/cases/case-c-dsl-local-map-variable-typedecl.sh -rrv ./reg-test/cases/case-c-dsl-argpass-typedecl.sh -* str s = "a"; s = 3 doesn't trigger -- needs gate-retention ... - -rrv ./reg-test/cases/case-c-dsl-triple-for-loops.sh -* Needs to do this: - "Continuation statements are split into the final boolean, and the statements before (if any)." - -================================================================ -LF/CRLF ETC. - -rrv ./reg-test/cases/case-c-multi-character-ixs.sh -rrv ./reg-test/cases/case-c-implicit-header-csv-input.sh -rrv ./reg-test/cases/case-c-missing-final-lf.sh - -================================================================ -PUT -a - -rrv -C20 ./reg-test/cases/case-c-dsl-local-map-variable-write-read.sh -* put -a - -================================================================ -PARTIALLY IMPLEMENTED: - -rrv ./reg-test/cases/case-c-dsl-scientific-notation.sh -rrv ./reg-test/cases/case-c-implicit-header-csv-input.sh -rrv ./reg-test/cases/case-c-rfc-csv.sh -rrv ./reg-test/cases/case-c-io-space-padding.sh -rrv ./reg-test/cases/case-c-utf8-alignment.sh - -================================================================ -BACKWARD INCOMPATIBILITIES: - -rrv ./reg-test/cases/case-c-label.sh -* handles old/new clashes differently from C impl :^/ - -rrv ./reg-test/cases/case-c-dsl-substr.sh -* format-strings? gah. needs smart fmtnum regardless. - -================================================================ -NEED EMITP/MULTI-EMIT/PRINT-WITH-REDIRECT - -rrv ./reg-test/cases/case-c-dsl-absent-empty.sh -rrv ./reg-test/cases/case-c-dsl-break-continue.sh -rrv ./reg-test/cases/case-c-dsl-for-oosvar-loops.sh -rrv ./reg-test/cases/case-c-dsl-functional-tests.sh -rrv ./reg-test/cases/case-c-dsl-indirect-oosvar-assignments.sh -rrv ./reg-test/cases/case-c-dsl-lashed-emitp-singles.sh -rrv ./reg-test/cases/case-c-dsl-mapvar-emit.sh -rrv ./reg-test/cases/case-c-dsl-oosvar-assignments.sh -rrv ./reg-test/cases/case-c-dsl-type-predicates.sh - --> split up this big case-file: case-c-dsl-functional-tests.sh - -================================================================ -NOT IMPLEMENTED YET: - -rrv ./reg-test/cases/case-c-format-conversion-keystroke-savers.sh -rrv ./reg-test/cases/case-c-het-pprint-input.sh -* needs --ipprint - -rrv ./reg-test/cases/case-c-dsl-filter-pattern-action.sh -* regex captures - -rrv -C1 ./reg-test/cases/case-c-dsl-filter-pattern-action.sh -* regexi - -rrv ./reg-test/cases/case-c-bar.sh -rrv ./reg-test/cases/case-c-compressed-input.sh -rrv ./reg-test/cases/case-c-count-distinct.sh -rrv ./reg-test/cases/case-c-csv-rs-environment-defaults.sh -rrv ./reg-test/cases/case-c-dsl-gmt-date-time-functions.sh -rrv ./reg-test/cases/case-c-dsl-local-date-time-functions.sh -rrv ./reg-test/cases/case-c-dsl-mapvars-udfs-subroutines.sh -rrv ./reg-test/cases/case-c-dsl-parameterized-emit.sh -rrv ./reg-test/cases/case-c-dsl-positional-indexing.sh -rrv ./reg-test/cases/case-c-dsl-prefixed-unprefixed-emit.sh -rrv ./reg-test/cases/case-c-dsl-redirects.sh -rrv ./reg-test/cases/case-c-dsl-regex-captures.sh -rrv ./reg-test/cases/case-c-dsl-regex-matching.sh -rrv ./reg-test/cases/case-c-dsl-stack-allocation.sh -rrv ./reg-test/cases/case-c-format-values.sh -rrv ./reg-test/cases/case-c-format-values.sh -rrv ./reg-test/cases/case-c-fraction.sh -rrv ./reg-test/cases/case-c-having-fields.sh -rrv ./reg-test/cases/case-c-head-early-out.sh -rrv ./reg-test/cases/case-c-in-place-processing.sh -rrv ./reg-test/cases/case-c-int-float-stats1-step1.sh -rrv ./reg-test/cases/case-c-join-prepipe.sh -rrv ./reg-test/cases/case-c-lf-crlf-and-autodetect.sh -rrv ./reg-test/cases/case-c-markdown-output.sh -rrv ./reg-test/cases/case-c-merge-fields.sh -rrv ./reg-test/cases/case-c-most-least-frequent.sh -rrv ./reg-test/cases/case-c-nest.sh -rrv ./reg-test/cases/case-c-null-field-input.sh -rrv ./reg-test/cases/case-c-number-formatting.sh -rrv ./reg-test/cases/case-c-rename-regex.sh -rrv ./reg-test/cases/case-c-reshape.sh -rrv ./reg-test/cases/case-c-skip-pass-comments.sh -rrv ./reg-test/cases/case-c-stats1-percentile-interpolation.sh -rrv ./reg-test/cases/case-c-stats1-regexed-field-names.sh -rrv ./reg-test/cases/case-c-stats1.sh -rrv ./reg-test/cases/case-c-stats2.sh -rrv ./reg-test/cases/case-c-top.sh -rrv ./reg-test/cases/case-c-uniq.sh -rrv ./reg-test/cases/case-c-utf8-bom.sh - -================================================================ diff --git a/go/gg b/go/gg index 93db9424f..8910248ee 100755 --- a/go/gg +++ b/go/gg @@ -52,6 +52,7 @@ mention() { # ================================================================ -run_mlr --oxtab fraction -f x,y -g a -p -c ./reg-test/input/abixy-het +mlr --from ./reg-test/input/abixy put '@o[1][2][3] = 7; for(k1,v in @o[1][2]) {$x+=10;$y+=100}' +mlr --from ./reg-test/input/xyz2 put -q 'map o = @o; dump o' # ================================================================ diff --git a/go/reg-test/cases/case-c-dsl-argpass-typedecl.sh b/go/reg-test/cases/case-dsl-argpass-typedecl.sh similarity index 100% rename from go/reg-test/cases/case-c-dsl-argpass-typedecl.sh rename to go/reg-test/cases/case-dsl-argpass-typedecl.sh diff --git a/go/reg-test/cases/case-c-dsl-for-map-depth.sh b/go/reg-test/cases/case-dsl-for-map-depth.sh similarity index 100% rename from go/reg-test/cases/case-c-dsl-for-map-depth.sh rename to go/reg-test/cases/case-dsl-for-map-depth.sh diff --git a/go/reg-test/cases/case-c-dsl-local-map-variable-write-read.sh b/go/reg-test/cases/case-dsl-local-map-variable-write-read.sh similarity index 78% rename from go/reg-test/cases/case-c-dsl-local-map-variable-write-read.sh rename to go/reg-test/cases/case-dsl-local-map-variable-write-read.sh index 25bb90020..b48094632 100644 --- a/go/reg-test/cases/case-c-dsl-local-map-variable-write-read.sh +++ b/go/reg-test/cases/case-dsl-local-map-variable-write-read.sh @@ -1,16 +1,16 @@ -run_mlr --from $indir/xyz345 put ' +run_mlr --from $indir/xyz345 --ojson put ' $s = a; $t = b[$x]; $u = c[$x][$y]; $v = d[$x][$y][$z]; ' -run_mlr --from $indir/xyz345 put ' +run_mlr --from $indir/xyz345 --ojson put ' d[$x][$y][$z] = 9; $d = d[$x][$y][$z]; ' -run_mlr --from $indir/xyz345 put ' +run_mlr --from $indir/xyz345 --ojson put ' a = 6; b[$x] = 7; c[$x][$y] = 8; @@ -22,7 +22,7 @@ run_mlr --from $indir/xyz345 put ' $d = d[$x][$y][$z]; ' -run_mlr --from $indir/xyz345 put ' +run_mlr --from $indir/xyz345 --ojson put ' a = 6; b[$x] = 7; c[$x][$y] = 8; diff --git a/go/reg-test/cases/case-c-dsl-mapvar-assignments.sh b/go/reg-test/cases/case-dsl-mapvar-assignments.sh similarity index 94% rename from go/reg-test/cases/case-c-dsl-mapvar-assignments.sh rename to go/reg-test/cases/case-dsl-mapvar-assignments.sh index 493823cc4..108c0ec22 100644 --- a/go/reg-test/cases/case-c-dsl-mapvar-assignments.sh +++ b/go/reg-test/cases/case-dsl-mapvar-assignments.sh @@ -4,16 +4,16 @@ announce MAPVAR ASSIGNMENTS TO FULL SREC run_mlr --from $indir/xyz2 put '$* = {"a":1, "b": {"x":8,"y":9}, "c":3}' run_mlr --from $indir/xyz2 put '$* = $*' -run_mlr --from $indir/xyz2 put '@a = 1; $* = @a' +mlr_expect_fail --from $indir/xyz2 put '@a = 1; $* = @a' run_mlr --from $indir/xyz2 put '@b[1] = 2; $* = @b' run_mlr --from $indir/xyz2 put '@c[1][2] = 3; $* = @c' run_mlr --from $indir/xyz2 put '@a = 1; $* = @*' run_mlr --from $indir/xyz2 put '@b[1] = 2; $* = @*' run_mlr --from $indir/xyz2 put '@c[1][2] = 3; $* = @*' -run_mlr --from $indir/xyz2 put 'a = 1; $* = a' +mlr_expect_fail --from $indir/xyz2 put 'a = 1; $* = a' run_mlr --from $indir/xyz2 put 'b[1] = 2; $* = b' run_mlr --from $indir/xyz2 put 'c[1][2] = 3; $* = c' -run_mlr --from $indir/xyz2 put '$* = 3' +mlr_expect_fail --from $indir/xyz2 put '$* = 3' run_mlr --from $indir/xyz2 put ' func map_valued_func() { @@ -36,16 +36,16 @@ announce MAPVAR ASSIGNMENTS TO FULL OOSVAR run_mlr --from $indir/xyz2 put '@* = {"a":1, "b": {"x":8,"y":9}, "c":3}; dump' run_mlr --from $indir/xyz2 put '@* = $*; dump' run_mlr --from $indir/xyz2 put '@* = {"a":1, "b": {"x":8,"y":9}, "c":3}; dump; @* = @*; dump' -run_mlr --from $indir/xyz2 put '@a = 1; @* = @a; dump' +mlr_expect_fail --from $indir/xyz2 put '@a = 1; @* = @a; dump' run_mlr --from $indir/xyz2 put '@b[1] = 2; @* = @b; dump' run_mlr --from $indir/xyz2 put '@c[1][2] = 3; @* = @c; dump' run_mlr --from $indir/xyz2 put '@a = 1; @* = @*; dump' run_mlr --from $indir/xyz2 put '@b[1] = 2; @* = @*; dump' run_mlr --from $indir/xyz2 put '@c[1][2] = 3; @* = @*; dump' -run_mlr --from $indir/xyz2 put 'a = 1; @* = a; dump' +mlr_expect_fail --from $indir/xyz2 put 'a = 1; @* = a; dump' run_mlr --from $indir/xyz2 put 'b[1] = 2; @* = b; dump' run_mlr --from $indir/xyz2 put 'c[1][2] = 3; @* = c; dump' -run_mlr --from $indir/xyz2 put '@* = 3' +mlr_expect_fail --from $indir/xyz2 put '@* = 3' run_mlr --from $indir/xyz2 put ' func map_valued_func() { @@ -88,7 +88,7 @@ run_mlr --from $indir/xyz2 put -q 'func map_valued_func() { return {"a":1,"b":2} announce MAPVAR ASSIGNMENTS TO MAP-TYPED LOCAL run_mlr --from $indir/xyz2 put -q 'map o = {"a":1, "b": {"x":8,"y":9}, "c":3}; dump o' -mlr_expect_fail --from $indir/xyz2 put -q 'map o = @o; dump o' +run_mlr --from $indir/xyz2 put -q 'map o = @o; dump o' run_mlr --from $indir/xyz2 put -q 'map o = $*; dump o' run_mlr --from $indir/xyz2 put -q 'map o = {"a":1, "b": {"x":8,"y":9}, "c":3}; o = o; dump o' mlr_expect_fail --from $indir/xyz2 put -q '@a = 1; map o = @a; dump o' diff --git a/go/reg-test/cases/case-c-dsl-mapvars-udfs-subroutines.sh b/go/reg-test/cases/case-dsl-mapvars-udfs-subroutines.sh similarity index 97% rename from go/reg-test/cases/case-c-dsl-mapvars-udfs-subroutines.sh rename to go/reg-test/cases/case-dsl-mapvars-udfs-subroutines.sh index ffd200600..f336e4d91 100644 --- a/go/reg-test/cases/case-c-dsl-mapvars-udfs-subroutines.sh +++ b/go/reg-test/cases/case-dsl-mapvars-udfs-subroutines.sh @@ -3,7 +3,7 @@ run_mlr --from $indir/abixy put ' dump m; sum = 0; for (k, v in m) { - sum += k + sum += int(k) } return sum } @@ -16,7 +16,7 @@ run_mlr --from $indir/abixy put ' dump m; sum = 0; for (k, v in m) { - sum += k + sum += int(k) } @sum = sum; } diff --git a/go/reg-test/cases/case-c-dsl-user-defined-functions.sh b/go/reg-test/cases/case-dsl-user-defined-functions.sh similarity index 93% rename from go/reg-test/cases/case-c-dsl-user-defined-functions.sh rename to go/reg-test/cases/case-dsl-user-defined-functions.sh index 3eeb10f09..58f44eb02 100644 --- a/go/reg-test/cases/case-c-dsl-user-defined-functions.sh +++ b/go/reg-test/cases/case-dsl-user-defined-functions.sh @@ -3,7 +3,7 @@ announce USER-DEFINED FUNCTIONS run_mlr --opprint --from $indir/abixy put 'func f(u,v){return u+v} $o=f(NR*1000,$x)' -mlr_expect_fail --opprint --from $indir/abixy put 'func f(x,y,z){$nnn=999; int n=10; return $y} $o=f($i,$x,$y)' +run_mlr --opprint --from $indir/abixy put 'func f(x,y,z){$nnn=999; int n=10; return $y} $o=f($i,$x,$y)' # general programming-language stuff run_mlr -n put -q -f $indir/sieve.mlr diff --git a/go/reg-test/expected/case-c-dsl-local-map-variable-write-read.sh.out b/go/reg-test/expected/case-c-dsl-local-map-variable-write-read.sh.out deleted file mode 100644 index 3c1dc8f09..000000000 --- a/go/reg-test/expected/case-c-dsl-local-map-variable-write-read.sh.out +++ /dev/null @@ -1,56 +0,0 @@ - -mlr --from ./reg-test/input/xyz345 put - $s = a; - $t = b[$x]; - $u = c[$x][$y]; - $v = d[$x][$y][$z]; - -x=3,y=4,z=5 - -mlr --from ./reg-test/input/xyz345 put - d[$x][$y][$z] = 9; - $d = d[$x][$y][$z]; - -x=3,y=4,z=5,d=9 - -mlr --from ./reg-test/input/xyz345 put - a = 6; - b[$x] = 7; - c[$x][$y] = 8; - d[$x][$y][$z] = 9; - - $a = a; - $b = b[$x]; - $c = c[$x][$y]; - $d = d[$x][$y][$z]; - -x=3,y=4,z=5,a=6,b=7,c=8,d=9 - -mlr --from ./reg-test/input/xyz345 put - a = 6; - b[$x] = 7; - c[$x][$y] = 8; - d[$x][$y][$z] = 9; - - $a0 = a; - $a1 = a[$x]; - $a2 = a[$x][$y]; - $a3 = a[$x][$y][$z]; - - $b0 = b; - $b1 = b[$x]; - $b2 = b[$x][$y]; - $b3 = b[$x][$y][$z]; - - $c0 = c; - $c1 = c[$x]; - $c2 = c[$x][$y]; - $c3 = c[$x][$y][$z]; - - $d0 = d; - $d1 = d[$x]; - $d2 = d[$x][$y]; - $d3 = d[$x][$y][$z]; - -x=3,y=4,z=5,a0=6,b1=7,c2=8,d3=9 - diff --git a/go/reg-test/expected/case-c-dsl-argpass-typedecl.sh.out b/go/reg-test/expected/case-dsl-argpass-typedecl.sh.out similarity index 100% rename from go/reg-test/expected/case-c-dsl-argpass-typedecl.sh.out rename to go/reg-test/expected/case-dsl-argpass-typedecl.sh.out diff --git a/go/reg-test/expected/case-dsl-context-specific-validation.sh.out b/go/reg-test/expected/case-dsl-context-specific-validation.sh.out index 47395bbed..98c1e271c 100644 --- a/go/reg-test/expected/case-dsl-context-specific-validation.sh.out +++ b/go/reg-test/expected/case-dsl-context-specific-validation.sh.out @@ -4,6 +4,7 @@ mlr put -v begin{begin{@x=1}} DSL EXPRESSION: begin{begin{@x=1}} + AST: * statement block * begin block @@ -18,6 +19,7 @@ AST: mlr put -v true{begin{@x=1}} DSL EXPRESSION: true{begin{@x=1}} + AST: * statement block * cond block @@ -33,6 +35,7 @@ AST: mlr put -v end{end{@x=1}} DSL EXPRESSION: end{end{@x=1}} + AST: * statement block * end block @@ -47,6 +50,7 @@ AST: mlr put -v true{end{@x=1}} DSL EXPRESSION: true{end{@x=1}} + AST: * statement block * cond block @@ -64,6 +68,7 @@ AST: mlr put -v begin{$x=1} DSL EXPRESSION: begin{$x=1} + AST: * statement block * begin block @@ -76,6 +81,7 @@ AST: mlr put -v begin{@x=$y} DSL EXPRESSION: begin{@x=$y} + AST: * statement block * begin block @@ -88,6 +94,7 @@ AST: mlr put -v end{$x=1} DSL EXPRESSION: end{$x=1} + AST: * statement block * end block @@ -100,6 +107,7 @@ AST: mlr put -v end{@x=$y} DSL EXPRESSION: end{@x=$y} + AST: * statement block * end block @@ -112,6 +120,7 @@ AST: mlr put -v begin{@v=$*} DSL EXPRESSION: begin{@v=$*} + AST: * statement block * begin block @@ -124,6 +133,7 @@ AST: mlr put -v end{$*=@v} DSL EXPRESSION: end{$*=@v} + AST: * statement block * end block @@ -136,6 +146,7 @@ AST: mlr put -v begin{unset $x} DSL EXPRESSION: begin{unset $x} + AST: * statement block * begin block @@ -147,6 +158,7 @@ AST: mlr put -v end{unset $x} DSL EXPRESSION: end{unset $x} + AST: * statement block * end block @@ -158,6 +170,7 @@ AST: mlr put -v begin{unset $*} DSL EXPRESSION: begin{unset $*} + AST: * statement block * begin block @@ -169,6 +182,7 @@ AST: mlr put -v end{unset $*} DSL EXPRESSION: end{unset $*} + AST: * statement block * end block @@ -182,6 +196,7 @@ AST: mlr put -v break DSL EXPRESSION: break + AST: * statement block * break "break" @@ -190,6 +205,7 @@ AST: mlr put -v continue DSL EXPRESSION: continue + AST: * statement block * continue "continue" @@ -200,6 +216,7 @@ AST: mlr filter -v break DSL EXPRESSION: break + AST: * statement block * break "break" @@ -208,6 +225,7 @@ AST: mlr filter -v continue DSL EXPRESSION: continue + AST: * statement block * continue "continue" diff --git a/go/reg-test/expected/case-dsl-context-validation.sh.out b/go/reg-test/expected/case-dsl-context-validation.sh.out index c90179054..23a3ebf6f 100644 --- a/go/reg-test/expected/case-dsl-context-validation.sh.out +++ b/go/reg-test/expected/case-dsl-context-validation.sh.out @@ -24,6 +24,7 @@ mlr -n put func f() { continue } mlr -n put -v true DSL EXPRESSION: true + AST: * statement block * bare boolean @@ -33,6 +34,7 @@ AST: mlr -n put -v begin{true} DSL EXPRESSION: begin{true} + AST: * statement block * begin block diff --git a/go/reg-test/expected/case-dsl-do-while-loops.sh.out b/go/reg-test/expected/case-dsl-do-while-loops.sh.out index 4e01b0448..48c1bf857 100644 --- a/go/reg-test/expected/case-dsl-do-while-loops.sh.out +++ b/go/reg-test/expected/case-dsl-do-while-loops.sh.out @@ -2,6 +2,7 @@ mlr put -v while($i < 5) { $i += 1} ./reg-test/input/abixy DSL EXPRESSION: while($i < 5) { $i += 1} + AST: * statement block * while loop "while" @@ -29,6 +30,7 @@ a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864 mlr put -v do {$i += 1} while($i < 5) ./reg-test/input/abixy DSL EXPRESSION: do {$i += 1} while($i < 5) + AST: * statement block * do-while`loop "do" diff --git a/go/reg-test/expected/case-dsl-empty-statements.sh.out b/go/reg-test/expected/case-dsl-empty-statements.sh.out index f0610eee3..93d151d3c 100644 --- a/go/reg-test/expected/case-dsl-empty-statements.sh.out +++ b/go/reg-test/expected/case-dsl-empty-statements.sh.out @@ -2,6 +2,7 @@ mlr -n put -v DSL EXPRESSION: + AST: * statement block @@ -9,6 +10,7 @@ AST: mlr -n filter -v DSL EXPRESSION: + AST: * statement block @@ -16,6 +18,7 @@ AST: mlr -n put -v begin {} DSL EXPRESSION: begin {} + AST: * statement block * begin block @@ -25,6 +28,7 @@ AST: mlr -n put -v begin {;} DSL EXPRESSION: begin {;} + AST: * statement block * begin block @@ -34,6 +38,7 @@ AST: mlr -n put -v begin {;;} DSL EXPRESSION: begin {;;} + AST: * statement block * begin block @@ -43,6 +48,7 @@ AST: mlr -n put -v begin {;;;} DSL EXPRESSION: begin {;;;} + AST: * statement block * begin block @@ -52,6 +58,7 @@ AST: mlr -n put -v begin {@x=1} DSL EXPRESSION: begin {@x=1} + AST: * statement block * begin block @@ -64,6 +71,7 @@ AST: mlr -n put -v begin {@x=1;} DSL EXPRESSION: begin {@x=1;} + AST: * statement block * begin block @@ -76,6 +84,7 @@ AST: mlr -n put -v begin {;@x=1} DSL EXPRESSION: begin {;@x=1} + AST: * statement block * begin block @@ -88,6 +97,7 @@ AST: mlr -n put -v begin {@x=1;@y=2} DSL EXPRESSION: begin {@x=1;@y=2} + AST: * statement block * begin block @@ -103,6 +113,7 @@ AST: mlr -n put -v begin {@x=1;;@y=2} DSL EXPRESSION: begin {@x=1;;@y=2} + AST: * statement block * begin block @@ -118,6 +129,7 @@ AST: mlr -n put -v true {} DSL EXPRESSION: true {} + AST: * statement block * cond block @@ -128,6 +140,7 @@ AST: mlr -n put -v true {;} DSL EXPRESSION: true {;} + AST: * statement block * cond block @@ -138,6 +151,7 @@ AST: mlr -n put -v true {;;} DSL EXPRESSION: true {;;} + AST: * statement block * cond block @@ -148,6 +162,7 @@ AST: mlr -n put -v true {;;;} DSL EXPRESSION: true {;;;} + AST: * statement block * cond block @@ -158,6 +173,7 @@ AST: mlr -n put -v true {@x=1} DSL EXPRESSION: true {@x=1} + AST: * statement block * cond block @@ -171,6 +187,7 @@ AST: mlr -n put -v true {@x=1;} DSL EXPRESSION: true {@x=1;} + AST: * statement block * cond block @@ -184,6 +201,7 @@ AST: mlr -n put -v true {;@x=1} DSL EXPRESSION: true {;@x=1} + AST: * statement block * cond block @@ -197,6 +215,7 @@ AST: mlr -n put -v true {@x=1;@y=2} DSL EXPRESSION: true {@x=1;@y=2} + AST: * statement block * cond block @@ -213,6 +232,7 @@ AST: mlr -n put -v true {@x=1;;@y=2} DSL EXPRESSION: true {@x=1;;@y=2} + AST: * statement block * cond block @@ -229,6 +249,7 @@ AST: mlr -n put -v end {} DSL EXPRESSION: end {} + AST: * statement block * end block @@ -238,6 +259,7 @@ AST: mlr -n put -v end {;} DSL EXPRESSION: end {;} + AST: * statement block * end block @@ -247,6 +269,7 @@ AST: mlr -n put -v end {;;} DSL EXPRESSION: end {;;} + AST: * statement block * end block @@ -256,6 +279,7 @@ AST: mlr -n put -v end {;;;} DSL EXPRESSION: end {;;;} + AST: * statement block * end block @@ -265,6 +289,7 @@ AST: mlr -n put -v end {@x=1} DSL EXPRESSION: end {@x=1} + AST: * statement block * end block @@ -277,6 +302,7 @@ AST: mlr -n put -v end {@x=1;} DSL EXPRESSION: end {@x=1;} + AST: * statement block * end block @@ -289,6 +315,7 @@ AST: mlr -n put -v end {;@x=1} DSL EXPRESSION: end {;@x=1} + AST: * statement block * end block @@ -301,6 +328,7 @@ AST: mlr -n put -v end {@x=1;@y=2} DSL EXPRESSION: end {@x=1;@y=2} + AST: * statement block * end block @@ -316,6 +344,7 @@ AST: mlr -n put -v end {@x=1;;@y=2} DSL EXPRESSION: end {@x=1;;@y=2} + AST: * statement block * end block diff --git a/go/reg-test/expected/case-dsl-env.sh.out b/go/reg-test/expected/case-dsl-env.sh.out index 093413c78..f7aec891d 100644 --- a/go/reg-test/expected/case-dsl-env.sh.out +++ b/go/reg-test/expected/case-dsl-env.sh.out @@ -2,6 +2,7 @@ mlr -n put -v $z = ENV["HOME"] DSL EXPRESSION: $z = ENV["HOME"] + AST: * statement block * assignment "=" @@ -13,6 +14,7 @@ AST: mlr -n put -v $z = ENV["HOME"][1] DSL EXPRESSION: $z = ENV["HOME"][1] + AST: * statement block * assignment "=" @@ -26,6 +28,7 @@ AST: mlr -n put -v $ENV["FOO"] = "bar" DSL EXPRESSION: $ENV["FOO"] = "bar" + AST: * statement block * assignment "=" @@ -38,6 +41,7 @@ AST: mlr -n put -v $ENV["FOO"][2] = "bar" DSL EXPRESSION: $ENV["FOO"][2] = "bar" + AST: * statement block * assignment "=" diff --git a/go/reg-test/expected/case-c-dsl-for-map-depth.sh.out b/go/reg-test/expected/case-dsl-for-map-depth.sh.out similarity index 65% rename from go/reg-test/expected/case-c-dsl-for-map-depth.sh.out rename to go/reg-test/expected/case-dsl-for-map-depth.sh.out index 78f2c940f..80541e026 100644 --- a/go/reg-test/expected/case-c-dsl-for-map-depth.sh.out +++ b/go/reg-test/expected/case-dsl-for-map-depth.sh.out @@ -26,30 +26,30 @@ a=hat,b=wye,i=9,x=10.031441876460935,y=100.7495507603507 a=pan,b=wye,i=10,x=10.502626005541213,y=100.95261836029698 mlr --from ./reg-test/input/abixy put @o[1][2] = 7; for((k1,k2,k3),v in @*) {$x+=10;$y+=100} -a=pan,b=pan,i=1,x=20.346790144338083,y=200.72680286274345 -a=eks,b=pan,i=2,x=20.758679964789962,y=200.52215110833347 -a=wye,b=wye,i=3,x=20.204603305766305,y=200.33831852551663 -a=eks,b=wye,i=4,x=20.381399393871142,y=200.1341887432843 -a=wye,b=pan,i=5,x=20.573288919802,y=200.86362446990327 -a=zee,b=pan,i=6,x=20.527126160091854,y=200.49322128674834 -a=eks,b=zee,i=7,x=20.611784060567846,y=200.18788491911818 -a=zee,b=wye,i=8,x=20.598554009106422,y=200.97618138569902 -a=hat,b=wye,i=9,x=20.031441876460935,y=200.7495507603507 -a=pan,b=wye,i=10,x=20.502626005541213,y=200.95261836029698 +a=pan,b=pan,i=1,x=10.346790144338083,y=100.72680286274345 +a=eks,b=pan,i=2,x=10.758679964789964,y=100.52215110833347 +a=wye,b=wye,i=3,x=10.204603305766303,y=100.33831852551664 +a=eks,b=wye,i=4,x=10.38139939387114,y=100.1341887432843 +a=wye,b=pan,i=5,x=10.573288919802,y=100.86362446990327 +a=zee,b=pan,i=6,x=10.527126160091855,y=100.49322128674835 +a=eks,b=zee,i=7,x=10.611784060567846,y=100.18788491911818 +a=zee,b=wye,i=8,x=10.598554009106422,y=100.97618138569901 +a=hat,b=wye,i=9,x=10.031441876460935,y=100.7495507603507 +a=pan,b=wye,i=10,x=10.502626005541213,y=100.95261836029698 ---------------------------------------------------------------- for oosvar submap mlr --from ./reg-test/input/abixy put @o[1][2][3] = 7; for(k1,v in @o[1][2]) {$x+=10;$y+=100} -a=pan,b=pan,i=1,x=30.346790144338083,y=300.72680286274345 -a=eks,b=pan,i=2,x=30.758679964789962,y=300.52215110833345 -a=wye,b=wye,i=3,x=30.204603305766305,y=300.3383185255166 -a=eks,b=wye,i=4,x=30.381399393871142,y=300.1341887432843 -a=wye,b=pan,i=5,x=30.573288919802,y=300.86362446990324 -a=zee,b=pan,i=6,x=30.527126160091854,y=300.49322128674834 -a=eks,b=zee,i=7,x=30.611784060567846,y=300.1878849191182 -a=zee,b=wye,i=8,x=30.598554009106422,y=300.976181385699 -a=hat,b=wye,i=9,x=30.031441876460935,y=300.7495507603507 -a=pan,b=wye,i=10,x=30.502626005541213,y=300.952618360297 +a=pan,b=pan,i=1,x=10.346790144338083,y=100.72680286274345 +a=eks,b=pan,i=2,x=10.758679964789964,y=100.52215110833347 +a=wye,b=wye,i=3,x=10.204603305766303,y=100.33831852551664 +a=eks,b=wye,i=4,x=10.38139939387114,y=100.1341887432843 +a=wye,b=pan,i=5,x=10.573288919802,y=100.86362446990327 +a=zee,b=pan,i=6,x=10.527126160091855,y=100.49322128674835 +a=eks,b=zee,i=7,x=10.611784060567846,y=100.18788491911818 +a=zee,b=wye,i=8,x=10.598554009106422,y=100.97618138569901 +a=hat,b=wye,i=9,x=10.031441876460935,y=100.7495507603507 +a=pan,b=wye,i=10,x=10.502626005541213,y=100.95261836029698 mlr --from ./reg-test/input/abixy put @o[1][2][3] = 7; for((k1,k2),v in @o[1][2]) {$x+=10;$y+=100} a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533 @@ -90,16 +90,16 @@ a=hat,b=wye,i=9,x=10.031441876460935,y=100.7495507603507 a=pan,b=wye,i=10,x=10.502626005541213,y=100.95261836029698 mlr --from ./reg-test/input/abixy put o[1][2] = 7; for((k1,k2),v in o) {$x+=10;$y+=100} -a=pan,b=pan,i=1,x=20.346790144338083,y=200.72680286274345 -a=eks,b=pan,i=2,x=20.758679964789962,y=200.52215110833347 -a=wye,b=wye,i=3,x=20.204603305766305,y=200.33831852551663 -a=eks,b=wye,i=4,x=20.381399393871142,y=200.1341887432843 -a=wye,b=pan,i=5,x=20.573288919802,y=200.86362446990327 -a=zee,b=pan,i=6,x=20.527126160091854,y=200.49322128674834 -a=eks,b=zee,i=7,x=20.611784060567846,y=200.18788491911818 -a=zee,b=wye,i=8,x=20.598554009106422,y=200.97618138569902 -a=hat,b=wye,i=9,x=20.031441876460935,y=200.7495507603507 -a=pan,b=wye,i=10,x=20.502626005541213,y=200.95261836029698 +a=pan,b=pan,i=1,x=10.346790144338083,y=100.72680286274345 +a=eks,b=pan,i=2,x=10.758679964789964,y=100.52215110833347 +a=wye,b=wye,i=3,x=10.204603305766303,y=100.33831852551664 +a=eks,b=wye,i=4,x=10.38139939387114,y=100.1341887432843 +a=wye,b=pan,i=5,x=10.573288919802,y=100.86362446990327 +a=zee,b=pan,i=6,x=10.527126160091855,y=100.49322128674835 +a=eks,b=zee,i=7,x=10.611784060567846,y=100.18788491911818 +a=zee,b=wye,i=8,x=10.598554009106422,y=100.97618138569901 +a=hat,b=wye,i=9,x=10.031441876460935,y=100.7495507603507 +a=pan,b=wye,i=10,x=10.502626005541213,y=100.95261836029698 mlr --from ./reg-test/input/abixy put o[1][2] = 7; for((k1,k2,k3),v in o) {$x+=10;$y+=100} a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533 @@ -116,28 +116,28 @@ a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864 ---------------------------------------------------------------- for map-literal mlr --from ./reg-test/input/abixy put for(k1,v in {1:{2:7}}) {$x+=10;$y+=100} -a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533 -a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797 -a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776 -a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463 -a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729 -a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697 -a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694 -a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006 -a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059 -a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864 +a=pan,b=pan,i=1,x=10.346790144338083,y=100.72680286274345 +a=eks,b=pan,i=2,x=10.758679964789964,y=100.52215110833347 +a=wye,b=wye,i=3,x=10.204603305766303,y=100.33831852551664 +a=eks,b=wye,i=4,x=10.38139939387114,y=100.1341887432843 +a=wye,b=pan,i=5,x=10.573288919802,y=100.86362446990327 +a=zee,b=pan,i=6,x=10.527126160091855,y=100.49322128674835 +a=eks,b=zee,i=7,x=10.611784060567846,y=100.18788491911818 +a=zee,b=wye,i=8,x=10.598554009106422,y=100.97618138569901 +a=hat,b=wye,i=9,x=10.031441876460935,y=100.7495507603507 +a=pan,b=wye,i=10,x=10.502626005541213,y=100.95261836029698 mlr --from ./reg-test/input/abixy put for((k1,k2),v in {1:{2:7}}) {$x+=10;$y+=100} -a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533 -a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797 -a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776 -a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463 -a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729 -a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697 -a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694 -a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006 -a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059 -a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864 +a=pan,b=pan,i=1,x=10.346790144338083,y=100.72680286274345 +a=eks,b=pan,i=2,x=10.758679964789964,y=100.52215110833347 +a=wye,b=wye,i=3,x=10.204603305766303,y=100.33831852551664 +a=eks,b=wye,i=4,x=10.38139939387114,y=100.1341887432843 +a=wye,b=pan,i=5,x=10.573288919802,y=100.86362446990327 +a=zee,b=pan,i=6,x=10.527126160091855,y=100.49322128674835 +a=eks,b=zee,i=7,x=10.611784060567846,y=100.18788491911818 +a=zee,b=wye,i=8,x=10.598554009106422,y=100.97618138569901 +a=hat,b=wye,i=9,x=10.031441876460935,y=100.7495507603507 +a=pan,b=wye,i=10,x=10.502626005541213,y=100.95261836029698 mlr --from ./reg-test/input/abixy put for((k1,k2,k3),v in {1:{2:7}}) {$x+=10;$y+=100} a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533 diff --git a/go/reg-test/expected/case-dsl-for-multi.sh.out b/go/reg-test/expected/case-dsl-for-multi.sh.out index 54c581599..9ab7043ee 100644 --- a/go/reg-test/expected/case-dsl-for-multi.sh.out +++ b/go/reg-test/expected/case-dsl-for-multi.sh.out @@ -2,6 +2,7 @@ mlr -n put -v for (k in @*) {} DSL EXPRESSION: for (k in @*) {} + AST: * statement block * single-variable for-loop "for" @@ -13,6 +14,7 @@ AST: mlr -n put -v for (k, v in @*) {} DSL EXPRESSION: for (k, v in @*) {} + AST: * statement block * double-variable for-loop "for" @@ -25,6 +27,7 @@ AST: mlr -n put -v for ((k1,k2), v in @*) {} DSL EXPRESSION: for ((k1,k2), v in @*) {} + AST: * statement block * multi-variable for-loop "for" @@ -39,6 +42,7 @@ AST: mlr -n put -v for ((k1,k2,k3), v in @*) {} DSL EXPRESSION: for ((k1,k2,k3), v in @*) {} + AST: * statement block * multi-variable for-loop "for" diff --git a/go/reg-test/expected/case-dsl-for-oosvar-loops.sh.out b/go/reg-test/expected/case-dsl-for-oosvar-loops.sh.out index 2a66e2941..d9d69237d 100644 --- a/go/reg-test/expected/case-dsl-for-oosvar-loops.sh.out +++ b/go/reg-test/expected/case-dsl-for-oosvar-loops.sh.out @@ -22,6 +22,7 @@ DSL EXPRESSION: emit @n, "a", "b", "c", "d" } + AST: * statement block * assignment "=" @@ -265,6 +266,7 @@ mean hat dog 0.47582364658050663 mlr -n put -v for (k, k in $*) {} DSL EXPRESSION: for (k, k in $*) {} + AST: * statement block * double-variable for-loop "for" @@ -277,6 +279,7 @@ AST: mlr -n put -v for (k, k in @*) {} DSL EXPRESSION: for (k, k in @*) {} + AST: * statement block * double-variable for-loop "for" @@ -289,6 +292,7 @@ AST: mlr -n put -v for ((a,a), c in @*) {} DSL EXPRESSION: for ((a,a), c in @*) {} + AST: * statement block * multi-variable for-loop "for" @@ -303,6 +307,7 @@ AST: mlr -n put -v for ((a,b), a in @*) {} DSL EXPRESSION: for ((a,b), a in @*) {} + AST: * statement block * multi-variable for-loop "for" @@ -317,6 +322,7 @@ AST: mlr -n put -v for ((a,b), b in @*) {} DSL EXPRESSION: for ((a,b), b in @*) {} + AST: * statement block * multi-variable for-loop "for" @@ -331,6 +337,7 @@ AST: mlr -n put -v for ((a,a,c), d in @*) {} DSL EXPRESSION: for ((a,a,c), d in @*) {} + AST: * statement block * multi-variable for-loop "for" @@ -346,6 +353,7 @@ AST: mlr -n put -v for ((a,b,a), d in @*) {} DSL EXPRESSION: for ((a,b,a), d in @*) {} + AST: * statement block * multi-variable for-loop "for" @@ -361,6 +369,7 @@ AST: mlr -n put -v for ((a,b,c), a in @*) {} DSL EXPRESSION: for ((a,b,c), a in @*) {} + AST: * statement block * multi-variable for-loop "for" @@ -376,6 +385,7 @@ AST: mlr -n put -v for ((a,b,b), d in @*) {} DSL EXPRESSION: for ((a,b,b), d in @*) {} + AST: * statement block * multi-variable for-loop "for" @@ -391,6 +401,7 @@ AST: mlr -n put -v for ((a,b,c), b in @*) {} DSL EXPRESSION: for ((a,b,c), b in @*) {} + AST: * statement block * multi-variable for-loop "for" @@ -406,6 +417,7 @@ AST: mlr -n put -v for ((a,b,c), c in @*) {} DSL EXPRESSION: for ((a,b,c), c in @*) {} + AST: * statement block * multi-variable for-loop "for" diff --git a/go/reg-test/expected/case-dsl-for-srec-loops.sh.out b/go/reg-test/expected/case-dsl-for-srec-loops.sh.out index bc1204bbe..9a5c8f822 100644 --- a/go/reg-test/expected/case-dsl-for-srec-loops.sh.out +++ b/go/reg-test/expected/case-dsl-for-srec-loops.sh.out @@ -4,6 +4,7 @@ mlr --from ./reg-test/input/abixy put -v for(k,v in $*) { } DSL EXPRESSION: for(k,v in $*) { } + AST: * statement block * double-variable for-loop "for" @@ -28,6 +29,7 @@ a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864 mlr --from ./reg-test/input/abixy put -v for(k,v in $*) {$nr= NR} DSL EXPRESSION: for(k,v in $*) {$nr= NR} + AST: * statement block * double-variable for-loop "for" @@ -55,6 +57,7 @@ a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864,nr=10 mlr --from ./reg-test/input/abixy put -v for(k,v in $*) {unset $[k]}; $j = NR DSL EXPRESSION: for(k,v in $*) {unset $[k]}; $j = NR + AST: * statement block * double-variable for-loop "for" @@ -83,6 +86,7 @@ j=10 mlr --from ./reg-test/input/abixy put -v for(k,v in $*) {if (k != "x") {unset $[k]}}; $j = NR DSL EXPRESSION: for(k,v in $*) {if (k != "x") {unset $[k]}}; $j = NR + AST: * statement block * double-variable for-loop "for" @@ -117,6 +121,7 @@ x=0.5026260055412137,j=10 mlr --from ./reg-test/input/abixy --opprint put -v for(k,v in $*) {$[k."_orig"]=v; $[k] = "other"} DSL EXPRESSION: for(k,v in $*) {$[k."_orig"]=v; $[k] = "other"} + AST: * statement block * double-variable for-loop "for" @@ -150,6 +155,7 @@ other other other other other pan wye 10 0.5026260055412137 0.9526183 mlr --from ./reg-test/input/abixy put -v for(k,v in $*) {$[string(v)]=k} DSL EXPRESSION: for(k,v in $*) {$[string(v)]=k} + AST: * statement block * double-variable for-loop "for" @@ -189,6 +195,7 @@ DSL EXPRESSION: $sum += $[k] } } + AST: * statement block * assignment "=" @@ -238,6 +245,7 @@ DSL EXPRESSION: $sum += float($[k]) } } + AST: * statement block * assignment "=" diff --git a/go/reg-test/expected/case-dsl-for-variants.sh.out b/go/reg-test/expected/case-dsl-for-variants.sh.out index c9954a858..b82bb7067 100644 --- a/go/reg-test/expected/case-dsl-for-variants.sh.out +++ b/go/reg-test/expected/case-dsl-for-variants.sh.out @@ -14,6 +14,7 @@ a=eks,b=wye,i=10,x=0.38139939387114097,y=0.13418874328430463 mlr --from ./reg-test/input/s.dkvp put -v j = 2; for (i = 0; i < NR; i += 1) { $i += i } DSL EXPRESSION: j = 2; for (i = 0; i < NR; i += 1) { $i += i } + AST: * statement block * assignment "=" diff --git a/go/reg-test/expected/case-dsl-if-chaining.sh.out b/go/reg-test/expected/case-dsl-if-chaining.sh.out index 43bf6d143..a2818cbad 100644 --- a/go/reg-test/expected/case-dsl-if-chaining.sh.out +++ b/go/reg-test/expected/case-dsl-if-chaining.sh.out @@ -12,6 +12,7 @@ DSL EXPRESSION: $x = 2; $y = 3 } + AST: * statement block * if-chain @@ -85,6 +86,7 @@ DSL EXPRESSION: $x = 1007; $y = 1008 } + AST: * statement block * if-chain @@ -172,6 +174,7 @@ DSL EXPRESSION: $x = 1015; $y = 1016 } + AST: * statement block * if-chain @@ -276,6 +279,7 @@ DSL EXPRESSION: $x = 1026; $y = 1027 } + AST: * statement block * if-chain @@ -397,6 +401,7 @@ DSL EXPRESSION: $x = 1040; $y = 1041 } + AST: * statement block * if-chain @@ -507,6 +512,7 @@ DSL EXPRESSION: $x = 2; $y = 3 } + AST: * statement block * if-chain @@ -580,6 +586,7 @@ DSL EXPRESSION: $x = 8; $y = 9 } + AST: * statement block * if-chain @@ -670,6 +677,7 @@ DSL EXPRESSION: $x = 17; $y = 18 } + AST: * statement block * if-chain @@ -777,6 +785,7 @@ DSL EXPRESSION: $x = 29; $y = 30 } + AST: * statement block * if-chain diff --git a/go/reg-test/expected/case-dsl-indexing.sh.out b/go/reg-test/expected/case-dsl-indexing.sh.out index 989245836..8f79f9d72 100644 --- a/go/reg-test/expected/case-dsl-indexing.sh.out +++ b/go/reg-test/expected/case-dsl-indexing.sh.out @@ -6,7 +6,7 @@ eks pan 2 0.7586799647899636 0.5221511083334797 pan wye wye 3 0.20460330576630303 0.33831852551664776 wye eks wye 4 0.38139939387114097 0.13418874328430463 wye -mlr --from ./reg-test/input/s.dkvp --from ./reg-test/input/t.dkvp --ojson put $z=[1,2,[NR,[FILENAME,5],$x*$y]] +mlr --from ./reg-test/input/s.dkvp --from ./reg-test/input/t.dkvp --ojson put $z=[ 1,2,[NR,[FILENAME,5],$x*$y] ] { "a": "pan", "b": "pan", @@ -327,6 +327,7 @@ mlr --from ./reg-test/input/s.dkvp --idkvp --ojson put $*["a"] = {} mlr --from ./reg-test/input/s.dkvp --idkvp --opprint put -v $new = $["a"] DSL EXPRESSION: $new = $["a"] + AST: * statement block * assignment "=" @@ -343,6 +344,7 @@ eks wye 4 0.38139939387114097 0.13418874328430463 eks mlr --from ./reg-test/input/s.dkvp --idkvp --opprint put -v $["new"] = $a DSL EXPRESSION: $["new"] = $a + AST: * statement block * assignment "=" @@ -359,6 +361,7 @@ eks wye 4 0.38139939387114097 0.13418874328430463 eks mlr --from ./reg-test/input/s.dkvp --idkvp --opprint put -v ${new} = $a . $b DSL EXPRESSION: ${new} = $a . $b + AST: * statement block * assignment "=" @@ -376,6 +379,7 @@ eks wye 4 0.38139939387114097 0.13418874328430463 ekswye mlr --from ./reg-test/input/s.dkvp --idkvp --opprint put -v $new = ${a} . ${b} DSL EXPRESSION: $new = ${a} . ${b} + AST: * statement block * assignment "=" diff --git a/go/reg-test/expected/case-dsl-indirect-srec-assignments.sh.out b/go/reg-test/expected/case-dsl-indirect-srec-assignments.sh.out index 00611e3e2..059bce145 100644 --- a/go/reg-test/expected/case-dsl-indirect-srec-assignments.sh.out +++ b/go/reg-test/expected/case-dsl-indirect-srec-assignments.sh.out @@ -2,6 +2,7 @@ mlr put -v $["a"] = $["b"]; $["x"] = 10 * $["y"] ./reg-test/input/abixy DSL EXPRESSION: $["a"] = $["b"]; $["x"] = 10 * $["y"] + AST: * statement block * assignment "=" diff --git a/go/reg-test/expected/case-dsl-local-map-variable-write-read.sh.out b/go/reg-test/expected/case-dsl-local-map-variable-write-read.sh.out new file mode 100644 index 000000000..02dcd7efd --- /dev/null +++ b/go/reg-test/expected/case-dsl-local-map-variable-write-read.sh.out @@ -0,0 +1,113 @@ + +mlr --from ./reg-test/input/xyz345 --ojson put + $s = a; + $t = b[$x]; + $u = c[$x][$y]; + $v = d[$x][$y][$z]; + +{ + "x": 3, + "y": 4, + "z": 5 +} + +mlr --from ./reg-test/input/xyz345 --ojson put + d[$x][$y][$z] = 9; + $d = d[$x][$y][$z]; + +{ + "x": 3, + "y": 4, + "z": 5, + "d": 9 +} + +mlr --from ./reg-test/input/xyz345 --ojson put + a = 6; + b[$x] = 7; + c[$x][$y] = 8; + d[$x][$y][$z] = 9; + + $a = a; + $b = b[$x]; + $c = c[$x][$y]; + $d = d[$x][$y][$z]; + +{ + "x": 3, + "y": 4, + "z": 5, + "a": 6, + "b": 7, + "c": 8, + "d": 9 +} + +mlr --from ./reg-test/input/xyz345 --ojson put + a = 6; + b[$x] = 7; + c[$x][$y] = 8; + d[$x][$y][$z] = 9; + + $a0 = a; + $a1 = a[$x]; + $a2 = a[$x][$y]; + $a3 = a[$x][$y][$z]; + + $b0 = b; + $b1 = b[$x]; + $b2 = b[$x][$y]; + $b3 = b[$x][$y][$z]; + + $c0 = c; + $c1 = c[$x]; + $c2 = c[$x][$y]; + $c3 = c[$x][$y][$z]; + + $d0 = d; + $d1 = d[$x]; + $d2 = d[$x][$y]; + $d3 = d[$x][$y][$z]; + +{ + "x": 3, + "y": 4, + "z": 5, + "a0": 6, + "a1": (error), + "a2": (error), + "a3": (error), + "b0": { + "3": 7 + }, + "b1": 7, + "b2": (error), + "b3": (error), + "c0": { + "3": { + "4": 8 + } + }, + "c1": { + "4": 8 + }, + "c2": 8, + "c3": (error), + "d0": { + "3": { + "4": { + "5": 9 + } + } + }, + "d1": { + "4": { + "5": 9 + } + }, + "d2": { + "5": 9 + }, + "d3": 9 +} + diff --git a/go/reg-test/expected/case-c-dsl-mapvar-assignments.sh.out b/go/reg-test/expected/case-dsl-mapvar-assignments.sh.out similarity index 97% rename from go/reg-test/expected/case-c-dsl-mapvar-assignments.sh.out rename to go/reg-test/expected/case-dsl-mapvar-assignments.sh.out index f84f5642c..696182e69 100644 --- a/go/reg-test/expected/case-c-dsl-mapvar-assignments.sh.out +++ b/go/reg-test/expected/case-dsl-mapvar-assignments.sh.out @@ -4,8 +4,8 @@ MAPVAR ASSIGNMENTS TO FULL SREC mlr --from ./reg-test/input/xyz2 put $* = {"a":1, "b": {"x":8,"y":9}, "c":3} -a=1,c=3 -a=1,c=3 +a=1,b.x=8,b.y=9,c=3 +a=1,b.x=8,b.y=9,c=3 mlr --from ./reg-test/input/xyz2 put $* = $* x=3,y=4,z=5 @@ -13,44 +13,38 @@ x=6,y=7,u=8 mlr --from ./reg-test/input/xyz2 put @a = 1; $* = @a - - mlr --from ./reg-test/input/xyz2 put @b[1] = 2; $* = @b 1=2 1=2 mlr --from ./reg-test/input/xyz2 put @c[1][2] = 3; $* = @c - - +1.2=3 +1.2=3 mlr --from ./reg-test/input/xyz2 put @a = 1; $* = @* a=1 a=1 mlr --from ./reg-test/input/xyz2 put @b[1] = 2; $* = @* - - +b.1=2 +b.1=2 mlr --from ./reg-test/input/xyz2 put @c[1][2] = 3; $* = @* - - +c.1.2=3 +c.1.2=3 mlr --from ./reg-test/input/xyz2 put a = 1; $* = a - - mlr --from ./reg-test/input/xyz2 put b[1] = 2; $* = b 1=2 1=2 mlr --from ./reg-test/input/xyz2 put c[1][2] = 3; $* = c - - +1.2=3 +1.2=3 mlr --from ./reg-test/input/xyz2 put $* = 3 - - mlr --from ./reg-test/input/xyz2 put func map_valued_func() { return {"a":1,"b":2} @@ -145,12 +139,6 @@ x=3,y=4,z=5 x=6,y=7,u=8 mlr --from ./reg-test/input/xyz2 put @a = 1; @* = @a; dump -{ -} -x=3,y=4,z=5 -{ -} -x=6,y=7,u=8 mlr --from ./reg-test/input/xyz2 put @b[1] = 2; @* = @b; dump { @@ -219,12 +207,6 @@ x=3,y=4,z=5 x=6,y=7,u=8 mlr --from ./reg-test/input/xyz2 put a = 1; @* = a; dump -{ -} -x=3,y=4,z=5 -{ -} -x=6,y=7,u=8 mlr --from ./reg-test/input/xyz2 put b[1] = 2; @* = b; dump { @@ -251,8 +233,6 @@ x=3,y=4,z=5 x=6,y=7,u=8 mlr --from ./reg-test/input/xyz2 put @* = 3 -x=3,y=4,z=5 -x=6,y=7,u=8 mlr --from ./reg-test/input/xyz2 put func map_valued_func() { @@ -315,8 +295,6 @@ mlr --from ./reg-test/input/xyz2 put -q @o = {"a":1, "b": {"x":8,"y":9}, "c":3}; mlr --from ./reg-test/input/xyz2 put -q @o = @o; dump @o - - mlr --from ./reg-test/input/xyz2 put -q @o = {"a":1, "b": {"x":8,"y":9}, "c":3}; dump; @o = @*; dump { "o": { @@ -559,7 +537,6 @@ mlr --from ./reg-test/input/xyz2 put -q map o = {"a":1, "b": {"x":8,"y":9}, "c": } mlr --from ./reg-test/input/xyz2 put -q map o = @o; dump o -mlr: map type assertion for variable o unmet by value "" with type absent. mlr --from ./reg-test/input/xyz2 put -q map o = $*; dump o { @@ -592,7 +569,6 @@ mlr --from ./reg-test/input/xyz2 put -q map o = {"a":1, "b": {"x":8,"y":9}, "c": } mlr --from ./reg-test/input/xyz2 put -q @a = 1; map o = @a; dump o -mlr: map type assertion for variable o unmet by value 1 with type int. mlr --from ./reg-test/input/xyz2 put -q @b[1] = 2; map o = @b; dump o { @@ -651,7 +627,6 @@ mlr --from ./reg-test/input/xyz2 put -q @c[1][2] = 3; map o = @*; dump o } mlr --from ./reg-test/input/xyz2 put -q a = 1; map o = a; dump o -mlr: map type assertion for variable o unmet by value 1 with type int. mlr --from ./reg-test/input/xyz2 put -q b[1] = 2; map o = b; dump o { @@ -707,8 +682,6 @@ mlr --from ./reg-test/input/xyz2 put -q var o = {"a":1, "b": {"x":8,"y":9}, "c": mlr --from ./reg-test/input/xyz2 put -q var o = @o; dump o - - mlr --from ./reg-test/input/xyz2 put -q var o = $*; dump o { "x": 3, @@ -857,8 +830,6 @@ mlr --from ./reg-test/input/xyz2 put -q o = {"a":1, "b": {"x":8,"y":9}, "c":3}; mlr --from ./reg-test/input/xyz2 put -q o = @o; dump o - - mlr --from ./reg-test/input/xyz2 put -q o = $*; dump o { "x": 3, diff --git a/go/reg-test/expected/case-c-dsl-mapvars-udfs-subroutines.sh.out b/go/reg-test/expected/case-dsl-mapvars-udfs-subroutines.sh.out similarity index 71% rename from go/reg-test/expected/case-c-dsl-mapvars-udfs-subroutines.sh.out rename to go/reg-test/expected/case-dsl-mapvars-udfs-subroutines.sh.out index ccf84432a..1ccaaf066 100644 --- a/go/reg-test/expected/case-c-dsl-mapvars-udfs-subroutines.sh.out +++ b/go/reg-test/expected/case-dsl-mapvars-udfs-subroutines.sh.out @@ -4,7 +4,7 @@ mlr --from ./reg-test/input/abixy put dump m; sum = 0; for (k, v in m) { - sum += k + sum += int(k) } return sum } @@ -102,7 +102,7 @@ mlr --from ./reg-test/input/abixy put dump m; sum = 0; for (k, v in m) { - sum += k + sum += int(k) } @sum = sum; } @@ -197,59 +197,57 @@ a=hat,b=wye,i=9,x=0.03144187646093577,y=45 a=pan,b=wye,i=10,x=0.5026260055412137,y=55 mlr --from ./reg-test/input/abixy-het put func f(x) {return {"a":x,"b":x**2}}; map o = f($x); $* = o -a=0.346790,b=0.120263 -a=0.758680,b=0.575595 -a=0.204603,b=0.041863 -a=0.381399,b=0.145465 -a=,b= -a=0.527126,b=0.277862 -a=0.611784,b=0.374280 -a=0.598554,b=0.358267 -a=0.031442,b=0.000989 -a=0.502626,b=0.252633 +a=0.3467901443380824,b=0.12026340421002804 +a=0.7586799647899636,b=0.5755952889737004 +a=0.20460330576630303,b=0.04186251273049929 +a=0.38139939387114097,b=0.14546549764527372 +b=0 +a=0.5271261600918548,b=0.2778619886531837 +a=0.6117840605678454,b=0.37427973676488113 +a=0.5985540091064224,b=0.3582669018173712 +a=0.03144187646093577,b=0.0009885915953847467 +a=0.5026260055412137,b=0.2526329014463162 mlr --from ./reg-test/input/abixy-het put -q func f(x) {return x**2}; var z = f($x); dump z -0.120263 -0.575595 -0.041863 -0.145465 - -0.277862 -0.374280 -0.358267 -0.000989 -0.252633 +0.12026340421002804 +0.5755952889737004 +0.04186251273049929 +0.14546549764527372 +0 +0.2778619886531837 +0.37427973676488113 +0.3582669018173712 +0.0009885915953847467 +0.2526329014463162 mlr --from ./reg-test/input/abixy-het put -q func f(x) {map m = {NR:x};return m}; z = f($y); dump z { - "1": 0.726803 + "1": 0.7268028627434533 } { - "2": 0.522151 + "2": 0.5221511083334797 } { - "3": 0.338319 + "3": 0.33831852551664776 } { - "4": 0.134189 + "4": 0.13418874328430463 } { - "5": 0.863624 + "5": 0.8636244699032729 } { - "6": 0.493221 + "6": 0.49322128674835697 } { - "7": 0.187885 + "7": 0.1878849191181694 +} +{} +{ + "9": 0.7495507603507059 } { - "8": -} -{ - "9": 0.749551 -} -{ - "10": 0.952618 + "10": 0.9526183602969864 } mlr --from ./reg-test/input/abixy put @@ -262,7 +260,6 @@ mlr --from ./reg-test/input/abixy put } $y=f($x) -mlr: int type assertion for variable x unmet by value 0.346790 with type float. mlr --from ./reg-test/input/abixy put func f(int x): map { @@ -274,16 +271,16 @@ mlr --from ./reg-test/input/abixy put } $y=f($i) -a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533 -a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797 -a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776 -a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463 -a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729 -a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697 -a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694 -a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006 -a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059 -a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864 +a=pan,b=pan,i=1,x=0.3467901443380824,y={} +a=eks,b=pan,i=2,x=0.7586799647899636,y={} +a=wye,b=wye,i=3,x=0.20460330576630303,y={} +a=eks,b=wye,i=4,x=0.38139939387114097,y={} +a=wye,b=pan,i=5,x=0.5732889198020006,y={} +a=zee,b=pan,i=6,x=0.5271261600918548,y={} +a=eks,b=zee,i=7,x=0.6117840605678454,y={} +a=zee,b=wye,i=8,x=0.5985540091064224,y={} +a=hat,b=wye,i=9,x=0.03144187646093577,y={} +a=pan,b=wye,i=10,x=0.5026260055412137,y={} mlr --from ./reg-test/input/abixy put func f(int x): map { @@ -295,7 +292,6 @@ mlr --from ./reg-test/input/abixy put } $y=f($x) -mlr: int type assertion for variable x unmet by value 0.346790 with type float. mlr --from ./reg-test/input/abixy put func f(int x): var { @@ -307,16 +303,16 @@ mlr --from ./reg-test/input/abixy put } $y=f($i) -a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533 +a=pan,b=pan,i=1,x=0.3467901443380824,y={} a=eks,b=pan,i=2,x=0.7586799647899636,y=2 -a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776 -a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463 -a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729 -a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697 -a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694 -a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006 -a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059 -a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864 +a=wye,b=wye,i=3,x=0.20460330576630303,y={} +a=eks,b=wye,i=4,x=0.38139939387114097,y={} +a=wye,b=pan,i=5,x=0.5732889198020006,y={} +a=zee,b=pan,i=6,x=0.5271261600918548,y={} +a=eks,b=zee,i=7,x=0.6117840605678454,y={} +a=zee,b=wye,i=8,x=0.5985540091064224,y={} +a=hat,b=wye,i=9,x=0.03144187646093577,y={} +a=pan,b=wye,i=10,x=0.5026260055412137,y={} mlr --from ./reg-test/input/abixy put func f(int x): var { @@ -328,7 +324,6 @@ mlr --from ./reg-test/input/abixy put } $y=f($x) -mlr: int type assertion for variable x unmet by value 0.346790 with type float. mlr --from ./reg-test/input/abixy put func f(x): int { @@ -336,13 +331,11 @@ mlr --from ./reg-test/input/abixy put } $y=f($x) -mlr: function f returned type absent, not matching typedecl int. mlr --from ./reg-test/input/abixy put int a = 1; var b = a[2]; # cannot index localvar declared non-map -mlr: int type assertion for variable a unmet on read. mlr --oxtab --from ./reg-test/input/abixy-het put $* = mapdiff( diff --git a/go/reg-test/expected/case-dsl-max-variadic.sh.out b/go/reg-test/expected/case-dsl-max-variadic.sh.out index 2d6fa2337..67d2b424a 100644 --- a/go/reg-test/expected/case-dsl-max-variadic.sh.out +++ b/go/reg-test/expected/case-dsl-max-variadic.sh.out @@ -2,6 +2,7 @@ mlr -n put -v $z=max() DSL EXPRESSION: $z=max() + AST: * statement block * assignment "=" @@ -12,6 +13,7 @@ AST: mlr -n put -v $z=max(1) DSL EXPRESSION: $z=max(1) + AST: * statement block * assignment "=" @@ -23,6 +25,7 @@ AST: mlr -n put -v $z=max(1,) DSL EXPRESSION: $z=max(1,) + AST: * statement block * assignment "=" @@ -34,6 +37,7 @@ AST: mlr -n put -v $z=max(1,2) DSL EXPRESSION: $z=max(1,2) + AST: * statement block * assignment "=" @@ -46,6 +50,7 @@ AST: mlr -n put -v $z=max(1,2,) DSL EXPRESSION: $z=max(1,2,) + AST: * statement block * assignment "=" @@ -58,6 +63,7 @@ AST: mlr -n put -v $z=max(1,2,3) DSL EXPRESSION: $z=max(1,2,3) + AST: * statement block * assignment "=" @@ -71,6 +77,7 @@ AST: mlr -n put -v $z=max(1,2,3,) DSL EXPRESSION: $z=max(1,2,3,) + AST: * statement block * assignment "=" diff --git a/go/reg-test/expected/case-dsl-oosvar-assignments.sh.out b/go/reg-test/expected/case-dsl-oosvar-assignments.sh.out index 3109222f9..b639f8941 100644 --- a/go/reg-test/expected/case-dsl-oosvar-assignments.sh.out +++ b/go/reg-test/expected/case-dsl-oosvar-assignments.sh.out @@ -6,6 +6,7 @@ OOSVAR-FROM-SREC ASSIGNMENT mlr put -v @v = $* /dev/null DSL EXPRESSION: @v = $* + AST: * statement block * assignment "=" @@ -16,6 +17,7 @@ AST: mlr put -v @v[1] = $* /dev/null DSL EXPRESSION: @v[1] = $* + AST: * statement block * assignment "=" @@ -28,6 +30,7 @@ AST: mlr put -v @v[$2] = $* /dev/null DSL EXPRESSION: @v[$2] = $* + AST: * statement block * assignment "=" @@ -40,6 +43,7 @@ AST: mlr put -v NR == 3 {@v = $*} /dev/null DSL EXPRESSION: NR == 3 {@v = $*} + AST: * statement block * cond block @@ -55,6 +59,7 @@ AST: mlr put -v NR == 3 {@v[1] = $*} /dev/null DSL EXPRESSION: NR == 3 {@v[1] = $*} + AST: * statement block * cond block @@ -72,6 +77,7 @@ AST: mlr put -v NR == 3 {@v[$2] = $*} /dev/null DSL EXPRESSION: NR == 3 {@v[$2] = $*} + AST: * statement block * cond block @@ -289,6 +295,7 @@ SREC-FROM-OOSVAR ASSIGNMENT mlr put -v $* = @v /dev/null DSL EXPRESSION: $* = @v + AST: * statement block * assignment "=" @@ -299,6 +306,7 @@ AST: mlr put -v $* = @v[1] /dev/null DSL EXPRESSION: $* = @v[1] + AST: * statement block * assignment "=" @@ -311,6 +319,7 @@ AST: mlr put -v $* = @v[$2] /dev/null DSL EXPRESSION: $* = @v[$2] + AST: * statement block * assignment "=" @@ -323,6 +332,7 @@ AST: mlr put -v NR == 3 {$* = @v } /dev/null DSL EXPRESSION: NR == 3 {$* = @v } + AST: * statement block * cond block @@ -338,6 +348,7 @@ AST: mlr put -v NR == 3 {$* = @v[1] } /dev/null DSL EXPRESSION: NR == 3 {$* = @v[1] } + AST: * statement block * cond block @@ -355,6 +366,7 @@ AST: mlr put -v NR == 3 {$* = @v[$2]} /dev/null DSL EXPRESSION: NR == 3 {$* = @v[$2]} + AST: * statement block * cond block @@ -388,6 +400,7 @@ OOSVAR-FROM-OOSVAR ASSIGNMENT mlr put -v @u = @v /dev/null DSL EXPRESSION: @u = @v + AST: * statement block * assignment "=" @@ -398,6 +411,7 @@ AST: mlr put -v @u = @v[1] /dev/null DSL EXPRESSION: @u = @v[1] + AST: * statement block * assignment "=" @@ -410,6 +424,7 @@ AST: mlr put -v @u[2] = @v /dev/null DSL EXPRESSION: @u[2] = @v + AST: * statement block * assignment "=" @@ -422,6 +437,7 @@ AST: mlr put -v @u[2] = @v[1] /dev/null DSL EXPRESSION: @u[2] = @v[1] + AST: * statement block * assignment "=" @@ -436,6 +452,7 @@ AST: mlr put -v begin { @u = @v } /dev/null DSL EXPRESSION: begin { @u = @v } + AST: * statement block * begin block @@ -448,6 +465,7 @@ AST: mlr put -v begin { @u = @v[1] } /dev/null DSL EXPRESSION: begin { @u = @v[1] } + AST: * statement block * begin block @@ -462,6 +480,7 @@ AST: mlr put -v begin { @u[2] = @v } /dev/null DSL EXPRESSION: begin { @u[2] = @v } + AST: * statement block * begin block @@ -476,6 +495,7 @@ AST: mlr put -v begin { @u[2] = @v[1] } /dev/null DSL EXPRESSION: begin { @u[2] = @v[1] } + AST: * statement block * begin block @@ -492,6 +512,7 @@ AST: mlr put -v NR == 3 { @u = @v } /dev/null DSL EXPRESSION: NR == 3 { @u = @v } + AST: * statement block * cond block @@ -507,6 +528,7 @@ AST: mlr put -v NR == 3 { @u = @v[1] } /dev/null DSL EXPRESSION: NR == 3 { @u = @v[1] } + AST: * statement block * cond block @@ -524,6 +546,7 @@ AST: mlr put -v NR == 3 { @u[2] = @v } /dev/null DSL EXPRESSION: NR == 3 { @u[2] = @v } + AST: * statement block * cond block @@ -541,6 +564,7 @@ AST: mlr put -v NR == 3 { @u[2] = @v[1] } /dev/null DSL EXPRESSION: NR == 3 { @u[2] = @v[1] } + AST: * statement block * cond block @@ -560,6 +584,7 @@ AST: mlr put -v end { @u = @v } /dev/null DSL EXPRESSION: end { @u = @v } + AST: * statement block * end block @@ -572,6 +597,7 @@ AST: mlr put -v end { @u = @v[1] } /dev/null DSL EXPRESSION: end { @u = @v[1] } + AST: * statement block * end block @@ -586,6 +612,7 @@ AST: mlr put -v end { @u[2] = @v } /dev/null DSL EXPRESSION: end { @u[2] = @v } + AST: * statement block * end block @@ -600,6 +627,7 @@ AST: mlr put -v end { @u[2] = @v[1] } /dev/null DSL EXPRESSION: end { @u[2] = @v[1] } + AST: * statement block * end block diff --git a/go/reg-test/expected/case-dsl-oosvars.sh.out b/go/reg-test/expected/case-dsl-oosvars.sh.out index c36dac795..17ce69040 100644 --- a/go/reg-test/expected/case-dsl-oosvars.sh.out +++ b/go/reg-test/expected/case-dsl-oosvars.sh.out @@ -2,6 +2,7 @@ mlr --opprint put -v begin{@ox=0}; $d=$x-@ox; @ox=$x ./reg-test/input/abixy DSL EXPRESSION: begin{@ox=0}; $d=$x-@ox; @ox=$x + AST: * statement block * begin block @@ -33,6 +34,7 @@ pan wye 10 0.5026260055412137 0.9526183602969864 0.47118412908027796 mlr --opprint put -v begin{@ox="no"}; $d=@ox == "no" ? 1.0 : $x/@ox; @ox=$x then step -a ratio -f x ./reg-test/input/abixy DSL EXPRESSION: begin{@ox="no"}; $d=@ox == "no" ? 1.0 : $x/@ox; @ox=$x + AST: * statement block * begin block @@ -69,6 +71,7 @@ pan wye 10 0.5026260055412137 0.9526183602969864 15.985878138211305 15.985878 mlr --opprint put -v $d=$x/@ox; @ox=$x then step -a ratio -f x ./reg-test/input/abixy DSL EXPRESSION: $d=$x/@ox; @ox=$x + AST: * statement block * assignment "=" @@ -95,6 +98,7 @@ pan wye 10 0.5026260055412137 0.9526183602969864 15.985878138211305 15.985878 mlr --opprint put -v begin{@ox="no"}; $d=@ox == "no" ? 1.0 : $x/@ox; @ox=$x then step -a ratio -f x ./reg-test/input/abixy DSL EXPRESSION: begin{@ox="no"}; $d=@ox == "no" ? 1.0 : $x/@ox; @ox=$x + AST: * statement block * begin block @@ -131,6 +135,7 @@ pan wye 10 0.5026260055412137 0.9526183602969864 15.985878138211305 15.985878 mlr --opprint put -v begin{@rsum = 0}; @rsum = @rsum + $x; $rsum = @rsum ./reg-test/input/abixy DSL EXPRESSION: begin{@rsum = 0}; @rsum = @rsum + $x; $rsum = @rsum + AST: * statement block * begin block @@ -162,6 +167,7 @@ pan wye 10 0.5026260055412137 0.9526183602969864 4.536293840335763 mlr --opprint put -v begin{@a=0; @b=0; @c=0}; $za=@a; $zb=@b; $zc=@c; $d=@a+@b+@c; @a=@b; @b=@c; @c=$i ./reg-test/input/abixy DSL EXPRESSION: begin{@a=0; @b=0; @c=0}; $za=@a; $zb=@b; $zc=@c; $d=@a+@b+@c; @a=@b; @b=@c; @c=$i + AST: * statement block * begin block @@ -216,6 +222,7 @@ pan wye 10 0.5026260055412137 0.9526183602969864 7 8 9 24 mlr --opprint put -v begin {@a=0; @b=0; @c=0}; $za=@a; $zb=@b; $zc=@c; $d=@a+@b+@c; @a=@b; @b=@c; @c=$i ./reg-test/input/abixy DSL EXPRESSION: begin {@a=0; @b=0; @c=0}; $za=@a; $zb=@b; $zc=@c; $d=@a+@b+@c; @a=@b; @b=@c; @c=$i + AST: * statement block * begin block @@ -270,6 +277,7 @@ pan wye 10 0.5026260055412137 0.9526183602969864 7 8 9 24 mlr --opprint put -v begin{@ox=0}; $d=$x-@ox; @ox=$x ./reg-test/input/abixy DSL EXPRESSION: begin{@ox=0}; $d=$x-@ox; @ox=$x + AST: * statement block * begin block @@ -321,6 +329,7 @@ a=1,b=2,c=3 mlr --opprint put -v begin {@count=0; @sum=0.0}; @count=@count+1; @sum=@sum+$x; end{@mean=@sum/@count; emitf @mean} ./reg-test/input/abixy DSL EXPRESSION: begin {@count=0; @sum=0.0}; @count=@count+1; @sum=@sum+$x; end{@mean=@sum/@count; emitf @mean} + AST: * statement block * begin block @@ -371,6 +380,7 @@ mean mlr --opprint put -v end{@mean=@sum/@count; emitf @mean}; begin {@count=0; @sum=0.0}; @count=@count+1; @sum=@sum+$x ./reg-test/input/abixy DSL EXPRESSION: end{@mean=@sum/@count; emitf @mean}; begin {@count=0; @sum=0.0}; @count=@count+1; @sum=@sum+$x + AST: * statement block * end block @@ -421,6 +431,7 @@ mean mlr put -v begin{ @a = @b[1] }; $c = @d; @e[$i][2+$j][3] = $4; end{@f[@g[5][@h]] = 6} /dev/null DSL EXPRESSION: begin{ @a = @b[1] }; $c = @d; @e[$i][2+$j][3] = $4; end{@f[@g[5][@h]] = 6} + AST: * statement block * begin block diff --git a/go/reg-test/expected/case-dsl-operator-associativity.sh.out b/go/reg-test/expected/case-dsl-operator-associativity.sh.out index 9e2af084c..ebcd40ebc 100644 --- a/go/reg-test/expected/case-dsl-operator-associativity.sh.out +++ b/go/reg-test/expected/case-dsl-operator-associativity.sh.out @@ -2,6 +2,7 @@ mlr put -v $x = 1 || 2 || 3 /dev/null DSL EXPRESSION: $x = 1 || 2 || 3 + AST: * statement block * assignment "=" @@ -16,6 +17,7 @@ AST: mlr filter -v 1 || 2 || 3 /dev/null DSL EXPRESSION: 1 || 2 || 3 + AST: * statement block * bare boolean @@ -29,6 +31,7 @@ AST: mlr put -v $x = 1 ^^ 2 ^^ 3 /dev/null DSL EXPRESSION: $x = 1 ^^ 2 ^^ 3 + AST: * statement block * assignment "=" @@ -43,6 +46,7 @@ AST: mlr filter -v 1 ^^ 2 ^^ 3 /dev/null DSL EXPRESSION: 1 ^^ 2 ^^ 3 + AST: * statement block * bare boolean @@ -56,6 +60,7 @@ AST: mlr put -v $x = 1 && 2 && 3 /dev/null DSL EXPRESSION: $x = 1 && 2 && 3 + AST: * statement block * assignment "=" @@ -70,6 +75,7 @@ AST: mlr filter -v 1 && 2 && 3 /dev/null DSL EXPRESSION: 1 && 2 && 3 + AST: * statement block * bare boolean @@ -83,6 +89,7 @@ AST: mlr put -v $x = 1 == 2 == 3 /dev/null DSL EXPRESSION: $x = 1 == 2 == 3 + AST: * statement block * assignment "=" @@ -97,6 +104,7 @@ AST: mlr filter -v 1 == 2 == 3 /dev/null DSL EXPRESSION: 1 == 2 == 3 + AST: * statement block * bare boolean @@ -110,6 +118,7 @@ AST: mlr put -v $x = 1 != 2 != 3 /dev/null DSL EXPRESSION: $x = 1 != 2 != 3 + AST: * statement block * assignment "=" @@ -124,6 +133,7 @@ AST: mlr filter -v 1 != 2 != 3 /dev/null DSL EXPRESSION: 1 != 2 != 3 + AST: * statement block * bare boolean @@ -137,6 +147,7 @@ AST: mlr put -v $x = 1 =~ 2 =~ 3 /dev/null DSL EXPRESSION: $x = 1 =~ 2 =~ 3 + AST: * statement block * assignment "=" @@ -151,6 +162,7 @@ AST: mlr filter -v 1 =~ 2 =~ 3 /dev/null DSL EXPRESSION: 1 =~ 2 =~ 3 + AST: * statement block * bare boolean @@ -164,6 +176,7 @@ AST: mlr put -v $x = 1 !=~ 2 !=~ 3 /dev/null DSL EXPRESSION: $x = 1 !=~ 2 !=~ 3 + AST: * statement block * assignment "=" @@ -178,6 +191,7 @@ AST: mlr filter -v 1 !=~ 2 !=~ 3 /dev/null DSL EXPRESSION: 1 !=~ 2 !=~ 3 + AST: * statement block * bare boolean @@ -191,6 +205,7 @@ AST: mlr put -v $x = 1 == 2 != 3 /dev/null DSL EXPRESSION: $x = 1 == 2 != 3 + AST: * statement block * assignment "=" @@ -205,6 +220,7 @@ AST: mlr filter -v 1 == 2 != 3 /dev/null DSL EXPRESSION: 1 == 2 != 3 + AST: * statement block * bare boolean @@ -218,6 +234,7 @@ AST: mlr put -v $x = 1 != 2 == 3 /dev/null DSL EXPRESSION: $x = 1 != 2 == 3 + AST: * statement block * assignment "=" @@ -232,6 +249,7 @@ AST: mlr filter -v 1 != 2 == 3 /dev/null DSL EXPRESSION: 1 != 2 == 3 + AST: * statement block * bare boolean @@ -245,6 +263,7 @@ AST: mlr put -v $x = 1 < 2 < 3 /dev/null DSL EXPRESSION: $x = 1 < 2 < 3 + AST: * statement block * assignment "=" @@ -259,6 +278,7 @@ AST: mlr filter -v 1 < 2 < 3 /dev/null DSL EXPRESSION: 1 < 2 < 3 + AST: * statement block * bare boolean @@ -272,6 +292,7 @@ AST: mlr put -v $x = 1 <= 2 <= 3 /dev/null DSL EXPRESSION: $x = 1 <= 2 <= 3 + AST: * statement block * assignment "=" @@ -286,6 +307,7 @@ AST: mlr filter -v 1 <= 2 <= 3 /dev/null DSL EXPRESSION: 1 <= 2 <= 3 + AST: * statement block * bare boolean @@ -299,6 +321,7 @@ AST: mlr put -v $x = 1 > 2 > 3 /dev/null DSL EXPRESSION: $x = 1 > 2 > 3 + AST: * statement block * assignment "=" @@ -313,6 +336,7 @@ AST: mlr filter -v 1 > 2 > 3 /dev/null DSL EXPRESSION: 1 > 2 > 3 + AST: * statement block * bare boolean @@ -326,6 +350,7 @@ AST: mlr put -v $x = 1 >= 2 >= 3 /dev/null DSL EXPRESSION: $x = 1 >= 2 >= 3 + AST: * statement block * assignment "=" @@ -340,6 +365,7 @@ AST: mlr filter -v 1 >= 2 >= 3 /dev/null DSL EXPRESSION: 1 >= 2 >= 3 + AST: * statement block * bare boolean @@ -353,6 +379,7 @@ AST: mlr put -v $x = 1 < 2 <= 3 /dev/null DSL EXPRESSION: $x = 1 < 2 <= 3 + AST: * statement block * assignment "=" @@ -367,6 +394,7 @@ AST: mlr filter -v 1 < 2 <= 3 /dev/null DSL EXPRESSION: 1 < 2 <= 3 + AST: * statement block * bare boolean @@ -380,6 +408,7 @@ AST: mlr put -v $x = 1 <= 2 < 3 /dev/null DSL EXPRESSION: $x = 1 <= 2 < 3 + AST: * statement block * assignment "=" @@ -394,6 +423,7 @@ AST: mlr filter -v 1 <= 2 < 3 /dev/null DSL EXPRESSION: 1 <= 2 < 3 + AST: * statement block * bare boolean @@ -407,6 +437,7 @@ AST: mlr put -v $x = 1 | 2 | 3 /dev/null DSL EXPRESSION: $x = 1 | 2 | 3 + AST: * statement block * assignment "=" @@ -421,6 +452,7 @@ AST: mlr filter -v 1 | 2 | 3 /dev/null DSL EXPRESSION: 1 | 2 | 3 + AST: * statement block * bare boolean @@ -434,6 +466,7 @@ AST: mlr put -v $x = 1 ^ 2 ^ 3 /dev/null DSL EXPRESSION: $x = 1 ^ 2 ^ 3 + AST: * statement block * assignment "=" @@ -448,6 +481,7 @@ AST: mlr filter -v 1 ^ 2 ^ 3 /dev/null DSL EXPRESSION: 1 ^ 2 ^ 3 + AST: * statement block * bare boolean @@ -461,6 +495,7 @@ AST: mlr put -v $x = 1 & 2 & 3 /dev/null DSL EXPRESSION: $x = 1 & 2 & 3 + AST: * statement block * assignment "=" @@ -475,6 +510,7 @@ AST: mlr filter -v 1 & 2 & 3 /dev/null DSL EXPRESSION: 1 & 2 & 3 + AST: * statement block * bare boolean @@ -488,6 +524,7 @@ AST: mlr put -v $x = 1 | 2 & 3 /dev/null DSL EXPRESSION: $x = 1 | 2 & 3 + AST: * statement block * assignment "=" @@ -502,6 +539,7 @@ AST: mlr filter -v 1 | 2 & 3 /dev/null DSL EXPRESSION: 1 | 2 & 3 + AST: * statement block * bare boolean @@ -515,6 +553,7 @@ AST: mlr put -v $x = 1 | 2 ^ 3 /dev/null DSL EXPRESSION: $x = 1 | 2 ^ 3 + AST: * statement block * assignment "=" @@ -529,6 +568,7 @@ AST: mlr filter -v 1 | 2 ^ 3 /dev/null DSL EXPRESSION: 1 | 2 ^ 3 + AST: * statement block * bare boolean @@ -542,6 +582,7 @@ AST: mlr put -v $x = 1 ^ 2 | 3 /dev/null DSL EXPRESSION: $x = 1 ^ 2 | 3 + AST: * statement block * assignment "=" @@ -556,6 +597,7 @@ AST: mlr filter -v 1 ^ 2 | 3 /dev/null DSL EXPRESSION: 1 ^ 2 | 3 + AST: * statement block * bare boolean @@ -569,6 +611,7 @@ AST: mlr put -v $x = 1 ^ 2 & 3 /dev/null DSL EXPRESSION: $x = 1 ^ 2 & 3 + AST: * statement block * assignment "=" @@ -583,6 +626,7 @@ AST: mlr filter -v 1 ^ 2 & 3 /dev/null DSL EXPRESSION: 1 ^ 2 & 3 + AST: * statement block * bare boolean @@ -596,6 +640,7 @@ AST: mlr put -v $x = 1 & 2 | 3 /dev/null DSL EXPRESSION: $x = 1 & 2 | 3 + AST: * statement block * assignment "=" @@ -610,6 +655,7 @@ AST: mlr filter -v 1 & 2 | 3 /dev/null DSL EXPRESSION: 1 & 2 | 3 + AST: * statement block * bare boolean @@ -623,6 +669,7 @@ AST: mlr put -v $x = 1 & 2 ^ 3 /dev/null DSL EXPRESSION: $x = 1 & 2 ^ 3 + AST: * statement block * assignment "=" @@ -637,6 +684,7 @@ AST: mlr filter -v 1 & 2 ^ 3 /dev/null DSL EXPRESSION: 1 & 2 ^ 3 + AST: * statement block * bare boolean @@ -650,6 +698,7 @@ AST: mlr put -v $x = 1 << 2 << 3 /dev/null DSL EXPRESSION: $x = 1 << 2 << 3 + AST: * statement block * assignment "=" @@ -664,6 +713,7 @@ AST: mlr filter -v 1 << 2 << 3 /dev/null DSL EXPRESSION: 1 << 2 << 3 + AST: * statement block * bare boolean @@ -677,6 +727,7 @@ AST: mlr put -v $x = 1 >> 2 >> 3 /dev/null DSL EXPRESSION: $x = 1 >> 2 >> 3 + AST: * statement block * assignment "=" @@ -691,6 +742,7 @@ AST: mlr filter -v 1 >> 2 >> 3 /dev/null DSL EXPRESSION: 1 >> 2 >> 3 + AST: * statement block * bare boolean @@ -704,6 +756,7 @@ AST: mlr put -v $x = 1 << 2 >> 3 /dev/null DSL EXPRESSION: $x = 1 << 2 >> 3 + AST: * statement block * assignment "=" @@ -718,6 +771,7 @@ AST: mlr filter -v 1 << 2 >> 3 /dev/null DSL EXPRESSION: 1 << 2 >> 3 + AST: * statement block * bare boolean @@ -731,6 +785,7 @@ AST: mlr put -v $x = 1 >> 2 << 3 /dev/null DSL EXPRESSION: $x = 1 >> 2 << 3 + AST: * statement block * assignment "=" @@ -745,6 +800,7 @@ AST: mlr filter -v 1 >> 2 << 3 /dev/null DSL EXPRESSION: 1 >> 2 << 3 + AST: * statement block * bare boolean @@ -758,6 +814,7 @@ AST: mlr put -v $x = 1 + 2 + 3 /dev/null DSL EXPRESSION: $x = 1 + 2 + 3 + AST: * statement block * assignment "=" @@ -772,6 +829,7 @@ AST: mlr filter -v 1 + 2 + 3 /dev/null DSL EXPRESSION: 1 + 2 + 3 + AST: * statement block * bare boolean @@ -785,6 +843,7 @@ AST: mlr put -v $x = 1 - 2 - 3 /dev/null DSL EXPRESSION: $x = 1 - 2 - 3 + AST: * statement block * assignment "=" @@ -799,6 +858,7 @@ AST: mlr filter -v 1 - 2 - 3 /dev/null DSL EXPRESSION: 1 - 2 - 3 + AST: * statement block * bare boolean @@ -812,6 +872,7 @@ AST: mlr put -v $x = 1 + 2 - 3 /dev/null DSL EXPRESSION: $x = 1 + 2 - 3 + AST: * statement block * assignment "=" @@ -826,6 +887,7 @@ AST: mlr filter -v 1 + 2 - 3 /dev/null DSL EXPRESSION: 1 + 2 - 3 + AST: * statement block * bare boolean @@ -839,6 +901,7 @@ AST: mlr put -v $x = 1 - 2 + 3 /dev/null DSL EXPRESSION: $x = 1 - 2 + 3 + AST: * statement block * assignment "=" @@ -853,6 +916,7 @@ AST: mlr filter -v 1 - 2 + 3 /dev/null DSL EXPRESSION: 1 - 2 + 3 + AST: * statement block * bare boolean @@ -866,6 +930,7 @@ AST: mlr put -v $x = 1 . 2 . 3 /dev/null DSL EXPRESSION: $x = 1 . 2 . 3 + AST: * statement block * assignment "=" @@ -880,6 +945,7 @@ AST: mlr filter -v 1 . 2 . 3 /dev/null DSL EXPRESSION: 1 . 2 . 3 + AST: * statement block * bare boolean @@ -893,6 +959,7 @@ AST: mlr put -v $x = 1 * 2 * 3 /dev/null DSL EXPRESSION: $x = 1 * 2 * 3 + AST: * statement block * assignment "=" @@ -907,6 +974,7 @@ AST: mlr filter -v 1 * 2 * 3 /dev/null DSL EXPRESSION: 1 * 2 * 3 + AST: * statement block * bare boolean @@ -920,6 +988,7 @@ AST: mlr put -v $x = 1 / 2 / 3 /dev/null DSL EXPRESSION: $x = 1 / 2 / 3 + AST: * statement block * assignment "=" @@ -934,6 +1003,7 @@ AST: mlr filter -v 1 / 2 / 3 /dev/null DSL EXPRESSION: 1 / 2 / 3 + AST: * statement block * bare boolean @@ -947,6 +1017,7 @@ AST: mlr put -v $x = 1 // 2 // 3 /dev/null DSL EXPRESSION: $x = 1 // 2 // 3 + AST: * statement block * assignment "=" @@ -961,6 +1032,7 @@ AST: mlr filter -v 1 // 2 // 3 /dev/null DSL EXPRESSION: 1 // 2 // 3 + AST: * statement block * bare boolean @@ -974,6 +1046,7 @@ AST: mlr put -v $x = 1 % 2 % 3 /dev/null DSL EXPRESSION: $x = 1 % 2 % 3 + AST: * statement block * assignment "=" @@ -988,6 +1061,7 @@ AST: mlr filter -v 1 % 2 % 3 /dev/null DSL EXPRESSION: 1 % 2 % 3 + AST: * statement block * bare boolean @@ -1001,6 +1075,7 @@ AST: mlr put -v $x = 1 ** 2 ** 3 /dev/null DSL EXPRESSION: $x = 1 ** 2 ** 3 + AST: * statement block * assignment "=" @@ -1015,6 +1090,7 @@ AST: mlr filter -v 1 ** 2 ** 3 /dev/null DSL EXPRESSION: 1 ** 2 ** 3 + AST: * statement block * bare boolean @@ -1028,6 +1104,7 @@ AST: mlr put -v $x = 1 * 2 / 3 /dev/null DSL EXPRESSION: $x = 1 * 2 / 3 + AST: * statement block * assignment "=" @@ -1042,6 +1119,7 @@ AST: mlr filter -v 1 * 2 / 3 /dev/null DSL EXPRESSION: 1 * 2 / 3 + AST: * statement block * bare boolean @@ -1055,6 +1133,7 @@ AST: mlr put -v $x = 1 * 2 // 3 /dev/null DSL EXPRESSION: $x = 1 * 2 // 3 + AST: * statement block * assignment "=" @@ -1069,6 +1148,7 @@ AST: mlr filter -v 1 * 2 // 3 /dev/null DSL EXPRESSION: 1 * 2 // 3 + AST: * statement block * bare boolean @@ -1082,6 +1162,7 @@ AST: mlr put -v $x = 1 * 2 % 3 /dev/null DSL EXPRESSION: $x = 1 * 2 % 3 + AST: * statement block * assignment "=" @@ -1096,6 +1177,7 @@ AST: mlr filter -v 1 * 2 % 3 /dev/null DSL EXPRESSION: 1 * 2 % 3 + AST: * statement block * bare boolean @@ -1109,6 +1191,7 @@ AST: mlr put -v $x = 1 * 2 ** 3 /dev/null DSL EXPRESSION: $x = 1 * 2 ** 3 + AST: * statement block * assignment "=" @@ -1123,6 +1206,7 @@ AST: mlr filter -v 1 * 2 ** 3 /dev/null DSL EXPRESSION: 1 * 2 ** 3 + AST: * statement block * bare boolean @@ -1136,6 +1220,7 @@ AST: mlr put -v $x = 1 / 2 * 3 /dev/null DSL EXPRESSION: $x = 1 / 2 * 3 + AST: * statement block * assignment "=" @@ -1150,6 +1235,7 @@ AST: mlr filter -v 1 / 2 * 3 /dev/null DSL EXPRESSION: 1 / 2 * 3 + AST: * statement block * bare boolean @@ -1163,6 +1249,7 @@ AST: mlr put -v $x = 1 / 2 // 3 /dev/null DSL EXPRESSION: $x = 1 / 2 // 3 + AST: * statement block * assignment "=" @@ -1177,6 +1264,7 @@ AST: mlr filter -v 1 / 2 // 3 /dev/null DSL EXPRESSION: 1 / 2 // 3 + AST: * statement block * bare boolean @@ -1190,6 +1278,7 @@ AST: mlr put -v $x = 1 / 2 % 3 /dev/null DSL EXPRESSION: $x = 1 / 2 % 3 + AST: * statement block * assignment "=" @@ -1204,6 +1293,7 @@ AST: mlr filter -v 1 / 2 % 3 /dev/null DSL EXPRESSION: 1 / 2 % 3 + AST: * statement block * bare boolean @@ -1217,6 +1307,7 @@ AST: mlr put -v $x = 1 / 2 ** 3 /dev/null DSL EXPRESSION: $x = 1 / 2 ** 3 + AST: * statement block * assignment "=" @@ -1231,6 +1322,7 @@ AST: mlr filter -v 1 / 2 ** 3 /dev/null DSL EXPRESSION: 1 / 2 ** 3 + AST: * statement block * bare boolean @@ -1244,6 +1336,7 @@ AST: mlr put -v $x = 1 // 2 * 3 /dev/null DSL EXPRESSION: $x = 1 // 2 * 3 + AST: * statement block * assignment "=" @@ -1258,6 +1351,7 @@ AST: mlr filter -v 1 // 2 * 3 /dev/null DSL EXPRESSION: 1 // 2 * 3 + AST: * statement block * bare boolean @@ -1271,6 +1365,7 @@ AST: mlr put -v $x = 1 // 2 / 3 /dev/null DSL EXPRESSION: $x = 1 // 2 / 3 + AST: * statement block * assignment "=" @@ -1285,6 +1380,7 @@ AST: mlr filter -v 1 // 2 / 3 /dev/null DSL EXPRESSION: 1 // 2 / 3 + AST: * statement block * bare boolean @@ -1298,6 +1394,7 @@ AST: mlr put -v $x = 1 // 2 % 3 /dev/null DSL EXPRESSION: $x = 1 // 2 % 3 + AST: * statement block * assignment "=" @@ -1312,6 +1409,7 @@ AST: mlr filter -v 1 // 2 % 3 /dev/null DSL EXPRESSION: 1 // 2 % 3 + AST: * statement block * bare boolean @@ -1325,6 +1423,7 @@ AST: mlr put -v $x = 1 // 2 ** 3 /dev/null DSL EXPRESSION: $x = 1 // 2 ** 3 + AST: * statement block * assignment "=" @@ -1339,6 +1438,7 @@ AST: mlr filter -v 1 // 2 ** 3 /dev/null DSL EXPRESSION: 1 // 2 ** 3 + AST: * statement block * bare boolean @@ -1352,6 +1452,7 @@ AST: mlr put -v $x = 1 % 2 * 3 /dev/null DSL EXPRESSION: $x = 1 % 2 * 3 + AST: * statement block * assignment "=" @@ -1366,6 +1467,7 @@ AST: mlr filter -v 1 % 2 * 3 /dev/null DSL EXPRESSION: 1 % 2 * 3 + AST: * statement block * bare boolean @@ -1379,6 +1481,7 @@ AST: mlr put -v $x = 1 % 2 / 3 /dev/null DSL EXPRESSION: $x = 1 % 2 / 3 + AST: * statement block * assignment "=" @@ -1393,6 +1496,7 @@ AST: mlr filter -v 1 % 2 / 3 /dev/null DSL EXPRESSION: 1 % 2 / 3 + AST: * statement block * bare boolean @@ -1406,6 +1510,7 @@ AST: mlr put -v $x = 1 % 2 // 3 /dev/null DSL EXPRESSION: $x = 1 % 2 // 3 + AST: * statement block * assignment "=" @@ -1420,6 +1525,7 @@ AST: mlr filter -v 1 % 2 // 3 /dev/null DSL EXPRESSION: 1 % 2 // 3 + AST: * statement block * bare boolean @@ -1433,6 +1539,7 @@ AST: mlr put -v $x = 1 % 2 ** 3 /dev/null DSL EXPRESSION: $x = 1 % 2 ** 3 + AST: * statement block * assignment "=" @@ -1447,6 +1554,7 @@ AST: mlr filter -v 1 % 2 ** 3 /dev/null DSL EXPRESSION: 1 % 2 ** 3 + AST: * statement block * bare boolean @@ -1460,6 +1568,7 @@ AST: mlr put -v $x = 1 ** 2 * 3 /dev/null DSL EXPRESSION: $x = 1 ** 2 * 3 + AST: * statement block * assignment "=" @@ -1474,6 +1583,7 @@ AST: mlr filter -v 1 ** 2 * 3 /dev/null DSL EXPRESSION: 1 ** 2 * 3 + AST: * statement block * bare boolean @@ -1487,6 +1597,7 @@ AST: mlr put -v $x = 1 ** 2 / 3 /dev/null DSL EXPRESSION: $x = 1 ** 2 / 3 + AST: * statement block * assignment "=" @@ -1501,6 +1612,7 @@ AST: mlr filter -v 1 ** 2 / 3 /dev/null DSL EXPRESSION: 1 ** 2 / 3 + AST: * statement block * bare boolean @@ -1514,6 +1626,7 @@ AST: mlr put -v $x = 1 ** 2 // 3 /dev/null DSL EXPRESSION: $x = 1 ** 2 // 3 + AST: * statement block * assignment "=" @@ -1528,6 +1641,7 @@ AST: mlr filter -v 1 ** 2 // 3 /dev/null DSL EXPRESSION: 1 ** 2 // 3 + AST: * statement block * bare boolean @@ -1541,6 +1655,7 @@ AST: mlr put -v $x = 1 ** 2 % 3 /dev/null DSL EXPRESSION: $x = 1 ** 2 % 3 + AST: * statement block * assignment "=" @@ -1555,6 +1670,7 @@ AST: mlr filter -v 1 ** 2 % 3 /dev/null DSL EXPRESSION: 1 ** 2 % 3 + AST: * statement block * bare boolean @@ -1568,6 +1684,7 @@ AST: mlr put -v $x = ++1 /dev/null DSL EXPRESSION: $x = ++1 + AST: * statement block * assignment "=" @@ -1580,6 +1697,7 @@ AST: mlr filter -v ++1 /dev/null DSL EXPRESSION: ++1 + AST: * statement block * bare boolean @@ -1591,6 +1709,7 @@ AST: mlr put -v $x = --1 /dev/null DSL EXPRESSION: $x = --1 + AST: * statement block * assignment "=" @@ -1603,6 +1722,7 @@ AST: mlr filter -v --1 /dev/null DSL EXPRESSION: --1 + AST: * statement block * bare boolean @@ -1614,6 +1734,7 @@ AST: mlr put -v $x = !!1 /dev/null DSL EXPRESSION: $x = !!1 + AST: * statement block * assignment "=" @@ -1626,6 +1747,7 @@ AST: mlr filter -v !!1 /dev/null DSL EXPRESSION: !!1 + AST: * statement block * bare boolean @@ -1637,6 +1759,7 @@ AST: mlr put -v $x = ~~1 /dev/null DSL EXPRESSION: $x = ~~1 + AST: * statement block * assignment "=" @@ -1649,6 +1772,7 @@ AST: mlr filter -v ~~1 /dev/null DSL EXPRESSION: ~~1 + AST: * statement block * bare boolean @@ -1660,6 +1784,7 @@ AST: mlr put -v $x = 1 ? 2 : 3 /dev/null DSL EXPRESSION: $x = 1 ? 2 : 3 + AST: * statement block * assignment "=" @@ -1673,6 +1798,7 @@ AST: mlr filter -v 1 ? 2 : 3 /dev/null DSL EXPRESSION: 1 ? 2 : 3 + AST: * statement block * bare boolean @@ -1685,6 +1811,7 @@ AST: mlr put -v $x = 1 ? 2 ? 3 : 4 : 5 /dev/null DSL EXPRESSION: $x = 1 ? 2 ? 3 : 4 : 5 + AST: * statement block * assignment "=" @@ -1701,6 +1828,7 @@ AST: mlr filter -v 1 ? 2 ? 3 : 4 : 5 /dev/null DSL EXPRESSION: 1 ? 2 ? 3 : 4 : 5 + AST: * statement block * bare boolean @@ -1716,6 +1844,7 @@ AST: mlr put -v $x = 1 ? 2 : 3 ? 4 : 5 /dev/null DSL EXPRESSION: $x = 1 ? 2 : 3 ? 4 : 5 + AST: * statement block * assignment "=" @@ -1732,6 +1861,7 @@ AST: mlr filter -v 1 ? 2 : 3 ? 4 : 5 /dev/null DSL EXPRESSION: 1 ? 2 : 3 ? 4 : 5 + AST: * statement block * bare boolean diff --git a/go/reg-test/expected/case-dsl-operator-precedence.sh.out b/go/reg-test/expected/case-dsl-operator-precedence.sh.out index ab4f7fcd4..20a541c1c 100644 --- a/go/reg-test/expected/case-dsl-operator-precedence.sh.out +++ b/go/reg-test/expected/case-dsl-operator-precedence.sh.out @@ -2,6 +2,7 @@ mlr put -v $x = 1 || 2 ^^ 3 /dev/null DSL EXPRESSION: $x = 1 || 2 ^^ 3 + AST: * statement block * assignment "=" @@ -16,6 +17,7 @@ AST: mlr filter -v 1 || 2 ^^ 3 /dev/null DSL EXPRESSION: 1 || 2 ^^ 3 + AST: * statement block * bare boolean @@ -29,6 +31,7 @@ AST: mlr put -v $x = 1 || 2 && 3 /dev/null DSL EXPRESSION: $x = 1 || 2 && 3 + AST: * statement block * assignment "=" @@ -43,6 +46,7 @@ AST: mlr filter -v 1 || 2 && 3 /dev/null DSL EXPRESSION: 1 || 2 && 3 + AST: * statement block * bare boolean @@ -56,6 +60,7 @@ AST: mlr put -v $x = 1 ^^ 2 || 3 /dev/null DSL EXPRESSION: $x = 1 ^^ 2 || 3 + AST: * statement block * assignment "=" @@ -70,6 +75,7 @@ AST: mlr filter -v 1 ^^ 2 || 3 /dev/null DSL EXPRESSION: 1 ^^ 2 || 3 + AST: * statement block * bare boolean @@ -83,6 +89,7 @@ AST: mlr put -v $x = 1 ^^ 2 && 3 /dev/null DSL EXPRESSION: $x = 1 ^^ 2 && 3 + AST: * statement block * assignment "=" @@ -97,6 +104,7 @@ AST: mlr filter -v 1 ^^ 2 && 3 /dev/null DSL EXPRESSION: 1 ^^ 2 && 3 + AST: * statement block * bare boolean @@ -110,6 +118,7 @@ AST: mlr put -v $x = 1 && 2 || 3 /dev/null DSL EXPRESSION: $x = 1 && 2 || 3 + AST: * statement block * assignment "=" @@ -124,6 +133,7 @@ AST: mlr filter -v 1 && 2 || 3 /dev/null DSL EXPRESSION: 1 && 2 || 3 + AST: * statement block * bare boolean @@ -137,6 +147,7 @@ AST: mlr put -v $x = 1 && 2 ^^ 3 /dev/null DSL EXPRESSION: $x = 1 && 2 ^^ 3 + AST: * statement block * assignment "=" @@ -151,6 +162,7 @@ AST: mlr filter -v 1 && 2 ^^ 3 /dev/null DSL EXPRESSION: 1 && 2 ^^ 3 + AST: * statement block * bare boolean @@ -164,6 +176,7 @@ AST: mlr put -v $x = 1 == 2 <= 3 /dev/null DSL EXPRESSION: $x = 1 == 2 <= 3 + AST: * statement block * assignment "=" @@ -178,6 +191,7 @@ AST: mlr filter -v 1 == 2 <= 3 /dev/null DSL EXPRESSION: 1 == 2 <= 3 + AST: * statement block * bare boolean @@ -191,6 +205,7 @@ AST: mlr put -v $x = 1 <= 2 == 3 /dev/null DSL EXPRESSION: $x = 1 <= 2 == 3 + AST: * statement block * assignment "=" @@ -205,6 +220,7 @@ AST: mlr filter -v 1 <= 2 == 3 /dev/null DSL EXPRESSION: 1 <= 2 == 3 + AST: * statement block * bare boolean @@ -218,6 +234,7 @@ AST: mlr put -v $x = 1 <= 2 | 3 /dev/null DSL EXPRESSION: $x = 1 <= 2 | 3 + AST: * statement block * assignment "=" @@ -232,6 +249,7 @@ AST: mlr filter -v 1 <= 2 | 3 /dev/null DSL EXPRESSION: 1 <= 2 | 3 + AST: * statement block * bare boolean @@ -245,6 +263,7 @@ AST: mlr put -v $x = 1 | 2 <= 3 /dev/null DSL EXPRESSION: $x = 1 | 2 <= 3 + AST: * statement block * assignment "=" @@ -259,6 +278,7 @@ AST: mlr filter -v 1 | 2 <= 3 /dev/null DSL EXPRESSION: 1 | 2 <= 3 + AST: * statement block * bare boolean @@ -272,6 +292,7 @@ AST: mlr put -v $x = 1 | 2 ^ 3 /dev/null DSL EXPRESSION: $x = 1 | 2 ^ 3 + AST: * statement block * assignment "=" @@ -286,6 +307,7 @@ AST: mlr filter -v 1 | 2 ^ 3 /dev/null DSL EXPRESSION: 1 | 2 ^ 3 + AST: * statement block * bare boolean @@ -299,6 +321,7 @@ AST: mlr put -v $x = 1 ^ 2 | 3 /dev/null DSL EXPRESSION: $x = 1 ^ 2 | 3 + AST: * statement block * assignment "=" @@ -313,6 +336,7 @@ AST: mlr filter -v 1 ^ 2 | 3 /dev/null DSL EXPRESSION: 1 ^ 2 | 3 + AST: * statement block * bare boolean @@ -326,6 +350,7 @@ AST: mlr put -v $x = 1 ^ 2 & 3 /dev/null DSL EXPRESSION: $x = 1 ^ 2 & 3 + AST: * statement block * assignment "=" @@ -340,6 +365,7 @@ AST: mlr filter -v 1 ^ 2 & 3 /dev/null DSL EXPRESSION: 1 ^ 2 & 3 + AST: * statement block * bare boolean @@ -353,6 +379,7 @@ AST: mlr put -v $x = 1 & 2 ^ 3 /dev/null DSL EXPRESSION: $x = 1 & 2 ^ 3 + AST: * statement block * assignment "=" @@ -367,6 +394,7 @@ AST: mlr filter -v 1 & 2 ^ 3 /dev/null DSL EXPRESSION: 1 & 2 ^ 3 + AST: * statement block * bare boolean @@ -380,6 +408,7 @@ AST: mlr put -v $x = 1 & 2 << 3 /dev/null DSL EXPRESSION: $x = 1 & 2 << 3 + AST: * statement block * assignment "=" @@ -394,6 +423,7 @@ AST: mlr filter -v 1 & 2 << 3 /dev/null DSL EXPRESSION: 1 & 2 << 3 + AST: * statement block * bare boolean @@ -407,6 +437,7 @@ AST: mlr put -v $x = 1 << 2 & 3 /dev/null DSL EXPRESSION: $x = 1 << 2 & 3 + AST: * statement block * assignment "=" @@ -421,6 +452,7 @@ AST: mlr filter -v 1 << 2 & 3 /dev/null DSL EXPRESSION: 1 << 2 & 3 + AST: * statement block * bare boolean @@ -434,6 +466,7 @@ AST: mlr put -v $x = 1 + 2 * 3 /dev/null DSL EXPRESSION: $x = 1 + 2 * 3 + AST: * statement block * assignment "=" @@ -448,6 +481,7 @@ AST: mlr filter -v 1 + 2 * 3 /dev/null DSL EXPRESSION: 1 + 2 * 3 + AST: * statement block * bare boolean @@ -461,6 +495,7 @@ AST: mlr put -v $x = 1 * 2 + 3 /dev/null DSL EXPRESSION: $x = 1 * 2 + 3 + AST: * statement block * assignment "=" @@ -475,6 +510,7 @@ AST: mlr filter -v 1 * 2 + 3 /dev/null DSL EXPRESSION: 1 * 2 + 3 + AST: * statement block * bare boolean @@ -488,6 +524,7 @@ AST: mlr put -v $x = 1 + (2 * 3) /dev/null DSL EXPRESSION: $x = 1 + (2 * 3) + AST: * statement block * assignment "=" @@ -502,6 +539,7 @@ AST: mlr filter -v 1 + (2 * 3) /dev/null DSL EXPRESSION: 1 + (2 * 3) + AST: * statement block * bare boolean @@ -515,6 +553,7 @@ AST: mlr put -v $x = 1 * (2 + 3) /dev/null DSL EXPRESSION: $x = 1 * (2 + 3) + AST: * statement block * assignment "=" @@ -529,6 +568,7 @@ AST: mlr filter -v 1 * (2 + 3) /dev/null DSL EXPRESSION: 1 * (2 + 3) + AST: * statement block * bare boolean @@ -542,6 +582,7 @@ AST: mlr put -v $x = (1 + 2) * 3 /dev/null DSL EXPRESSION: $x = (1 + 2) * 3 + AST: * statement block * assignment "=" @@ -556,6 +597,7 @@ AST: mlr filter -v (1 + 2) * 3 /dev/null DSL EXPRESSION: (1 + 2) * 3 + AST: * statement block * bare boolean @@ -569,6 +611,7 @@ AST: mlr put -v $x = (1 * 2) + 3 /dev/null DSL EXPRESSION: $x = (1 * 2) + 3 + AST: * statement block * assignment "=" @@ -583,6 +626,7 @@ AST: mlr filter -v (1 * 2) + 3 /dev/null DSL EXPRESSION: (1 * 2) + 3 + AST: * statement block * bare boolean @@ -596,6 +640,7 @@ AST: mlr put -v $x = 1 + 2 ** 3 /dev/null DSL EXPRESSION: $x = 1 + 2 ** 3 + AST: * statement block * assignment "=" @@ -610,6 +655,7 @@ AST: mlr filter -v 1 + 2 ** 3 /dev/null DSL EXPRESSION: 1 + 2 ** 3 + AST: * statement block * bare boolean @@ -623,6 +669,7 @@ AST: mlr put -v $x = 1 ** 2 + 3 /dev/null DSL EXPRESSION: $x = 1 ** 2 + 3 + AST: * statement block * assignment "=" @@ -637,6 +684,7 @@ AST: mlr filter -v 1 ** 2 + 3 /dev/null DSL EXPRESSION: 1 ** 2 + 3 + AST: * statement block * bare boolean @@ -650,6 +698,7 @@ AST: mlr put -v $x = 1 + (2 ** 3) /dev/null DSL EXPRESSION: $x = 1 + (2 ** 3) + AST: * statement block * assignment "=" @@ -664,6 +713,7 @@ AST: mlr filter -v 1 + (2 ** 3) /dev/null DSL EXPRESSION: 1 + (2 ** 3) + AST: * statement block * bare boolean @@ -677,6 +727,7 @@ AST: mlr put -v $x = 1 ** (2 + 3) /dev/null DSL EXPRESSION: $x = 1 ** (2 + 3) + AST: * statement block * assignment "=" @@ -691,6 +742,7 @@ AST: mlr filter -v 1 ** (2 + 3) /dev/null DSL EXPRESSION: 1 ** (2 + 3) + AST: * statement block * bare boolean @@ -704,6 +756,7 @@ AST: mlr put -v $x = (1 + 2) ** 3 /dev/null DSL EXPRESSION: $x = (1 + 2) ** 3 + AST: * statement block * assignment "=" @@ -718,6 +771,7 @@ AST: mlr filter -v (1 + 2) ** 3 /dev/null DSL EXPRESSION: (1 + 2) ** 3 + AST: * statement block * bare boolean @@ -731,6 +785,7 @@ AST: mlr put -v $x = (1 ** 2) + 3 /dev/null DSL EXPRESSION: $x = (1 ** 2) + 3 + AST: * statement block * assignment "=" @@ -745,6 +800,7 @@ AST: mlr filter -v (1 ** 2) + 3 /dev/null DSL EXPRESSION: (1 ** 2) + 3 + AST: * statement block * bare boolean @@ -758,6 +814,7 @@ AST: mlr put -v $x = 1 * 2 ** 3 /dev/null DSL EXPRESSION: $x = 1 * 2 ** 3 + AST: * statement block * assignment "=" @@ -772,6 +829,7 @@ AST: mlr filter -v 1 * 2 ** 3 /dev/null DSL EXPRESSION: 1 * 2 ** 3 + AST: * statement block * bare boolean @@ -785,6 +843,7 @@ AST: mlr put -v $x = 1 ** 2 * 3 /dev/null DSL EXPRESSION: $x = 1 ** 2 * 3 + AST: * statement block * assignment "=" @@ -799,6 +858,7 @@ AST: mlr filter -v 1 ** 2 * 3 /dev/null DSL EXPRESSION: 1 ** 2 * 3 + AST: * statement block * bare boolean @@ -812,6 +872,7 @@ AST: mlr put -v $x = 1 * (2 ** 3) /dev/null DSL EXPRESSION: $x = 1 * (2 ** 3) + AST: * statement block * assignment "=" @@ -826,6 +887,7 @@ AST: mlr filter -v 1 * (2 ** 3) /dev/null DSL EXPRESSION: 1 * (2 ** 3) + AST: * statement block * bare boolean @@ -839,6 +901,7 @@ AST: mlr put -v $x = 1 ** (2 * 3) /dev/null DSL EXPRESSION: $x = 1 ** (2 * 3) + AST: * statement block * assignment "=" @@ -853,6 +916,7 @@ AST: mlr filter -v 1 ** (2 * 3) /dev/null DSL EXPRESSION: 1 ** (2 * 3) + AST: * statement block * bare boolean @@ -866,6 +930,7 @@ AST: mlr put -v $x = (1 * 2) ** 3 /dev/null DSL EXPRESSION: $x = (1 * 2) ** 3 + AST: * statement block * assignment "=" @@ -880,6 +945,7 @@ AST: mlr filter -v (1 * 2) ** 3 /dev/null DSL EXPRESSION: (1 * 2) ** 3 + AST: * statement block * bare boolean @@ -893,6 +959,7 @@ AST: mlr put -v $x = (1 ** 2) * 3 /dev/null DSL EXPRESSION: $x = (1 ** 2) * 3 + AST: * statement block * assignment "=" @@ -907,6 +974,7 @@ AST: mlr filter -v (1 ** 2) * 3 /dev/null DSL EXPRESSION: (1 ** 2) * 3 + AST: * statement block * bare boolean @@ -920,6 +988,7 @@ AST: mlr put -v $x = -1 + 2 * 3 /dev/null DSL EXPRESSION: $x = -1 + 2 * 3 + AST: * statement block * assignment "=" @@ -935,6 +1004,7 @@ AST: mlr filter -v -1 + 2 * 3 /dev/null DSL EXPRESSION: -1 + 2 * 3 + AST: * statement block * bare boolean @@ -949,6 +1019,7 @@ AST: mlr put -v $x = -1 * 2 + 3 /dev/null DSL EXPRESSION: $x = -1 * 2 + 3 + AST: * statement block * assignment "=" @@ -964,6 +1035,7 @@ AST: mlr filter -v -1 * 2 + 3 /dev/null DSL EXPRESSION: -1 * 2 + 3 + AST: * statement block * bare boolean @@ -978,6 +1050,7 @@ AST: mlr put -v $x = 1 + -2 * 3 /dev/null DSL EXPRESSION: $x = 1 + -2 * 3 + AST: * statement block * assignment "=" @@ -993,6 +1066,7 @@ AST: mlr filter -v 1 + -2 * 3 /dev/null DSL EXPRESSION: 1 + -2 * 3 + AST: * statement block * bare boolean @@ -1007,6 +1081,7 @@ AST: mlr put -v $x = 1 * -2 + 3 /dev/null DSL EXPRESSION: $x = 1 * -2 + 3 + AST: * statement block * assignment "=" @@ -1022,6 +1097,7 @@ AST: mlr filter -v 1 * -2 + 3 /dev/null DSL EXPRESSION: 1 * -2 + 3 + AST: * statement block * bare boolean @@ -1036,6 +1112,7 @@ AST: mlr put -v $x = 1 + 2 * -3 /dev/null DSL EXPRESSION: $x = 1 + 2 * -3 + AST: * statement block * assignment "=" @@ -1051,6 +1128,7 @@ AST: mlr filter -v 1 + 2 * -3 /dev/null DSL EXPRESSION: 1 + 2 * -3 + AST: * statement block * bare boolean @@ -1065,6 +1143,7 @@ AST: mlr put -v $x = 1 * 2 + -3 /dev/null DSL EXPRESSION: $x = 1 * 2 + -3 + AST: * statement block * assignment "=" @@ -1080,6 +1159,7 @@ AST: mlr filter -v 1 * 2 + -3 /dev/null DSL EXPRESSION: 1 * 2 + -3 + AST: * statement block * bare boolean @@ -1094,6 +1174,7 @@ AST: mlr put -v $x = ~1 | 2 & 3 /dev/null DSL EXPRESSION: $x = ~1 | 2 & 3 + AST: * statement block * assignment "=" @@ -1109,6 +1190,7 @@ AST: mlr filter -v ~1 | 2 & 3 /dev/null DSL EXPRESSION: ~1 | 2 & 3 + AST: * statement block * bare boolean @@ -1123,6 +1205,7 @@ AST: mlr put -v $x = ~1 & 2 | 3 /dev/null DSL EXPRESSION: $x = ~1 & 2 | 3 + AST: * statement block * assignment "=" @@ -1138,6 +1221,7 @@ AST: mlr filter -v ~1 & 2 | 3 /dev/null DSL EXPRESSION: ~1 & 2 | 3 + AST: * statement block * bare boolean @@ -1152,6 +1236,7 @@ AST: mlr put -v $x = 1 | ~2 & 3 /dev/null DSL EXPRESSION: $x = 1 | ~2 & 3 + AST: * statement block * assignment "=" @@ -1167,6 +1252,7 @@ AST: mlr filter -v 1 | ~2 & 3 /dev/null DSL EXPRESSION: 1 | ~2 & 3 + AST: * statement block * bare boolean @@ -1181,6 +1267,7 @@ AST: mlr put -v $x = 1 & ~2 | 3 /dev/null DSL EXPRESSION: $x = 1 & ~2 | 3 + AST: * statement block * assignment "=" @@ -1196,6 +1283,7 @@ AST: mlr filter -v 1 & ~2 | 3 /dev/null DSL EXPRESSION: 1 & ~2 | 3 + AST: * statement block * bare boolean @@ -1210,6 +1298,7 @@ AST: mlr put -v $x = 1 | 2 & ~3 /dev/null DSL EXPRESSION: $x = 1 | 2 & ~3 + AST: * statement block * assignment "=" @@ -1225,6 +1314,7 @@ AST: mlr filter -v 1 | 2 & ~3 /dev/null DSL EXPRESSION: 1 | 2 & ~3 + AST: * statement block * bare boolean @@ -1239,6 +1329,7 @@ AST: mlr put -v $x = 1 & 2 | ~3 /dev/null DSL EXPRESSION: $x = 1 & 2 | ~3 + AST: * statement block * assignment "=" @@ -1254,6 +1345,7 @@ AST: mlr filter -v 1 & 2 | ~3 /dev/null DSL EXPRESSION: 1 & 2 | ~3 + AST: * statement block * bare boolean @@ -1268,6 +1360,7 @@ AST: mlr put -v $x = $a==1 && $b == 1 && $c == 1 /dev/null DSL EXPRESSION: $x = $a==1 && $b == 1 && $c == 1 + AST: * statement block * assignment "=" @@ -1288,6 +1381,7 @@ AST: mlr filter -v $a==1 && $b == 1 && $c == 1 /dev/null DSL EXPRESSION: $a==1 && $b == 1 && $c == 1 + AST: * statement block * bare boolean @@ -1307,6 +1401,7 @@ AST: mlr put -v $x = $a==1 || $b == 1 && $c == 1 /dev/null DSL EXPRESSION: $x = $a==1 || $b == 1 && $c == 1 + AST: * statement block * assignment "=" @@ -1327,6 +1422,7 @@ AST: mlr filter -v $a==1 || $b == 1 && $c == 1 /dev/null DSL EXPRESSION: $a==1 || $b == 1 && $c == 1 + AST: * statement block * bare boolean @@ -1346,6 +1442,7 @@ AST: mlr put -v $x = $a==1 || $b == 1 || $c == 1 /dev/null DSL EXPRESSION: $x = $a==1 || $b == 1 || $c == 1 + AST: * statement block * assignment "=" @@ -1366,6 +1463,7 @@ AST: mlr filter -v $a==1 || $b == 1 || $c == 1 /dev/null DSL EXPRESSION: $a==1 || $b == 1 || $c == 1 + AST: * statement block * bare boolean @@ -1385,6 +1483,7 @@ AST: mlr put -v $x = $a==1 && $b == 1 || $c == 1 /dev/null DSL EXPRESSION: $x = $a==1 && $b == 1 || $c == 1 + AST: * statement block * assignment "=" @@ -1405,6 +1504,7 @@ AST: mlr filter -v $a==1 && $b == 1 || $c == 1 /dev/null DSL EXPRESSION: $a==1 && $b == 1 || $c == 1 + AST: * statement block * bare boolean @@ -1424,6 +1524,7 @@ AST: mlr put -v $x = $a==1 ? $b == 2 : $c == 3 /dev/null DSL EXPRESSION: $x = $a==1 ? $b == 2 : $c == 3 + AST: * statement block * assignment "=" @@ -1443,6 +1544,7 @@ AST: mlr filter -v $a==1 ? $b == 2 : $c == 3 /dev/null DSL EXPRESSION: $a==1 ? $b == 2 : $c == 3 + AST: * statement block * bare boolean @@ -1461,6 +1563,7 @@ AST: mlr put -v $x = true /dev/null DSL EXPRESSION: $x = true + AST: * statement block * assignment "=" @@ -1471,6 +1574,7 @@ AST: mlr filter -v true /dev/null DSL EXPRESSION: true + AST: * statement block * bare boolean @@ -1480,6 +1584,7 @@ AST: mlr put -v true || 1==0; $x = 3 /dev/null DSL EXPRESSION: true || 1==0; $x = 3 + AST: * statement block * bare boolean @@ -1496,6 +1601,7 @@ AST: mlr filter -v true || 1==0 /dev/null DSL EXPRESSION: true || 1==0 + AST: * statement block * bare boolean @@ -1509,6 +1615,7 @@ AST: mlr put -v 1==0 || false; $x = 3 /dev/null DSL EXPRESSION: 1==0 || false; $x = 3 + AST: * statement block * bare boolean @@ -1525,6 +1632,7 @@ AST: mlr filter -v 1==0 || false /dev/null DSL EXPRESSION: 1==0 || false + AST: * statement block * bare boolean @@ -1538,6 +1646,7 @@ AST: mlr put -v true && false; $x = 3 /dev/null DSL EXPRESSION: true && false; $x = 3 + AST: * statement block * bare boolean @@ -1552,6 +1661,7 @@ AST: mlr filter -v true && false /dev/null DSL EXPRESSION: true && false + AST: * statement block * bare boolean @@ -1563,6 +1673,7 @@ AST: mlr put -v true && false && true; $x = 3 /dev/null DSL EXPRESSION: true && false && true; $x = 3 + AST: * statement block * bare boolean @@ -1579,6 +1690,7 @@ AST: mlr filter -v true && false && true /dev/null DSL EXPRESSION: true && false && true + AST: * statement block * bare boolean @@ -1592,6 +1704,7 @@ AST: mlr put -v $y += $x + 3 /dev/null DSL EXPRESSION: $y += $x + 3 + AST: * statement block * assignment "=" @@ -1606,6 +1719,7 @@ AST: mlr put -v $y += $x * 3 /dev/null DSL EXPRESSION: $y += $x * 3 + AST: * statement block * assignment "=" @@ -1620,6 +1734,7 @@ AST: mlr put -v $y ||= $x /dev/null DSL EXPRESSION: $y ||= $x + AST: * statement block * assignment "=" @@ -1632,6 +1747,7 @@ AST: mlr put -v $y ^^= $x /dev/null DSL EXPRESSION: $y ^^= $x + AST: * statement block * assignment "=" @@ -1644,6 +1760,7 @@ AST: mlr put -v $y &&= $x /dev/null DSL EXPRESSION: $y &&= $x + AST: * statement block * assignment "=" @@ -1656,6 +1773,7 @@ AST: mlr put -v $y |= $x /dev/null DSL EXPRESSION: $y |= $x + AST: * statement block * assignment "=" @@ -1668,6 +1786,7 @@ AST: mlr put -v $y ^= $x /dev/null DSL EXPRESSION: $y ^= $x + AST: * statement block * assignment "=" @@ -1680,6 +1799,7 @@ AST: mlr put -v $y &= $x /dev/null DSL EXPRESSION: $y &= $x + AST: * statement block * assignment "=" @@ -1692,6 +1812,7 @@ AST: mlr put -v $y <<= $x /dev/null DSL EXPRESSION: $y <<= $x + AST: * statement block * assignment "=" @@ -1704,6 +1825,7 @@ AST: mlr put -v $y >>= $x /dev/null DSL EXPRESSION: $y >>= $x + AST: * statement block * assignment "=" @@ -1716,6 +1838,7 @@ AST: mlr put -v $y += $x /dev/null DSL EXPRESSION: $y += $x + AST: * statement block * assignment "=" @@ -1728,6 +1851,7 @@ AST: mlr put -v $y -= $x /dev/null DSL EXPRESSION: $y -= $x + AST: * statement block * assignment "=" @@ -1740,6 +1864,7 @@ AST: mlr put -v $y .= $x /dev/null DSL EXPRESSION: $y .= $x + AST: * statement block * assignment "=" @@ -1752,6 +1877,7 @@ AST: mlr put -v $y *= $x /dev/null DSL EXPRESSION: $y *= $x + AST: * statement block * assignment "=" @@ -1764,6 +1890,7 @@ AST: mlr put -v $y /= $x /dev/null DSL EXPRESSION: $y /= $x + AST: * statement block * assignment "=" @@ -1776,6 +1903,7 @@ AST: mlr put -v $y //= $x /dev/null DSL EXPRESSION: $y //= $x + AST: * statement block * assignment "=" @@ -1788,6 +1916,7 @@ AST: mlr put -v $y %= $x /dev/null DSL EXPRESSION: $y %= $x + AST: * statement block * assignment "=" @@ -1800,6 +1929,7 @@ AST: mlr put -v $y **= $x /dev/null DSL EXPRESSION: $y **= $x + AST: * statement block * assignment "=" diff --git a/go/reg-test/expected/case-dsl-operator-rewrites.sh.out b/go/reg-test/expected/case-dsl-operator-rewrites.sh.out index d1ff687cc..59ae33920 100644 --- a/go/reg-test/expected/case-dsl-operator-rewrites.sh.out +++ b/go/reg-test/expected/case-dsl-operator-rewrites.sh.out @@ -2,6 +2,7 @@ mlr --from ./reg-test/input/s.dkvp --idkvp --opprint put -v $i += 2 DSL EXPRESSION: $i += 2 + AST: * statement block * assignment "=" @@ -19,6 +20,7 @@ eks wye 6 0.38139939387114097 0.13418874328430463 mlr --from ./reg-test/input/s.dkvp --idkvp --opprint put -v $i *= 2 DSL EXPRESSION: $i *= 2 + AST: * statement block * assignment "=" @@ -36,6 +38,7 @@ eks wye 8 0.38139939387114097 0.13418874328430463 mlr --from ./reg-test/input/s.dkvp --idkvp --opprint put -v $i /= 2 DSL EXPRESSION: $i /= 2 + AST: * statement block * assignment "=" @@ -53,6 +56,7 @@ eks wye 2 0.38139939387114097 0.13418874328430463 mlr --from ./reg-test/input/s.dkvp --idkvp --opprint put -v $i |= 2 DSL EXPRESSION: $i |= 2 + AST: * statement block * assignment "=" @@ -70,6 +74,7 @@ eks wye 6 0.38139939387114097 0.13418874328430463 mlr --from ./reg-test/input/s.dkvp --idkvp --opprint put -v $j = true; $j &&= $i < 2 DSL EXPRESSION: $j = true; $j &&= $i < 2 + AST: * statement block * assignment "=" diff --git a/go/reg-test/expected/case-dsl-parse.sh.out b/go/reg-test/expected/case-dsl-parse.sh.out index 3d484984a..f533314d0 100644 --- a/go/reg-test/expected/case-dsl-parse.sh.out +++ b/go/reg-test/expected/case-dsl-parse.sh.out @@ -2,6 +2,7 @@ mlr -n put -v $y = 1 || 2 DSL EXPRESSION: $y = 1 || 2 + AST: * statement block * assignment "=" @@ -14,6 +15,7 @@ AST: mlr -n put -v $y = 1 || 2 || 3 DSL EXPRESSION: $y = 1 || 2 || 3 + AST: * statement block * assignment "=" @@ -28,6 +30,7 @@ AST: mlr -n put -v $y = 1 || 2 && 3 DSL EXPRESSION: $y = 1 || 2 && 3 + AST: * statement block * assignment "=" @@ -42,6 +45,7 @@ AST: mlr -n put -v $y = 1 && 2 || 3 DSL EXPRESSION: $y = 1 && 2 || 3 + AST: * statement block * assignment "=" @@ -56,6 +60,7 @@ AST: mlr -n put -v $y = 1 ? 2 : 3 DSL EXPRESSION: $y = 1 ? 2 : 3 + AST: * statement block * assignment "=" @@ -69,6 +74,7 @@ AST: mlr -n put -v $y = $a + $b * $c DSL EXPRESSION: $y = $a + $b * $c + AST: * statement block * assignment "=" @@ -83,6 +89,7 @@ AST: mlr -n put -v $y = $a * $b * $c DSL EXPRESSION: $y = $a * $b * $c + AST: * statement block * assignment "=" @@ -97,6 +104,7 @@ AST: mlr -n put -v $y = $a ** $b ** $c DSL EXPRESSION: $y = $a ** $b ** $c + AST: * statement block * assignment "=" @@ -111,6 +119,7 @@ AST: mlr -n put -v $[2] = 3 DSL EXPRESSION: $[2] = 3 + AST: * statement block * assignment "=" @@ -122,6 +131,7 @@ AST: mlr -n put -v $[$y] = 4 DSL EXPRESSION: $[$y] = 4 + AST: * statement block * assignment "=" @@ -133,6 +143,7 @@ AST: mlr -n put -v $x = "abc" DSL EXPRESSION: $x = "abc" + AST: * statement block * assignment "=" @@ -143,6 +154,7 @@ AST: mlr -n put -v $["abc"] = "def" DSL EXPRESSION: $["abc"] = "def" + AST: * statement block * assignment "=" @@ -154,6 +166,7 @@ AST: mlr -n put -v $[FILENAME] = FNR DSL EXPRESSION: $[FILENAME] = FNR + AST: * statement block * assignment "=" @@ -165,6 +178,7 @@ AST: mlr -n put -v $x = $a + $b + $c DSL EXPRESSION: $x = $a + $b + $c + AST: * statement block * assignment "=" @@ -179,6 +193,7 @@ AST: mlr -n put -v $x = ($a + $b) + $c; $y = $a + ($b + $c); $z = $a + ($b)+ $c DSL EXPRESSION: $x = ($a + $b) + $c; $y = $a + ($b + $c); $z = $a + ($b)+ $c + AST: * statement block * assignment "=" @@ -207,6 +222,7 @@ AST: mlr -n put -v $x = 2 * $a + $b . $c DSL EXPRESSION: $x = 2 * $a + $b . $c + AST: * statement block * assignment "=" @@ -223,6 +239,7 @@ AST: mlr -n put -v $x = 2 * $a + ($b . $c) DSL EXPRESSION: $x = 2 * $a + ($b . $c) + AST: * statement block * assignment "=" @@ -239,6 +256,7 @@ AST: mlr -n put -v $x = (NF + NR) * 7; $y = OFS . $y . "hello" DSL EXPRESSION: $x = (NF + NR) * 7; $y = OFS . $y . "hello" + AST: * statement block * assignment "=" @@ -260,6 +278,7 @@ AST: mlr -n put -v $x = 123. + 1e-2 / .2e3 + 1.e-3 DSL EXPRESSION: $x = 123. + 1e-2 / .2e3 + 1.e-3 + AST: * statement block * assignment "=" @@ -276,6 +295,7 @@ AST: mlr -n put -v $z=0x7fffffffffffffff + 0x7fffffffffffffff DSL EXPRESSION: $z=0x7fffffffffffffff + 0x7fffffffffffffff + AST: * statement block * assignment "=" @@ -288,6 +308,7 @@ AST: mlr -n put -v $z=0x7fffffffffffffff .+ 0x7fffffffffffffff DSL EXPRESSION: $z=0x7fffffffffffffff .+ 0x7fffffffffffffff + AST: * statement block * assignment "=" @@ -300,6 +321,7 @@ AST: mlr -n put -v $z=0x7fffffffffffffff * 0x7fffffffffffffff DSL EXPRESSION: $z=0x7fffffffffffffff * 0x7fffffffffffffff + AST: * statement block * assignment "=" @@ -312,6 +334,7 @@ AST: mlr -n put -v $z=0x7fffffffffffffff .* 0x7fffffffffffffff DSL EXPRESSION: $z=0x7fffffffffffffff .* 0x7fffffffffffffff + AST: * statement block * assignment "=" @@ -360,6 +383,7 @@ pan pan 1 0.3467901443380824 0.7268028627434533 .3e-4 mlr -n put -v $y = 1 * 2 ?? 3 DSL EXPRESSION: $y = 1 * 2 ?? 3 + AST: * statement block * assignment "=" @@ -374,6 +398,7 @@ AST: mlr -n put -v $y = 1 ?? 2 * 3 DSL EXPRESSION: $y = 1 ?? 2 * 3 + AST: * statement block * assignment "=" @@ -388,6 +413,7 @@ AST: mlr -n put -v $z = [] DSL EXPRESSION: $z = [] + AST: * statement block * assignment "=" @@ -398,6 +424,7 @@ AST: mlr -n put -v $z = [1,] DSL EXPRESSION: $z = [1,] + AST: * statement block * assignment "=" @@ -409,6 +436,7 @@ AST: mlr -n put -v $z = [1,2] DSL EXPRESSION: $z = [1,2] + AST: * statement block * assignment "=" @@ -421,6 +449,7 @@ AST: mlr -n put -v $z = [1,2,] DSL EXPRESSION: $z = [1,2,] + AST: * statement block * assignment "=" @@ -433,6 +462,7 @@ AST: mlr -n put -v $z = [1,2,3] DSL EXPRESSION: $z = [1,2,3] + AST: * statement block * assignment "=" @@ -446,6 +476,7 @@ AST: mlr -n put -v $z = [1,2,3,] DSL EXPRESSION: $z = [1,2,3,] + AST: * statement block * assignment "=" @@ -459,6 +490,7 @@ AST: mlr -n put -v $z = {} DSL EXPRESSION: $z = {} + AST: * statement block * assignment "=" @@ -469,6 +501,7 @@ AST: mlr -n put -v $z = {"a":"1"} DSL EXPRESSION: $z = {"a":"1"} + AST: * statement block * assignment "=" @@ -482,6 +515,7 @@ AST: mlr -n put -v $z = {"a":"1",} DSL EXPRESSION: $z = {"a":"1",} + AST: * statement block * assignment "=" @@ -495,6 +529,7 @@ AST: mlr -n put -v $z = {"a":"1", "b":2} DSL EXPRESSION: $z = {"a":"1", "b":2} + AST: * statement block * assignment "=" @@ -511,6 +546,7 @@ AST: mlr -n put -v $z = {"a":"1", "b":2,} DSL EXPRESSION: $z = {"a":"1", "b":2,} + AST: * statement block * assignment "=" @@ -527,6 +563,7 @@ AST: mlr -n put -v $z = {"a":"1", "b":2, "c":3} DSL EXPRESSION: $z = {"a":"1", "b":2, "c":3} + AST: * statement block * assignment "=" @@ -546,6 +583,7 @@ AST: mlr -n put -v $z = {"a":"1", "b":2, "c":3,} DSL EXPRESSION: $z = {"a":"1", "b":2, "c":3,} + AST: * statement block * assignment "=" @@ -565,6 +603,7 @@ AST: mlr -n put -v $z = $a[1] DSL EXPRESSION: $z = $a[1] + AST: * statement block * assignment "=" @@ -577,6 +616,7 @@ AST: mlr -n put -v $z = $a["index"] DSL EXPRESSION: $z = $a["index"] + AST: * statement block * assignment "=" @@ -589,6 +629,7 @@ AST: mlr -n put -v $z = "abcde"[1] DSL EXPRESSION: $z = "abcde"[1] + AST: * statement block * assignment "=" @@ -601,6 +642,7 @@ AST: mlr -n put -v $z = "abcde"["index"] DSL EXPRESSION: $z = "abcde"["index"] + AST: * statement block * assignment "=" @@ -613,6 +655,7 @@ AST: mlr -n put -v $z = $a[1:2] DSL EXPRESSION: $z = $a[1:2] + AST: * statement block * assignment "=" @@ -626,6 +669,7 @@ AST: mlr -n put -v $z = $a[:2] DSL EXPRESSION: $z = $a[:2] + AST: * statement block * assignment "=" @@ -639,6 +683,7 @@ AST: mlr -n put -v $z = $a[1:] DSL EXPRESSION: $z = $a[1:] + AST: * statement block * assignment "=" @@ -652,6 +697,7 @@ AST: mlr -n put -v $z = $a[:] DSL EXPRESSION: $z = $a[:] + AST: * statement block * assignment "=" @@ -665,6 +711,7 @@ AST: mlr -n put -v $z = [5,6,7,8,9][1] DSL EXPRESSION: $z = [5,6,7,8,9][1] + AST: * statement block * assignment "=" @@ -682,6 +729,7 @@ AST: mlr -n put -v $z = {"a":1, "b":2, "c":3}["b"] DSL EXPRESSION: $z = {"a":1, "b":2, "c":3}["b"] + AST: * statement block * assignment "=" @@ -703,6 +751,7 @@ AST: mlr -n put -v begin{} DSL EXPRESSION: begin{} + AST: * statement block * begin block @@ -712,6 +761,7 @@ AST: mlr -n put -v begin{@y=1} DSL EXPRESSION: begin{@y=1} + AST: * statement block * begin block @@ -724,6 +774,7 @@ AST: mlr -n put -v end{} DSL EXPRESSION: end{} + AST: * statement block * end block @@ -733,6 +784,7 @@ AST: mlr -n put -v end{@y=1} DSL EXPRESSION: end{@y=1} + AST: * statement block * end block @@ -745,6 +797,7 @@ AST: mlr -n put -v $x=2; end{@y=1} DSL EXPRESSION: $x=2; end{@y=1} + AST: * statement block * assignment "=" @@ -760,6 +813,7 @@ AST: mlr -n put -v begin{@y=1} $x=2 DSL EXPRESSION: begin{@y=1} $x=2 + AST: * statement block * begin block @@ -775,6 +829,7 @@ AST: mlr -n put -v begin{} end {} DSL EXPRESSION: begin{} end {} + AST: * statement block * begin block @@ -786,6 +841,7 @@ AST: mlr -n put -v $x=1; DSL EXPRESSION: $x=1; + AST: * statement block * assignment "=" @@ -796,6 +852,7 @@ AST: mlr -n put -v $x=1;$y=2; DSL EXPRESSION: $x=1;$y=2; + AST: * statement block * assignment "=" @@ -809,6 +866,7 @@ AST: mlr -n put -v begin{@x=1;@y=2} DSL EXPRESSION: begin{@x=1;@y=2} + AST: * statement block * begin block @@ -824,6 +882,7 @@ AST: mlr -n put -v begin{@x=1;@y=2;} DSL EXPRESSION: begin{@x=1;@y=2;} + AST: * statement block * begin block @@ -839,6 +898,7 @@ AST: mlr -n put -v begin{@x=1;@y=2;} $z=3 DSL EXPRESSION: begin{@x=1;@y=2;} $z=3 + AST: * statement block * begin block @@ -857,6 +917,7 @@ AST: mlr -n put -v begin{@x=1;@y=2;} $z=3; DSL EXPRESSION: begin{@x=1;@y=2;} $z=3; + AST: * statement block * begin block @@ -875,6 +936,7 @@ AST: mlr -n put -v if (NR == 1) { $z = 100 } DSL EXPRESSION: if (NR == 1) { $z = 100 } + AST: * statement block * if-chain @@ -891,6 +953,7 @@ AST: mlr -n put -v if (NR == 1) { $z = 100 } else { $z = 900 } DSL EXPRESSION: if (NR == 1) { $z = 100 } else { $z = 900 } + AST: * statement block * if-chain @@ -912,6 +975,7 @@ AST: mlr -n put -v if (NR == 1) { $z = 100 } elif (NR == 2) { $z = 200 } DSL EXPRESSION: if (NR == 1) { $z = 100 } elif (NR == 2) { $z = 200 } + AST: * statement block * if-chain @@ -936,6 +1000,7 @@ AST: mlr -n put -v if (NR == 1) { $z = 100 } elif (NR == 2) { $z = 200 } else { $z = 900 } DSL EXPRESSION: if (NR == 1) { $z = 100 } elif (NR == 2) { $z = 200 } else { $z = 900 } + AST: * statement block * if-chain @@ -965,6 +1030,7 @@ AST: mlr -n put -v if (NR == 1) { $z = 100 } elif (NR == 2) { $z = 200 } elif (NR == 3) { $z = 300 } else { $z = 900 } DSL EXPRESSION: if (NR == 1) { $z = 100 } elif (NR == 2) { $z = 200 } elif (NR == 3) { $z = 300 } else { $z = 900 } + AST: * statement block * if-chain @@ -1002,6 +1068,7 @@ AST: mlr -n put -v for (k in $*) { emit { k : k } } DSL EXPRESSION: for (k in $*) { emit { k : k } } + AST: * statement block * single-variable for-loop "for" @@ -1021,6 +1088,7 @@ AST: mlr -n put -v begin {} DSL EXPRESSION: begin {} + AST: * statement block * begin block @@ -1030,6 +1098,7 @@ AST: mlr -n put -v end {} DSL EXPRESSION: end {} + AST: * statement block * end block @@ -1039,6 +1108,7 @@ AST: mlr -n put -v if (1) {} DSL EXPRESSION: if (1) {} + AST: * statement block * if-chain @@ -1050,6 +1120,7 @@ AST: mlr -n put -v if (1) {2} DSL EXPRESSION: if (1) {2} + AST: * statement block * if-chain @@ -1063,6 +1134,7 @@ AST: mlr -n put -v for (k in $*) {} DSL EXPRESSION: for (k in $*) {} + AST: * statement block * single-variable for-loop "for" @@ -1074,6 +1146,7 @@ AST: mlr -n put -v for (k in $*) {2} DSL EXPRESSION: for (k in $*) {2} + AST: * statement block * single-variable for-loop "for" @@ -1087,6 +1160,7 @@ AST: mlr -n put -v while (false) {} DSL EXPRESSION: while (false) {} + AST: * statement block * while loop "while" @@ -1097,6 +1171,7 @@ AST: mlr -n put -v do {} while (false) DSL EXPRESSION: do {} while (false) + AST: * statement block * do-while`loop "do" @@ -1107,6 +1182,7 @@ AST: mlr -n put -v nr=NR; $nr=nr DSL EXPRESSION: nr=NR; $nr=nr + AST: * statement block * assignment "=" @@ -1120,6 +1196,7 @@ AST: mlr -n put -v for (i = 0; i < 10; i += 1) { $x += i } DSL EXPRESSION: for (i = 0; i < 10; i += 1) { $x += i } + AST: * statement block * triple-for loop "for" @@ -1149,6 +1226,7 @@ AST: mlr -n put -v for (;;) {} DSL EXPRESSION: for (;;) {} + AST: * statement block * triple-for loop "for" @@ -1161,6 +1239,7 @@ AST: mlr -n put -v for (i = 0; i < NR; i += 1) { $i += i } DSL EXPRESSION: for (i = 0; i < NR; i += 1) { $i += i } + AST: * statement block * triple-for loop "for" @@ -1190,6 +1269,7 @@ AST: mlr -n put -v for (i = 0; i < NR; i += 1) { if (i == 2) { continue} $i += i } DSL EXPRESSION: for (i = 0; i < NR; i += 1) { if (i == 2) { continue} $i += i } + AST: * statement block * triple-for loop "for" @@ -1226,6 +1306,7 @@ AST: mlr -n put -v for (i = 0; i < NR; i += 1) { if (i == 2) { break} $i += i } DSL EXPRESSION: for (i = 0; i < NR; i += 1) { if (i == 2) { break} $i += i } + AST: * statement block * triple-for loop "for" @@ -1262,6 +1343,7 @@ AST: mlr -n put -v func f(){} DSL EXPRESSION: func f(){} + AST: * statement block * function definition "f" @@ -1272,6 +1354,7 @@ AST: mlr -n put -v func f(a){} DSL EXPRESSION: func f(a){} + AST: * statement block * function definition "f" @@ -1284,6 +1367,7 @@ AST: mlr -n put -v func f(a,){} DSL EXPRESSION: func f(a,){} + AST: * statement block * function definition "f" @@ -1296,6 +1380,7 @@ AST: mlr -n put -v func f(a,b){} DSL EXPRESSION: func f(a,b){} + AST: * statement block * function definition "f" @@ -1310,6 +1395,7 @@ AST: mlr -n put -v func f(a,b,){} DSL EXPRESSION: func f(a,b,){} + AST: * statement block * function definition "f" @@ -1324,6 +1410,7 @@ AST: mlr -n put -v func f(a,b,c){} DSL EXPRESSION: func f(a,b,c){} + AST: * statement block * function definition "f" @@ -1340,6 +1427,7 @@ AST: mlr -n put -v func f(a,b,c,){} DSL EXPRESSION: func f(a,b,c,){} + AST: * statement block * function definition "f" @@ -1356,6 +1444,7 @@ AST: mlr -n put -v func f(){return 1} DSL EXPRESSION: func f(){return 1} + AST: * statement block * function definition "f" @@ -1368,6 +1457,7 @@ AST: mlr -n put -v func f(a){return 1} DSL EXPRESSION: func f(a){return 1} + AST: * statement block * function definition "f" @@ -1382,6 +1472,7 @@ AST: mlr -n put -v func f(a,){return 1} DSL EXPRESSION: func f(a,){return 1} + AST: * statement block * function definition "f" @@ -1396,6 +1487,7 @@ AST: mlr -n put -v func f(a,b){return 1} DSL EXPRESSION: func f(a,b){return 1} + AST: * statement block * function definition "f" @@ -1412,6 +1504,7 @@ AST: mlr -n put -v func f(a,b,){return 1} DSL EXPRESSION: func f(a,b,){return 1} + AST: * statement block * function definition "f" @@ -1428,6 +1521,7 @@ AST: mlr -n put -v func f(a,b,c){return 1} DSL EXPRESSION: func f(a,b,c){return 1} + AST: * statement block * function definition "f" @@ -1446,6 +1540,7 @@ AST: mlr -n put -v func f(a,b,c,){return 1} DSL EXPRESSION: func f(a,b,c,){return 1} + AST: * statement block * function definition "f" @@ -1464,6 +1559,7 @@ AST: mlr -n put -v func f(x, y) { z = 3} DSL EXPRESSION: func f(x, y) { z = 3} + AST: * statement block * function definition "f" @@ -1481,6 +1577,7 @@ AST: mlr -n put -v func f(var x, var y): var { var z = 3} DSL EXPRESSION: func f(var x, var y): var { var z = 3} + AST: * statement block * function definition "f" @@ -1502,6 +1599,7 @@ AST: mlr -n put -v unset $x DSL EXPRESSION: unset $x + AST: * statement block * unset "unset" @@ -1511,6 +1609,7 @@ AST: mlr -n put -v unset $* DSL EXPRESSION: unset $* + AST: * statement block * unset "unset" @@ -1520,6 +1619,7 @@ AST: mlr -n put -v unset @x DSL EXPRESSION: unset @x + AST: * statement block * unset "unset" @@ -1529,6 +1629,7 @@ AST: mlr -n put -v unset @* DSL EXPRESSION: unset @* + AST: * statement block * unset "unset" @@ -1538,6 +1639,7 @@ AST: mlr -n put -v unset x DSL EXPRESSION: unset x + AST: * statement block * unset "unset" @@ -1547,6 +1649,7 @@ AST: mlr -n put -v unset 3 DSL EXPRESSION: unset 3 + AST: * statement block * unset "unset" @@ -1560,6 +1663,7 @@ mlr -n put -f ./reg-test/input/parse-error.mlr mlr put -v begin{@a=1}; $e=2; $f==$g||$h==$i {}; $x=6; end{@z=9} /dev/null DSL EXPRESSION: begin{@a=1}; $e=2; $f==$g||$h==$i {}; $x=6; end{@z=9} + AST: * statement block * begin block @@ -1592,6 +1696,7 @@ AST: mlr put -v begin{@a=1}; $e=2; $f==$g||$h==$i {$s=1}; $x=6; end{@z=9} /dev/null DSL EXPRESSION: begin{@a=1}; $e=2; $f==$g||$h==$i {$s=1}; $x=6; end{@z=9} + AST: * statement block * begin block @@ -1627,6 +1732,7 @@ AST: mlr put -v begin{@a=1}; $e=2; $f==$g||$h==$i {$s=1;$t=2}; $x=6; end{@z=9} /dev/null DSL EXPRESSION: begin{@a=1}; $e=2; $f==$g||$h==$i {$s=1;$t=2}; $x=6; end{@z=9} + AST: * statement block * begin block @@ -1665,6 +1771,7 @@ AST: mlr put -v begin{@a=1}; $e=2; $f==$g||$h==$i {$s=1;$t=2;$u=3}; $x=6; end{@z=9} /dev/null DSL EXPRESSION: begin{@a=1}; $e=2; $f==$g||$h==$i {$s=1;$t=2;$u=3}; $x=6; end{@z=9} + AST: * statement block * begin block @@ -1706,6 +1813,7 @@ AST: mlr put -v begin{@a=1}; $e=2; $f==$g||$h==$i {$s=1;@t["u".$5]=2;emit @v;emit @w; dump}; $x=6; end{@z=9} /dev/null DSL EXPRESSION: begin{@a=1}; $e=2; $f==$g||$h==$i {$s=1;@t["u".$5]=2;emit @v;emit @w; dump}; $x=6; end{@z=9} + AST: * statement block * begin block @@ -1761,6 +1869,7 @@ AST: mlr put -v begin{true{@x=1}}; true{@x=2}; end{true{@x=3}} /dev/null DSL EXPRESSION: begin{true{@x=1}}; true{@x=2}; end{true{@x=3}} + AST: * statement block * begin block diff --git a/go/reg-test/expected/case-dsl-regex-matching.sh.out b/go/reg-test/expected/case-dsl-regex-matching.sh.out index 3347d0bcc..df34fdaa2 100644 --- a/go/reg-test/expected/case-dsl-regex-matching.sh.out +++ b/go/reg-test/expected/case-dsl-regex-matching.sh.out @@ -2,6 +2,7 @@ mlr filter -v $x =~ "bcd" ./reg-test/input/regex.dkvp DSL EXPRESSION: $x =~ "bcd" + AST: * statement block * bare boolean @@ -15,6 +16,7 @@ x=abcde,y=ghi mlr filter -v $x =~ "^bcd" ./reg-test/input/regex.dkvp DSL EXPRESSION: $x =~ "^bcd" + AST: * statement block * bare boolean @@ -26,6 +28,7 @@ AST: mlr filter -v $x =~ "^abc" ./reg-test/input/regex.dkvp DSL EXPRESSION: $x =~ "^abc" + AST: * statement block * bare boolean @@ -40,6 +43,7 @@ x=abcde,y=ghi mlr filter -v $x =~ "^abc$" ./reg-test/input/regex.dkvp DSL EXPRESSION: $x =~ "^abc$" + AST: * statement block * bare boolean @@ -52,6 +56,7 @@ x=abc,y=def mlr filter -v $x =~ "^a.*d$" ./reg-test/input/regex.dkvp DSL EXPRESSION: $x =~ "^a.*d$" + AST: * statement block * bare boolean @@ -64,6 +69,7 @@ x=abcd,y=ghi mlr filter -v $x =~ "^a.*"."d$" ./reg-test/input/regex.dkvp DSL EXPRESSION: $x =~ "^a.*"."d$" + AST: * statement block * bare boolean @@ -78,6 +84,7 @@ x=abcd,y=ghi mlr filter -v $y =~ "\".." ./reg-test/input/regex.dkvp DSL EXPRESSION: $y =~ "\".." + AST: * statement block * bare boolean @@ -90,6 +97,7 @@ x=ABCDE,y="GHI" mlr filter -v $x =~ "bcd"i ./reg-test/input/regex.dkvp DSL EXPRESSION: $x =~ "bcd"i + AST: * statement block * bare boolean @@ -106,6 +114,7 @@ x=ABCDE,y="GHI" mlr filter -v $x =~ "^bcd"i ./reg-test/input/regex.dkvp DSL EXPRESSION: $x =~ "^bcd"i + AST: * statement block * bare boolean @@ -117,6 +126,7 @@ AST: mlr filter -v $x =~ "^abc"i ./reg-test/input/regex.dkvp DSL EXPRESSION: $x =~ "^abc"i + AST: * statement block * bare boolean @@ -135,6 +145,7 @@ x=ABCDE,y="GHI" mlr filter -v $x =~ "^abc$"i ./reg-test/input/regex.dkvp DSL EXPRESSION: $x =~ "^abc$"i + AST: * statement block * bare boolean @@ -148,6 +159,7 @@ x=ABC,y=DEF mlr filter -v $x =~ "^a.*d$"i ./reg-test/input/regex.dkvp DSL EXPRESSION: $x =~ "^a.*d$"i + AST: * statement block * bare boolean @@ -161,6 +173,7 @@ x=ABCD,y=GHI mlr filter -v $x =~ "^a.*"."d$"i ./reg-test/input/regex.dkvp DSL EXPRESSION: $x =~ "^a.*"."d$"i + AST: * statement block * bare boolean diff --git a/go/reg-test/expected/case-dsl-subr.sh.out b/go/reg-test/expected/case-dsl-subr.sh.out index 15291916b..fc27003c9 100644 --- a/go/reg-test/expected/case-dsl-subr.sh.out +++ b/go/reg-test/expected/case-dsl-subr.sh.out @@ -2,6 +2,7 @@ mlr -n put -v call s() DSL EXPRESSION: call s() + AST: * statement block * subroutine callsite "s" @@ -12,6 +13,7 @@ mlr -n put -v call s mlr -n put -v call s(1,2,3) DSL EXPRESSION: call s(1,2,3) + AST: * statement block * subroutine callsite "s" @@ -23,6 +25,7 @@ AST: mlr -n put -v subr s() {} DSL EXPRESSION: subr s() {} + AST: * statement block * subroutine definition "s" @@ -33,6 +36,7 @@ AST: mlr -n put -v subr s() {x=1} DSL EXPRESSION: subr s() {x=1} + AST: * statement block * subroutine definition "s" @@ -46,6 +50,7 @@ AST: mlr -n put -v subr s() {return} DSL EXPRESSION: subr s() {return} + AST: * statement block * subroutine definition "s" @@ -57,6 +62,7 @@ AST: mlr -n put -v subr s() {return 2} DSL EXPRESSION: subr s() {return 2} + AST: * statement block * subroutine definition "s" @@ -71,6 +77,7 @@ mlr -n put subr s() mlr -n put -v subr s() {}; call s() DSL EXPRESSION: subr s() {}; call s() + AST: * statement block * subroutine definition "s" @@ -82,6 +89,7 @@ AST: mlr -n put -v call s(); subr s() {} DSL EXPRESSION: call s(); subr s() {} + AST: * statement block * subroutine callsite "s" @@ -93,6 +101,7 @@ AST: mlr -n put -v subr s(a) {print "HELLO, ".a."!"} call s("WORLD") DSL EXPRESSION: subr s(a) {print "HELLO, ".a."!"} call s("WORLD") + AST: * statement block * subroutine definition "s" @@ -145,6 +154,7 @@ DSL EXPRESSION: print s(NR); call s("WORLD"); + AST: * statement block * function definition "s" diff --git a/go/reg-test/expected/case-c-dsl-user-defined-functions.sh.out b/go/reg-test/expected/case-dsl-user-defined-functions.sh.out similarity index 99% rename from go/reg-test/expected/case-c-dsl-user-defined-functions.sh.out rename to go/reg-test/expected/case-dsl-user-defined-functions.sh.out index fea228561..5b2161675 100644 --- a/go/reg-test/expected/case-c-dsl-user-defined-functions.sh.out +++ b/go/reg-test/expected/case-dsl-user-defined-functions.sh.out @@ -28,7 +28,6 @@ eks zee 7 0.6117840605678454 0.1878849191181694 999 0.1878849191181694 zee wye 8 0.5985540091064224 0.976181385699006 999 0.976181385699006 hat wye 9 0.03144187646093577 0.7495507603507059 999 0.7495507603507059 pan wye 10 0.5026260055412137 0.9526183602969864 999 0.9526183602969864 -Exit status was 0; expected 1. mlr -n put -q -f ./reg-test/input/sieve.mlr 2 diff --git a/go/reg-test/input/mand.mlr b/go/reg-test/input/mand.mlr index 5298e9b45..9c367b93b 100644 --- a/go/reg-test/input/mand.mlr +++ b/go/reg-test/input/mand.mlr @@ -67,7 +67,7 @@ func get_point_plot(cr, ci, maxits) { if (!escaped) { return "."; } else { - int level = 1 + (iti // @levelstep) % strlen(@chars); + int level = (iti // @levelstep) % strlen(@chars); return substr(@chars, level, level); } } diff --git a/go/src/dsl/cst/udf.go b/go/src/dsl/cst/udf.go index d80c0f80d..e51c7927c 100644 --- a/go/src/dsl/cst/udf.go +++ b/go/src/dsl/cst/udf.go @@ -147,11 +147,21 @@ func (this *UDFCallsite) Evaluate( // being MT_ERROR should be mapped to MT_ERROR here (nominally, // data-dependent). But error-return could be something not data-dependent. if err != nil { + err = this.udf.signature.typeGatedReturnValue.Check(types.MLRVAL_ERROR) + if err != nil { + fmt.Fprint(os.Stderr, err) + os.Exit(1) + } return types.MLRVAL_ERROR } // Fell off end of function with no return if blockExitPayload == nil { + err = this.udf.signature.typeGatedReturnValue.Check(types.MLRVAL_ABSENT) + if err != nil { + fmt.Fprint(os.Stderr, err) + os.Exit(1) + } return types.MLRVAL_ABSENT } @@ -159,6 +169,11 @@ func (this *UDFCallsite) Evaluate( // continue not in a loop, or return-void, both of which should have been // reported as syntax errors during the parsing pass. if blockExitPayload.blockExitStatus != BLOCK_EXIT_RETURN_VALUE { + err = this.udf.signature.typeGatedReturnValue.Check(types.MLRVAL_ABSENT) + if err != nil { + fmt.Fprint(os.Stderr, err) + os.Exit(1) + } return types.MLRVAL_ABSENT } @@ -169,13 +184,9 @@ func (this *UDFCallsite) Evaluate( err = this.udf.signature.typeGatedReturnValue.Check(blockExitPayload.blockReturnValue) if err != nil { // TODO: put error-return in the Evaluate API - fmt.Fprint( - os.Stderr, - err, - ) + fmt.Fprint(os.Stderr, err) os.Exit(1) } - return blockExitPayload.blockReturnValue.Copy() } diff --git a/go/src/transformers/put_or_filter.go b/go/src/transformers/put_or_filter.go index a63b0a181..9c3c60de4 100644 --- a/go/src/transformers/put_or_filter.go +++ b/go/src/transformers/put_or_filter.go @@ -314,6 +314,7 @@ func NewTransformerPut( if echoDSLString { fmt.Println("DSL EXPRESSION:") fmt.Println(dslString) + fmt.Println() } if printASTAsTree { fmt.Println("AST:") diff --git a/go/todo.txt b/go/todo.txt index ac68e8c6e..aadfb6ba0 100644 --- a/go/todo.txt +++ b/go/todo.txt @@ -1,7 +1,9 @@ ================================================================ TOP OF LIST: -* warnings: call them something else & make them fatal the process ... +! ut: + o triple-for multi-middle case + o substr/error cases C <-> Go * regexes o finish stats1 -r @@ -16,6 +18,7 @@ TOP OF LIST: * json null * smart fmtnum + - poor-person's initial version: lld/llx -> d/x; lf/le/lg -> f/e/g ... - fmtnum - ofmt - no other callsites?!?!?! diff --git a/go/u/mand.mlr b/go/u/mand.mlr index ebe5423bd..e22d7258d 100644 --- a/go/u/mand.mlr +++ b/go/u/mand.mlr @@ -61,6 +61,6 @@ func get_point_plot(cr, ci, maxits): str { return "."; } else { int level = (iti // @levelstep) % strlen(@chars); - return substr(@chars, level+1, level+1); + return substr(@chars, level, level); } }