================================================================ GRAMMAR REORG mlr -n put -v $["x"]=3 AST ROOT: list (statement_list): = (indirect_srec_assignment): x (strnum_literal). 3 (strnum_literal). mlr -n put -v @["x"]=3 AST ROOT: list (statement_list): = (oosvar_assignment): oosvar_keylist (oosvar_keylist): x (strnum_literal). 3 (strnum_literal). mlr -n put -v $[$y]=$y AST ROOT: list (statement_list): = (indirect_srec_assignment): y (field_name). y (field_name). mlr -n put -v @[@y]=@y AST ROOT: list (statement_list): = (oosvar_assignment): oosvar_keylist (oosvar_keylist): oosvar_keylist (oosvar_keylist): y (string_literal). oosvar_keylist (oosvar_keylist): y (string_literal). mlr -n put -v @x=2; @x["y"]=3; @x["y"][$z]=4 AST ROOT: list (statement_list): = (oosvar_assignment): oosvar_keylist (oosvar_keylist): x (string_literal). 2 (strnum_literal). = (oosvar_assignment): oosvar_keylist (oosvar_keylist): x (string_literal). y (strnum_literal). 3 (strnum_literal). = (oosvar_assignment): oosvar_keylist (oosvar_keylist): x (string_literal). y (strnum_literal). z (field_name). 4 (strnum_literal). mlr -n put -v @["x"]=2; @["x"]["y"]=3; @["x"]["y"][$z]=4 AST ROOT: list (statement_list): = (oosvar_assignment): oosvar_keylist (oosvar_keylist): x (strnum_literal). 2 (strnum_literal). = (oosvar_assignment): oosvar_keylist (oosvar_keylist): x (strnum_literal). y (strnum_literal). 3 (strnum_literal). = (oosvar_assignment): oosvar_keylist (oosvar_keylist): x (strnum_literal). y (strnum_literal). z (field_name). 4 (strnum_literal). mlr --from reg_test/input/abixy put -q -v @a=2; @b["y"]=3; @c["y"][$a]=4; emitp all AST ROOT: list (statement_list): = (oosvar_assignment): oosvar_keylist (oosvar_keylist): a (string_literal). 2 (strnum_literal). = (oosvar_assignment): oosvar_keylist (oosvar_keylist): b (string_literal). y (strnum_literal). 3 (strnum_literal). = (oosvar_assignment): oosvar_keylist (oosvar_keylist): c (string_literal). y (strnum_literal). a (field_name). 4 (strnum_literal). emitp (emitp): all (all). a=2 b:y=3 c:y:pan=4 a=2 b:y=3 c:y:pan=4,c:y:eks=4 a=2 b:y=3 c:y:pan=4,c:y:eks=4,c:y:wye=4 a=2 b:y=3 c:y:pan=4,c:y:eks=4,c:y:wye=4 a=2 b:y=3 c:y:pan=4,c:y:eks=4,c:y:wye=4 a=2 b:y=3 c:y:pan=4,c:y:eks=4,c:y:wye=4,c:y:zee=4 a=2 b:y=3 c:y:pan=4,c:y:eks=4,c:y:wye=4,c:y:zee=4 a=2 b:y=3 c:y:pan=4,c:y:eks=4,c:y:wye=4,c:y:zee=4 a=2 b:y=3 c:y:pan=4,c:y:eks=4,c:y:wye=4,c:y:zee=4,c:y:hat=4 a=2 b:y=3 c:y:pan=4,c:y:eks=4,c:y:wye=4,c:y:zee=4,c:y:hat=4 mlr --from reg_test/input/abixy put -q -v @a=2; @b["y"]=3; @c["y"][$a]=4; emitp all AST ROOT: list (statement_list): = (oosvar_assignment): oosvar_keylist (oosvar_keylist): a (string_literal). 2 (strnum_literal). = (oosvar_assignment): oosvar_keylist (oosvar_keylist): b (string_literal). y (strnum_literal). 3 (strnum_literal). = (oosvar_assignment): oosvar_keylist (oosvar_keylist): c (string_literal). y (strnum_literal). a (field_name). 4 (strnum_literal). emitp (emitp): all (all). a=2 b:y=3 c:y:pan=4 a=2 b:y=3 c:y:pan=4,c:y:eks=4 a=2 b:y=3 c:y:pan=4,c:y:eks=4,c:y:wye=4 a=2 b:y=3 c:y:pan=4,c:y:eks=4,c:y:wye=4 a=2 b:y=3 c:y:pan=4,c:y:eks=4,c:y:wye=4 a=2 b:y=3 c:y:pan=4,c:y:eks=4,c:y:wye=4,c:y:zee=4 a=2 b:y=3 c:y:pan=4,c:y:eks=4,c:y:wye=4,c:y:zee=4 a=2 b:y=3 c:y:pan=4,c:y:eks=4,c:y:wye=4,c:y:zee=4 a=2 b:y=3 c:y:pan=4,c:y:eks=4,c:y:wye=4,c:y:zee=4,c:y:hat=4 a=2 b:y=3 c:y:pan=4,c:y:eks=4,c:y:wye=4,c:y:zee=4,c:y:hat=4 mlr --from reg_test/input/abixy put -q -v @["a"]=2; @["b"]["y"]=3; @["c"]["y"][$a]=4; emitp all AST ROOT: list (statement_list): = (oosvar_assignment): oosvar_keylist (oosvar_keylist): a (strnum_literal). 2 (strnum_literal). = (oosvar_assignment): oosvar_keylist (oosvar_keylist): b (strnum_literal). y (strnum_literal). 3 (strnum_literal). = (oosvar_assignment): oosvar_keylist (oosvar_keylist): c (strnum_literal). y (strnum_literal). a (field_name). 4 (strnum_literal). emitp (emitp): all (all). a=2 b:y=3 c:y:pan=4 a=2 b:y=3 c:y:pan=4,c:y:eks=4 a=2 b:y=3 c:y:pan=4,c:y:eks=4,c:y:wye=4 a=2 b:y=3 c:y:pan=4,c:y:eks=4,c:y:wye=4 a=2 b:y=3 c:y:pan=4,c:y:eks=4,c:y:wye=4 a=2 b:y=3 c:y:pan=4,c:y:eks=4,c:y:wye=4,c:y:zee=4 a=2 b:y=3 c:y:pan=4,c:y:eks=4,c:y:wye=4,c:y:zee=4 a=2 b:y=3 c:y:pan=4,c:y:eks=4,c:y:wye=4,c:y:zee=4 a=2 b:y=3 c:y:pan=4,c:y:eks=4,c:y:wye=4,c:y:zee=4,c:y:hat=4 a=2 b:y=3 c:y:pan=4,c:y:eks=4,c:y:wye=4,c:y:zee=4,c:y:hat=4 mlr put -v @s = NR; $t = typeof(@s); $u= typeof(@["s"]); emitp all reg_test/input/abixy AST ROOT: list (statement_list): = (oosvar_assignment): oosvar_keylist (oosvar_keylist): s (string_literal). NR (context_variable). = (srec_assignment): t (field_name). typeof (non_sigil_name): oosvar_keylist (oosvar_keylist): s (string_literal). = (srec_assignment): u (field_name). typeof (non_sigil_name): oosvar_keylist (oosvar_keylist): s (strnum_literal). emitp (emitp): all (all). s=1 a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533,t=MT_INT,u=MT_INT s=2 a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797,t=MT_INT,u=MT_INT s=3 a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776,t=MT_INT,u=MT_INT s=4 a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463,t=MT_INT,u=MT_INT s=5 a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729,t=MT_INT,u=MT_INT s=6 a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697,t=MT_INT,u=MT_INT s=7 a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694,t=MT_INT,u=MT_INT s=8 a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006,t=MT_INT,u=MT_INT s=9 a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059,t=MT_INT,u=MT_INT s=10 a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864,t=MT_INT,u=MT_INT mlr --opprint put -v @s = NR; $t = @s; $u=@["s"] reg_test/input/abixy AST ROOT: list (statement_list): = (oosvar_assignment): oosvar_keylist (oosvar_keylist): s (string_literal). NR (context_variable). = (srec_assignment): t (field_name). oosvar_keylist (oosvar_keylist): s (string_literal). = (srec_assignment): u (field_name). oosvar_keylist (oosvar_keylist): s (strnum_literal). a b i x y t u pan pan 1 0.3467901443380824 0.7268028627434533 1 1 eks pan 2 0.7586799647899636 0.5221511083334797 2 2 wye wye 3 0.20460330576630303 0.33831852551664776 3 3 eks wye 4 0.38139939387114097 0.13418874328430463 4 4 wye pan 5 0.5732889198020006 0.8636244699032729 5 5 zee pan 6 0.5271261600918548 0.49322128674835697 6 6 eks zee 7 0.6117840605678454 0.1878849191181694 7 7 zee wye 8 0.5985540091064224 0.976181385699006 8 8 hat wye 9 0.03144187646093577 0.7495507603507059 9 9 pan wye 10 0.5026260055412137 0.9526183602969864 10 10 mlr put -v @t["u"] = NR; $tu = @["t"]["u"]; emitp all reg_test/input/abixy AST ROOT: list (statement_list): = (oosvar_assignment): oosvar_keylist (oosvar_keylist): t (string_literal). u (strnum_literal). NR (context_variable). = (srec_assignment): tu (field_name). oosvar_keylist (oosvar_keylist): t (strnum_literal). u (strnum_literal). emitp (emitp): all (all). t:u=1 a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533,tu=1 t:u=2 a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797,tu=2 t:u=3 a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776,tu=3 t:u=4 a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463,tu=4 t:u=5 a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729,tu=5 t:u=6 a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697,tu=6 t:u=7 a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694,tu=7 t:u=8 a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006,tu=8 t:u=9 a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059,tu=9 t:u=10 a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864,tu=10 mlr put -v @["t"]["u"] = $y; emitp all reg_test/input/abixy AST ROOT: list (statement_list): = (oosvar_assignment): oosvar_keylist (oosvar_keylist): t (strnum_literal). u (strnum_literal). y (field_name). emitp (emitp): all (all). t:u=0.726803 a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533 t:u=0.522151 a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797 t:u=0.338319 a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776 t:u=0.134189 a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463 t:u=0.863624 a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729 t:u=0.493221 a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697 t:u=0.187885 a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694 t:u=0.976181 a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006 t:u=0.749551 a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059 t:u=0.952618 a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864 mlr --from reg_test/input/abixy put -v $sum = 0; for(k,v in $*) {if (k =~ "^[xy]$") {$sum += $[k]} } AST ROOT: list (statement_list): = (srec_assignment): sum (field_name). 0 (strnum_literal). for (for_srec): variables (for_variables): k (non_sigil_name). v (non_sigil_name). list (statement_list): if_head (if_head): if (if_item): =~ (operator): k (bound_variable). ^[xy]$ (strnum_literal). list (statement_list): = (srec_assignment): sum (field_name). + (operator): sum (field_name). indirect_field_name (indirect_field_name): k (bound_variable). a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533,sum=1.073593 a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797,sum=1.280831 a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776,sum=0.542922 a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463,sum=0.515588 a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729,sum=1.436913 a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697,sum=1.020347 a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694,sum=0.799669 a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006,sum=1.574735 a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059,sum=0.780993 a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864,sum=1.455244 mlr --from reg_test/input/abixy -n put -v $a = @s; $b = @t[1]; $c = @u[1][2]; $d = @v[1][2][3]; $e = @["s"]; $f = @["t"][1]; $g = @["u"][1][2]; $h = @["v"][1][2][3]; AST ROOT: list (statement_list): = (srec_assignment): a (field_name). oosvar_keylist (oosvar_keylist): s (string_literal). = (srec_assignment): b (field_name). oosvar_keylist (oosvar_keylist): t (string_literal). 1 (strnum_literal). = (srec_assignment): c (field_name). oosvar_keylist (oosvar_keylist): u (string_literal). 1 (strnum_literal). 2 (strnum_literal). = (srec_assignment): d (field_name). oosvar_keylist (oosvar_keylist): v (string_literal). 1 (strnum_literal). 2 (strnum_literal). 3 (strnum_literal). = (srec_assignment): e (field_name). oosvar_keylist (oosvar_keylist): s (strnum_literal). = (srec_assignment): f (field_name). oosvar_keylist (oosvar_keylist): t (strnum_literal). 1 (strnum_literal). = (srec_assignment): g (field_name). oosvar_keylist (oosvar_keylist): u (strnum_literal). 1 (strnum_literal). 2 (strnum_literal). = (srec_assignment): h (field_name). oosvar_keylist (oosvar_keylist): v (strnum_literal). 1 (strnum_literal). 2 (strnum_literal). 3 (strnum_literal). mlr -n put -v emit @* AST ROOT: list (statement_list): emit (emit): @* (full_oosvar). mlr -n put -v emitp @* AST ROOT: list (statement_list): emitp (emitp): @* (full_oosvar). mlr -n put -v unset @* AST ROOT: list (statement_list): unset (unset): @* (full_oosvar). ================================================================ FOR-OOSVAR DEPTH TESTS mlr --from reg_test/input/abixy put @o[1][2] = 7; for(k1,v in @*) {$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 mlr --from reg_test/input/abixy put @o[1][2] = 7; for((k1),v in @*) {$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 mlr --from reg_test/input/abixy put @o[1][2] = 7; for((k1,k2),v in @*) {$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 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=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 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=10.346790,y=100.726803 a=eks,b=pan,i=2,x=10.758680,y=100.522151 a=wye,b=wye,i=3,x=10.204603,y=100.338319 a=eks,b=wye,i=4,x=10.381399,y=100.134189 a=wye,b=pan,i=5,x=10.573289,y=100.863624 a=zee,b=pan,i=6,x=10.527126,y=100.493221 a=eks,b=zee,i=7,x=10.611784,y=100.187885 a=zee,b=wye,i=8,x=10.598554,y=100.976181 a=hat,b=wye,i=9,x=10.031442,y=100.749551 a=pan,b=wye,i=10,x=10.502626,y=100.952618 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=10.346790,y=100.726803 a=eks,b=pan,i=2,x=10.758680,y=100.522151 a=wye,b=wye,i=3,x=10.204603,y=100.338319 a=eks,b=wye,i=4,x=10.381399,y=100.134189 a=wye,b=pan,i=5,x=10.573289,y=100.863624 a=zee,b=pan,i=6,x=10.527126,y=100.493221 a=eks,b=zee,i=7,x=10.611784,y=100.187885 a=zee,b=wye,i=8,x=10.598554,y=100.976181 a=hat,b=wye,i=9,x=10.031442,y=100.749551 a=pan,b=wye,i=10,x=10.502626,y=100.952618 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 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 mlr --from reg_test/input/abixy put @o[1][2][3] = 7; for((k1,k2,k3),v in @o[1][2]) {$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