
================================================================
STATELESS MAPPERS

mlr cat ./reg_test/input/abixy
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 cat /dev/null

mlr cat -n ./reg_test/input/abixy-het
n=1,a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
n=2,a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
n=3,aaa=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
n=4,a=eks,bbb=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
n=5,a=wye,b=pan,i=5,xxx=0.5732889198020006,y=0.8636244699032729
n=6,a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
n=7,a=eks,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694
n=8,a=zee,b=wye,i=8,x=0.5985540091064224,yyy=0.976181385699006
n=9,aaa=hat,bbb=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
n=10,a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864

mlr cat -N counter ./reg_test/input/abixy-het
counter=1,a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
counter=2,a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
counter=3,aaa=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
counter=4,a=eks,bbb=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
counter=5,a=wye,b=pan,i=5,xxx=0.5732889198020006,y=0.8636244699032729
counter=6,a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
counter=7,a=eks,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694
counter=8,a=zee,b=wye,i=8,x=0.5985540091064224,yyy=0.976181385699006
counter=9,aaa=hat,bbb=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
counter=10,a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864

mlr cat -g a,b ./reg_test/input/abixy-het
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
aaa=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=eks,bbb=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=wye,b=pan,i=5,xxx=0.5732889198020006,y=0.8636244699032729
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=eks,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694
a=zee,b=wye,i=8,x=0.5985540091064224,yyy=0.976181385699006
aaa=hat,bbb=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864

mlr cat -g a,b ./reg_test/input/abixy-het
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
aaa=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=eks,bbb=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=wye,b=pan,i=5,xxx=0.5732889198020006,y=0.8636244699032729
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=eks,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694
a=zee,b=wye,i=8,x=0.5985540091064224,yyy=0.976181385699006
aaa=hat,bbb=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864

mlr cat -g a,b -n ./reg_test/input/abixy-het
n=1,a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
n=1,a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
n=1,aaa=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
n=2,a=eks,bbb=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
n=1,a=wye,b=pan,i=5,xxx=0.5732889198020006,y=0.8636244699032729
n=1,a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
n=1,a=eks,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694
n=1,a=zee,b=wye,i=8,x=0.5985540091064224,yyy=0.976181385699006
n=3,aaa=hat,bbb=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
n=1,a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864

mlr cat -g a,b -N counter ./reg_test/input/abixy-het
counter=1,a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
counter=1,a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
counter=1,aaa=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
counter=2,a=eks,bbb=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
counter=1,a=wye,b=pan,i=5,xxx=0.5732889198020006,y=0.8636244699032729
counter=1,a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
counter=1,a=eks,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694
counter=1,a=zee,b=wye,i=8,x=0.5985540091064224,yyy=0.976181385699006
counter=3,aaa=hat,bbb=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
counter=1,a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864

mlr cut -f a,x ./reg_test/input/abixy
a=pan,x=0.3467901443380824
a=eks,x=0.7586799647899636
a=wye,x=0.20460330576630303
a=eks,x=0.38139939387114097
a=wye,x=0.5732889198020006
a=zee,x=0.5271261600918548
a=eks,x=0.6117840605678454
a=zee,x=0.5985540091064224
a=hat,x=0.03144187646093577
a=pan,x=0.5026260055412137

mlr cut --complement -f a,x ./reg_test/input/abixy
b=pan,i=1,y=0.7268028627434533
b=pan,i=2,y=0.5221511083334797
b=wye,i=3,y=0.33831852551664776
b=wye,i=4,y=0.13418874328430463
b=pan,i=5,y=0.8636244699032729
b=pan,i=6,y=0.49322128674835697
b=zee,i=7,y=0.1878849191181694
b=wye,i=8,y=0.976181385699006
b=wye,i=9,y=0.7495507603507059
b=wye,i=10,y=0.9526183602969864

mlr cut -r -f c,e ./reg_test/input/having-fields-regex.dkvp
abc=1,def=11

abcd=3

abcde=5


mlr cut -r -f "C","E" ./reg_test/input/having-fields-regex.dkvp

ABC=2,DEF=12

ABCD=4

ABCDE=6

mlr cut -r -f "c"i,"e" ./reg_test/input/having-fields-regex.dkvp
abc=1,def=11
ABC=2
abcd=3
ABCD=4
abcde=5
ABCDE=6

mlr cut -r -f "C"i,"E" ./reg_test/input/having-fields-regex.dkvp
abc=1
ABC=2,DEF=12
abcd=3
ABCD=4
abcde=5
ABCDE=6

mlr cut -r -x -f c,e ./reg_test/input/having-fields-regex.dkvp

ABC=2,DEF=12
ghi=13
ABCD=4,GHI=14
ghi=15
ABCDE=6,GHI=16

mlr cut -r -x -f "C","E" ./reg_test/input/having-fields-regex.dkvp
abc=1,def=11

abcd=3,ghi=13
GHI=14
abcde=5,ghi=15
GHI=16

mlr cut -r -x -f "C","E"i ./reg_test/input/having-fields-regex.dkvp
abc=1

abcd=3,ghi=13
GHI=14
ghi=15
GHI=16

mlr cut -r -x -f "c","e"i ./reg_test/input/having-fields-regex.dkvp

ABC=2
ghi=13
ABCD=4,GHI=14
ghi=15
GHI=16

mlr --csvlite cut -r -f ^Name$,^Date_[0-9].*$ ./reg_test/input/date1.csv ./reg_test/input/date2.csv
Name,Date_201505
Alice,2015-05-14
Bob,2015-05-11
Chuck,2015-05-28
Denise,2015-05-02

Name,Date_201506
Alice,2015-06-23
Denise,2015-06-17
Chuck,2015-06-19
Bob,2015-06-19

mlr having-fields --at-least a,b ./reg_test/input/abixy
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 having-fields --at-least a,c ./reg_test/input/abixy

mlr having-fields --at-least a,b,i,x,y ./reg_test/input/abixy
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 having-fields --which-are a,b,i,x ./reg_test/input/abixy

mlr having-fields --which-are a,b,i,x,y ./reg_test/input/abixy
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 having-fields --which-are a,b,i,y,x ./reg_test/input/abixy
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 having-fields --which-are a,b,i,x,w ./reg_test/input/abixy

mlr having-fields --which-are a,b,i,x,y,z ./reg_test/input/abixy

mlr having-fields --at-most a,c ./reg_test/input/abixy

mlr having-fields --at-most a,b,i,x,y ./reg_test/input/abixy
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 having-fields --at-most a,b,i,x,y,z ./reg_test/input/abixy
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 having-fields --all-matching "^[a-z][a-z][a-z]$" ./reg_test/input/having-fields-regex.dkvp
abc=1,def=11

mlr having-fields --any-matching "^[a-z][a-z][a-z]$" ./reg_test/input/having-fields-regex.dkvp
abc=1,def=11
abcd=3,ghi=13
abcde=5,ghi=15

mlr having-fields --none-matching "^[a-z][a-z][a-z]$" ./reg_test/input/having-fields-regex.dkvp
ABC=2,DEF=12
ABCD=4,GHI=14
ABCDE=6,GHI=16

mlr having-fields --all-matching "^[a-z][a-z][a-z]$"i ./reg_test/input/having-fields-regex.dkvp
abc=1,def=11
ABC=2,DEF=12

mlr having-fields --any-matching "^[a-z][a-z][a-z]$"i ./reg_test/input/having-fields-regex.dkvp
abc=1,def=11
ABC=2,DEF=12
abcd=3,ghi=13
ABCD=4,GHI=14
abcde=5,ghi=15
ABCDE=6,GHI=16

mlr having-fields --none-matching "^[a-z][a-z][a-z]$"i ./reg_test/input/having-fields-regex.dkvp

mlr rename b,BEE,x,EKS ./reg_test/input/abixy
a=pan,BEE=pan,i=1,EKS=0.3467901443380824,y=0.7268028627434533
a=eks,BEE=pan,i=2,EKS=0.7586799647899636,y=0.5221511083334797
a=wye,BEE=wye,i=3,EKS=0.20460330576630303,y=0.33831852551664776
a=eks,BEE=wye,i=4,EKS=0.38139939387114097,y=0.13418874328430463
a=wye,BEE=pan,i=5,EKS=0.5732889198020006,y=0.8636244699032729
a=zee,BEE=pan,i=6,EKS=0.5271261600918548,y=0.49322128674835697
a=eks,BEE=zee,i=7,EKS=0.6117840605678454,y=0.1878849191181694
a=zee,BEE=wye,i=8,EKS=0.5985540091064224,y=0.976181385699006
a=hat,BEE=wye,i=9,EKS=0.03144187646093577,y=0.7495507603507059
a=pan,BEE=wye,i=10,EKS=0.5026260055412137,y=0.9526183602969864

mlr rename nonesuch,nonesuch,x,EKS ./reg_test/input/abixy
a=pan,b=pan,i=1,EKS=0.3467901443380824,y=0.7268028627434533
a=eks,b=pan,i=2,EKS=0.7586799647899636,y=0.5221511083334797
a=wye,b=wye,i=3,EKS=0.20460330576630303,y=0.33831852551664776
a=eks,b=wye,i=4,EKS=0.38139939387114097,y=0.13418874328430463
a=wye,b=pan,i=5,EKS=0.5732889198020006,y=0.8636244699032729
a=zee,b=pan,i=6,EKS=0.5271261600918548,y=0.49322128674835697
a=eks,b=zee,i=7,EKS=0.6117840605678454,y=0.1878849191181694
a=zee,b=wye,i=8,EKS=0.5985540091064224,y=0.976181385699006
a=hat,b=wye,i=9,EKS=0.03144187646093577,y=0.7495507603507059
a=pan,b=wye,i=10,EKS=0.5026260055412137,y=0.9526183602969864

mlr label NEW ./reg_test/input/abixy
NEW=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
NEW=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
NEW=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
NEW=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
NEW=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
NEW=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
NEW=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
NEW=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
NEW=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
NEW=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864

mlr label a,NEW,c ./reg_test/input/abixy
a=pan,NEW=pan,c=1,x=0.3467901443380824,y=0.7268028627434533
a=eks,NEW=pan,c=2,x=0.7586799647899636,y=0.5221511083334797
a=wye,NEW=wye,c=3,x=0.20460330576630303,y=0.33831852551664776
a=eks,NEW=wye,c=4,x=0.38139939387114097,y=0.13418874328430463
a=wye,NEW=pan,c=5,x=0.5732889198020006,y=0.8636244699032729
a=zee,NEW=pan,c=6,x=0.5271261600918548,y=0.49322128674835697
a=eks,NEW=zee,c=7,x=0.6117840605678454,y=0.1878849191181694
a=zee,NEW=wye,c=8,x=0.5985540091064224,y=0.976181385699006
a=hat,NEW=wye,c=9,x=0.03144187646093577,y=0.7495507603507059
a=pan,NEW=wye,c=10,x=0.5026260055412137,y=0.9526183602969864

mlr label 1,2,3,4,5,6,7,8 ./reg_test/input/abixy
1=pan,2=pan,3=1,4=0.3467901443380824,5=0.7268028627434533
1=eks,2=pan,3=2,4=0.7586799647899636,5=0.5221511083334797
1=wye,2=wye,3=3,4=0.20460330576630303,5=0.33831852551664776
1=eks,2=wye,3=4,4=0.38139939387114097,5=0.13418874328430463
1=wye,2=pan,3=5,4=0.5732889198020006,5=0.8636244699032729
1=zee,2=pan,3=6,4=0.5271261600918548,5=0.49322128674835697
1=eks,2=zee,3=7,4=0.6117840605678454,5=0.1878849191181694
1=zee,2=wye,3=8,4=0.5985540091064224,5=0.976181385699006
1=hat,2=wye,3=9,4=0.03144187646093577,5=0.7495507603507059
1=pan,2=wye,3=10,4=0.5026260055412137,5=0.9526183602969864

mlr label d,x,f ./reg_test/input/abixy
d=pan,x=pan,f=1,y=0.7268028627434533
d=eks,x=pan,f=2,y=0.5221511083334797
d=wye,x=wye,f=3,y=0.33831852551664776
d=eks,x=wye,f=4,y=0.13418874328430463
d=wye,x=pan,f=5,y=0.8636244699032729
d=zee,x=pan,f=6,y=0.49322128674835697
d=eks,x=zee,f=7,y=0.1878849191181694
d=zee,x=wye,f=8,y=0.976181385699006
d=hat,x=wye,f=9,y=0.7495507603507059
d=pan,x=wye,f=10,y=0.9526183602969864

mlr label d,x,d ./reg_test/input/abixy
mlr label: labels must be unique; got "d"

mlr --csvlite rename -r ^Date_[0-9].*$,Date ./reg_test/input/date1.csv ./reg_test/input/date2.csv
Name,Date,Extraneous
Alice,2015-05-14,foo
Bob,2015-05-11,bar
Chuck,2015-05-28,quux
Denise,2015-05-02,meep
Alice,2015-06-23,cafe
Denise,2015-06-17,feed
Chuck,2015-06-19,beef
Bob,2015-06-19,d00d

mlr --csvlite rename -r (.*)e(.*),\1EEE\2 ./reg_test/input/date1.csv ./reg_test/input/date2.csv
NamEEE,DatEEE_201505,ExtranEEEous
Alice,2015-05-14,foo
Bob,2015-05-11,bar
Chuck,2015-05-28,quux
Denise,2015-05-02,meep

NamEEE,DatEEE_201506,ExtranEEEous
Alice,2015-06-23,cafe
Denise,2015-06-17,feed
Chuck,2015-06-19,beef
Bob,2015-06-19,d00d

mlr --csvlite rename -r "(.*)e(.*)"i,\1EEE\2 ./reg_test/input/date1.csv ./reg_test/input/date2.csv
NamEEE,DatEEE_201505,ExtranEEEous
Alice,2015-05-14,foo
Bob,2015-05-11,bar
Chuck,2015-05-28,quux
Denise,2015-05-02,meep

NamEEE,DatEEE_201506,ExtranEEEous
Alice,2015-06-23,cafe
Denise,2015-06-17,feed
Chuck,2015-06-19,beef
Bob,2015-06-19,d00d

mlr --csvlite rename -r -g "(.*)e(.*)"i,\1EEE\2 ./reg_test/input/date1.csv ./reg_test/input/date2.csv
NamEEE,DatEEE_201505,ExtranEEEous
Alice,2015-05-14,foo
Bob,2015-05-11,bar
Chuck,2015-05-28,quux
Denise,2015-05-02,meep

NamEEE,DatEEE_201506,ExtranEEEous
Alice,2015-06-23,cafe
Denise,2015-06-17,feed
Chuck,2015-06-19,beef
Bob,2015-06-19,d00d

mlr --csvlite rename -r ^(.a.e)(_.*)?,AA\1BB\2CC ./reg_test/input/date1.csv
AANameBBCC,AADateBB_201505CC,Extraneous
Alice,2015-05-14,foo
Bob,2015-05-11,bar
Chuck,2015-05-28,quux
Denise,2015-05-02,meep

mlr --csvlite rename -r "e",EEE ./reg_test/input/date1.csv ./reg_test/input/date2.csv
NamEEE,DatEEE_201505,ExtranEEEous
Alice,2015-05-14,foo
Bob,2015-05-11,bar
Chuck,2015-05-28,quux
Denise,2015-05-02,meep

NamEEE,DatEEE_201506,ExtranEEEous
Alice,2015-06-23,cafe
Denise,2015-06-17,feed
Chuck,2015-06-19,beef
Bob,2015-06-19,d00d

mlr --csvlite rename -r -g "e",EEE ./reg_test/input/date1.csv ./reg_test/input/date2.csv
NamEEE,DatEEE_201505,ExtranEEEous
Alice,2015-05-14,foo
Bob,2015-05-11,bar
Chuck,2015-05-28,quux
Denise,2015-05-02,meep

NamEEE,DatEEE_201506,ExtranEEEous
Alice,2015-06-23,cafe
Denise,2015-06-17,feed
Chuck,2015-06-19,beef
Bob,2015-06-19,d00d

mlr --csvlite rename -r "e"i,EEE ./reg_test/input/date1.csv ./reg_test/input/date2.csv
NamEEE,DatEEE_201505,EEExtraneous
Alice,2015-05-14,foo
Bob,2015-05-11,bar
Chuck,2015-05-28,quux
Denise,2015-05-02,meep

NamEEE,DatEEE_201506,EEExtraneous
Alice,2015-06-23,cafe
Denise,2015-06-17,feed
Chuck,2015-06-19,beef
Bob,2015-06-19,d00d

mlr --csvlite rename -r -g "e"i,EEE ./reg_test/input/date1.csv ./reg_test/input/date2.csv
NamEEE,DatEEE_201505,EEExtranEEEous
Alice,2015-05-14,foo
Bob,2015-05-11,bar
Chuck,2015-05-28,quux
Denise,2015-05-02,meep

NamEEE,DatEEE_201506,EEExtranEEEous
Alice,2015-06-23,cafe
Denise,2015-06-17,feed
Chuck,2015-06-19,beef
Bob,2015-06-19,d00d

mlr regularize ./reg_test/input/regularize.dkvp
a=1,c=2,b=3
e=4,d=5
a=6,c=7,b=8

mlr --opprint bar -f x,y --lo 0 --hi 1 ./reg_test/input/abixy
a   b   i  x                                        y
pan pan 1  *************........................... *****************************...........
eks pan 2  ******************************.......... ********************....................
wye wye 3  ********................................ *************...........................
eks wye 4  ***************......................... *****...................................
wye pan 5  **********************.................. **********************************......
zee pan 6  *********************................... *******************.....................
eks zee 7  ************************................ *******.................................
zee wye 8  ***********************................. ***************************************.
hat wye 9  *....................................... *****************************...........
pan wye 10 ********************.................... **************************************..

mlr --opprint bar -f x,y -c c -x x -b b --lo 0.1 --hi 0.9 -w 20 ./reg_test/input/abixy
a   b   i  x                    y
pan pan 1  ccccccbbbbbbbbbbbbbb cccccccccccccccbbbbb
eks pan 2  ccccccccccccccccbbbb ccccccccccbbbbbbbbbb
wye wye 3  ccbbbbbbbbbbbbbbbbbb cccccbbbbbbbbbbbbbbb
eks wye 4  cccccccbbbbbbbbbbbbb xbbbbbbbbbbbbbbbbbbb
wye pan 5  cccccccccccbbbbbbbbb cccccccccccccccccccb
zee pan 6  ccccccccccbbbbbbbbbb cccccccccbbbbbbbbbbb
eks zee 7  ccccccccccccbbbbbbbb ccbbbbbbbbbbbbbbbbbb
zee wye 8  ccccccccccccbbbbbbbb cccccccccccccccccccx
hat wye 9  xbbbbbbbbbbbbbbbbbbb ccccccccccccccccbbbb
pan wye 10 ccccccccccbbbbbbbbbb cccccccccccccccccccx

mlr --opprint bar --auto -f x,y -w 10 ./reg_test/input/abixy
a   b   i  x                              y
pan pan 1  [0.0314419]****......[0.75868] [0.134189]*******...[0.976181]
eks pan 2  [0.0314419]*********#[0.75868] [0.134189]****......[0.976181]
wye wye 3  [0.0314419]**........[0.75868] [0.134189]**........[0.976181]
eks wye 4  [0.0314419]****......[0.75868] [0.134189]#.........[0.976181]
wye pan 5  [0.0314419]*******...[0.75868] [0.134189]********..[0.976181]
zee pan 6  [0.0314419]******....[0.75868] [0.134189]****......[0.976181]
eks zee 7  [0.0314419]*******...[0.75868] [0.134189]#.........[0.976181]
zee wye 8  [0.0314419]*******...[0.75868] [0.134189]*********#[0.976181]
hat wye 9  [0.0314419]#.........[0.75868] [0.134189]*******...[0.976181]
pan wye 10 [0.0314419]******....[0.75868] [0.134189]*********.[0.976181]

mlr altkv
a=b,c=d,e=f

mlr altkv
a=b,c=d,e=f,4=g


================================================================
TRIVIAL RETAINERS

mlr group-by a ./reg_test/input/abixy
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
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=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059

mlr group-by a,b ./reg_test/input/abixy
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 group-like ./reg_test/input/het.dkvp
host=jupiter
host=saturn
host=mars
host=jupiter
host=mars
host=saturn
df/tmp=2.43MB,uptime=32345sec
df/tmp=1.34MB,uptime=234214132sec
df/tmp=4.97MB,uptime=345089805sec
df/tmp=0.04MB,uptime=890sec
df/tmp=8.55MB,uptime=787897777sec
df/tmp=9.47MB,uptime=234289080sec

mlr tac ./reg_test/input/abixy
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533

mlr tac /dev/null

mlr --opprint unsparsify ./reg_test/input/abixy
a   b   i  x                   y
pan pan 1  0.3467901443380824  0.7268028627434533
eks pan 2  0.7586799647899636  0.5221511083334797
wye wye 3  0.20460330576630303 0.33831852551664776
eks wye 4  0.38139939387114097 0.13418874328430463
wye pan 5  0.5732889198020006  0.8636244699032729
zee pan 6  0.5271261600918548  0.49322128674835697
eks zee 7  0.6117840605678454  0.1878849191181694
zee wye 8  0.5985540091064224  0.976181385699006
hat wye 9  0.03144187646093577 0.7495507603507059
pan wye 10 0.5026260055412137  0.9526183602969864

mlr --opprint unsparsify ./reg_test/input/abixy-het
a   b   i  x                   y                   aaa bbb xxx                iii yyy
pan pan 1  0.3467901443380824  0.7268028627434533  -   -   -                  -   -
eks pan 2  0.7586799647899636  0.5221511083334797  -   -   -                  -   -
-   wye 3  0.20460330576630303 0.33831852551664776 wye -   -                  -   -
eks -   4  0.38139939387114097 0.13418874328430463 -   wye -                  -   -
wye pan 5  -                   0.8636244699032729  -   -   0.5732889198020006 -   -
zee pan 6  0.5271261600918548  0.49322128674835697 -   -   -                  -   -
eks zee -  0.6117840605678454  0.1878849191181694  -   -   -                  7   -
zee wye 8  0.5985540091064224  -                   -   -   -                  -   0.976181385699006
-   -   9  0.03144187646093577 0.7495507603507059  hat wye -                  -   -
pan wye 10 0.5026260055412137  0.9526183602969864  -   -   -                  -   -

mlr --opprint unsparsify -f nonesuch ./reg_test/input/abixy-het
a   b   i x                  y                  nonesuch
pan pan 1 0.3467901443380824 0.7268028627434533 -
eks pan 2 0.7586799647899636 0.5221511083334797 -

aaa b   i x                   y                   nonesuch
wye wye 3 0.20460330576630303 0.33831852551664776 -

a   bbb i x                   y                   nonesuch
eks wye 4 0.38139939387114097 0.13418874328430463 -

a   b   i xxx                y                  nonesuch
wye pan 5 0.5732889198020006 0.8636244699032729 -

a   b   i x                  y                   nonesuch
zee pan 6 0.5271261600918548 0.49322128674835697 -

a   b   iii x                  y                  nonesuch
eks zee 7   0.6117840605678454 0.1878849191181694 -

a   b   i x                  yyy               nonesuch
zee wye 8 0.5985540091064224 0.976181385699006 -

aaa bbb i x                   y                  nonesuch
hat wye 9 0.03144187646093577 0.7495507603507059 -

a   b   i  x                  y                  nonesuch
pan wye 10 0.5026260055412137 0.9526183602969864 -

mlr --opprint unsparsify -f a,b,i,x,y ./reg_test/input/abixy-het
a   b   i x                  y
pan pan 1 0.3467901443380824 0.7268028627434533
eks pan 2 0.7586799647899636 0.5221511083334797

aaa b   i x                   y                   a
wye wye 3 0.20460330576630303 0.33831852551664776 -

a   bbb i x                   y                   b
eks wye 4 0.38139939387114097 0.13418874328430463 -

a   b   i xxx                y                  x
wye pan 5 0.5732889198020006 0.8636244699032729 -

a   b   i x                  y
zee pan 6 0.5271261600918548 0.49322128674835697

a   b   iii x                  y                  i
eks zee 7   0.6117840605678454 0.1878849191181694 -

a   b   i x                  yyy               y
zee wye 8 0.5985540091064224 0.976181385699006 -

aaa bbb i x                   y                  a b
hat wye 9 0.03144187646093577 0.7495507603507059 - -

a   b   i  x                  y
pan wye 10 0.5026260055412137 0.9526183602969864

mlr --opprint unsparsify -f aaa,bbb,xxx,iii,yyy ./reg_test/input/abixy-het
a   b   i x                  y                  aaa bbb xxx iii yyy
pan pan 1 0.3467901443380824 0.7268028627434533 -   -   -   -   -
eks pan 2 0.7586799647899636 0.5221511083334797 -   -   -   -   -

aaa b   i x                   y                   bbb xxx iii yyy
wye wye 3 0.20460330576630303 0.33831852551664776 -   -   -   -

a   bbb i x                   y                   aaa xxx iii yyy
eks wye 4 0.38139939387114097 0.13418874328430463 -   -   -   -

a   b   i xxx                y                  aaa bbb iii yyy
wye pan 5 0.5732889198020006 0.8636244699032729 -   -   -   -

a   b   i x                  y                   aaa bbb xxx iii yyy
zee pan 6 0.5271261600918548 0.49322128674835697 -   -   -   -   -

a   b   iii x                  y                  aaa bbb xxx yyy
eks zee 7   0.6117840605678454 0.1878849191181694 -   -   -   -

a   b   i x                  yyy               aaa bbb xxx iii
zee wye 8 0.5985540091064224 0.976181385699006 -   -   -   -

aaa bbb i x                   y                  xxx iii yyy
hat wye 9 0.03144187646093577 0.7495507603507059 -   -   -

a   b   i  x                  y                  aaa bbb xxx iii yyy
pan wye 10 0.5026260055412137 0.9526183602969864 -   -   -   -   -

mlr --opprint unsparsify -f a,b,i,x,y,aaa,bbb,xxx,iii,yyy ./reg_test/input/abixy-het
a   b   i x                  y                  aaa bbb xxx iii yyy
pan pan 1 0.3467901443380824 0.7268028627434533 -   -   -   -   -
eks pan 2 0.7586799647899636 0.5221511083334797 -   -   -   -   -

aaa b   i x                   y                   a bbb xxx iii yyy
wye wye 3 0.20460330576630303 0.33831852551664776 - -   -   -   -

a   bbb i x                   y                   b aaa xxx iii yyy
eks wye 4 0.38139939387114097 0.13418874328430463 - -   -   -   -

a   b   i xxx                y                  x aaa bbb iii yyy
wye pan 5 0.5732889198020006 0.8636244699032729 - -   -   -   -

a   b   i x                  y                   aaa bbb xxx iii yyy
zee pan 6 0.5271261600918548 0.49322128674835697 -   -   -   -   -

a   b   iii x                  y                  i aaa bbb xxx yyy
eks zee 7   0.6117840605678454 0.1878849191181694 - -   -   -   -

a   b   i x                  yyy               y aaa bbb xxx iii
zee wye 8 0.5985540091064224 0.976181385699006 - -   -   -   -

aaa bbb i x                   y                  a b xxx iii yyy
hat wye 9 0.03144187646093577 0.7495507603507059 - - -   -   -

a   b   i  x                  y                  aaa bbb xxx iii yyy
pan wye 10 0.5026260055412137 0.9526183602969864 -   -   -   -   -

mlr --opprint unsparsify -f a,b,i,x,y,aaa,bbb,xxx,iii,yyy then regularize ./reg_test/input/abixy-het
a   b   i  x                   y                   aaa bbb xxx                iii yyy
pan pan 1  0.3467901443380824  0.7268028627434533  -   -   -                  -   -
eks pan 2  0.7586799647899636  0.5221511083334797  -   -   -                  -   -
-   wye 3  0.20460330576630303 0.33831852551664776 wye -   -                  -   -
eks -   4  0.38139939387114097 0.13418874328430463 -   wye -                  -   -
wye pan 5  -                   0.8636244699032729  -   -   0.5732889198020006 -   -
zee pan 6  0.5271261600918548  0.49322128674835697 -   -   -                  -   -
eks zee -  0.6117840605678454  0.1878849191181694  -   -   -                  7   -
zee wye 8  0.5985540091064224  -                   -   -   -                  -   0.976181385699006
-   -   9  0.03144187646093577 0.7495507603507059  hat wye -                  -   -
pan wye 10 0.5026260055412137  0.9526183602969864  -   -   -                  -   -

mlr --csv skip-trivial-records ./reg_test/input/trivial-records.csv
a,b,c
1,2,3
4,,6
,8,9

mlr --csv remove-empty-columns ./reg_test/input/remove-empty-columns.csv
a,c,e
1,3,5
2,4,5
3,5,7

mlr format-values ./reg_test/input/abixy
a=pan,b=pan,i=1,x=0.346790,y=0.726803
a=eks,b=pan,i=2,x=0.758680,y=0.522151
a=wye,b=wye,i=3,x=0.204603,y=0.338319
a=eks,b=wye,i=4,x=0.381399,y=0.134189
a=wye,b=pan,i=5,x=0.573289,y=0.863624
a=zee,b=pan,i=6,x=0.527126,y=0.493221
a=eks,b=zee,i=7,x=0.611784,y=0.187885
a=zee,b=wye,i=8,x=0.598554,y=0.976181
a=hat,b=wye,i=9,x=0.031442,y=0.749551
a=pan,b=wye,i=10,x=0.502626,y=0.952618

mlr format-values -n ./reg_test/input/abixy
a=pan,b=pan,i=1.000000,x=0.346790,y=0.726803
a=eks,b=pan,i=2.000000,x=0.758680,y=0.522151
a=wye,b=wye,i=3.000000,x=0.204603,y=0.338319
a=eks,b=wye,i=4.000000,x=0.381399,y=0.134189
a=wye,b=pan,i=5.000000,x=0.573289,y=0.863624
a=zee,b=pan,i=6.000000,x=0.527126,y=0.493221
a=eks,b=zee,i=7.000000,x=0.611784,y=0.187885
a=zee,b=wye,i=8.000000,x=0.598554,y=0.976181
a=hat,b=wye,i=9.000000,x=0.031442,y=0.749551
a=pan,b=wye,i=10.000000,x=0.502626,y=0.952618

mlr format-values -i %08llx -f %.6le -s X%sX ./reg_test/input/abixy
a=XpanX,b=XpanX,i=00000001,x=3.467901e-01,y=7.268029e-01
a=XeksX,b=XpanX,i=00000002,x=7.586800e-01,y=5.221511e-01
a=XwyeX,b=XwyeX,i=00000003,x=2.046033e-01,y=3.383185e-01
a=XeksX,b=XwyeX,i=00000004,x=3.813994e-01,y=1.341887e-01
a=XwyeX,b=XpanX,i=00000005,x=5.732889e-01,y=8.636245e-01
a=XzeeX,b=XpanX,i=00000006,x=5.271262e-01,y=4.932213e-01
a=XeksX,b=XzeeX,i=00000007,x=6.117841e-01,y=1.878849e-01
a=XzeeX,b=XwyeX,i=00000008,x=5.985540e-01,y=9.761814e-01
a=XhatX,b=XwyeX,i=00000009,x=3.144188e-02,y=7.495508e-01
a=XpanX,b=XwyeX,i=0000000a,x=5.026260e-01,y=9.526184e-01

mlr format-values -i %08llx -f %.6le -s X%sX -n ./reg_test/input/abixy
a=XpanX,b=XpanX,i=1.000000e+00,x=3.467901e-01,y=7.268029e-01
a=XeksX,b=XpanX,i=2.000000e+00,x=7.586800e-01,y=5.221511e-01
a=XwyeX,b=XwyeX,i=3.000000e+00,x=2.046033e-01,y=3.383185e-01
a=XeksX,b=XwyeX,i=4.000000e+00,x=3.813994e-01,y=1.341887e-01
a=XwyeX,b=XpanX,i=5.000000e+00,x=5.732889e-01,y=8.636245e-01
a=XzeeX,b=XpanX,i=6.000000e+00,x=5.271262e-01,y=4.932213e-01
a=XeksX,b=XzeeX,i=7.000000e+00,x=6.117841e-01,y=1.878849e-01
a=XzeeX,b=XwyeX,i=8.000000e+00,x=5.985540e-01,y=9.761814e-01
a=XhatX,b=XwyeX,i=9.000000e+00,x=3.144188e-02,y=7.495508e-01
a=XpanX,b=XwyeX,i=1.000000e+01,x=5.026260e-01,y=9.526184e-01


================================================================
REPEAT

mlr repeat -n 5 ./reg_test/input/repeat-input.dat
a=1,b=2,c=3
a=1,b=2,c=3
a=1,b=2,c=3
a=1,b=2,c=3
a=1,b=2,c=3
a=3,b=4,c=5
a=3,b=4,c=5
a=3,b=4,c=5
a=3,b=4,c=5
a=3,b=4,c=5
a=6,b=,c=7
a=6,b=,c=7
a=6,b=,c=7
a=6,b=,c=7
a=6,b=,c=7
a=8,x=,c=9
a=8,x=,c=9
a=8,x=,c=9
a=8,x=,c=9
a=8,x=,c=9

mlr repeat -f a ./reg_test/input/repeat-input.dat
a=1,b=2,c=3
a=3,b=4,c=5
a=3,b=4,c=5
a=3,b=4,c=5
a=6,b=,c=7
a=6,b=,c=7
a=6,b=,c=7
a=6,b=,c=7
a=6,b=,c=7
a=6,b=,c=7
a=8,x=,c=9
a=8,x=,c=9
a=8,x=,c=9
a=8,x=,c=9
a=8,x=,c=9
a=8,x=,c=9
a=8,x=,c=9
a=8,x=,c=9

mlr repeat -f b ./reg_test/input/repeat-input.dat
a=1,b=2,c=3
a=1,b=2,c=3
a=3,b=4,c=5
a=3,b=4,c=5
a=3,b=4,c=5
a=3,b=4,c=5

mlr repeat -f c ./reg_test/input/repeat-input.dat
a=1,b=2,c=3
a=1,b=2,c=3
a=1,b=2,c=3
a=3,b=4,c=5
a=3,b=4,c=5
a=3,b=4,c=5
a=3,b=4,c=5
a=3,b=4,c=5
a=6,b=,c=7
a=6,b=,c=7
a=6,b=,c=7
a=6,b=,c=7
a=6,b=,c=7
a=6,b=,c=7
a=6,b=,c=7
a=8,x=,c=9
a=8,x=,c=9
a=8,x=,c=9
a=8,x=,c=9
a=8,x=,c=9
a=8,x=,c=9
a=8,x=,c=9
a=8,x=,c=9
a=8,x=,c=9


================================================================
MAPPER NOTHING

mlr cat then nothing

mlr cat then nothing ./reg_test/input/abixy

mlr tac then nothing ./reg_test/input/abixy

mlr cat then nothing ./reg_test/input/abixy ./reg_test/input/abixy

mlr cat then nothing then cat ./reg_test/input/abixy


================================================================
CHAINING

mlr cat then cat ./reg_test/input/short
a=1
b=2
c=3

mlr cat then tac ./reg_test/input/short
c=3
b=2
a=1

mlr tac then cat ./reg_test/input/short
c=3
b=2
a=1

mlr tac then tac ./reg_test/input/short
a=1
b=2
c=3

mlr cat then cat then cat ./reg_test/input/short
a=1
b=2
c=3

mlr cat then cat then tac ./reg_test/input/short
c=3
b=2
a=1

mlr cat then tac then cat ./reg_test/input/short
c=3
b=2
a=1

mlr cat then tac then tac ./reg_test/input/short
a=1
b=2
c=3

mlr tac then cat then cat ./reg_test/input/short
c=3
b=2
a=1

mlr tac then cat then tac ./reg_test/input/short
a=1
b=2
c=3

mlr tac then tac then cat ./reg_test/input/short
a=1
b=2
c=3

mlr tac then tac then tac ./reg_test/input/short
c=3
b=2
a=1


================================================================
HEAD/TAIL/ETC.

mlr head -n 2 ./reg_test/input/abixy-het
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797

mlr head -n 2 -g a ./reg_test/input/abixy-het
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=eks,bbb=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=wye,b=pan,i=5,xxx=0.5732889198020006,y=0.8636244699032729
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=zee,b=wye,i=8,x=0.5985540091064224,yyy=0.976181385699006
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864

mlr head -n 2 -g a,b ./reg_test/input/abixy-het
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=pan,i=5,xxx=0.5732889198020006,y=0.8636244699032729
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=eks,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694
a=zee,b=wye,i=8,x=0.5985540091064224,yyy=0.976181385699006
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864

mlr then cat then head -n 2 -g a,b then tac ./reg_test/input/abixy-het
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864
a=zee,b=wye,i=8,x=0.5985540091064224,yyy=0.976181385699006
a=eks,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=wye,b=pan,i=5,xxx=0.5732889198020006,y=0.8636244699032729
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533

mlr head -n 2 then put end{ print "Final NR is ".NR} ./reg_test/input/abixy-wide
a=cat,b=pan,i=1,x=0.5117389009583777,y=0.08295224980036853,x2=0.2618767027540883,xy=0.0424498931448654,y2=0.006881075746942741
a=pan,b=wye,i=2,x=0.5225940442098578,y=0.511678736087022,x2=0.27310453504361476,xy=0.2674002600279053,y2=0.26181512896361225
Final NR is 3

mlr head -n 2 -g a then put end{ print "Final NR is ".NR} ./reg_test/input/abixy-wide
a=cat,b=pan,i=1,x=0.5117389009583777,y=0.08295224980036853,x2=0.2618767027540883,xy=0.0424498931448654,y2=0.006881075746942741
a=pan,b=wye,i=2,x=0.5225940442098578,y=0.511678736087022,x2=0.27310453504361476,xy=0.2674002600279053,y2=0.26181512896361225
a=wye,b=cat,i=3,x=0.8150401717873625,y=0.07989551500795256,x2=0.6642904816271734,xy=0.06511805427712146,y2=0.006383293318385972
a=dog,b=hat,i=4,x=0.4488733555675044,y=0.5730530513123552,x2=0.20148728933843124,xy=0.25722824606077416,y2=0.32838979961840076
a=dog,b=pan,i=5,x=0.2946557960430134,y=0.6850437256584863,x2=0.08682203814174191,xy=0.20185210430817294,y2=0.46928490606405937
a=wye,b=cat,i=6,x=0.048709182664292916,y=0.5851879044762575,x2=0.0023725844758234536,xy=0.02850402453206882,y2=0.34244488354531344
a=pan,b=pan,i=8,x=0.616507208914765,y=0.25924335982487057,x2=0.38008113864387366,xy=0.15982540019531707,y2=0.06720711961328732
a=hat,b=hat,i=9,x=0.33786884067769307,y=0.6036735617015514,x2=0.11415535350088835,xy=0.203962486439877,y2=0.3644217690974368
a=cat,b=hat,i=12,x=0.6335445699880142,y=0.15467178563525052,x2=0.4013787221612979,xy=0.0979914699195631,y2=0.02392336127159689
a=hat,b=wye,i=13,x=0.35922068401384877,y=0.8502678133887914,x2=0.1290394998233774,xy=0.30543378552048117,y2=0.7229553544849566
Final NR is 2000

mlr cat then head -n 2 then put end{ print "Final NR is ".NR} ./reg_test/input/abixy-wide
a=cat,b=pan,i=1,x=0.5117389009583777,y=0.08295224980036853,x2=0.2618767027540883,xy=0.0424498931448654,y2=0.006881075746942741
a=pan,b=wye,i=2,x=0.5225940442098578,y=0.511678736087022,x2=0.27310453504361476,xy=0.2674002600279053,y2=0.26181512896361225
Final NR is 3

mlr tac then head -n 2 then put end{ print "Final NR is ".NR} ./reg_test/input/abixy-wide
Final NR is 2000
a=wye,b=cat,i=2000,x=0.10887569736363611,y=0.3480524315645718,x2=0.01185391747641808,xy=0.037894451205701986,y2=0.12114049511801092
a=hat,b=dog,i=1999,x=0.010819574860139292,y=0.8983779455002124,x2=0.00011706320015415817,xy=0.009720067434037685,y2=0.8070829329611827

mlr head -n 2 then put end{ print "Final NR is ".NR} ./reg_test/input/abixy-wide ./reg_test/input/abixy-wide ./reg_test/input/abixy-wide
a=cat,b=pan,i=1,x=0.5117389009583777,y=0.08295224980036853,x2=0.2618767027540883,xy=0.0424498931448654,y2=0.006881075746942741
a=pan,b=wye,i=2,x=0.5225940442098578,y=0.511678736087022,x2=0.27310453504361476,xy=0.2674002600279053,y2=0.26181512896361225
Final NR is 3

mlr tail -n 2 ./reg_test/input/abixy-het
aaa=hat,bbb=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864

mlr tail -n 2 -g a ./reg_test/input/abixy-het
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864
a=eks,bbb=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=eks,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694
a=wye,b=pan,i=5,xxx=0.5732889198020006,y=0.8636244699032729
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=zee,b=wye,i=8,x=0.5985540091064224,yyy=0.976181385699006

mlr tail -n 2 -g a,b ./reg_test/input/abixy-het
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=pan,i=5,xxx=0.5732889198020006,y=0.8636244699032729
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=eks,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694
a=zee,b=wye,i=8,x=0.5985540091064224,yyy=0.976181385699006
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864

mlr top -f x,y -n 2 ./reg_test/input/abixy-het
top_idx=1,x_top=0.758680,y_top=0.952618
top_idx=2,x_top=0.611784,y_top=0.749551

mlr top -f x,y -n 2 -g a ./reg_test/input/abixy-het
a=pan,top_idx=1,x_top=0.502626,y_top=0.952618
a=pan,top_idx=2,x_top=0.346790,y_top=0.726803
a=eks,top_idx=1,x_top=0.758680,y_top=0.522151
a=eks,top_idx=2,x_top=0.611784,y_top=0.187885
a=zee,top_idx=1,x_top=0.527126,y_top=0.493221
a=zee,top_idx=2,x_top=,y_top=

mlr top -f x,y -n 2 -g a,b ./reg_test/input/abixy-het
a=pan,b=pan,top_idx=1,x_top=0.346790,y_top=0.726803
a=pan,b=pan,top_idx=2,x_top=,y_top=
a=eks,b=pan,top_idx=1,x_top=0.758680,y_top=0.522151
a=eks,b=pan,top_idx=2,x_top=,y_top=
a=zee,b=pan,top_idx=1,x_top=0.527126,y_top=0.493221
a=zee,b=pan,top_idx=2,x_top=,y_top=
a=eks,b=zee,top_idx=1,x_top=0.611784,y_top=0.187885
a=eks,b=zee,top_idx=2,x_top=,y_top=
a=pan,b=wye,top_idx=1,x_top=0.502626,y_top=0.952618
a=pan,b=wye,top_idx=2,x_top=,y_top=

mlr top -f x,y -n 2 ./reg_test/input/ints.dkvp
top_idx=1,x_top=9,y_top=9
top_idx=2,x_top=8,y_top=9

mlr top -f x,y -n 2 -F ./reg_test/input/ints.dkvp
top_idx=1,x_top=9.000000,y_top=9.000000
top_idx=2,x_top=8.000000,y_top=9.000000

mlr top -n 4 -f x ./reg_test/input/abixy-wide
top_idx=1,x_top=0.999730
top_idx=2,x_top=0.999308
top_idx=3,x_top=0.997339
top_idx=4,x_top=0.997245

mlr top -n 1 -f x,y ./reg_test/input/abixy-wide
top_idx=1,x_top=0.999730,y_top=0.999522

mlr top -n 4 -f x -g a ./reg_test/input/abixy-wide
a=cat,top_idx=1,x_top=0.996359
a=cat,top_idx=2,x_top=0.990588
a=cat,top_idx=3,x_top=0.990160
a=cat,top_idx=4,x_top=0.986548
a=pan,top_idx=1,x_top=0.999730
a=pan,top_idx=2,x_top=0.999308
a=pan,top_idx=3,x_top=0.996583
a=pan,top_idx=4,x_top=0.990853
a=wye,top_idx=1,x_top=0.997339
a=wye,top_idx=2,x_top=0.996525
a=wye,top_idx=3,x_top=0.995414
a=wye,top_idx=4,x_top=0.994219
a=dog,top_idx=1,x_top=0.997245
a=dog,top_idx=2,x_top=0.988581
a=dog,top_idx=3,x_top=0.980266
a=dog,top_idx=4,x_top=0.977280
a=hat,top_idx=1,x_top=0.997014
a=hat,top_idx=2,x_top=0.995705
a=hat,top_idx=3,x_top=0.992879
a=hat,top_idx=4,x_top=0.989639

mlr top -n 1 -f x,y -g a ./reg_test/input/abixy-wide
a=cat,top_idx=1,x_top=0.996359,y_top=0.997929
a=pan,top_idx=1,x_top=0.999730,y_top=0.999319
a=wye,top_idx=1,x_top=0.997339,y_top=0.999450
a=dog,top_idx=1,x_top=0.997245,y_top=0.999522
a=hat,top_idx=1,x_top=0.997014,y_top=0.991400

mlr top -a -n 4 -f x ./reg_test/input/abixy-wide
a=pan,b=cat,i=1943,x=0.9997301774748071,y=0.8408385083267972,x2=0.9994604277538093,xy=0.8406116311572011,y2=0.7070093970852334
a=pan,b=dog,i=552,x=0.9993077485337599,y=0.10019859749555626,x2=0.9986159762796124,xy=0.10012923486952477,y2=0.010039758940076493
a=wye,b=pan,i=568,x=0.9973387930844961,y=0.5711453274816489,x2=0.9946846681912394,xy=0.569625391586397,y2=0.32620698510412
a=dog,b=pan,i=1613,x=0.997245171384539,y=0.8188847898688517,x2=0.9944979318497786,xy=0.8166289026169553,y2=0.6705722990785534

mlr top -a -n 4 -f x -g a ./reg_test/input/abixy-wide
a=cat,b=dog,i=901,x=0.9963591865818606,y=0.9423606044154952,x2=0.9927316286860669,xy=0.9389296452822133,y2=0.8880435087543374
a=cat,b=wye,i=135,x=0.9905881531288986,y=0.7789092765450115,x2=0.9812648891193222,xy=0.7715783017076895,y2=0.6066996610878732
a=cat,b=hat,i=975,x=0.9901595235021967,y=0.8592860989306361,x2=0.9804158819820973,xy=0.8508303142692202,y2=0.738372599815431
a=cat,b=dog,i=748,x=0.986548192318023,y=0.22327955924073406,x2=0.973277335765959,xy=0.2202760455505111,y2=0.04985376157473647
a=pan,b=cat,i=1943,x=0.9997301774748071,y=0.8408385083267972,x2=0.9994604277538093,xy=0.8406116311572011,y2=0.7070093970852334
a=pan,b=dog,i=552,x=0.9993077485337599,y=0.10019859749555626,x2=0.9986159762796124,xy=0.10012923486952477,y2=0.010039758940076493
a=pan,b=pan,i=756,x=0.9965826588776338,y=0.8864833103309704,x2=0.9931769959756142,xy=0.883453894460285,y2=0.7858526594953555
a=pan,b=wye,i=1876,x=0.9908531016291003,y=0.318873165751998,x2=0.9817898690080082,xy=0.3159564653116574,y2=0.10168009583670118
a=wye,b=pan,i=568,x=0.9973387930844961,y=0.5711453274816489,x2=0.9946846681912394,xy=0.569625391586397,y2=0.32620698510412
a=wye,b=dog,i=1772,x=0.9965249307670624,y=0.8078766237661098,x2=0.9930619376402985,xy=0.8050691965668507,y2=0.6526646392277285
a=wye,b=pan,i=450,x=0.9954136776717515,y=0.8564839236024028,x2=0.9908483896960015,xy=0.8525558122597992,y2=0.7335647113893665
a=wye,b=dog,i=882,x=0.9942189496990836,y=0.3298671968153588,x2=0.988471319940749,xy=0.32796021795794694,y2=0.10881236753482267
a=dog,b=pan,i=1613,x=0.997245171384539,y=0.8188847898688517,x2=0.9944979318497786,xy=0.8166289026169553,y2=0.6705722990785534
a=dog,b=hat,i=1680,x=0.9885812365291148,y=0.048768165346359305,x2=0.9772928612174336,xy=0.04821129320136021,y2=0.0023783339512498405
a=dog,b=wye,i=1331,x=0.9802656048578349,y=0.9431768957041479,x2=0.9609206560672968,xy=0.9245638701553616,y2=0.889582656590113
a=dog,b=pan,i=978,x=0.9772797759762182,y=0.5328687567382687,x2=0.9550757605321272,xy=0.5207618592099011,y2=0.2839491119077882
a=hat,b=dog,i=1894,x=0.9970136511026203,y=0.2054109087831395,x2=0.9940362204849775,xy=0.2047974801421852,y2=0.04219364144711526
a=hat,b=hat,i=818,x=0.9957052214494239,y=0.026702922142899044,x2=0.9914288880216462,xy=0.026588239005642018,y2=0.0007130460509697281
a=hat,b=hat,i=1513,x=0.9928788688650781,y=0.1805357299725343,x2=0.9858084482387971,xy=0.17925011136486105,y2=0.03259314979671582
a=hat,b=dog,i=1768,x=0.9896393441122658,y=0.5323182982465756,x2=0.9793860314149557,xy=0.5268031315356986,y2=0.2833627706481302

mlr top -n 3 -f x,y ./reg_test/input/near-ovf.dkvp
top_idx=1,x_top=9223372036854775807,y_top=-9223372036854775801
top_idx=2,x_top=9223372036854775806,y_top=-9223372036854775802
top_idx=3,x_top=9223372036854775805,y_top=-9223372036854775803

mlr top -n 3 -f x,y --min ./reg_test/input/near-ovf.dkvp
top_idx=1,x_top=9223372036854775801,y_top=-9223372036854775807
top_idx=2,x_top=9223372036854775802,y_top=-9223372036854775806
top_idx=3,x_top=9223372036854775803,y_top=-9223372036854775805

mlr top -F -n 3 -f x,y ./reg_test/input/near-ovf.dkvp
top_idx=1,x_top=9223372036854775808.000000,y_top=-9223372036854775808.000000
top_idx=2,x_top=9223372036854775808.000000,y_top=-9223372036854775808.000000
top_idx=3,x_top=9223372036854775808.000000,y_top=-9223372036854775808.000000

mlr top -F -n 3 -f x,y --min ./reg_test/input/near-ovf.dkvp
top_idx=1,x_top=9223372036854775808.000000,y_top=-9223372036854775808.000000
top_idx=2,x_top=9223372036854775808.000000,y_top=-9223372036854775808.000000
top_idx=3,x_top=9223372036854775808.000000,y_top=-9223372036854775808.000000

mlr --seed 12345 bootstrap ./reg_test/input/abixy-het
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864
a=eks,bbb=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
aaa=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864
a=eks,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694
a=zee,b=wye,i=8,x=0.5985540091064224,yyy=0.976181385699006
a=eks,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694

mlr --seed 12345 bootstrap -n 2 ./reg_test/input/abixy-het
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864
a=eks,bbb=wye,i=4,x=0.38139939387114097,y=0.13418874328430463

mlr --seed 12345 bootstrap -n 20 ./reg_test/input/abixy-het
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864
a=eks,bbb=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
aaa=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864
a=eks,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694
a=zee,b=wye,i=8,x=0.5985540091064224,yyy=0.976181385699006
a=eks,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694
a=zee,b=wye,i=8,x=0.5985540091064224,yyy=0.976181385699006
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
aaa=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=eks,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694
aaa=hat,bbb=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
aaa=hat,bbb=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864
a=zee,b=wye,i=8,x=0.5985540091064224,yyy=0.976181385699006

mlr --seed 12345 sample -k 2 ./reg_test/input/abixy-het
aaa=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797

mlr --seed 12345 sample -k 2 -g a ./reg_test/input/abixy-het
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=eks,bbb=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=wye,b=pan,i=5,xxx=0.5732889198020006,y=0.8636244699032729
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=zee,b=wye,i=8,x=0.5985540091064224,yyy=0.976181385699006

mlr --seed 12345 sample -k 2 -g a,b ./reg_test/input/abixy-het
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=pan,i=5,xxx=0.5732889198020006,y=0.8636244699032729
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=eks,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694
a=zee,b=wye,i=8,x=0.5985540091064224,yyy=0.976181385699006
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864

mlr --seed 12345 shuffle ./reg_test/input/abixy-het
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864
a=eks,bbb=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=wye,b=pan,i=5,xxx=0.5732889198020006,y=0.8636244699032729
a=zee,b=wye,i=8,x=0.5985540091064224,yyy=0.976181385699006
aaa=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
aaa=hat,bbb=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=eks,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697

mlr --seed 23456 shuffle ./reg_test/input/abixy-het
a=eks,bbb=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=wye,b=pan,i=5,xxx=0.5732889198020006,y=0.8636244699032729
a=eks,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694
aaa=hat,bbb=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
aaa=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=zee,b=wye,i=8,x=0.5985540091064224,yyy=0.976181385699006
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797

mlr --seed 34567 shuffle ./reg_test/input/abixy-het
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
aaa=hat,bbb=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=eks,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694
aaa=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=eks,bbb=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=wye,b=pan,i=5,xxx=0.5732889198020006,y=0.8636244699032729
a=zee,b=wye,i=8,x=0.5985540091064224,yyy=0.976181385699006
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797

mlr uniq -g a ./reg_test/input/abixy-het
a=pan
a=eks
a=wye
a=zee

mlr uniq -g a,b ./reg_test/input/abixy-het
a=pan,b=pan
a=eks,b=pan
a=wye,b=pan
a=zee,b=pan
a=eks,b=zee
a=zee,b=wye
a=pan,b=wye

mlr uniq -f a ./reg_test/input/abixy-het
a=pan
a=eks
a=wye
a=zee

mlr uniq -f a,b ./reg_test/input/abixy-het
a=pan,b=pan
a=eks,b=pan
a=wye,b=pan
a=zee,b=pan
a=eks,b=zee
a=zee,b=wye
a=pan,b=wye

mlr uniq -c -g a ./reg_test/input/abixy-het
a=pan,count=2
a=eks,count=3
a=wye,count=1
a=zee,count=2

mlr uniq -c -g a,b ./reg_test/input/abixy-het
a=pan,b=pan,count=1
a=eks,b=pan,count=1
a=wye,b=pan,count=1
a=zee,b=pan,count=1
a=eks,b=zee,count=1
a=zee,b=wye,count=1
a=pan,b=wye,count=1

mlr count-distinct -f a ./reg_test/input/small ./reg_test/input/abixy
a=pan,count=4
a=eks,count=6
a=wye,count=4
a=zee,count=4
a=hat,count=2

mlr count-distinct -f a,b ./reg_test/input/small ./reg_test/input/abixy
a=pan,b=pan,count=2
a=eks,b=pan,count=2
a=wye,b=wye,count=2
a=eks,b=wye,count=2
a=wye,b=pan,count=2
a=zee,b=pan,count=2
a=eks,b=zee,count=2
a=zee,b=wye,count=2
a=hat,b=wye,count=2
a=pan,b=wye,count=2

mlr count-distinct -f a,b -u ./reg_test/input/small ./reg_test/input/abixy
field=a,value=pan,count=4
field=a,value=eks,count=6
field=a,value=wye,count=4
field=a,value=zee,count=4
field=a,value=hat,count=2
field=b,value=pan,count=8
field=b,value=wye,count=10
field=b,value=zee,count=2

mlr count-distinct -f a -n ./reg_test/input/small ./reg_test/input/abixy
count=5

mlr count-distinct -f a,b -n ./reg_test/input/small ./reg_test/input/abixy
count=10

mlr uniq -g a -o foo ./reg_test/input/abixy-het
a=pan
a=eks
a=wye
a=zee

mlr uniq -g a,b -o foo ./reg_test/input/abixy-het
a=pan,b=pan
a=eks,b=pan
a=wye,b=pan
a=zee,b=pan
a=eks,b=zee
a=zee,b=wye
a=pan,b=wye

mlr uniq -f a -o foo ./reg_test/input/abixy-het
a=pan
a=eks
a=wye
a=zee

mlr uniq -f a,b -o foo ./reg_test/input/abixy-het
a=pan,b=pan
a=eks,b=pan
a=wye,b=pan
a=zee,b=pan
a=eks,b=zee
a=zee,b=wye
a=pan,b=wye

mlr uniq -c -g a -o foo ./reg_test/input/abixy-het
a=pan,foo=2
a=eks,foo=3
a=wye,foo=1
a=zee,foo=2

mlr uniq -c -g a,b -o foo ./reg_test/input/abixy-het
a=pan,b=pan,foo=1
a=eks,b=pan,foo=1
a=wye,b=pan,foo=1
a=zee,b=pan,foo=1
a=eks,b=zee,foo=1
a=zee,b=wye,foo=1
a=pan,b=wye,foo=1

mlr uniq -a ./reg_test/input/repeats.dkvp
color=red,shape=square,flag=0
color=purple,shape=triangle,flag=0
color=yellow,shape=circle,flag=1
color=red,shape=circle,flag=1
color=purple,shape=square,flag=0
color=red,shape=square,flag=1
color=yellow,shape=triangle,flag=1

mlr uniq -a -c ./reg_test/input/repeats.dkvp
count=17,color=red,shape=square,flag=0
count=11,color=purple,shape=triangle,flag=0
count=11,color=yellow,shape=circle,flag=1
count=6,color=red,shape=circle,flag=1
count=7,color=purple,shape=square,flag=0
count=3,color=red,shape=square,flag=1
count=2,color=yellow,shape=triangle,flag=1

mlr uniq -a -c -o foo ./reg_test/input/repeats.dkvp
foo=17,color=red,shape=square,flag=0
foo=11,color=purple,shape=triangle,flag=0
foo=11,color=yellow,shape=circle,flag=1
foo=6,color=red,shape=circle,flag=1
foo=7,color=purple,shape=square,flag=0
foo=3,color=red,shape=square,flag=1
foo=2,color=yellow,shape=triangle,flag=1

mlr uniq -a -n ./reg_test/input/repeats.dkvp
count=7

mlr uniq -a -n -o bar ./reg_test/input/repeats.dkvp
bar=7

mlr count-distinct -f a -o foo ./reg_test/input/small ./reg_test/input/abixy
a=pan,foo=4
a=eks,foo=6
a=wye,foo=4
a=zee,foo=4
a=hat,foo=2

mlr count-distinct -f a,b -o foo ./reg_test/input/small ./reg_test/input/abixy
a=pan,b=pan,foo=2
a=eks,b=pan,foo=2
a=wye,b=wye,foo=2
a=eks,b=wye,foo=2
a=wye,b=pan,foo=2
a=zee,b=pan,foo=2
a=eks,b=zee,foo=2
a=zee,b=wye,foo=2
a=hat,b=wye,foo=2
a=pan,b=wye,foo=2

mlr count-distinct -f a -n -o foo ./reg_test/input/small ./reg_test/input/abixy
count=5

mlr count-distinct -f a,b -n -o foo ./reg_test/input/small ./reg_test/input/abixy
count=10

mlr grep pan ./reg_test/input/abixy-het
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=pan,i=5,xxx=0.5732889198020006,y=0.8636244699032729
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864

mlr grep -v pan ./reg_test/input/abixy-het
aaa=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=eks,bbb=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=eks,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694
a=zee,b=wye,i=8,x=0.5985540091064224,yyy=0.976181385699006
aaa=hat,bbb=wye,i=9,x=0.03144187646093577,y=0.7495507603507059

mlr decimate -n 4 ./reg_test/input/abixy
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006

mlr decimate -b -n 4 ./reg_test/input/abixy
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059

mlr decimate -e -n 4 ./reg_test/input/abixy
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006

mlr decimate -g a -n 2 ./reg_test/input/abixy
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=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864

mlr decimate -g a -b -n 2 ./reg_test/input/abixy
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=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059

mlr decimate -g a -e -n 2 ./reg_test/input/abixy
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=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864


================================================================
WHITESPACE-REDUCTION

mlr --icsv --ojson cat ./reg_test/input/clean-whitespace.csv
{ "n": 1, "a": "xy", "b  ": 2, "  c": 3 }
{ "n": 2, "a": "xy ", "b  ": 2, "  c": 3 }
{ "n": 3, "a": "xy  ", "b  ": 2, "  c": 3 }
{ "n": 4, "a": "xy   ", "b  ": 2, "  c": 3 }
{ "n": 5, "a": "xy", "b  ": 2, "  c": 3 }
{ "n": 6, "a": " xy", "b  ": 2, "  c": 3 }
{ "n": 7, "a": "  xy", "b  ": 2, "  c": 3 }
{ "n": 8, "a": "   xy", "b  ": 2, "  c": 3 }
{ "n": 9, "a": "xy", "b  ": 2, "  c": 3 }
{ "n": 10, "a": " xy ", "b  ": 2, "  c": 3 }
{ "n": 11, "a": "  xy  ", "b  ": 2, "  c": 3 }
{ "n": 12, "a": "   xy   ", "b  ": 2, "  c": 3 }
{ "n": 13, "a": "", "b  ": 2, "  c": 3 }
{ "n": 14, "a": "  ", "b  ": 2, "  c": 3 }
{ "n": 15, "a": "    ", "b  ": 2, "  c": 3 }
{ "n": 16, "a": "      ", "b  ": 2, "  c": 3 }

mlr --icsv --ojson put $a = lstrip($a) ./reg_test/input/clean-whitespace.csv
{ "n": 1, "a": "xy", "b  ": 2, "  c": 3 }
{ "n": 2, "a": "xy ", "b  ": 2, "  c": 3 }
{ "n": 3, "a": "xy  ", "b  ": 2, "  c": 3 }
{ "n": 4, "a": "xy   ", "b  ": 2, "  c": 3 }
{ "n": 5, "a": "xy", "b  ": 2, "  c": 3 }
{ "n": 6, "a": "xy", "b  ": 2, "  c": 3 }
{ "n": 7, "a": "xy", "b  ": 2, "  c": 3 }
{ "n": 8, "a": "xy", "b  ": 2, "  c": 3 }
{ "n": 9, "a": "xy", "b  ": 2, "  c": 3 }
{ "n": 10, "a": "xy ", "b  ": 2, "  c": 3 }
{ "n": 11, "a": "xy  ", "b  ": 2, "  c": 3 }
{ "n": 12, "a": "xy   ", "b  ": 2, "  c": 3 }
{ "n": 13, "a": "", "b  ": 2, "  c": 3 }
{ "n": 14, "a": "", "b  ": 2, "  c": 3 }
{ "n": 15, "a": "", "b  ": 2, "  c": 3 }
{ "n": 16, "a": "", "b  ": 2, "  c": 3 }

mlr --icsv --ojson put $a = rstrip($a) ./reg_test/input/clean-whitespace.csv
{ "n": 1, "a": "xy", "b  ": 2, "  c": 3 }
{ "n": 2, "a": "xy", "b  ": 2, "  c": 3 }
{ "n": 3, "a": "xy", "b  ": 2, "  c": 3 }
{ "n": 4, "a": "xy", "b  ": 2, "  c": 3 }
{ "n": 5, "a": "xy", "b  ": 2, "  c": 3 }
{ "n": 6, "a": " xy", "b  ": 2, "  c": 3 }
{ "n": 7, "a": "  xy", "b  ": 2, "  c": 3 }
{ "n": 8, "a": "   xy", "b  ": 2, "  c": 3 }
{ "n": 9, "a": "xy", "b  ": 2, "  c": 3 }
{ "n": 10, "a": " xy", "b  ": 2, "  c": 3 }
{ "n": 11, "a": "  xy", "b  ": 2, "  c": 3 }
{ "n": 12, "a": "   xy", "b  ": 2, "  c": 3 }
{ "n": 13, "a": "", "b  ": 2, "  c": 3 }
{ "n": 14, "a": "", "b  ": 2, "  c": 3 }
{ "n": 15, "a": "", "b  ": 2, "  c": 3 }
{ "n": 16, "a": "", "b  ": 2, "  c": 3 }

mlr --icsv --ojson put $a = strip($a) ./reg_test/input/clean-whitespace.csv
{ "n": 1, "a": "xy", "b  ": 2, "  c": 3 }
{ "n": 2, "a": "xy", "b  ": 2, "  c": 3 }
{ "n": 3, "a": "xy", "b  ": 2, "  c": 3 }
{ "n": 4, "a": "xy", "b  ": 2, "  c": 3 }
{ "n": 5, "a": "xy", "b  ": 2, "  c": 3 }
{ "n": 6, "a": "xy", "b  ": 2, "  c": 3 }
{ "n": 7, "a": "xy", "b  ": 2, "  c": 3 }
{ "n": 8, "a": "xy", "b  ": 2, "  c": 3 }
{ "n": 9, "a": "xy", "b  ": 2, "  c": 3 }
{ "n": 10, "a": "xy", "b  ": 2, "  c": 3 }
{ "n": 11, "a": "xy", "b  ": 2, "  c": 3 }
{ "n": 12, "a": "xy", "b  ": 2, "  c": 3 }
{ "n": 13, "a": "", "b  ": 2, "  c": 3 }
{ "n": 14, "a": "", "b  ": 2, "  c": 3 }
{ "n": 15, "a": "", "b  ": 2, "  c": 3 }
{ "n": 16, "a": "", "b  ": 2, "  c": 3 }

mlr --icsv --ojson put $a = collapse_whitespace($a) ./reg_test/input/clean-whitespace.csv
{ "n": 1, "a": "xy", "b  ": 2, "  c": 3 }
{ "n": 2, "a": "xy ", "b  ": 2, "  c": 3 }
{ "n": 3, "a": "xy ", "b  ": 2, "  c": 3 }
{ "n": 4, "a": "xy ", "b  ": 2, "  c": 3 }
{ "n": 5, "a": "xy", "b  ": 2, "  c": 3 }
{ "n": 6, "a": " xy", "b  ": 2, "  c": 3 }
{ "n": 7, "a": " xy", "b  ": 2, "  c": 3 }
{ "n": 8, "a": " xy", "b  ": 2, "  c": 3 }
{ "n": 9, "a": "xy", "b  ": 2, "  c": 3 }
{ "n": 10, "a": " xy ", "b  ": 2, "  c": 3 }
{ "n": 11, "a": " xy ", "b  ": 2, "  c": 3 }
{ "n": 12, "a": " xy ", "b  ": 2, "  c": 3 }
{ "n": 13, "a": "", "b  ": 2, "  c": 3 }
{ "n": 14, "a": " ", "b  ": 2, "  c": 3 }
{ "n": 15, "a": " ", "b  ": 2, "  c": 3 }
{ "n": 16, "a": " ", "b  ": 2, "  c": 3 }

mlr --icsv --ojson put $a = clean_whitespace($a) ./reg_test/input/clean-whitespace.csv
{ "n": 1, "a": "xy", "b  ": 2, "  c": 3 }
{ "n": 2, "a": "xy", "b  ": 2, "  c": 3 }
{ "n": 3, "a": "xy", "b  ": 2, "  c": 3 }
{ "n": 4, "a": "xy", "b  ": 2, "  c": 3 }
{ "n": 5, "a": "xy", "b  ": 2, "  c": 3 }
{ "n": 6, "a": "xy", "b  ": 2, "  c": 3 }
{ "n": 7, "a": "xy", "b  ": 2, "  c": 3 }
{ "n": 8, "a": "xy", "b  ": 2, "  c": 3 }
{ "n": 9, "a": "xy", "b  ": 2, "  c": 3 }
{ "n": 10, "a": "xy", "b  ": 2, "  c": 3 }
{ "n": 11, "a": "xy", "b  ": 2, "  c": 3 }
{ "n": 12, "a": "xy", "b  ": 2, "  c": 3 }
{ "n": 13, "a": "", "b  ": 2, "  c": 3 }
{ "n": 14, "a": "", "b  ": 2, "  c": 3 }
{ "n": 15, "a": "", "b  ": 2, "  c": 3 }
{ "n": 16, "a": "", "b  ": 2, "  c": 3 }

mlr --icsv --ojson clean-whitespace -k ./reg_test/input/clean-whitespace.csv
{ "n": 1, "a": "xy", "b": 2, "c": 3 }
{ "n": 2, "a": "xy ", "b": 2, "c": 3 }
{ "n": 3, "a": "xy  ", "b": 2, "c": 3 }
{ "n": 4, "a": "xy   ", "b": 2, "c": 3 }
{ "n": 5, "a": "xy", "b": 2, "c": 3 }
{ "n": 6, "a": " xy", "b": 2, "c": 3 }
{ "n": 7, "a": "  xy", "b": 2, "c": 3 }
{ "n": 8, "a": "   xy", "b": 2, "c": 3 }
{ "n": 9, "a": "xy", "b": 2, "c": 3 }
{ "n": 10, "a": " xy ", "b": 2, "c": 3 }
{ "n": 11, "a": "  xy  ", "b": 2, "c": 3 }
{ "n": 12, "a": "   xy   ", "b": 2, "c": 3 }
{ "n": 13, "a": "", "b": 2, "c": 3 }
{ "n": 14, "a": "  ", "b": 2, "c": 3 }
{ "n": 15, "a": "    ", "b": 2, "c": 3 }
{ "n": 16, "a": "      ", "b": 2, "c": 3 }

mlr --icsv --ojson clean-whitespace -v ./reg_test/input/clean-whitespace.csv
{ "n": 1, "a": "xy", "b  ": 2, "  c": 3 }
{ "n": 2, "a": "xy", "b  ": 2, "  c": 3 }
{ "n": 3, "a": "xy", "b  ": 2, "  c": 3 }
{ "n": 4, "a": "xy", "b  ": 2, "  c": 3 }
{ "n": 5, "a": "xy", "b  ": 2, "  c": 3 }
{ "n": 6, "a": "xy", "b  ": 2, "  c": 3 }
{ "n": 7, "a": "xy", "b  ": 2, "  c": 3 }
{ "n": 8, "a": "xy", "b  ": 2, "  c": 3 }
{ "n": 9, "a": "xy", "b  ": 2, "  c": 3 }
{ "n": 10, "a": "xy", "b  ": 2, "  c": 3 }
{ "n": 11, "a": "xy", "b  ": 2, "  c": 3 }
{ "n": 12, "a": "xy", "b  ": 2, "  c": 3 }
{ "n": 13, "a": "", "b  ": 2, "  c": 3 }
{ "n": 14, "a": "", "b  ": 2, "  c": 3 }
{ "n": 15, "a": "", "b  ": 2, "  c": 3 }
{ "n": 16, "a": "", "b  ": 2, "  c": 3 }

mlr --icsv --ojson clean-whitespace ./reg_test/input/clean-whitespace.csv
{ "n": 1, "a": "xy", "b": 2, "c": 3 }
{ "n": 2, "a": "xy", "b": 2, "c": 3 }
{ "n": 3, "a": "xy", "b": 2, "c": 3 }
{ "n": 4, "a": "xy", "b": 2, "c": 3 }
{ "n": 5, "a": "xy", "b": 2, "c": 3 }
{ "n": 6, "a": "xy", "b": 2, "c": 3 }
{ "n": 7, "a": "xy", "b": 2, "c": 3 }
{ "n": 8, "a": "xy", "b": 2, "c": 3 }
{ "n": 9, "a": "xy", "b": 2, "c": 3 }
{ "n": 10, "a": "xy", "b": 2, "c": 3 }
{ "n": 11, "a": "xy", "b": 2, "c": 3 }
{ "n": 12, "a": "xy", "b": 2, "c": 3 }
{ "n": 13, "a": "", "b": 2, "c": 3 }
{ "n": 14, "a": "", "b": 2, "c": 3 }
{ "n": 15, "a": "", "b": 2, "c": 3 }
{ "n": 16, "a": "", "b": 2, "c": 3 }


================================================================
SORT

mlr sort -f a ./reg_test/input/abixy
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
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=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006

mlr sort -r a ./reg_test/input/abixy
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694

mlr sort -f x ./reg_test/input/abixy
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797

mlr sort -r x ./reg_test/input/abixy
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
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=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059

mlr sort -nf x ./reg_test/input/abixy
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797

mlr sort -nr x ./reg_test/input/abixy
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
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=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059

mlr sort -f a,b ./reg_test/input/abixy
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006

mlr sort -r a,b ./reg_test/input/abixy
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797

mlr sort -f x,y ./reg_test/input/abixy
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797

mlr sort -r x,y ./reg_test/input/abixy
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
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=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059

mlr sort -nf x,y ./reg_test/input/abixy
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797

mlr sort -nr x,y ./reg_test/input/abixy
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
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=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059

mlr sort -f a -nr x ./reg_test/input/abixy
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
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=0.7268028627434533
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697

mlr sort -nr y -f a ./reg_test/input/abixy
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
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=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463

mlr sort -f a -r b -nf x -nr y ./reg_test/input/abixy
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
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=0.7268028627434533
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697

mlr sort -f x ./reg_test/input/sort-het.dkvp
x=1
x=2
x=4
a=3

mlr sort -r x ./reg_test/input/sort-het.dkvp
x=4
x=2
x=1
a=3


================================================================
SORT-WITHIN-RECORDS

mlr sort-within-records ./reg_test/input/sort-within-records.dkvp
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


================================================================
JOIN

mlr --opprint join -s -f ./reg_test/input/joina.dkvp -l l -r r -j o ./reg_test/input/joinb.dkvp
o x y
1 a s
2 b t
2 c t
2 d t
2 b v
2 c v
2 d v
3 e w
3 f w
3 e x
3 f x
3 e y
3 f y

mlr --opprint join -f ./reg_test/input/joina.dkvp -l l -r r -j o ./reg_test/input/joinb.dkvp
o x y
1 a s
2 b t
2 c t
2 d t
2 b v
2 c v
2 d v
3 e w
3 f w
3 e x
3 f x
3 e y
3 f y

mlr --opprint join -s --ul -f ./reg_test/input/joina.dkvp -l l -r r -j o ./reg_test/input/joinb.dkvp
o x y
1 a s
2 b t
2 c t
2 d t
2 b v
2 c v
2 d v
3 e w
3 f w
3 e x
3 f x
3 e y
3 f y

l x
4 g

mlr --opprint join --ul -f ./reg_test/input/joina.dkvp -l l -r r -j o ./reg_test/input/joinb.dkvp
o x y
1 a s
2 b t
2 c t
2 d t
2 b v
2 c v
2 d v
3 e w
3 f w
3 e x
3 f x
3 e y
3 f y

l x
4 g

mlr --opprint join -s --ur -f ./reg_test/input/joina.dkvp -l l -r r -j o ./reg_test/input/joinb.dkvp
o x y
1 a s
2 b t
2 c t
2 d t
2 b v
2 c v
2 d v
3 e w
3 f w
3 e x
3 f x
3 e y
3 f y

r y
5 z

mlr --opprint join --ur -f ./reg_test/input/joina.dkvp -l l -r r -j o ./reg_test/input/joinb.dkvp
o x y
1 a s
2 b t
2 c t
2 d t
2 b v
2 c v
2 d v
3 e w
3 f w
3 e x
3 f x
3 e y
3 f y

r y
5 z

mlr --opprint join -s --ul --ur -f ./reg_test/input/joina.dkvp -l l -r r -j o ./reg_test/input/joinb.dkvp
o x y
1 a s
2 b t
2 c t
2 d t
2 b v
2 c v
2 d v
3 e w
3 f w
3 e x
3 f x
3 e y
3 f y

l x
4 g

r y
5 z

mlr --opprint join --ul --ur -f ./reg_test/input/joina.dkvp -l l -r r -j o ./reg_test/input/joinb.dkvp
o x y
1 a s
2 b t
2 c t
2 d t
2 b v
2 c v
2 d v
3 e w
3 f w
3 e x
3 f x
3 e y
3 f y

r y
5 z

l x
4 g

mlr --opprint join -s --np --ul -f ./reg_test/input/joina.dkvp -l l -r r -j o ./reg_test/input/joinb.dkvp
l x
4 g

mlr --opprint join --np --ul -f ./reg_test/input/joina.dkvp -l l -r r -j o ./reg_test/input/joinb.dkvp
l x
4 g

mlr --opprint join -s --np --ur -f ./reg_test/input/joina.dkvp -l l -r r -j o ./reg_test/input/joinb.dkvp
r y
5 z

mlr --opprint join --np --ur -f ./reg_test/input/joina.dkvp -l l -r r -j o ./reg_test/input/joinb.dkvp
r y
5 z

mlr --opprint join -s --np --ul --ur -f ./reg_test/input/joina.dkvp -l l -r r -j o ./reg_test/input/joinb.dkvp
l x
4 g

r y
5 z

mlr --opprint join --np --ul --ur -f ./reg_test/input/joina.dkvp -l l -r r -j o ./reg_test/input/joinb.dkvp
r y
5 z

l x
4 g

mlr join -l l -r r -j j -f ./reg_test/input/joina.dkvp ./reg_test/input/joinb.dkvp
j=1,x=a,y=s
j=2,x=b,y=t
j=2,x=c,y=t
j=2,x=d,y=t
j=2,x=b,y=v
j=2,x=c,y=v
j=2,x=d,y=v
j=3,x=e,y=w
j=3,x=f,y=w
j=3,x=e,y=x
j=3,x=f,y=x
j=3,x=e,y=y
j=3,x=f,y=y

mlr join -l l -j r -f ./reg_test/input/joina.dkvp ./reg_test/input/joinb.dkvp
r=1,x=a,y=s
r=2,x=b,y=t
r=2,x=c,y=t
r=2,x=d,y=t
r=2,x=b,y=v
r=2,x=c,y=v
r=2,x=d,y=v
r=3,x=e,y=w
r=3,x=f,y=w
r=3,x=e,y=x
r=3,x=f,y=x
r=3,x=e,y=y
r=3,x=f,y=y

mlr join -r r -j l -f ./reg_test/input/joina.dkvp ./reg_test/input/joinb.dkvp
l=1,x=a,y=s
l=2,x=b,y=t
l=2,x=c,y=t
l=2,x=d,y=t
l=2,x=b,y=v
l=2,x=c,y=v
l=2,x=d,y=v
l=3,x=e,y=w
l=3,x=f,y=w
l=3,x=e,y=x
l=3,x=f,y=x
l=3,x=e,y=y
l=3,x=f,y=y

mlr --opprint join -s -f /dev/null -l l -r r -j o ./reg_test/input/joinb.dkvp

mlr --opprint join -f /dev/null -l l -r r -j o ./reg_test/input/joinb.dkvp

mlr --opprint join -s --ul -f /dev/null -l l -r r -j o ./reg_test/input/joinb.dkvp

mlr --opprint join --ul -f /dev/null -l l -r r -j o ./reg_test/input/joinb.dkvp

mlr --opprint join -s --ur -f /dev/null -l l -r r -j o ./reg_test/input/joinb.dkvp
r y
1 s
2 t
2 v
3 w
3 x
3 y
5 z

mlr --opprint join --ur -f /dev/null -l l -r r -j o ./reg_test/input/joinb.dkvp
r y
1 s
2 t
2 v
3 w
3 x
3 y
5 z

mlr --opprint join -s --ul --ur -f /dev/null -l l -r r -j o ./reg_test/input/joinb.dkvp
r y
1 s
2 t
2 v
3 w
3 x
3 y
5 z

mlr --opprint join --ul --ur -f /dev/null -l l -r r -j o ./reg_test/input/joinb.dkvp
r y
1 s
2 t
2 v
3 w
3 x
3 y
5 z

mlr --opprint join -s --np --ul -f /dev/null -l l -r r -j o ./reg_test/input/joinb.dkvp

mlr --opprint join --np --ul -f /dev/null -l l -r r -j o ./reg_test/input/joinb.dkvp

mlr --opprint join -s --np --ur -f /dev/null -l l -r r -j o ./reg_test/input/joinb.dkvp
r y
1 s
2 t
2 v
3 w
3 x
3 y
5 z

mlr --opprint join --np --ur -f /dev/null -l l -r r -j o ./reg_test/input/joinb.dkvp
r y
1 s
2 t
2 v
3 w
3 x
3 y
5 z

mlr --opprint join -s --np --ul --ur -f /dev/null -l l -r r -j o ./reg_test/input/joinb.dkvp
r y
1 s
2 t
2 v
3 w
3 x
3 y
5 z

mlr --opprint join --np --ul --ur -f /dev/null -l l -r r -j o ./reg_test/input/joinb.dkvp
r y
1 s
2 t
2 v
3 w
3 x
3 y
5 z

mlr --opprint join -s -f ./reg_test/input/joina.dkvp -l l -r r -j o /dev/null

mlr --opprint join -f ./reg_test/input/joina.dkvp -l l -r r -j o /dev/null

mlr --opprint join -s --ul -f ./reg_test/input/joina.dkvp -l l -r r -j o /dev/null
l x
1 a
2 b
2 c
2 d
3 e
3 f
4 g

mlr --opprint join --ul -f ./reg_test/input/joina.dkvp -l l -r r -j o /dev/null
l x
1 a
2 b
2 c
2 d
3 e
3 f
4 g

mlr --opprint join -s --ur -f ./reg_test/input/joina.dkvp -l l -r r -j o /dev/null

mlr --opprint join --ur -f ./reg_test/input/joina.dkvp -l l -r r -j o /dev/null

mlr --opprint join -s --ul --ur -f ./reg_test/input/joina.dkvp -l l -r r -j o /dev/null
l x
1 a
2 b
2 c
2 d
3 e
3 f
4 g

mlr --opprint join --ul --ur -f ./reg_test/input/joina.dkvp -l l -r r -j o /dev/null
l x
1 a
2 b
2 c
2 d
3 e
3 f
4 g

mlr --opprint join -s --np --ul -f ./reg_test/input/joina.dkvp -l l -r r -j o /dev/null
l x
1 a
2 b
2 c
2 d
3 e
3 f
4 g

mlr --opprint join --np --ul -f ./reg_test/input/joina.dkvp -l l -r r -j o /dev/null
l x
1 a
2 b
2 c
2 d
3 e
3 f
4 g

mlr --opprint join -s --np --ur -f ./reg_test/input/joina.dkvp -l l -r r -j o /dev/null

mlr --opprint join --np --ur -f ./reg_test/input/joina.dkvp -l l -r r -j o /dev/null

mlr --opprint join -s --np --ul --ur -f ./reg_test/input/joina.dkvp -l l -r r -j o /dev/null
l x
1 a
2 b
2 c
2 d
3 e
3 f
4 g

mlr --opprint join --np --ul --ur -f ./reg_test/input/joina.dkvp -l l -r r -j o /dev/null
l x
1 a
2 b
2 c
2 d
3 e
3 f
4 g

mlr --odkvp join -j a -f ./reg_test/input/join-het.dkvp ./reg_test/input/abixy-het
a=pan,n=234,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=eks,n=123,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=eks,n=123,bbb=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=wye,n=345,b=pan,i=5,xxx=0.5732889198020006,y=0.8636244699032729
a=zee,n=456,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=eks,n=123,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694
a=zee,n=456,b=wye,i=8,x=0.5985540091064224,yyy=0.976181385699006
a=pan,n=234,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864

mlr --odkvp join -j a -f ./reg_test/input/abixy-het ./reg_test/input/join-het.dkvp
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797,n=123
a=eks,bbb=wye,i=4,x=0.38139939387114097,y=0.13418874328430463,n=123
a=eks,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694,n=123
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533,n=234
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864,n=234
a=wye,b=pan,i=5,xxx=0.5732889198020006,y=0.8636244699032729,n=345
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697,n=456
a=zee,b=wye,i=8,x=0.5985540091064224,yyy=0.976181385699006,n=456

mlr --odkvp join --np --ul --ur -j a -f ./reg_test/input/join-het.dkvp ./reg_test/input/abixy-het
aaa=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
aaa=hat,bbb=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
aye=bee,enn=emm

mlr --odkvp join --np --ul --ur -j a -f ./reg_test/input/abixy-het ./reg_test/input/join-het.dkvp
aye=bee,enn=emm
aaa=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
aaa=hat,bbb=wye,i=9,x=0.03144187646093577,y=0.7495507603507059

mlr --idkvp --oxtab join --lp left_ --rp right_ -j i -f ./reg_test/input/abixy-het ./reg_test/input/abixy-het
i       1
left_a  pan
left_b  pan
left_x  0.3467901443380824
left_y  0.7268028627434533
right_a pan
right_b pan
right_x 0.3467901443380824
right_y 0.7268028627434533

i       2
left_a  eks
left_b  pan
left_x  0.7586799647899636
left_y  0.5221511083334797
right_a eks
right_b pan
right_x 0.7586799647899636
right_y 0.5221511083334797

i         3
left_aaa  wye
left_b    wye
left_x    0.20460330576630303
left_y    0.33831852551664776
right_aaa wye
right_b   wye
right_x   0.20460330576630303
right_y   0.33831852551664776

i         4
left_a    eks
left_bbb  wye
left_x    0.38139939387114097
left_y    0.13418874328430463
right_a   eks
right_bbb wye
right_x   0.38139939387114097
right_y   0.13418874328430463

i         5
left_a    wye
left_b    pan
left_xxx  0.5732889198020006
left_y    0.8636244699032729
right_a   wye
right_b   pan
right_xxx 0.5732889198020006
right_y   0.8636244699032729

i       6
left_a  zee
left_b  pan
left_x  0.5271261600918548
left_y  0.49322128674835697
right_a zee
right_b pan
right_x 0.5271261600918548
right_y 0.49322128674835697

i         8
left_a    zee
left_b    wye
left_x    0.5985540091064224
left_yyy  0.976181385699006
right_a   zee
right_b   wye
right_x   0.5985540091064224
right_yyy 0.976181385699006

i         9
left_aaa  hat
left_bbb  wye
left_x    0.03144187646093577
left_y    0.7495507603507059
right_aaa hat
right_bbb wye
right_x   0.03144187646093577
right_y   0.7495507603507059

i       10
left_a  pan
left_b  wye
left_x  0.5026260055412137
left_y  0.9526183602969864
right_a pan
right_b wye
right_x 0.5026260055412137
right_y 0.9526183602969864

mlr join -s -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r1
j=1,b=11
j=1,b=12

mlr join -s -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r11
j=1,b=11
j=1,b=12
j=1,b=11
j=1,b=12

mlr join -s -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r12
j=1,b=11
j=1,b=12

mlr join -s -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r13
j=1,b=11
j=1,b=12
j=3,b=14
j=3,b=15

mlr join -s -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r14
j=1,b=11
j=1,b=12

mlr join -s -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r15
j=1,b=11
j=1,b=12
j=5,b=17
j=5,b=18

mlr join -s -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r16
j=1,b=11
j=1,b=12

mlr join -s -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r2

mlr join -s -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r22

mlr join -s -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r23
j=3,b=14
j=3,b=15

mlr join -s -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r24

mlr join -s -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r25
j=5,b=17
j=5,b=18

mlr join -s -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r26

mlr join -s -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r3
j=3,b=14
j=3,b=15

mlr join -s -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r33
j=3,b=14
j=3,b=15
j=3,b=14
j=3,b=15

mlr join -s -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r34
j=3,b=14
j=3,b=15

mlr join -s -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r35
j=3,b=14
j=3,b=15
j=5,b=17
j=5,b=18

mlr join -s -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r36
j=3,b=14
j=3,b=15

mlr join -s -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r4

mlr join -s -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r44

mlr join -s -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r45
j=5,b=17
j=5,b=18

mlr join -s -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r46

mlr join -s -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r5
j=5,b=17
j=5,b=18

mlr join -s -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r55
j=5,b=17
j=5,b=18
j=5,b=17
j=5,b=18

mlr join -s -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r56
j=5,b=17
j=5,b=18

mlr join -s -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r6

mlr join -s -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r66

mlr join -s --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r1
x=100,b=10
x=200,b=13
l=3,b=14
l=3,b=15
x=300,b=16
l=5,b=17
l=5,b=18
x=400,b=19

mlr join -s --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r11
x=100,b=10
x=200,b=13
l=3,b=14
l=3,b=15
x=300,b=16
l=5,b=17
l=5,b=18
x=400,b=19

mlr join -s --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r12
x=100,b=10
x=200,b=13
x=300,b=16
l=3,b=14
l=3,b=15
l=5,b=17
l=5,b=18
x=400,b=19

mlr join -s --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r13
x=100,b=10
x=200,b=13
x=300,b=16
l=5,b=17
l=5,b=18
x=400,b=19

mlr join -s --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r14
x=100,b=10
x=200,b=13
l=3,b=14
l=3,b=15
x=300,b=16
x=400,b=19
l=5,b=17
l=5,b=18

mlr join -s --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r15
x=100,b=10
x=200,b=13
l=3,b=14
l=3,b=15
x=300,b=16
x=400,b=19

mlr join -s --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r16
x=100,b=10
x=200,b=13
l=3,b=14
l=3,b=15
x=300,b=16
l=5,b=17
l=5,b=18
x=400,b=19

mlr join -s --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r2
x=100,b=10
x=200,b=13
l=1,b=11
l=1,b=12
x=300,b=16
l=3,b=14
l=3,b=15
l=5,b=17
l=5,b=18
x=400,b=19

mlr join -s --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r22
x=100,b=10
x=200,b=13
l=1,b=11
l=1,b=12
x=300,b=16
l=3,b=14
l=3,b=15
l=5,b=17
l=5,b=18
x=400,b=19

mlr join -s --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r23
x=100,b=10
x=200,b=13
l=1,b=11
l=1,b=12
x=300,b=16
l=5,b=17
l=5,b=18
x=400,b=19

mlr join -s --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r24
x=100,b=10
x=200,b=13
l=1,b=11
l=1,b=12
x=300,b=16
l=3,b=14
l=3,b=15
x=400,b=19
l=5,b=17
l=5,b=18

mlr join -s --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r25
x=100,b=10
x=200,b=13
l=1,b=11
l=1,b=12
x=300,b=16
l=3,b=14
l=3,b=15
x=400,b=19

mlr join -s --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r26
x=100,b=10
x=200,b=13
l=1,b=11
l=1,b=12
x=300,b=16
l=3,b=14
l=3,b=15
l=5,b=17
l=5,b=18
x=400,b=19

mlr join -s --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r3
x=100,b=10
x=200,b=13
l=1,b=11
l=1,b=12
x=300,b=16
l=5,b=17
l=5,b=18
x=400,b=19

mlr join -s --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r33
x=100,b=10
x=200,b=13
l=1,b=11
l=1,b=12
x=300,b=16
l=5,b=17
l=5,b=18
x=400,b=19

mlr join -s --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r34
x=100,b=10
x=200,b=13
l=1,b=11
l=1,b=12
x=300,b=16
x=400,b=19
l=5,b=17
l=5,b=18

mlr join -s --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r35
x=100,b=10
x=200,b=13
l=1,b=11
l=1,b=12
x=300,b=16
x=400,b=19

mlr join -s --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r36
x=100,b=10
x=200,b=13
l=1,b=11
l=1,b=12
x=300,b=16
l=5,b=17
l=5,b=18
x=400,b=19

mlr join -s --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r4
x=100,b=10
x=200,b=13
l=1,b=11
l=1,b=12
l=3,b=14
l=3,b=15
x=300,b=16
x=400,b=19
l=5,b=17
l=5,b=18

mlr join -s --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r44
x=100,b=10
x=200,b=13
l=1,b=11
l=1,b=12
l=3,b=14
l=3,b=15
x=300,b=16
x=400,b=19
l=5,b=17
l=5,b=18

mlr join -s --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r45
x=100,b=10
x=200,b=13
l=1,b=11
l=1,b=12
l=3,b=14
l=3,b=15
x=300,b=16
x=400,b=19

mlr join -s --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r46
x=100,b=10
x=200,b=13
l=1,b=11
l=1,b=12
l=3,b=14
l=3,b=15
x=300,b=16
x=400,b=19
l=5,b=17
l=5,b=18

mlr join -s --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r5
x=100,b=10
x=200,b=13
l=1,b=11
l=1,b=12
l=3,b=14
l=3,b=15
x=300,b=16
x=400,b=19

mlr join -s --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r55
x=100,b=10
x=200,b=13
l=1,b=11
l=1,b=12
l=3,b=14
l=3,b=15
x=300,b=16
x=400,b=19

mlr join -s --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r56
x=100,b=10
x=200,b=13
l=1,b=11
l=1,b=12
l=3,b=14
l=3,b=15
x=300,b=16
x=400,b=19

mlr join -s --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r6
x=100,b=10
x=200,b=13
l=1,b=11
l=1,b=12
l=3,b=14
l=3,b=15
x=300,b=16
l=5,b=17
l=5,b=18
x=400,b=19

mlr join -s --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r66
x=100,b=10
x=200,b=13
l=1,b=11
l=1,b=12
l=3,b=14
l=3,b=15
x=300,b=16
l=5,b=17
l=5,b=18
x=400,b=19

mlr join -s --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r1
y=111
y=333

mlr join -s --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r11
y=111
y=222
y=333

mlr join -s --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r12
y=111
y=222
r=2
y=333

mlr join -s --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r13
y=111
y=222
y=333

mlr join -s --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r14
y=111
y=222
r=4
y=333

mlr join -s --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r15
y=111
y=222
y=333

mlr join -s --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r16
y=111
y=222
r=6
y=333

mlr join -s --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r2
y=111
r=2
y=333

mlr join -s --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r22
y=111
r=2
y=222
r=2
y=333

mlr join -s --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r23
y=111
r=2
y=222
y=333

mlr join -s --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r24
y=111
r=2
y=222
r=4
y=333

mlr join -s --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r25
y=111
r=2
y=222
y=333

mlr join -s --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r26
y=111
r=2
y=222
r=6
y=333

mlr join -s --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r3
y=111
y=333

mlr join -s --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r33
y=111
y=222
y=333

mlr join -s --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r34
y=111
y=222
r=4
y=333

mlr join -s --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r35
y=111
y=222
y=333

mlr join -s --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r36
y=111
y=222
r=6
y=333

mlr join -s --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r4
y=111
r=4
y=333

mlr join -s --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r44
y=111
r=4
y=222
r=4
y=333

mlr join -s --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r45
y=111
r=4
y=222
y=333

mlr join -s --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r46
y=111
r=4
y=222
r=6
y=333

mlr join -s --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r5
y=111
y=333

mlr join -s --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r55
y=111
y=222
y=333

mlr join -s --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r56
y=111
y=222
r=6
y=333

mlr join -s --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r6
y=111
r=6
y=333

mlr join -s --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r66
y=111
r=6
y=222
r=6
y=333

mlr join -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r1
j=1,b=11
j=1,b=12

mlr join -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r11
j=1,b=11
j=1,b=12
j=1,b=11
j=1,b=12

mlr join -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r12
j=1,b=11
j=1,b=12

mlr join -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r13
j=1,b=11
j=1,b=12
j=3,b=14
j=3,b=15

mlr join -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r14
j=1,b=11
j=1,b=12

mlr join -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r15
j=1,b=11
j=1,b=12
j=5,b=17
j=5,b=18

mlr join -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r16
j=1,b=11
j=1,b=12

mlr join -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r2

mlr join -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r22

mlr join -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r23
j=3,b=14
j=3,b=15

mlr join -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r24

mlr join -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r25
j=5,b=17
j=5,b=18

mlr join -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r26

mlr join -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r3
j=3,b=14
j=3,b=15

mlr join -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r33
j=3,b=14
j=3,b=15
j=3,b=14
j=3,b=15

mlr join -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r34
j=3,b=14
j=3,b=15

mlr join -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r35
j=3,b=14
j=3,b=15
j=5,b=17
j=5,b=18

mlr join -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r36
j=3,b=14
j=3,b=15

mlr join -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r4

mlr join -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r44

mlr join -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r45
j=5,b=17
j=5,b=18

mlr join -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r46

mlr join -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r5
j=5,b=17
j=5,b=18

mlr join -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r55
j=5,b=17
j=5,b=18
j=5,b=17
j=5,b=18

mlr join -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r56
j=5,b=17
j=5,b=18

mlr join -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r6

mlr join -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r66

mlr join --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r1
l=3,b=14
l=3,b=15
l=5,b=17
l=5,b=18
x=100,b=10
x=200,b=13
x=300,b=16
x=400,b=19

mlr join --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r11
l=3,b=14
l=3,b=15
l=5,b=17
l=5,b=18
x=100,b=10
x=200,b=13
x=300,b=16
x=400,b=19

mlr join --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r12
l=3,b=14
l=3,b=15
l=5,b=17
l=5,b=18
x=100,b=10
x=200,b=13
x=300,b=16
x=400,b=19

mlr join --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r13
l=5,b=17
l=5,b=18
x=100,b=10
x=200,b=13
x=300,b=16
x=400,b=19

mlr join --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r14
l=3,b=14
l=3,b=15
l=5,b=17
l=5,b=18
x=100,b=10
x=200,b=13
x=300,b=16
x=400,b=19

mlr join --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r15
l=3,b=14
l=3,b=15
x=100,b=10
x=200,b=13
x=300,b=16
x=400,b=19

mlr join --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r16
l=3,b=14
l=3,b=15
l=5,b=17
l=5,b=18
x=100,b=10
x=200,b=13
x=300,b=16
x=400,b=19

mlr join --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r2
l=1,b=11
l=1,b=12
l=3,b=14
l=3,b=15
l=5,b=17
l=5,b=18
x=100,b=10
x=200,b=13
x=300,b=16
x=400,b=19

mlr join --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r22
l=1,b=11
l=1,b=12
l=3,b=14
l=3,b=15
l=5,b=17
l=5,b=18
x=100,b=10
x=200,b=13
x=300,b=16
x=400,b=19

mlr join --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r23
l=1,b=11
l=1,b=12
l=5,b=17
l=5,b=18
x=100,b=10
x=200,b=13
x=300,b=16
x=400,b=19

mlr join --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r24
l=1,b=11
l=1,b=12
l=3,b=14
l=3,b=15
l=5,b=17
l=5,b=18
x=100,b=10
x=200,b=13
x=300,b=16
x=400,b=19

mlr join --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r25
l=1,b=11
l=1,b=12
l=3,b=14
l=3,b=15
x=100,b=10
x=200,b=13
x=300,b=16
x=400,b=19

mlr join --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r26
l=1,b=11
l=1,b=12
l=3,b=14
l=3,b=15
l=5,b=17
l=5,b=18
x=100,b=10
x=200,b=13
x=300,b=16
x=400,b=19

mlr join --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r3
l=1,b=11
l=1,b=12
l=5,b=17
l=5,b=18
x=100,b=10
x=200,b=13
x=300,b=16
x=400,b=19

mlr join --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r33
l=1,b=11
l=1,b=12
l=5,b=17
l=5,b=18
x=100,b=10
x=200,b=13
x=300,b=16
x=400,b=19

mlr join --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r34
l=1,b=11
l=1,b=12
l=5,b=17
l=5,b=18
x=100,b=10
x=200,b=13
x=300,b=16
x=400,b=19

mlr join --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r35
l=1,b=11
l=1,b=12
x=100,b=10
x=200,b=13
x=300,b=16
x=400,b=19

mlr join --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r36
l=1,b=11
l=1,b=12
l=5,b=17
l=5,b=18
x=100,b=10
x=200,b=13
x=300,b=16
x=400,b=19

mlr join --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r4
l=1,b=11
l=1,b=12
l=3,b=14
l=3,b=15
l=5,b=17
l=5,b=18
x=100,b=10
x=200,b=13
x=300,b=16
x=400,b=19

mlr join --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r44
l=1,b=11
l=1,b=12
l=3,b=14
l=3,b=15
l=5,b=17
l=5,b=18
x=100,b=10
x=200,b=13
x=300,b=16
x=400,b=19

mlr join --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r45
l=1,b=11
l=1,b=12
l=3,b=14
l=3,b=15
x=100,b=10
x=200,b=13
x=300,b=16
x=400,b=19

mlr join --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r46
l=1,b=11
l=1,b=12
l=3,b=14
l=3,b=15
l=5,b=17
l=5,b=18
x=100,b=10
x=200,b=13
x=300,b=16
x=400,b=19

mlr join --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r5
l=1,b=11
l=1,b=12
l=3,b=14
l=3,b=15
x=100,b=10
x=200,b=13
x=300,b=16
x=400,b=19

mlr join --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r55
l=1,b=11
l=1,b=12
l=3,b=14
l=3,b=15
x=100,b=10
x=200,b=13
x=300,b=16
x=400,b=19

mlr join --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r56
l=1,b=11
l=1,b=12
l=3,b=14
l=3,b=15
x=100,b=10
x=200,b=13
x=300,b=16
x=400,b=19

mlr join --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r6
l=1,b=11
l=1,b=12
l=3,b=14
l=3,b=15
l=5,b=17
l=5,b=18
x=100,b=10
x=200,b=13
x=300,b=16
x=400,b=19

mlr join --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r66
l=1,b=11
l=1,b=12
l=3,b=14
l=3,b=15
l=5,b=17
l=5,b=18
x=100,b=10
x=200,b=13
x=300,b=16
x=400,b=19

mlr join --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r1
y=111
y=333

mlr join --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r11
y=111
y=222
y=333

mlr join --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r12
y=111
y=222
r=2
y=333

mlr join --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r13
y=111
y=222
y=333

mlr join --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r14
y=111
y=222
r=4
y=333

mlr join --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r15
y=111
y=222
y=333

mlr join --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r16
y=111
y=222
r=6
y=333

mlr join --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r2
y=111
r=2
y=333

mlr join --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r22
y=111
r=2
y=222
r=2
y=333

mlr join --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r23
y=111
r=2
y=222
y=333

mlr join --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r24
y=111
r=2
y=222
r=4
y=333

mlr join --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r25
y=111
r=2
y=222
y=333

mlr join --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r26
y=111
r=2
y=222
r=6
y=333

mlr join --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r3
y=111
y=333

mlr join --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r33
y=111
y=222
y=333

mlr join --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r34
y=111
y=222
r=4
y=333

mlr join --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r35
y=111
y=222
y=333

mlr join --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r36
y=111
y=222
r=6
y=333

mlr join --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r4
y=111
r=4
y=333

mlr join --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r44
y=111
r=4
y=222
r=4
y=333

mlr join --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r45
y=111
r=4
y=222
y=333

mlr join --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r46
y=111
r=4
y=222
r=6
y=333

mlr join --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r5
y=111
y=333

mlr join --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r55
y=111
y=222
y=333

mlr join --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r56
y=111
y=222
r=6
y=333

mlr join --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r6
y=111
r=6
y=333

mlr join --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r66
y=111
r=6
y=222
r=6
y=333


================================================================
JOIN PREPIPE

mlr --prepipe cat --odkvp join -j a -f ./reg_test/input/join-het.dkvp ./reg_test/input/abixy-het
a=pan,n=234,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=eks,n=123,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=eks,n=123,bbb=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=wye,n=345,b=pan,i=5,xxx=0.5732889198020006,y=0.8636244699032729
a=zee,n=456,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=eks,n=123,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694
a=zee,n=456,b=wye,i=8,x=0.5985540091064224,yyy=0.976181385699006
a=pan,n=234,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864

mlr --odkvp join --prepipe cat -j a -f ./reg_test/input/join-het.dkvp ./reg_test/input/abixy-het
a=pan,n=234,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=eks,n=123,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=eks,n=123,bbb=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=wye,n=345,b=pan,i=5,xxx=0.5732889198020006,y=0.8636244699032729
a=zee,n=456,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=eks,n=123,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694
a=zee,n=456,b=wye,i=8,x=0.5985540091064224,yyy=0.976181385699006
a=pan,n=234,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864

mlr --prepipe cat --odkvp join --prepipe cat -j a -f ./reg_test/input/join-het.dkvp ./reg_test/input/abixy-het
a=pan,n=234,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=eks,n=123,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=eks,n=123,bbb=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=wye,n=345,b=pan,i=5,xxx=0.5732889198020006,y=0.8636244699032729
a=zee,n=456,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=eks,n=123,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694
a=zee,n=456,b=wye,i=8,x=0.5985540091064224,yyy=0.976181385699006
a=pan,n=234,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864


================================================================
JOIN MIXED-FORMAT

mlr --json join -s -j x -f ./reg_test/input/multi-format-join-a.json ./reg_test/input/multi-format-join-b.json
{ "x": 1, "a": 2, "b": 20 }
{ "x": 2, "a": 3, "b": 30 }
{ "x": 3, "a": 4, "b": 40 }
{ "x": 4, "a": 5, "b": 50 }

mlr --dkvp join -s -j x -f ./reg_test/input/multi-format-join-a.dkvp ./reg_test/input/multi-format-join-b.dkvp
x=1,a=2,b=20
x=2,a=3,b=30
x=3,a=4,b=40
x=4,a=5,b=50

mlr --csvlite join -s -j x -f ./reg_test/input/multi-format-join-a.csv ./reg_test/input/multi-format-join-b.csv
x,a,b
1,2,20
2,3,30
3,4,40
4,5,50

mlr --json join -j x -f ./reg_test/input/multi-format-join-a.json ./reg_test/input/multi-format-join-b.json
{ "x": 1, "a": 2, "b": 20 }
{ "x": 2, "a": 3, "b": 30 }
{ "x": 3, "a": 4, "b": 40 }
{ "x": 4, "a": 5, "b": 50 }

mlr --dkvp join -j x -f ./reg_test/input/multi-format-join-a.dkvp ./reg_test/input/multi-format-join-b.dkvp
x=1,a=2,b=20
x=2,a=3,b=30
x=3,a=4,b=40
x=4,a=5,b=50

mlr --csvlite join -j x -f ./reg_test/input/multi-format-join-a.csv ./reg_test/input/multi-format-join-b.csv
x,a,b
1,2,20
2,3,30
3,4,40
4,5,50

mlr --json join -s -i csvlite -j x -f ./reg_test/input/multi-format-join-a.csv ./reg_test/input/multi-format-join-b.json
{ "x": 1, "a": 2, "b": 20 }
{ "x": 2, "a": 3, "b": 30 }
{ "x": 3, "a": 4, "b": 40 }
{ "x": 4, "a": 5, "b": 50 }

mlr --dkvp join -s -i csvlite -j x -f ./reg_test/input/multi-format-join-a.csv ./reg_test/input/multi-format-join-b.dkvp
x=1,a=2,b=20
x=2,a=3,b=30
x=3,a=4,b=40
x=4,a=5,b=50

mlr --csvlite join -s -i csvlite -j x -f ./reg_test/input/multi-format-join-a.csv ./reg_test/input/multi-format-join-b.csv
x,a,b
1,2,20
2,3,30
3,4,40
4,5,50

mlr --json join -i csvlite -j x -f ./reg_test/input/multi-format-join-a.csv ./reg_test/input/multi-format-join-b.json
{ "x": 1, "a": 2, "b": 20 }
{ "x": 2, "a": 3, "b": 30 }
{ "x": 3, "a": 4, "b": 40 }
{ "x": 4, "a": 5, "b": 50 }

mlr --dkvp join -i csvlite -j x -f ./reg_test/input/multi-format-join-a.csv ./reg_test/input/multi-format-join-b.dkvp
x=1,a=2,b=20
x=2,a=3,b=30
x=3,a=4,b=40
x=4,a=5,b=50

mlr --csvlite join -i csvlite -j x -f ./reg_test/input/multi-format-join-a.csv ./reg_test/input/multi-format-join-b.csv
x,a,b
1,2,20
2,3,30
3,4,40
4,5,50

mlr --json join -s -i dkvp -j x -f ./reg_test/input/multi-format-join-a.dkvp ./reg_test/input/multi-format-join-b.json
{ "x": 1, "a": 2, "b": 20 }
{ "x": 2, "a": 3, "b": 30 }
{ "x": 3, "a": 4, "b": 40 }
{ "x": 4, "a": 5, "b": 50 }

mlr --dkvp join -s -i dkvp -j x -f ./reg_test/input/multi-format-join-a.dkvp ./reg_test/input/multi-format-join-b.dkvp
x=1,a=2,b=20
x=2,a=3,b=30
x=3,a=4,b=40
x=4,a=5,b=50

mlr --csvlite join -s -i dkvp -j x -f ./reg_test/input/multi-format-join-a.dkvp ./reg_test/input/multi-format-join-b.csv
x,a,b
1,2,20
2,3,30
3,4,40
4,5,50

mlr --json join -i dkvp -j x -f ./reg_test/input/multi-format-join-a.dkvp ./reg_test/input/multi-format-join-b.json
{ "x": 1, "a": 2, "b": 20 }
{ "x": 2, "a": 3, "b": 30 }
{ "x": 3, "a": 4, "b": 40 }
{ "x": 4, "a": 5, "b": 50 }

mlr --dkvp join -i dkvp -j x -f ./reg_test/input/multi-format-join-a.dkvp ./reg_test/input/multi-format-join-b.dkvp
x=1,a=2,b=20
x=2,a=3,b=30
x=3,a=4,b=40
x=4,a=5,b=50

mlr --csvlite join -i dkvp -j x -f ./reg_test/input/multi-format-join-a.dkvp ./reg_test/input/multi-format-join-b.csv
x,a,b
1,2,20
2,3,30
3,4,40
4,5,50

mlr --json join -s -i json -j x -f ./reg_test/input/multi-format-join-a.json ./reg_test/input/multi-format-join-b.json
{ "x": 1, "a": 2, "b": 20 }
{ "x": 2, "a": 3, "b": 30 }
{ "x": 3, "a": 4, "b": 40 }
{ "x": 4, "a": 5, "b": 50 }

mlr --dkvp join -s -i json -j x -f ./reg_test/input/multi-format-join-a.json ./reg_test/input/multi-format-join-b.dkvp
x=1,a=2,b=20
x=2,a=3,b=30
x=3,a=4,b=40
x=4,a=5,b=50

mlr --csvlite join -s -i json -j x -f ./reg_test/input/multi-format-join-a.json ./reg_test/input/multi-format-join-b.csv
x,a,b
1,2,20
2,3,30
3,4,40
4,5,50

mlr --json join -i json -j x -f ./reg_test/input/multi-format-join-a.json ./reg_test/input/multi-format-join-b.json
{ "x": 1, "a": 2, "b": 20 }
{ "x": 2, "a": 3, "b": 30 }
{ "x": 3, "a": 4, "b": 40 }
{ "x": 4, "a": 5, "b": 50 }

mlr --dkvp join -i json -j x -f ./reg_test/input/multi-format-join-a.json ./reg_test/input/multi-format-join-b.dkvp
x=1,a=2,b=20
x=2,a=3,b=30
x=3,a=4,b=40
x=4,a=5,b=50

mlr --csvlite join -i json -j x -f ./reg_test/input/multi-format-join-a.json ./reg_test/input/multi-format-join-b.csv
x,a,b
1,2,20
2,3,30
3,4,40
4,5,50

mlr --ijson --ojson join -i csvlite -j x -f ./reg_test/input/multi-format-join-a.csv ./reg_test/input/multi-format-join-b.json
{ "x": 1, "a": 2, "b": 20 }
{ "x": 2, "a": 3, "b": 30 }
{ "x": 3, "a": 4, "b": 40 }
{ "x": 4, "a": 5, "b": 50 }

mlr --idkvp --ojson join -i csvlite -j x -f ./reg_test/input/multi-format-join-a.csv ./reg_test/input/multi-format-join-b.dkvp
{ "x": 1, "a": 2, "b": 20 }
{ "x": 2, "a": 3, "b": 30 }
{ "x": 3, "a": 4, "b": 40 }
{ "x": 4, "a": 5, "b": 50 }

mlr --icsvlite --ojson join -i csvlite -j x -f ./reg_test/input/multi-format-join-a.csv ./reg_test/input/multi-format-join-b.csv
{ "x": 1, "a": 2, "b": 20 }
{ "x": 2, "a": 3, "b": 30 }
{ "x": 3, "a": 4, "b": 40 }
{ "x": 4, "a": 5, "b": 50 }

mlr --ijson --ojson join -i dkvp -j x -f ./reg_test/input/multi-format-join-a.dkvp ./reg_test/input/multi-format-join-b.json
{ "x": 1, "a": 2, "b": 20 }
{ "x": 2, "a": 3, "b": 30 }
{ "x": 3, "a": 4, "b": 40 }
{ "x": 4, "a": 5, "b": 50 }

mlr --idkvp --ojson join -i dkvp -j x -f ./reg_test/input/multi-format-join-a.dkvp ./reg_test/input/multi-format-join-b.dkvp
{ "x": 1, "a": 2, "b": 20 }
{ "x": 2, "a": 3, "b": 30 }
{ "x": 3, "a": 4, "b": 40 }
{ "x": 4, "a": 5, "b": 50 }

mlr --icsvlite --ojson join -i dkvp -j x -f ./reg_test/input/multi-format-join-a.dkvp ./reg_test/input/multi-format-join-b.csv
{ "x": 1, "a": 2, "b": 20 }
{ "x": 2, "a": 3, "b": 30 }
{ "x": 3, "a": 4, "b": 40 }
{ "x": 4, "a": 5, "b": 50 }

mlr --ijson --ojson join -i json -j x -f ./reg_test/input/multi-format-join-a.json ./reg_test/input/multi-format-join-b.json
{ "x": 1, "a": 2, "b": 20 }
{ "x": 2, "a": 3, "b": 30 }
{ "x": 3, "a": 4, "b": 40 }
{ "x": 4, "a": 5, "b": 50 }

mlr --idkvp --ojson join -i json -j x -f ./reg_test/input/multi-format-join-a.json ./reg_test/input/multi-format-join-b.dkvp
{ "x": 1, "a": 2, "b": 20 }
{ "x": 2, "a": 3, "b": 30 }
{ "x": 3, "a": 4, "b": 40 }
{ "x": 4, "a": 5, "b": 50 }

mlr --icsvlite --ojson join -i json -j x -f ./reg_test/input/multi-format-join-a.json ./reg_test/input/multi-format-join-b.csv
{ "x": 1, "a": 2, "b": 20 }
{ "x": 2, "a": 3, "b": 30 }
{ "x": 3, "a": 4, "b": 40 }
{ "x": 4, "a": 5, "b": 50 }

mlr --ijson --odkvp join -i csvlite -j x -f ./reg_test/input/multi-format-join-a.csv ./reg_test/input/multi-format-join-b.json
x=1,a=2,b=20
x=2,a=3,b=30
x=3,a=4,b=40
x=4,a=5,b=50

mlr --idkvp --odkvp join -i csvlite -j x -f ./reg_test/input/multi-format-join-a.csv ./reg_test/input/multi-format-join-b.dkvp
x=1,a=2,b=20
x=2,a=3,b=30
x=3,a=4,b=40
x=4,a=5,b=50

mlr --icsvlite --odkvp join -i csvlite -j x -f ./reg_test/input/multi-format-join-a.csv ./reg_test/input/multi-format-join-b.csv
x=1,a=2,b=20
x=2,a=3,b=30
x=3,a=4,b=40
x=4,a=5,b=50

mlr --ijson --odkvp join -i dkvp -j x -f ./reg_test/input/multi-format-join-a.dkvp ./reg_test/input/multi-format-join-b.json
x=1,a=2,b=20
x=2,a=3,b=30
x=3,a=4,b=40
x=4,a=5,b=50

mlr --idkvp --odkvp join -i dkvp -j x -f ./reg_test/input/multi-format-join-a.dkvp ./reg_test/input/multi-format-join-b.dkvp
x=1,a=2,b=20
x=2,a=3,b=30
x=3,a=4,b=40
x=4,a=5,b=50

mlr --icsvlite --odkvp join -i dkvp -j x -f ./reg_test/input/multi-format-join-a.dkvp ./reg_test/input/multi-format-join-b.csv
x=1,a=2,b=20
x=2,a=3,b=30
x=3,a=4,b=40
x=4,a=5,b=50

mlr --ijson --odkvp join -i json -j x -f ./reg_test/input/multi-format-join-a.json ./reg_test/input/multi-format-join-b.json
x=1,a=2,b=20
x=2,a=3,b=30
x=3,a=4,b=40
x=4,a=5,b=50

mlr --idkvp --odkvp join -i json -j x -f ./reg_test/input/multi-format-join-a.json ./reg_test/input/multi-format-join-b.dkvp
x=1,a=2,b=20
x=2,a=3,b=30
x=3,a=4,b=40
x=4,a=5,b=50

mlr --icsvlite --odkvp join -i json -j x -f ./reg_test/input/multi-format-join-a.json ./reg_test/input/multi-format-join-b.csv
x=1,a=2,b=20
x=2,a=3,b=30
x=3,a=4,b=40
x=4,a=5,b=50

mlr --ijson --ocsvlite join -i csvlite -j x -f ./reg_test/input/multi-format-join-a.csv ./reg_test/input/multi-format-join-b.json
x,a,b
1,2,20
2,3,30
3,4,40
4,5,50

mlr --idkvp --ocsvlite join -i csvlite -j x -f ./reg_test/input/multi-format-join-a.csv ./reg_test/input/multi-format-join-b.dkvp
x,a,b
1,2,20
2,3,30
3,4,40
4,5,50

mlr --icsvlite --ocsvlite join -i csvlite -j x -f ./reg_test/input/multi-format-join-a.csv ./reg_test/input/multi-format-join-b.csv
x,a,b
1,2,20
2,3,30
3,4,40
4,5,50

mlr --ijson --ocsvlite join -i dkvp -j x -f ./reg_test/input/multi-format-join-a.dkvp ./reg_test/input/multi-format-join-b.json
x,a,b
1,2,20
2,3,30
3,4,40
4,5,50

mlr --idkvp --ocsvlite join -i dkvp -j x -f ./reg_test/input/multi-format-join-a.dkvp ./reg_test/input/multi-format-join-b.dkvp
x,a,b
1,2,20
2,3,30
3,4,40
4,5,50

mlr --icsvlite --ocsvlite join -i dkvp -j x -f ./reg_test/input/multi-format-join-a.dkvp ./reg_test/input/multi-format-join-b.csv
x,a,b
1,2,20
2,3,30
3,4,40
4,5,50

mlr --ijson --ocsvlite join -i json -j x -f ./reg_test/input/multi-format-join-a.json ./reg_test/input/multi-format-join-b.json
x,a,b
1,2,20
2,3,30
3,4,40
4,5,50

mlr --idkvp --ocsvlite join -i json -j x -f ./reg_test/input/multi-format-join-a.json ./reg_test/input/multi-format-join-b.dkvp
x,a,b
1,2,20
2,3,30
3,4,40
4,5,50

mlr --icsvlite --ocsvlite join -i json -j x -f ./reg_test/input/multi-format-join-a.json ./reg_test/input/multi-format-join-b.csv
x,a,b
1,2,20
2,3,30
3,4,40
4,5,50


================================================================
RESHAPE

mlr --pprint reshape -i X,Y,Z -o item,price ./reg_test/input/reshape-wide.tbl
time       item price
2009-01-01 X    0.65473572
2009-01-01 Y    2.4520609
2009-01-01 Z    -1.46570942
2009-01-02 X    -0.89248112
2009-01-02 Y    0.2154713
2009-01-02 Z    -2.05357735
2009-01-03 X    0.98012375
2009-01-03 Y    1.3179287
2009-01-03 Z    4.64248357
2009-01-04 X    0.35397376
2009-01-04 Y    3.3765645
2009-01-04 Z    -0.25237774
2009-01-05 X    2.19357813
2009-01-05 Y    1.3477511
2009-01-05 Z    0.09719105

mlr --pprint reshape -i X,Z -o item,price ./reg_test/input/reshape-wide.tbl
time       Y         item price
2009-01-01 2.4520609 X    0.65473572
2009-01-01 2.4520609 Z    -1.46570942
2009-01-02 0.2154713 X    -0.89248112
2009-01-02 0.2154713 Z    -2.05357735
2009-01-03 1.3179287 X    0.98012375
2009-01-03 1.3179287 Z    4.64248357
2009-01-04 3.3765645 X    0.35397376
2009-01-04 3.3765645 Z    -0.25237774
2009-01-05 1.3477511 X    2.19357813
2009-01-05 1.3477511 Z    0.09719105

mlr --pprint reshape -r [X-Z] -o item,price ./reg_test/input/reshape-wide.tbl
time       item price
2009-01-01 X    0.65473572
2009-01-01 Y    2.4520609
2009-01-01 Z    -1.46570942
2009-01-02 X    -0.89248112
2009-01-02 Y    0.2154713
2009-01-02 Z    -2.05357735
2009-01-03 X    0.98012375
2009-01-03 Y    1.3179287
2009-01-03 Z    4.64248357
2009-01-04 X    0.35397376
2009-01-04 Y    3.3765645
2009-01-04 Z    -0.25237774
2009-01-05 X    2.19357813
2009-01-05 Y    1.3477511
2009-01-05 Z    0.09719105

mlr --pprint reshape -r [XZ] -o item,price ./reg_test/input/reshape-wide.tbl
time       Y         item price
2009-01-01 2.4520609 X    0.65473572
2009-01-01 2.4520609 Z    -1.46570942
2009-01-02 0.2154713 X    -0.89248112
2009-01-02 0.2154713 Z    -2.05357735
2009-01-03 1.3179287 X    0.98012375
2009-01-03 1.3179287 Z    4.64248357
2009-01-04 3.3765645 X    0.35397376
2009-01-04 3.3765645 Z    -0.25237774
2009-01-05 1.3477511 X    2.19357813
2009-01-05 1.3477511 Z    0.09719105

mlr --pprint reshape -s item,price ./reg_test/input/reshape-long.tbl
time       X           Y         Z
2009-01-01 0.65473572  2.4520609 -1.46570942
2009-01-02 -0.89248112 0.2154713 -2.05357735
2009-01-03 0.98012375  1.3179287 4.64248357
2009-01-04 0.35397376  3.3765645 -0.25237774
2009-01-05 2.19357813  1.3477511 0.09719105

mlr --pprint reshape -i X,Y,Z -o item,price then reshape -s item,price ./reg_test/input/reshape-wide.tbl
time       X           Y         Z
2009-01-01 0.65473572  2.4520609 -1.46570942
2009-01-02 -0.89248112 0.2154713 -2.05357735
2009-01-03 0.98012375  1.3179287 4.64248357
2009-01-04 0.35397376  3.3765645 -0.25237774
2009-01-05 2.19357813  1.3477511 0.09719105

mlr --pprint reshape -s item,price then reshape -i X,Y,Z -o item,price ./reg_test/input/reshape-long.tbl
time       item price
2009-01-01 X    0.65473572
2009-01-01 Y    2.4520609
2009-01-01 Z    -1.46570942
2009-01-02 X    -0.89248112
2009-01-02 Y    0.2154713
2009-01-02 Z    -2.05357735
2009-01-03 X    0.98012375
2009-01-03 Y    1.3179287
2009-01-03 Z    4.64248357
2009-01-04 X    0.35397376
2009-01-04 Y    3.3765645
2009-01-04 Z    -0.25237774
2009-01-05 X    2.19357813
2009-01-05 Y    1.3477511
2009-01-05 Z    0.09719105

mlr reshape -i X,Y,Z -o item,price ./reg_test/input/reshape-wide-ragged.dkvp
time=2009-01-01,item=X,price=0.65473572
time=2009-01-01,item=Y,price=2.4520609
time=2009-01-01,item=Z,price=-1.46570942
time=2009-01-02,item=X,price=-0.89248112
time=2009-01-02,item=Y,price=0.2154713
time=2009-01-03,item=X,price=0.98012375
time=2009-01-04
time=2009-01-05,U=1.3477511,V=0.09719105,item=X,price=2.19357813

mlr reshape -i X,Z -o item,price ./reg_test/input/reshape-wide-ragged.dkvp
time=2009-01-01,Y=2.4520609,item=X,price=0.65473572
time=2009-01-01,Y=2.4520609,item=Z,price=-1.46570942
time=2009-01-02,Y=0.2154713,item=X,price=-0.89248112
time=2009-01-03,item=X,price=0.98012375
time=2009-01-04
time=2009-01-05,U=1.3477511,V=0.09719105,item=X,price=2.19357813

mlr reshape -r [X-Z] -o item,price ./reg_test/input/reshape-wide-ragged.dkvp
time=2009-01-01,item=X,price=0.65473572
time=2009-01-01,item=Y,price=2.4520609
time=2009-01-01,item=Z,price=-1.46570942
time=2009-01-02,item=X,price=-0.89248112
time=2009-01-02,item=Y,price=0.2154713
time=2009-01-03,item=X,price=0.98012375
time=2009-01-04
time=2009-01-05,U=1.3477511,V=0.09719105,item=X,price=2.19357813

mlr reshape -r [XZ] -o item,price ./reg_test/input/reshape-wide-ragged.dkvp
time=2009-01-01,Y=2.4520609,item=X,price=0.65473572
time=2009-01-01,Y=2.4520609,item=Z,price=-1.46570942
time=2009-01-02,Y=0.2154713,item=X,price=-0.89248112
time=2009-01-03,item=X,price=0.98012375
time=2009-01-04
time=2009-01-05,U=1.3477511,V=0.09719105,item=X,price=2.19357813

mlr reshape -s item,price ./reg_test/input/reshape-long-ragged.dkvp
time=2009-01-01,item=X,value=0.65473572
time=2009-01-01,item=Y,value=2.4520609
time=2009-01-01,item=Z,value=-1.46570942
time=2009-01-02,item=X,value=-0.89248112
time=2009-01-02,item=Y,value=0.2154713
time=2009-01-03,item=X,value=0.98012375
time=2009-01-04
time=2009-01-05,U=1.3477511,V=0.09719105,item=X,value=2.19357813

mlr --json reshape -i x,y -o item,value ./reg_test/input/small-non-nested.json
{ "a": "pan", "b": "pan", "i": 1, "item": "x", "value": 0.3467901443380824 }
{ "a": "pan", "b": "pan", "i": 1, "item": "y", "value": 0.7268028627434533 }
{ "a": "eks", "b": "pan", "i": 2, "item": "x", "value": 0.7586799647899636 }
{ "a": "eks", "b": "pan", "i": 2, "item": "y", "value": 0.5221511083334797 }
{ "a": "wye", "b": "wye", "i": 3, "item": "x", "value": 0.20460330576630303 }
{ "a": "wye", "b": "wye", "i": 3, "item": "y", "value": 0.33831852551664776 }
{ "a": "eks", "b": "wye", "i": 4, "item": "x", "value": 0.38139939387114097 }
{ "a": "eks", "b": "wye", "i": 4, "item": "y", "value": 0.13418874328430463 }
{ "a": "wye", "b": "pan", "i": 5, "item": "x", "value": 0.5732889198020006 }
{ "a": "wye", "b": "pan", "i": 5, "item": "y", "value": 0.8636244699032729 }
{ "a": "zee", "b": "pan", "i": 6, "item": "x", "value": 0.5271261600918548 }
{ "a": "zee", "b": "pan", "i": 6, "item": "y", "value": 0.49322128674835697 }
{ "a": "eks", "b": "zee", "i": 7, "item": "x", "value": 0.6117840605678454 }
{ "a": "eks", "b": "zee", "i": 7, "item": "y", "value": 0.1878849191181694 }
{ "a": "zee", "b": "wye", "i": 8, "item": "x", "value": 0.5985540091064224 }
{ "a": "zee", "b": "wye", "i": 8, "item": "y", "value": 0.976181385699006 }
{ "a": "hat", "b": "wye", "i": 9, "item": "x", "value": 0.03144187646093577 }
{ "a": "hat", "b": "wye", "i": 9, "item": "y", "value": 0.7495507603507059 }
{ "a": "pan", "b": "wye", "i": 10, "item": "x", "value": 0.5026260055412137 }
{ "a": "pan", "b": "wye", "i": 10, "item": "y", "value": 0.9526183602969864 }


================================================================
NEST

mlr cat ./reg_test/input/nest-explode.dkvp
x=a:1;b:2;c:3,y=d:40
x=,y=d:50
u=100,y=d:60
x=a:4;b:5,y=d:70

mlr cat ./reg_test/input/nest-explode-vary-fs-ps.dkvp
x=a=1|b=2|c=3,y=d=40
x=,y=d=50
u=100,y=d=60
x=a=4|b=5,y=d=70

mlr nest --explode --values --across-fields -f x ./reg_test/input/nest-explode.dkvp
x_1=a:1,x_2=b:2,x_3=c:3,y=d:40
x_1=,y=d:50
u=100,y=d:60
x_1=a:4,x_2=b:5,y=d:70

mlr nest --explode --values --across-fields -f x --nested-fs pipe --nested-ps = ./reg_test/input/nest-explode-vary-fs-ps.dkvp
x_1=a=1,x_2=b=2,x_3=c=3,y=d=40
x_1=,y=d=50
u=100,y=d=60
x_1=a=4,x_2=b=5,y=d=70

mlr nest --explode --values --across-fields -f x then nest --implode --values --across-fields -f x ./reg_test/input/nest-explode.dkvp
x=a:1;b:2;c:3,y=d:40
x=,y=d:50
u=100,y=d:60
x=a:4;b:5,y=d:70

mlr nest --explode --values --across-fields -f x --nested-fs pipe --nested-ps = then nest --implode --values --across-fields -f x --nested-fs pipe --nested-ps = ./reg_test/input/nest-explode-vary-fs-ps.dkvp
x=a=1|b=2|c=3,y=d=40
x=,y=d=50
u=100,y=d=60
x=a=4|b=5,y=d=70

mlr nest --explode --values --across-records -f x ./reg_test/input/nest-explode.dkvp
x=a:1,y=d:40
x=b:2,y=d:40
x=c:3,y=d:40
x=,y=d:50
u=100,y=d:60
x=a:4,y=d:70
x=b:5,y=d:70

mlr nest --explode --values --across-records -f x --nested-fs pipe --nested-ps = ./reg_test/input/nest-explode-vary-fs-ps.dkvp
x=a=1,y=d=40
x=b=2,y=d=40
x=c=3,y=d=40
x=,y=d=50
u=100,y=d=60
x=a=4,y=d=70
x=b=5,y=d=70

mlr nest --explode --values --across-records -f x then nest --implode --values --across-records -f x ./reg_test/input/nest-explode.dkvp
u=100,y=d:60
x=a:1;b:2;c:3,y=d:40
x=,y=d:50
x=a:4;b:5,y=d:70

mlr nest --explode --values --across-records -f x --nested-fs pipe --nested-ps = then nest --implode --values --across-records -f x --nested-fs pipe --nested-ps = ./reg_test/input/nest-explode-vary-fs-ps.dkvp
u=100,y=d=60
x=a=1|b=2|c=3,y=d=40
x=,y=d=50
x=a=4|b=5,y=d=70

mlr nest --explode --pairs --across-fields -f x ./reg_test/input/nest-explode.dkvp
a=1,b=2,c=3,y=d:40
y=d:50
u=100,y=d:60
a=4,b=5,y=d:70

mlr nest --explode --pairs --across-fields -f x --nested-fs pipe --nested-ps = ./reg_test/input/nest-explode-vary-fs-ps.dkvp
a=1,b=2,c=3,y=d=40
y=d=50
u=100,y=d=60
a=4,b=5,y=d=70

mlr nest --explode --pairs --across-records -f x ./reg_test/input/nest-explode.dkvp
a=1,y=d:40
b=2,y=d:40
c=3,y=d:40
y=d:50
u=100,y=d:60
a=4,y=d:70
b=5,y=d:70

mlr nest --explode --pairs --across-records -f x --nested-fs pipe --nested-ps = ./reg_test/input/nest-explode-vary-fs-ps.dkvp
a=1,y=d=40
b=2,y=d=40
c=3,y=d=40
y=d=50
u=100,y=d=60
a=4,y=d=70
b=5,y=d=70


================================================================
FILL-DOWN

mlr --csv fill-down -f a,b,c ./reg_test/input/fill-down.csv
a,b,c
1,,3
4,5,6
7,5,9

mlr --csv fill-down -f a,b,c -a ./reg_test/input/fill-down.csv
a,b,c
1,,3
4,5,6
7,,9


================================================================
SEQGEN

mlr seqgen --start 1 --stop 5 --step 1
i=1
i=2
i=3
i=4
i=5

mlr seqgen --start 1 --stop 5 --step 2
i=1
i=3
i=5

mlr seqgen --start 1 --stop 1 --step 1 -f a
a=1

mlr seqgen --start 5 --stop 1 --step 1 -f b

mlr seqgen --start 5 --stop 1 --step -1 -f c
c=5
c=4
c=3
c=2
c=1

mlr seqgen --start 5 --stop 5 --step -1 -f d
d=5

mlr --from ./reg_test/input/abixy cat then seqgen --start 1 --stop 5
i=1
i=2
i=3
i=4
i=5

mlr --from ./reg_test/input/abixy cat then seqgen --start 1 --stop 100 then stats1 -a count,sum,min,p50,max -f i
i_count=100,i_sum=5050,i_min=1,i_p50=51,i_max=100


================================================================
FRACTION

mlr fraction -f x,y ./reg_test/input/abixy-het
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533,x_fraction=0.087507,y_fraction=0.146286
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797,x_fraction=0.191441,y_fraction=0.105095
aaa=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776,x_fraction=0.051628,y_fraction=0.068095
a=eks,bbb=wye,i=4,x=0.38139939387114097,y=0.13418874328430463,x_fraction=0.096240,y_fraction=0.027009
a=wye,b=pan,i=5,xxx=0.5732889198020006,y=0.8636244699032729,y_fraction=0.173825
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697,x_fraction=0.133012,y_fraction=0.099272
a=eks,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694,x_fraction=0.154374,y_fraction=0.037816
a=zee,b=wye,i=8,x=0.5985540091064224,yyy=0.976181385699006,x_fraction=0.151035
aaa=hat,bbb=wye,i=9,x=0.03144187646093577,y=0.7495507603507059,x_fraction=0.007934,y_fraction=0.150865
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864,x_fraction=0.126830,y_fraction=0.191737

mlr fraction -f x,y -g a ./reg_test/input/abixy-het
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533,x_fraction=0.408269,y_fraction=0.432770
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797,x_fraction=0.433070,y_fraction=0.618498
aaa=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=eks,bbb=wye,i=4,x=0.38139939387114097,y=0.13418874328430463,x_fraction=0.217711,y_fraction=0.158949
a=wye,b=pan,i=5,xxx=0.5732889198020006,y=0.8636244699032729,y_fraction=1.000000
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697,x_fraction=0.468273,y_fraction=1.000000
a=eks,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694,x_fraction=0.349219,y_fraction=0.222553
a=zee,b=wye,i=8,x=0.5985540091064224,yyy=0.976181385699006,x_fraction=0.531727
aaa=hat,bbb=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864,x_fraction=0.591731,y_fraction=0.567230

mlr fraction -f x,y -g a,b ./reg_test/input/abixy-het
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533,x_fraction=1.000000,y_fraction=1.000000
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797,x_fraction=1.000000,y_fraction=1.000000
aaa=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=eks,bbb=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=wye,b=pan,i=5,xxx=0.5732889198020006,y=0.8636244699032729,y_fraction=1.000000
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697,x_fraction=1.000000,y_fraction=1.000000
a=eks,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694,x_fraction=1.000000,y_fraction=1.000000
a=zee,b=wye,i=8,x=0.5985540091064224,yyy=0.976181385699006,x_fraction=1.000000
aaa=hat,bbb=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864,x_fraction=1.000000,y_fraction=1.000000

mlr fraction -f x,y -p ./reg_test/input/abixy-het
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533,x_percent=8.750687,y_percent=14.628624
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797,x_percent=19.144058,y_percent=10.509524
aaa=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776,x_percent=5.162832,y_percent=6.809459
a=eks,bbb=wye,i=4,x=0.38139939387114097,y=0.13418874328430463,x_percent=9.623995,y_percent=2.700865
a=wye,b=pan,i=5,xxx=0.5732889198020006,y=0.8636244699032729,y_percent=17.382482
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697,x_percent=13.301173,y_percent=9.927243
a=eks,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694,x_percent=15.437378,y_percent=3.781628
a=zee,b=wye,i=8,x=0.5985540091064224,yyy=0.976181385699006,x_percent=15.103539
aaa=hat,bbb=wye,i=9,x=0.03144187646093577,y=0.7495507603507059,x_percent=0.793385,y_percent=15.086479
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864,x_percent=12.682952,y_percent=19.173694

mlr fraction -f x,y -g a -p ./reg_test/input/abixy-het
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533,x_percent=40.826884,y_percent=43.276985
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797,x_percent=43.307027,y_percent=61.849773
aaa=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=eks,bbb=wye,i=4,x=0.38139939387114097,y=0.13418874328430463,x_percent=21.771069,y_percent=15.894907
a=wye,b=pan,i=5,xxx=0.5732889198020006,y=0.8636244699032729,y_percent=100.000000
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697,x_percent=46.827347,y_percent=100.000000
a=eks,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694,x_percent=34.921904,y_percent=22.255319
a=zee,b=wye,i=8,x=0.5985540091064224,yyy=0.976181385699006,x_percent=53.172653
aaa=hat,bbb=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864,x_percent=59.173116,y_percent=56.723015

mlr fraction -f x,y -g a,b -p ./reg_test/input/abixy-het
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533,x_percent=100.000000,y_percent=100.000000
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797,x_percent=100.000000,y_percent=100.000000
aaa=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=eks,bbb=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=wye,b=pan,i=5,xxx=0.5732889198020006,y=0.8636244699032729,y_percent=100.000000
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697,x_percent=100.000000,y_percent=100.000000
a=eks,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694,x_percent=100.000000,y_percent=100.000000
a=zee,b=wye,i=8,x=0.5985540091064224,yyy=0.976181385699006,x_percent=100.000000
aaa=hat,bbb=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864,x_percent=100.000000,y_percent=100.000000

mlr fraction -f x,y -c ./reg_test/input/abixy-het
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533,x_cumulative_fraction=0.087507,y_cumulative_fraction=0.146286
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797,x_cumulative_fraction=0.278947,y_cumulative_fraction=0.251381
aaa=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776,x_cumulative_fraction=0.330576,y_cumulative_fraction=0.319476
a=eks,bbb=wye,i=4,x=0.38139939387114097,y=0.13418874328430463,x_cumulative_fraction=0.426816,y_cumulative_fraction=0.346485
a=wye,b=pan,i=5,xxx=0.5732889198020006,y=0.8636244699032729,y_cumulative_fraction=0.520310
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697,x_cumulative_fraction=0.559827,y_cumulative_fraction=0.619582
a=eks,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694,x_cumulative_fraction=0.714201,y_cumulative_fraction=0.657398
a=zee,b=wye,i=8,x=0.5985540091064224,yyy=0.976181385699006,x_cumulative_fraction=0.865237
aaa=hat,bbb=wye,i=9,x=0.03144187646093577,y=0.7495507603507059,x_cumulative_fraction=0.873170,y_cumulative_fraction=0.808263
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864,x_cumulative_fraction=1.000000,y_cumulative_fraction=1.000000

mlr fraction -f x,y -g a -c ./reg_test/input/abixy-het
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533,x_cumulative_fraction=0.408269,y_cumulative_fraction=0.432770
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797,x_cumulative_fraction=0.433070,y_cumulative_fraction=0.618498
aaa=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=eks,bbb=wye,i=4,x=0.38139939387114097,y=0.13418874328430463,x_cumulative_fraction=0.650781,y_cumulative_fraction=0.777447
a=wye,b=pan,i=5,xxx=0.5732889198020006,y=0.8636244699032729,y_cumulative_fraction=1.000000
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697,x_cumulative_fraction=0.468273,y_cumulative_fraction=1.000000
a=eks,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694,x_cumulative_fraction=1.000000,y_cumulative_fraction=1.000000
a=zee,b=wye,i=8,x=0.5985540091064224,yyy=0.976181385699006,x_cumulative_fraction=1.000000
aaa=hat,bbb=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864,x_cumulative_fraction=1.000000,y_cumulative_fraction=1.000000

mlr fraction -f x,y -g a,b -c ./reg_test/input/abixy-het
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533,x_cumulative_fraction=1.000000,y_cumulative_fraction=1.000000
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797,x_cumulative_fraction=1.000000,y_cumulative_fraction=1.000000
aaa=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=eks,bbb=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=wye,b=pan,i=5,xxx=0.5732889198020006,y=0.8636244699032729,y_cumulative_fraction=1.000000
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697,x_cumulative_fraction=1.000000,y_cumulative_fraction=1.000000
a=eks,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694,x_cumulative_fraction=1.000000,y_cumulative_fraction=1.000000
a=zee,b=wye,i=8,x=0.5985540091064224,yyy=0.976181385699006,x_cumulative_fraction=1.000000
aaa=hat,bbb=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864,x_cumulative_fraction=1.000000,y_cumulative_fraction=1.000000

mlr fraction -f x,y -p -c ./reg_test/input/abixy-het
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533,x_cumulative_percent=8.750687,y_cumulative_percent=14.628624
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797,x_cumulative_percent=27.894745,y_cumulative_percent=25.138148
aaa=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776,x_cumulative_percent=33.057577,y_cumulative_percent=31.947608
a=eks,bbb=wye,i=4,x=0.38139939387114097,y=0.13418874328430463,x_cumulative_percent=42.681572,y_cumulative_percent=34.648473
a=wye,b=pan,i=5,xxx=0.5732889198020006,y=0.8636244699032729,y_cumulative_percent=52.030955
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697,x_cumulative_percent=55.982746,y_cumulative_percent=61.958199
a=eks,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694,x_cumulative_percent=71.420124,y_cumulative_percent=65.739826
a=zee,b=wye,i=8,x=0.5985540091064224,yyy=0.976181385699006,x_cumulative_percent=86.523663
aaa=hat,bbb=wye,i=9,x=0.03144187646093577,y=0.7495507603507059,x_cumulative_percent=87.317048,y_cumulative_percent=80.826306
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864,x_cumulative_percent=100.000000,y_cumulative_percent=100.000000

mlr fraction -f x,y -g a -p -c ./reg_test/input/abixy-het
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533,x_cumulative_percent=40.826884,y_cumulative_percent=43.276985
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797,x_cumulative_percent=43.307027,y_cumulative_percent=61.849773
aaa=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=eks,bbb=wye,i=4,x=0.38139939387114097,y=0.13418874328430463,x_cumulative_percent=65.078096,y_cumulative_percent=77.744681
a=wye,b=pan,i=5,xxx=0.5732889198020006,y=0.8636244699032729,y_cumulative_percent=100.000000
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697,x_cumulative_percent=46.827347,y_cumulative_percent=100.000000
a=eks,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694,x_cumulative_percent=100.000000,y_cumulative_percent=100.000000
a=zee,b=wye,i=8,x=0.5985540091064224,yyy=0.976181385699006,x_cumulative_percent=100.000000
aaa=hat,bbb=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864,x_cumulative_percent=100.000000,y_cumulative_percent=100.000000

mlr fraction -f x,y -g a,b -p -c ./reg_test/input/abixy-het
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533,x_cumulative_percent=100.000000,y_cumulative_percent=100.000000
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797,x_cumulative_percent=100.000000,y_cumulative_percent=100.000000
aaa=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=eks,bbb=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=wye,b=pan,i=5,xxx=0.5732889198020006,y=0.8636244699032729,y_cumulative_percent=100.000000
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697,x_cumulative_percent=100.000000,y_cumulative_percent=100.000000
a=eks,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694,x_cumulative_percent=100.000000,y_cumulative_percent=100.000000
a=zee,b=wye,i=8,x=0.5985540091064224,yyy=0.976181385699006,x_cumulative_percent=100.000000
aaa=hat,bbb=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864,x_cumulative_percent=100.000000,y_cumulative_percent=100.000000


================================================================
STATS

mlr --opprint stats1 -a mean,sum,count,min,max,antimode,mode -f i,x,y ./reg_test/input/abixy
i_mean   i_sum i_count i_min i_max i_antimode i_mode x_mean   x_sum    x_count x_min    x_max    x_antimode         x_mode             y_mean   y_sum    y_count y_min    y_max    y_antimode         y_mode
5.500000 55    10      1     10    1          1      0.453629 4.536294 10      0.031442 0.758680 0.3467901443380824 0.3467901443380824 0.594454 5.944542 10      0.134189 0.976181 0.7268028627434533 0.7268028627434533

mlr --opprint stats1 -a min,p10,p50,median,antimode,mode,p90,max -f i,x,y ./reg_test/input/abixy
i_min i_p10 i_p50 i_median i_antimode i_mode i_p90 i_max x_min    x_p10    x_p50    x_median x_antimode         x_mode             x_p90    x_max    y_min    y_p10    y_p50    y_median y_antimode         y_mode             y_p90    y_max
1     2     6     6        1          1      10    10    0.031442 0.204603 0.527126 0.527126 0.3467901443380824 0.3467901443380824 0.758680 0.758680 0.134189 0.187885 0.726803 0.726803 0.7268028627434533 0.7268028627434533 0.976181 0.976181

mlr --opprint stats1 -a mean,meaneb,stddev -f i,x,y ./reg_test/input/abixy
i_mean   i_meaneb i_stddev x_mean   x_meaneb x_stddev y_mean   y_meaneb y_stddev
5.500000 0.957427 3.027650 0.453629 0.068157 0.215531 0.594454 0.096968 0.306639

mlr --oxtab stats1 -s -a mean,sum,count,min,max,antimode,mode -f i,x,y ./reg_test/input/abixy
a          pan
b          pan
i          1
x          0.3467901443380824
y          0.7268028627434533
i_mean     1.000000
i_sum      1
i_count    1
i_min      1
i_max      1
i_antimode 1
i_mode     1
x_mean     0.346790
x_sum      0.346790
x_count    1
x_min      0.346790
x_max      0.346790
x_antimode 0.3467901443380824
x_mode     0.3467901443380824
y_mean     0.726803
y_sum      0.726803
y_count    1
y_min      0.726803
y_max      0.726803
y_antimode 0.7268028627434533
y_mode     0.7268028627434533

a          eks
b          pan
i          2
x          0.7586799647899636
y          0.5221511083334797
i_mean     1.500000
i_sum      3
i_count    2
i_min      1
i_max      2
i_antimode 1
i_mode     1
x_mean     0.552735
x_sum      1.105470
x_count    2
x_min      0.346790
x_max      0.758680
x_antimode 0.3467901443380824
x_mode     0.3467901443380824
y_mean     0.624477
y_sum      1.248954
y_count    2
y_min      0.522151
y_max      0.726803
y_antimode 0.7268028627434533
y_mode     0.7268028627434533

a          wye
b          wye
i          3
x          0.20460330576630303
y          0.33831852551664776
i_mean     2.000000
i_sum      6
i_count    3
i_min      1
i_max      3
i_antimode 1
i_mode     1
x_mean     0.436691
x_sum      1.310073
x_count    3
x_min      0.204603
x_max      0.758680
x_antimode 0.3467901443380824
x_mode     0.3467901443380824
y_mean     0.529091
y_sum      1.587272
y_count    3
y_min      0.338319
y_max      0.726803
y_antimode 0.7268028627434533
y_mode     0.7268028627434533

a          eks
b          wye
i          4
x          0.38139939387114097
y          0.13418874328430463
i_mean     2.500000
i_sum      10
i_count    4
i_min      1
i_max      4
i_antimode 1
i_mode     1
x_mean     0.422868
x_sum      1.691473
x_count    4
x_min      0.204603
x_max      0.758680
x_antimode 0.3467901443380824
x_mode     0.3467901443380824
y_mean     0.430365
y_sum      1.721461
y_count    4
y_min      0.134189
y_max      0.726803
y_antimode 0.7268028627434533
y_mode     0.7268028627434533

a          wye
b          pan
i          5
x          0.5732889198020006
y          0.8636244699032729
i_mean     3.000000
i_sum      15
i_count    5
i_min      1
i_max      5
i_antimode 1
i_mode     1
x_mean     0.452952
x_sum      2.264762
x_count    5
x_min      0.204603
x_max      0.758680
x_antimode 0.3467901443380824
x_mode     0.3467901443380824
y_mean     0.517017
y_sum      2.585086
y_count    5
y_min      0.134189
y_max      0.863624
y_antimode 0.7268028627434533
y_mode     0.7268028627434533

a          zee
b          pan
i          6
x          0.5271261600918548
y          0.49322128674835697
i_mean     3.500000
i_sum      21
i_count    6
i_min      1
i_max      6
i_antimode 1
i_mode     1
x_mean     0.465315
x_sum      2.791888
x_count    6
x_min      0.204603
x_max      0.758680
x_antimode 0.3467901443380824
x_mode     0.3467901443380824
y_mean     0.513051
y_sum      3.078307
y_count    6
y_min      0.134189
y_max      0.863624
y_antimode 0.7268028627434533
y_mode     0.7268028627434533

a          eks
b          zee
i          7
x          0.6117840605678454
y          0.1878849191181694
i_mean     4.000000
i_sum      28
i_count    7
i_min      1
i_max      7
i_antimode 1
i_mode     1
x_mean     0.486239
x_sum      3.403672
x_count    7
x_min      0.204603
x_max      0.758680
x_antimode 0.3467901443380824
x_mode     0.3467901443380824
y_mean     0.466599
y_sum      3.266192
y_count    7
y_min      0.134189
y_max      0.863624
y_antimode 0.7268028627434533
y_mode     0.7268028627434533

a          zee
b          wye
i          8
x          0.5985540091064224
y          0.976181385699006
i_mean     4.500000
i_sum      36
i_count    8
i_min      1
i_max      8
i_antimode 1
i_mode     1
x_mean     0.500278
x_sum      4.002226
x_count    8
x_min      0.204603
x_max      0.758680
x_antimode 0.3467901443380824
x_mode     0.3467901443380824
y_mean     0.530297
y_sum      4.242373
y_count    8
y_min      0.134189
y_max      0.976181
y_antimode 0.7268028627434533
y_mode     0.7268028627434533

a          hat
b          wye
i          9
x          0.03144187646093577
y          0.7495507603507059
i_mean     5.000000
i_sum      45
i_count    9
i_min      1
i_max      9
i_antimode 1
i_mode     1
x_mean     0.448185
x_sum      4.033668
x_count    9
x_min      0.031442
x_max      0.758680
x_antimode 0.3467901443380824
x_mode     0.3467901443380824
y_mean     0.554658
y_sum      4.991924
y_count    9
y_min      0.134189
y_max      0.976181
y_antimode 0.7268028627434533
y_mode     0.7268028627434533

a          pan
b          wye
i          10
x          0.5026260055412137
y          0.9526183602969864
i_mean     5.500000
i_sum      55
i_count    10
i_min      1
i_max      10
i_antimode 1
i_mode     1
x_mean     0.453629
x_sum      4.536294
x_count    10
x_min      0.031442
x_max      0.758680
x_antimode 0.3467901443380824
x_mode     0.3467901443380824
y_mean     0.594454
y_sum      5.944542
y_count    10
y_min      0.134189
y_max      0.976181
y_antimode 0.7268028627434533
y_mode     0.7268028627434533

mlr --opprint stats1 -a mean,sum,count,min,max,antimode,mode -f i,x,y -g a ./reg_test/input/abixy
a   i_mean   i_sum i_count i_min i_max i_antimode i_mode x_mean   x_sum    x_count x_min    x_max    x_antimode          x_mode              y_mean   y_sum    y_count y_min    y_max    y_antimode          y_mode
pan 5.500000 11    2       1     10    1          1      0.424708 0.849416 2       0.346790 0.502626 0.3467901443380824  0.3467901443380824  0.839711 1.679421 2       0.726803 0.952618 0.7268028627434533  0.7268028627434533
eks 4.333333 13    3       2     7     2          2      0.583954 1.751863 3       0.381399 0.758680 0.7586799647899636  0.7586799647899636  0.281408 0.844225 3       0.134189 0.522151 0.5221511083334797  0.5221511083334797
wye 4.000000 8     2       3     5     3          3      0.388946 0.777892 2       0.204603 0.573289 0.20460330576630303 0.20460330576630303 0.600971 1.201943 2       0.338319 0.863624 0.33831852551664776 0.33831852551664776
zee 7.000000 14    2       6     8     6          6      0.562840 1.125680 2       0.527126 0.598554 0.5271261600918548  0.5271261600918548  0.734701 1.469403 2       0.493221 0.976181 0.49322128674835697 0.49322128674835697
hat 9.000000 9     1       9     9     9          9      0.031442 0.031442 1       0.031442 0.031442 0.03144187646093577 0.03144187646093577 0.749551 0.749551 1       0.749551 0.749551 0.7495507603507059  0.7495507603507059

mlr --opprint stats1 -a min,p10,p50,median,antimode,mode,p90,max -f i,x,y -g a ./reg_test/input/abixy
a   i_min i_p10 i_p50 i_median i_antimode i_mode i_p90 i_max x_min    x_p10    x_p50    x_median x_antimode          x_mode              x_p90    x_max    y_min    y_p10    y_p50    y_median y_antimode          y_mode              y_p90    y_max
pan 1     1     10    10       1          1      10    10    0.346790 0.346790 0.502626 0.502626 0.3467901443380824  0.3467901443380824  0.502626 0.502626 0.726803 0.726803 0.952618 0.952618 0.7268028627434533  0.7268028627434533  0.952618 0.952618
eks 2     2     4     4        2          2      7     7     0.381399 0.381399 0.611784 0.611784 0.7586799647899636  0.7586799647899636  0.758680 0.758680 0.134189 0.134189 0.187885 0.187885 0.5221511083334797  0.5221511083334797  0.522151 0.522151
wye 3     3     5     5        3          3      5     5     0.204603 0.204603 0.573289 0.573289 0.20460330576630303 0.20460330576630303 0.573289 0.573289 0.338319 0.338319 0.863624 0.863624 0.33831852551664776 0.33831852551664776 0.863624 0.863624
zee 6     6     8     8        6          6      8     8     0.527126 0.527126 0.598554 0.598554 0.5271261600918548  0.5271261600918548  0.598554 0.598554 0.493221 0.493221 0.976181 0.976181 0.49322128674835697 0.49322128674835697 0.976181 0.976181
hat 9     9     9     9        9          9      9     9     0.031442 0.031442 0.031442 0.031442 0.03144187646093577 0.03144187646093577 0.031442 0.031442 0.749551 0.749551 0.749551 0.749551 0.7495507603507059  0.7495507603507059  0.749551 0.749551

mlr --opprint stats1 -a mean,meaneb,stddev -f i,x,y -g a ./reg_test/input/abixy
a   i_mean   i_meaneb i_stddev x_mean   x_meaneb x_stddev y_mean   y_meaneb y_stddev
pan 5.500000 4.500000 6.363961 0.424708 0.077918 0.110193 0.839711 0.112908 0.159676
eks 4.333333 1.452966 2.516611 0.583954 0.109797 0.190174 0.281408 0.121365 0.210211
wye 4.000000 1.000000 1.414214 0.388946 0.184343 0.260700 0.600971 0.262653 0.371447
zee 7.000000 1.000000 1.414214 0.562840 0.035714 0.050507 0.734701 0.241480 0.341504
hat 9.000000 -        -        0.031442 -        -        0.749551 -        -

mlr --oxtab stats1 -s -a mean,sum,count,min,max,antimode,mode -f i,x,y -g a ./reg_test/input/abixy
a          pan
b          pan
i          1
x          0.3467901443380824
y          0.7268028627434533
i_mean     1.000000
i_sum      1
i_count    1
i_min      1
i_max      1
i_antimode 1
i_mode     1
x_mean     0.346790
x_sum      0.346790
x_count    1
x_min      0.346790
x_max      0.346790
x_antimode 0.3467901443380824
x_mode     0.3467901443380824
y_mean     0.726803
y_sum      0.726803
y_count    1
y_min      0.726803
y_max      0.726803
y_antimode 0.7268028627434533
y_mode     0.7268028627434533

a          eks
b          pan
i          2
x          0.7586799647899636
y          0.5221511083334797
i_mean     2.000000
i_sum      2
i_count    1
i_min      2
i_max      2
i_antimode 2
i_mode     2
x_mean     0.758680
x_sum      0.758680
x_count    1
x_min      0.758680
x_max      0.758680
x_antimode 0.7586799647899636
x_mode     0.7586799647899636
y_mean     0.522151
y_sum      0.522151
y_count    1
y_min      0.522151
y_max      0.522151
y_antimode 0.5221511083334797
y_mode     0.5221511083334797

a          wye
b          wye
i          3
x          0.20460330576630303
y          0.33831852551664776
i_mean     3.000000
i_sum      3
i_count    1
i_min      3
i_max      3
i_antimode 3
i_mode     3
x_mean     0.204603
x_sum      0.204603
x_count    1
x_min      0.204603
x_max      0.204603
x_antimode 0.20460330576630303
x_mode     0.20460330576630303
y_mean     0.338319
y_sum      0.338319
y_count    1
y_min      0.338319
y_max      0.338319
y_antimode 0.33831852551664776
y_mode     0.33831852551664776

a          eks
b          wye
i          4
x          0.38139939387114097
y          0.13418874328430463
i_mean     3.000000
i_sum      6
i_count    2
i_min      2
i_max      4
i_antimode 2
i_mode     2
x_mean     0.570040
x_sum      1.140079
x_count    2
x_min      0.381399
x_max      0.758680
x_antimode 0.7586799647899636
x_mode     0.7586799647899636
y_mean     0.328170
y_sum      0.656340
y_count    2
y_min      0.134189
y_max      0.522151
y_antimode 0.5221511083334797
y_mode     0.5221511083334797

a          wye
b          pan
i          5
x          0.5732889198020006
y          0.8636244699032729
i_mean     4.000000
i_sum      8
i_count    2
i_min      3
i_max      5
i_antimode 3
i_mode     3
x_mean     0.388946
x_sum      0.777892
x_count    2
x_min      0.204603
x_max      0.573289
x_antimode 0.20460330576630303
x_mode     0.20460330576630303
y_mean     0.600971
y_sum      1.201943
y_count    2
y_min      0.338319
y_max      0.863624
y_antimode 0.33831852551664776
y_mode     0.33831852551664776

a          zee
b          pan
i          6
x          0.5271261600918548
y          0.49322128674835697
i_mean     6.000000
i_sum      6
i_count    1
i_min      6
i_max      6
i_antimode 6
i_mode     6
x_mean     0.527126
x_sum      0.527126
x_count    1
x_min      0.527126
x_max      0.527126
x_antimode 0.5271261600918548
x_mode     0.5271261600918548
y_mean     0.493221
y_sum      0.493221
y_count    1
y_min      0.493221
y_max      0.493221
y_antimode 0.49322128674835697
y_mode     0.49322128674835697

a          eks
b          zee
i          7
x          0.6117840605678454
y          0.1878849191181694
i_mean     4.333333
i_sum      13
i_count    3
i_min      2
i_max      7
i_antimode 2
i_mode     2
x_mean     0.583954
x_sum      1.751863
x_count    3
x_min      0.381399
x_max      0.758680
x_antimode 0.7586799647899636
x_mode     0.7586799647899636
y_mean     0.281408
y_sum      0.844225
y_count    3
y_min      0.134189
y_max      0.522151
y_antimode 0.5221511083334797
y_mode     0.5221511083334797

a          zee
b          wye
i          8
x          0.5985540091064224
y          0.976181385699006
i_mean     7.000000
i_sum      14
i_count    2
i_min      6
i_max      8
i_antimode 6
i_mode     6
x_mean     0.562840
x_sum      1.125680
x_count    2
x_min      0.527126
x_max      0.598554
x_antimode 0.5271261600918548
x_mode     0.5271261600918548
y_mean     0.734701
y_sum      1.469403
y_count    2
y_min      0.493221
y_max      0.976181
y_antimode 0.49322128674835697
y_mode     0.49322128674835697

a          hat
b          wye
i          9
x          0.03144187646093577
y          0.7495507603507059
i_mean     9.000000
i_sum      9
i_count    1
i_min      9
i_max      9
i_antimode 9
i_mode     9
x_mean     0.031442
x_sum      0.031442
x_count    1
x_min      0.031442
x_max      0.031442
x_antimode 0.03144187646093577
x_mode     0.03144187646093577
y_mean     0.749551
y_sum      0.749551
y_count    1
y_min      0.749551
y_max      0.749551
y_antimode 0.7495507603507059
y_mode     0.7495507603507059

a          pan
b          wye
i          10
x          0.5026260055412137
y          0.9526183602969864
i_mean     5.500000
i_sum      11
i_count    2
i_min      1
i_max      10
i_antimode 1
i_mode     1
x_mean     0.424708
x_sum      0.849416
x_count    2
x_min      0.346790
x_max      0.502626
x_antimode 0.3467901443380824
x_mode     0.3467901443380824
y_mean     0.839711
y_sum      1.679421
y_count    2
y_min      0.726803
y_max      0.952618
y_antimode 0.7268028627434533
y_mode     0.7268028627434533

mlr --opprint stats1 -a mean,sum,count,min,max,antimode,mode -f i,x,y -g a,b ./reg_test/input/abixy
a   b   i_mean    i_sum i_count i_min i_max i_antimode i_mode x_mean   x_sum    x_count x_min    x_max    x_antimode          x_mode              y_mean   y_sum    y_count y_min    y_max    y_antimode          y_mode
pan pan 1.000000  1     1       1     1     1          1      0.346790 0.346790 1       0.346790 0.346790 0.3467901443380824  0.3467901443380824  0.726803 0.726803 1       0.726803 0.726803 0.7268028627434533  0.7268028627434533
eks pan 2.000000  2     1       2     2     2          2      0.758680 0.758680 1       0.758680 0.758680 0.7586799647899636  0.7586799647899636  0.522151 0.522151 1       0.522151 0.522151 0.5221511083334797  0.5221511083334797
wye wye 3.000000  3     1       3     3     3          3      0.204603 0.204603 1       0.204603 0.204603 0.20460330576630303 0.20460330576630303 0.338319 0.338319 1       0.338319 0.338319 0.33831852551664776 0.33831852551664776
eks wye 4.000000  4     1       4     4     4          4      0.381399 0.381399 1       0.381399 0.381399 0.38139939387114097 0.38139939387114097 0.134189 0.134189 1       0.134189 0.134189 0.13418874328430463 0.13418874328430463
wye pan 5.000000  5     1       5     5     5          5      0.573289 0.573289 1       0.573289 0.573289 0.5732889198020006  0.5732889198020006  0.863624 0.863624 1       0.863624 0.863624 0.8636244699032729  0.8636244699032729
zee pan 6.000000  6     1       6     6     6          6      0.527126 0.527126 1       0.527126 0.527126 0.5271261600918548  0.5271261600918548  0.493221 0.493221 1       0.493221 0.493221 0.49322128674835697 0.49322128674835697
eks zee 7.000000  7     1       7     7     7          7      0.611784 0.611784 1       0.611784 0.611784 0.6117840605678454  0.6117840605678454  0.187885 0.187885 1       0.187885 0.187885 0.1878849191181694  0.1878849191181694
zee wye 8.000000  8     1       8     8     8          8      0.598554 0.598554 1       0.598554 0.598554 0.5985540091064224  0.5985540091064224  0.976181 0.976181 1       0.976181 0.976181 0.976181385699006   0.976181385699006
hat wye 9.000000  9     1       9     9     9          9      0.031442 0.031442 1       0.031442 0.031442 0.03144187646093577 0.03144187646093577 0.749551 0.749551 1       0.749551 0.749551 0.7495507603507059  0.7495507603507059
pan wye 10.000000 10    1       10    10    10         10     0.502626 0.502626 1       0.502626 0.502626 0.5026260055412137  0.5026260055412137  0.952618 0.952618 1       0.952618 0.952618 0.9526183602969864  0.9526183602969864

mlr --opprint stats1 -a min,p10,p50,median,antimode,mode,p90,max -f i,x,y -g a,b ./reg_test/input/abixy
a   b   i_min i_p10 i_p50 i_median i_antimode i_mode i_p90 i_max x_min    x_p10    x_p50    x_median x_antimode          x_mode              x_p90    x_max    y_min    y_p10    y_p50    y_median y_antimode          y_mode              y_p90    y_max
pan pan 1     1     1     1        1          1      1     1     0.346790 0.346790 0.346790 0.346790 0.3467901443380824  0.3467901443380824  0.346790 0.346790 0.726803 0.726803 0.726803 0.726803 0.7268028627434533  0.7268028627434533  0.726803 0.726803
eks pan 2     2     2     2        2          2      2     2     0.758680 0.758680 0.758680 0.758680 0.7586799647899636  0.7586799647899636  0.758680 0.758680 0.522151 0.522151 0.522151 0.522151 0.5221511083334797  0.5221511083334797  0.522151 0.522151
wye wye 3     3     3     3        3          3      3     3     0.204603 0.204603 0.204603 0.204603 0.20460330576630303 0.20460330576630303 0.204603 0.204603 0.338319 0.338319 0.338319 0.338319 0.33831852551664776 0.33831852551664776 0.338319 0.338319
eks wye 4     4     4     4        4          4      4     4     0.381399 0.381399 0.381399 0.381399 0.38139939387114097 0.38139939387114097 0.381399 0.381399 0.134189 0.134189 0.134189 0.134189 0.13418874328430463 0.13418874328430463 0.134189 0.134189
wye pan 5     5     5     5        5          5      5     5     0.573289 0.573289 0.573289 0.573289 0.5732889198020006  0.5732889198020006  0.573289 0.573289 0.863624 0.863624 0.863624 0.863624 0.8636244699032729  0.8636244699032729  0.863624 0.863624
zee pan 6     6     6     6        6          6      6     6     0.527126 0.527126 0.527126 0.527126 0.5271261600918548  0.5271261600918548  0.527126 0.527126 0.493221 0.493221 0.493221 0.493221 0.49322128674835697 0.49322128674835697 0.493221 0.493221
eks zee 7     7     7     7        7          7      7     7     0.611784 0.611784 0.611784 0.611784 0.6117840605678454  0.6117840605678454  0.611784 0.611784 0.187885 0.187885 0.187885 0.187885 0.1878849191181694  0.1878849191181694  0.187885 0.187885
zee wye 8     8     8     8        8          8      8     8     0.598554 0.598554 0.598554 0.598554 0.5985540091064224  0.5985540091064224  0.598554 0.598554 0.976181 0.976181 0.976181 0.976181 0.976181385699006   0.976181385699006   0.976181 0.976181
hat wye 9     9     9     9        9          9      9     9     0.031442 0.031442 0.031442 0.031442 0.03144187646093577 0.03144187646093577 0.031442 0.031442 0.749551 0.749551 0.749551 0.749551 0.7495507603507059  0.7495507603507059  0.749551 0.749551
pan wye 10    10    10    10       10         10     10    10    0.502626 0.502626 0.502626 0.502626 0.5026260055412137  0.5026260055412137  0.502626 0.502626 0.952618 0.952618 0.952618 0.952618 0.9526183602969864  0.9526183602969864  0.952618 0.952618

mlr --opprint stats1 -a mean,meaneb,stddev -f i,x,y -g a,b ./reg_test/input/abixy
a   b   i_mean    i_meaneb i_stddev x_mean   x_meaneb x_stddev y_mean   y_meaneb y_stddev
pan pan 1.000000  -        -        0.346790 -        -        0.726803 -        -
eks pan 2.000000  -        -        0.758680 -        -        0.522151 -        -
wye wye 3.000000  -        -        0.204603 -        -        0.338319 -        -
eks wye 4.000000  -        -        0.381399 -        -        0.134189 -        -
wye pan 5.000000  -        -        0.573289 -        -        0.863624 -        -
zee pan 6.000000  -        -        0.527126 -        -        0.493221 -        -
eks zee 7.000000  -        -        0.611784 -        -        0.187885 -        -
zee wye 8.000000  -        -        0.598554 -        -        0.976181 -        -
hat wye 9.000000  -        -        0.031442 -        -        0.749551 -        -
pan wye 10.000000 -        -        0.502626 -        -        0.952618 -        -

mlr --oxtab stats1 -s -a mean,sum,count,min,max,antimode,mode -f i,x,y -g a,b ./reg_test/input/abixy
a          pan
b          pan
i          1
x          0.3467901443380824
y          0.7268028627434533
i_mean     1.000000
i_sum      1
i_count    1
i_min      1
i_max      1
i_antimode 1
i_mode     1
x_mean     0.346790
x_sum      0.346790
x_count    1
x_min      0.346790
x_max      0.346790
x_antimode 0.3467901443380824
x_mode     0.3467901443380824
y_mean     0.726803
y_sum      0.726803
y_count    1
y_min      0.726803
y_max      0.726803
y_antimode 0.7268028627434533
y_mode     0.7268028627434533

a          eks
b          pan
i          2
x          0.7586799647899636
y          0.5221511083334797
i_mean     2.000000
i_sum      2
i_count    1
i_min      2
i_max      2
i_antimode 2
i_mode     2
x_mean     0.758680
x_sum      0.758680
x_count    1
x_min      0.758680
x_max      0.758680
x_antimode 0.7586799647899636
x_mode     0.7586799647899636
y_mean     0.522151
y_sum      0.522151
y_count    1
y_min      0.522151
y_max      0.522151
y_antimode 0.5221511083334797
y_mode     0.5221511083334797

a          wye
b          wye
i          3
x          0.20460330576630303
y          0.33831852551664776
i_mean     3.000000
i_sum      3
i_count    1
i_min      3
i_max      3
i_antimode 3
i_mode     3
x_mean     0.204603
x_sum      0.204603
x_count    1
x_min      0.204603
x_max      0.204603
x_antimode 0.20460330576630303
x_mode     0.20460330576630303
y_mean     0.338319
y_sum      0.338319
y_count    1
y_min      0.338319
y_max      0.338319
y_antimode 0.33831852551664776
y_mode     0.33831852551664776

a          eks
b          wye
i          4
x          0.38139939387114097
y          0.13418874328430463
i_mean     4.000000
i_sum      4
i_count    1
i_min      4
i_max      4
i_antimode 4
i_mode     4
x_mean     0.381399
x_sum      0.381399
x_count    1
x_min      0.381399
x_max      0.381399
x_antimode 0.38139939387114097
x_mode     0.38139939387114097
y_mean     0.134189
y_sum      0.134189
y_count    1
y_min      0.134189
y_max      0.134189
y_antimode 0.13418874328430463
y_mode     0.13418874328430463

a          wye
b          pan
i          5
x          0.5732889198020006
y          0.8636244699032729
i_mean     5.000000
i_sum      5
i_count    1
i_min      5
i_max      5
i_antimode 5
i_mode     5
x_mean     0.573289
x_sum      0.573289
x_count    1
x_min      0.573289
x_max      0.573289
x_antimode 0.5732889198020006
x_mode     0.5732889198020006
y_mean     0.863624
y_sum      0.863624
y_count    1
y_min      0.863624
y_max      0.863624
y_antimode 0.8636244699032729
y_mode     0.8636244699032729

a          zee
b          pan
i          6
x          0.5271261600918548
y          0.49322128674835697
i_mean     6.000000
i_sum      6
i_count    1
i_min      6
i_max      6
i_antimode 6
i_mode     6
x_mean     0.527126
x_sum      0.527126
x_count    1
x_min      0.527126
x_max      0.527126
x_antimode 0.5271261600918548
x_mode     0.5271261600918548
y_mean     0.493221
y_sum      0.493221
y_count    1
y_min      0.493221
y_max      0.493221
y_antimode 0.49322128674835697
y_mode     0.49322128674835697

a          eks
b          zee
i          7
x          0.6117840605678454
y          0.1878849191181694
i_mean     7.000000
i_sum      7
i_count    1
i_min      7
i_max      7
i_antimode 7
i_mode     7
x_mean     0.611784
x_sum      0.611784
x_count    1
x_min      0.611784
x_max      0.611784
x_antimode 0.6117840605678454
x_mode     0.6117840605678454
y_mean     0.187885
y_sum      0.187885
y_count    1
y_min      0.187885
y_max      0.187885
y_antimode 0.1878849191181694
y_mode     0.1878849191181694

a          zee
b          wye
i          8
x          0.5985540091064224
y          0.976181385699006
i_mean     8.000000
i_sum      8
i_count    1
i_min      8
i_max      8
i_antimode 8
i_mode     8
x_mean     0.598554
x_sum      0.598554
x_count    1
x_min      0.598554
x_max      0.598554
x_antimode 0.5985540091064224
x_mode     0.5985540091064224
y_mean     0.976181
y_sum      0.976181
y_count    1
y_min      0.976181
y_max      0.976181
y_antimode 0.976181385699006
y_mode     0.976181385699006

a          hat
b          wye
i          9
x          0.03144187646093577
y          0.7495507603507059
i_mean     9.000000
i_sum      9
i_count    1
i_min      9
i_max      9
i_antimode 9
i_mode     9
x_mean     0.031442
x_sum      0.031442
x_count    1
x_min      0.031442
x_max      0.031442
x_antimode 0.03144187646093577
x_mode     0.03144187646093577
y_mean     0.749551
y_sum      0.749551
y_count    1
y_min      0.749551
y_max      0.749551
y_antimode 0.7495507603507059
y_mode     0.7495507603507059

a          pan
b          wye
i          10
x          0.5026260055412137
y          0.9526183602969864
i_mean     10.000000
i_sum      10
i_count    1
i_min      10
i_max      10
i_antimode 10
i_mode     10
x_mean     0.502626
x_sum      0.502626
x_count    1
x_min      0.502626
x_max      0.502626
x_antimode 0.5026260055412137
x_mode     0.5026260055412137
y_mean     0.952618
y_sum      0.952618
y_count    1
y_min      0.952618
y_max      0.952618
y_antimode 0.9526183602969864
y_mode     0.9526183602969864

mlr --oxtab stats1 -a min,p0,p50,p100,max -f x,y,z ./reg_test/input/string-numeric-ordering.dkvp
x_min  1.000000
x_p0   1
x_p50  2.500000
x_p100 b
x_max  b
y_min  1.000000
y_p0   1
y_p50  3
y_p100 4
y_max  4.000000
z_min  a
z_p0   a
z_p50  d
z_p100 f
z_max  f

mlr --oxtab stats1 -a mean -f x ./reg_test/input/abixy-het
x_mean 0.440334

mlr --oxtab stats1 -a mean -f x -g a ./reg_test/input/abixy-het
a      pan
x_mean 0.424708

a      eks
x_mean 0.583954

a      wye
x_mean 

a      zee
x_mean 0.562840

mlr --oxtab stats1 -a p0,p50,p100 -f x,y ./reg_test/input/near-ovf.dkvp
x_p0   9223372036854775801
x_p50  9223372036854775804
x_p100 9223372036854775807
y_p0   -9223372036854775807
y_p50  -9223372036854775804
y_p100 -9223372036854775801

mlr --oxtab stats1 -a p0,p50,p100 -f x,y -F ./reg_test/input/near-ovf.dkvp
x_p0   9223372036854775801
x_p50  9223372036854775804
x_p100 9223372036854775807
y_p0   -9223372036854775807
y_p50  -9223372036854775804
y_p100 -9223372036854775801

mlr --opprint stats2 -a linreg-ols,linreg-pca,r2,corr,cov -f x,y,xy,y2 ./reg_test/input/abixy-wide
x_y_ols_m x_y_ols_b x_y_ols_n x_y_pca_m x_y_pca_b x_y_pca_n x_y_pca_quality x_y_r2   x_y_corr x_y_cov  xy_y2_ols_m xy_y2_ols_b xy_y2_ols_n xy_y2_pca_m xy_y2_pca_b xy_y2_pca_n xy_y2_pca_quality xy_y2_r2 xy_y2_corr xy_y2_cov
0.028351  0.487644  2000      1.332924  -0.170590 2000      0.056909        0.000791 0.028120 0.002330 0.893610    0.107060    2000        1.529534    -0.055477   2000        0.824336          0.447971 0.669306   0.045036

mlr --opprint stats2 -a linreg-ols,linreg-pca,r2,corr,cov -f x,y,xy,y2 -g a,b ./reg_test/input/abixy-wide
a   b   x_y_ols_m x_y_ols_b x_y_ols_n x_y_pca_m x_y_pca_b x_y_pca_n x_y_pca_quality x_y_r2   x_y_corr  x_y_cov   xy_y2_ols_m xy_y2_ols_b xy_y2_ols_n xy_y2_pca_m xy_y2_pca_b xy_y2_pca_n xy_y2_pca_quality xy_y2_r2 xy_y2_corr xy_y2_cov
cat pan 0.054420  0.481777  89        3.636062  -1.221602 89        0.177683        0.002504 0.050036  0.003777  0.950908    0.105754    89          1.715574    -0.081719   89          0.830612          0.435336 0.659800   0.041616
pan wye -0.145486 0.584799  78        -1.340927 1.199920  78        0.254025        0.019479 -0.139568 -0.012683 0.908151    0.126628    78          1.595150    -0.045034   78          0.824114          0.438850 0.662457   0.046203
wye cat 0.185913  0.377639  74        1.135325  -0.145894 74        0.309499        0.033002 0.181665  0.014494  0.969266    0.040602    74          1.406365    -0.081379   74          0.868480          0.561236 0.749157   0.052090
dog hat 0.100096  0.448757  88        0.810749  0.097346  88        0.189256        0.010462 0.102283  0.008036  0.919149    0.090504    88          1.425774    -0.038344   88          0.846209          0.507155 0.712148   0.045034
dog pan -0.066834 0.590647  87        -0.254112 0.688837  87        0.275316        0.005924 -0.076969 -0.005709 0.726118    0.164937    87          1.566309    -0.075073   87          0.749025          0.315011 0.561259   0.034107
pan pan 0.094932  0.461566  77        0.672369  0.189898  77        0.192719        0.009768 0.098832  0.007175  0.822261    0.123441    77          1.312543    0.003200    77          0.820351          0.465390 0.682195   0.039784
hat hat 0.043668  0.405219  88        10.170494 -5.125282 88        0.310513        0.001324 0.036392  0.003037  1.128896    0.015188    88          1.414166    -0.052514   88          0.922308          0.708725 0.841858   0.060975
wye hat 0.043018  0.496029  87        0.254879  0.395780  87        0.177794        0.002197 0.046876  0.004023  0.720402    0.165623    87          1.376136    0.002792    87          0.760716          0.353558 0.594608   0.038763
pan hat 0.120797  0.448197  67        1.597359  -0.325695 67        0.225137        0.013060 0.114278  0.008987  0.962678    0.076920    67          1.285796    -0.012566   67          0.887704          0.622353 0.788893   0.054965
cat hat 0.172391  0.464384  90        0.959329  0.086790  90        0.296109        0.030150 0.173639  0.015030  0.904257    0.133482    90          1.415658    -0.008369   90          0.841567          0.498171 0.705812   0.055626
hat wye -0.022975 0.496361  70        -1.765884 1.344268  70        0.051493        0.000514 -0.022665 -0.002000 0.971929    0.096088    70          1.989422    -0.142072   70          0.825656          0.386354 0.621574   0.040126
dog dog 0.078397  0.489236  87        0.354494  0.351041  87        0.242210        0.007619 0.087288  0.008214  0.776967    0.150999    87          1.354405    -0.006432   87          0.792265          0.408257 0.638950   0.049648
wye dog 0.116403  0.425576  76        2.367821  -0.777734 76        0.254607        0.011048 0.105109  0.007867  0.925781    0.071192    76          1.453590    -0.070509   76          0.845204          0.501559 0.708208   0.046440
wye wye -0.188354 0.613934  67        -1.433772 1.217887  67        0.316070        0.031156 -0.176512 -0.015876 0.876717    0.159179    67          2.044493    -0.118503   67          0.795455          0.325193 0.570257   0.042026
dog wye 0.029527  0.502643  79        0.496713  0.282511  79        0.073039        0.000913 0.030211  0.002391  0.904925    0.120816    79          1.609123    -0.052245   79          0.821822          0.432413 0.657581   0.042857
cat dog 0.057573  0.408644  78        0.728479  0.071114  78        0.116103        0.003442 0.058671  0.005320  0.884325    0.079999    78          1.418207    -0.040344   78          0.832998          0.479596 0.692528   0.044762
hat pan -0.154393 0.564981  85        -0.845852 0.911026  85        0.276955        0.025143 -0.158566 -0.012756 0.911165    0.104362    85          1.763740    -0.092987   85          0.814584          0.397150 0.630199   0.035622
cat wye -0.014851 0.564875  77        -0.572708 0.892322  77        0.034146        0.000224 -0.014982 -0.000966 0.878820    0.086362    77          1.447244    -0.098657   77          0.827119          0.463961 0.681147   0.041096
hat cat -0.022859 0.498539  88        -0.156242 0.565723  88        0.149344        0.000610 -0.024689 -0.002116 0.840965    0.111121    88          1.663518    -0.088942   88          0.793883          0.373515 0.611158   0.036575
dog cat 0.104057  0.428559  83        2.712382  -1.005787 83        0.250036        0.008705 0.093300  0.007122  1.080443    0.023866    83          1.653922    -0.133367   83          0.875586          0.547103 0.739664   0.050357
hat dog 0.041849  0.427228  78        0.403977  0.254919  78        0.118494        0.001918 0.043789  0.003856  0.776135    0.114930    78          1.475403    -0.036508   78          0.779056          0.372058 0.609966   0.040583
pan dog 0.119510  0.467833  73        2.492496  -0.761490 73        0.266455        0.011427 0.106896  0.009302  0.948592    0.107556    73          1.408389    -0.022846   73          0.860243          0.541263 0.735706   0.056609
cat cat 0.016257  0.425410  79        0.432946  0.225535  79        0.044275        0.000273 0.016510  0.001350  0.930954    0.072476    79          1.624993    -0.072669   79          0.830029          0.446764 0.668404   0.036267
pan cat -0.188523 0.616919  89        -0.898665 0.953923  89        0.324264        0.037036 -0.192447 -0.016206 0.781770    0.176617    89          2.020454    -0.113587   89          0.762332          0.278739 0.527958   0.032984
wye pan 0.229443  0.444446  66        1.313689  -0.098124 66        0.365811        0.046722 0.216152  0.020367  0.887659    0.145052    66          1.471906    -0.030176   66          0.827911          0.462545 0.680107   0.064496

mlr --oxtab stats2 -s -a linreg-ols,linreg-pca,r2,corr,cov -f x,y,xy,y2 ./reg_test/input/abixy-wide-short
a                 cat
b                 pan
i                 1
x                 0.5117389009583777
y                 0.08295224980036853
x2                0.2618767027540883
xy                0.0424498931448654
y2                0.006881075746942741
x_y_ols_m         
x_y_ols_b         
x_y_ols_n         1
x_y_pca_m         
x_y_pca_b         
x_y_pca_n         
x_y_pca_quality   
x_y_r2            
x_y_corr          
x_y_cov           
xy_y2_ols_m       
xy_y2_ols_b       
xy_y2_ols_n       1
xy_y2_pca_m       
xy_y2_pca_b       
xy_y2_pca_n       
xy_y2_pca_quality 
xy_y2_r2          
xy_y2_corr        
xy_y2_cov         

a                 pan
b                 wye
i                 2
x                 0.5225940442098578
y                 0.511678736087022
x2                0.27310453504361476
xy                0.2674002600279053
y2                0.26181512896361225
x_y_ols_m         39.495240
x_y_ols_b         -20.128298
x_y_ols_n         2
x_y_pca_m         39.495240
x_y_pca_b         -20.128298
x_y_pca_n         2
x_y_pca_quality   1.000000
x_y_r2            1.000000
x_y_corr          1.000000
x_y_cov           0.002327
xy_y2_ols_m       1.133290
xy_y2_ols_b       -0.041227
xy_y2_ols_n       2
xy_y2_pca_m       1.133290
xy_y2_pca_b       -0.041227
xy_y2_pca_n       2
xy_y2_pca_quality 1.000000
xy_y2_r2          1.000000
xy_y2_corr        1.000000
xy_y2_cov         0.028674

a                 wye
b                 cat
i                 3
x                 0.8150401717873625
y                 0.07989551500795256
x2                0.6642904816271734
xy                0.06511805427712146
y2                0.006383293318385972
x_y_ols_m         -0.689881
x_y_ols_b         0.650125
x_y_ols_n         3
x_y_pca_m         -2.057762
x_y_pca_b         1.493365
x_y_pca_n         3
x_y_pca_quality   0.725269
x_y_r2            0.228338
x_y_corr          -0.477847
x_y_cov           -0.020424
xy_y2_ols_m       1.184397
xy_y2_ols_b       -0.056344
xy_y2_ols_n       3
xy_y2_pca_m       1.190469
xy_y2_pca_b       -0.057103
xy_y2_pca_n       3
xy_y2_pca_quality 0.997884
xy_y2_r2          0.991315
xy_y2_corr        0.995648
xy_y2_cov         0.018168

a                 dog
b                 hat
i                 4
x                 0.4488733555675044
y                 0.5730530513123552
x2                0.20148728933843124
xy                0.25722824606077416
y2                0.32838979961840076
x_y_ols_m         -1.054065
x_y_ols_b         0.917520
x_y_ols_n         4
x_y_pca_m         -2.068130
x_y_pca_b         1.500163
x_y_pca_n         4
x_y_pca_quality   0.845806
x_y_r2            0.416082
x_y_corr          -0.645044
x_y_cov           -0.028205
xy_y2_ols_m       1.365739
xy_y2_ols_b       -0.064987
xy_y2_ols_n       4
xy_y2_pca_m       1.406929
xy_y2_pca_b       -0.071497
xy_y2_pca_n       4
xy_y2_pca_quality 0.989979
xy_y2_r2          0.956155
xy_y2_corr        0.977832
xy_y2_cov         0.019937

a                 dog
b                 pan
i                 5
x                 0.2946557960430134
y                 0.6850437256584863
x2                0.08682203814174191
xy                0.20185210430817294
y2                0.46928490606405937
x_y_ols_m         -1.176419
x_y_ols_b         0.996592
x_y_ols_n         5
x_y_pca_m         -1.681618
x_y_pca_b         1.258579
x_y_pca_n         5
x_y_pca_quality   0.899128
x_y_r2            0.607344
x_y_corr          -0.779323
x_y_cov           -0.042043
xy_y2_ols_m       1.565652
xy_y2_ols_b       -0.046615
xy_y2_ols_n       5
xy_y2_pca_m       2.169036
xy_y2_pca_b       -0.147265
xy_y2_pca_n       5
xy_y2_pca_quality 0.936719
xy_y2_r2          0.667168
xy_y2_corr        0.816804
xy_y2_cov         0.017742

a                 wye
b                 cat
i                 6
x                 0.048709182664292916
y                 0.5851879044762575
x2                0.0023725844758234536
xy                0.02850402453206882
y2                0.34244488354531344
x_y_ols_m         -0.752322
x_y_ols_b         0.750859
x_y_ols_n         6
x_y_pca_m         -1.066519
x_y_pca_b         0.889190
x_y_pca_n         6
x_y_pca_quality   0.836548
x_y_r2            0.515958
x_y_corr          -0.718302
x_y_cov           -0.049192
xy_y2_ols_m       0.917730
xy_y2_ols_b       0.103935
xy_y2_ols_n       6
xy_y2_pca_m       2.512667
xy_y2_pca_b       -0.125351
xy_y2_pca_n       6
xy_y2_pca_quality 0.807995
xy_y2_r2          0.286403
xy_y2_corr        0.535166
xy_y2_cov         0.011246

a                 dog
b                 hat
i                 7
x                 0.8500003149528544
y                 0.2984098741712895
x2                0.7225005354199517
xy                0.25364848703063775
y2                0.08904845300292483
x_y_ols_m         -0.612818
x_y_ols_b         0.707992
x_y_ols_n         7
x_y_pca_m         -0.842190
x_y_pca_b         0.822403
x_y_pca_n         7
x_y_pca_quality   0.820362
x_y_r2            0.476303
x_y_corr          -0.690147
x_y_cov           -0.048089
xy_y2_ols_m       0.592008
xy_y2_ols_b       0.120493
xy_y2_ols_n       7
xy_y2_pca_m       3.299160
xy_y2_pca_b       -0.311183
xy_y2_pca_n       7
xy_y2_pca_quality 0.722139
xy_y2_r2          0.126356
xy_y2_corr        0.355466
xy_y2_cov         0.007067

a                 pan
b                 pan
i                 8
x                 0.616507208914765
y                 0.25924335982487057
x2                0.38008113864387366
xy                0.15982540019531707
y2                0.06720711961328732
x_y_ols_m         -0.627947
x_y_ols_b         0.706893
x_y_ols_n         8
x_y_pca_m         -0.857225
x_y_pca_b         0.824631
x_y_pca_n         8
x_y_pca_quality   0.826128
x_y_r2            0.489375
x_y_corr          -0.699554
x_y_cov           -0.043324
xy_y2_ols_m       0.591342
xy_y2_ols_b       0.102111
xy_y2_ols_n       8
xy_y2_pca_m       3.718931
xy_y2_pca_b       -0.396750
xy_y2_pca_n       8
xy_y2_pca_quality 0.737121
xy_y2_r2          0.115022
xy_y2_corr        0.339150
xy_y2_cov         0.006050

a                 hat
b                 hat
i                 9
x                 0.33786884067769307
y                 0.6036735617015514
x2                0.11415535350088835
xy                0.203962486439877
y2                0.3644217690974368
x_y_ols_m         -0.661274
x_y_ols_b         0.735462
x_y_ols_n         9
x_y_pca_m         -0.890432
x_y_pca_b         0.848665
x_y_pca_n         9
x_y_pca_quality   0.838021
x_y_r2            0.516776
x_y_corr          -0.718871
x_y_cov           -0.042188
xy_y2_ols_m       0.667659
xy_y2_ols_b       0.105305
xy_y2_ols_n       9
xy_y2_pca_m       3.726998
xy_y2_pca_b       -0.397782
xy_y2_pca_n       9
xy_y2_pca_quality 0.764687
xy_y2_r2          0.134705
xy_y2_corr        0.367022
xy_y2_cov         0.006124

a                 wye
b                 hat
i                 10
x                 0.3834648944206174
y                 0.4999709279216641
x2                0.14704532525301522
xy                0.19172129908885902
y2                0.24997092876684981
x_y_ols_m         -0.664725
x_y_ols_b         0.738937
x_y_ols_n         10
x_y_pca_m         -0.888643
x_y_pca_b         0.847077
x_y_pca_n         10
x_y_pca_quality   0.841594
x_y_r2            0.524349
x_y_corr          -0.724120
x_y_cov           -0.038508
xy_y2_ols_m       0.673183
xy_y2_ols_b       0.106048
xy_y2_ols_n       10
xy_y2_pca_m       3.679574
xy_y2_pca_b       -0.396534
xy_y2_pca_n       10
xy_y2_pca_quality 0.765015
xy_y2_r2          0.137573
xy_y2_corr        0.370908
xy_y2_cov         0.005539

a                 pan
b                 hat
i                 11
x                 0.025474999754416028
y                 0.7861954915044592
x2                0.0006489756124874967
xy                0.020028329952999087
y2                0.6181033508619382
x_y_ols_m         -0.702240
x_y_ols_b         0.761330
x_y_ols_n         11
x_y_pca_m         -0.861995
x_y_pca_b         0.831839
x_y_pca_n         11
x_y_pca_quality   0.884552
x_y_r2            0.623708
x_y_corr          -0.789752
x_y_cov           -0.049973
xy_y2_ols_m       -0.038359
xy_y2_ols_b       0.260804
xy_y2_ols_n       11
xy_y2_pca_m       -82.143959
xy_y2_pca_b       12.888187
xy_y2_pca_n       11
xy_y2_pca_quality 0.759203
xy_y2_r2          0.000355
xy_y2_corr        -0.018828
xy_y2_cov         -0.000360

a                 cat
b                 hat
i                 12
x                 0.6335445699880142
y                 0.15467178563525052
x2                0.4013787221612979
xy                0.0979914699195631
y2                0.02392336127159689
x_y_ols_m         -0.740466
x_y_ols_b         0.765334
x_y_ols_n         12
x_y_pca_m         -0.911766
x_y_pca_b         0.843681
x_y_pca_n         12
x_y_pca_quality   0.887843
x_y_r2            0.635324
x_y_corr          -0.797072
x_y_cov           -0.050182
xy_y2_ols_m       0.085108
xy_y2_ols_b       0.222963
xy_y2_ols_n       12
xy_y2_pca_m       41.549828
xy_y2_pca_b       -5.961259
xy_y2_pca_n       12
xy_y2_pca_quality 0.780003
xy_y2_r2          0.001597
xy_y2_corr        0.039969
xy_y2_cov         0.000747

a                 hat
b                 wye
i                 13
x                 0.35922068401384877
y                 0.8502678133887914
x2                0.1290394998233774
xy                0.30543378552048117
y2                0.7229553544849566
x_y_ols_m         -0.782612
x_y_ols_b         0.811286
x_y_ols_n         13
x_y_pca_m         -1.047326
x_y_pca_b         0.930360
x_y_pca_n         13
x_y_pca_quality   0.861099
x_y_r2            0.571131
x_y_corr          -0.755732
x_y_cov           -0.049199
xy_y2_ols_m       0.659118
xy_y2_ols_b       0.166913
xy_y2_ols_n       13
xy_y2_pca_m       6.994463
xy_y2_pca_b       -0.854132
xy_y2_pca_n       13
xy_y2_pca_quality 0.838549
xy_y2_r2          0.078760
xy_y2_corr        0.280642
xy_y2_cov         0.006543

a                 dog
b                 dog
i                 14
x                 0.5440047442770544
y                 0.933608851612059
x2                0.2959411617959433
xy                0.5078876445760125
y2                0.8716254878083876
x_y_ols_m         -0.719761
x_y_ols_b         0.821739
x_y_ols_n         14
x_y_pca_m         -1.259269
x_y_pca_b         1.068052
x_y_pca_n         14
x_y_pca_quality   0.775265
x_y_r2            0.388115
x_y_corr          -0.622988
x_y_cov           -0.042223
xy_y2_ols_m       1.175278
xy_y2_ols_b       0.097368
xy_y2_ols_n       14
xy_y2_pca_m       3.119062
xy_y2_pca_b       -0.264044
xy_y2_pca_n       14
xy_y2_pca_quality 0.866432
xy_y2_r2          0.322054
xy_y2_corr        0.567498
xy_y2_cov         0.020862

a                 wye
b                 dog
i                 15
x                 0.4689175303764642
y                 0.09048353045392021
x2                0.21988365029436224
xy                0.04242931364019586
y2                0.008187269283405506
x_y_ols_m         -0.725720
x_y_ols_b         0.798215
x_y_ols_n         15
x_y_pca_m         -1.432456
x_y_pca_b         1.121457
x_y_pca_n         15
x_y_pca_quality   0.758098
x_y_r2            0.343569
x_y_corr          -0.586148
x_y_cov           -0.039539
xy_y2_ols_m       1.249777
xy_y2_ols_b       0.074959
xy_y2_ols_n       15
xy_y2_pca_m       2.985574
xy_y2_pca_b       -0.231176
xy_y2_pca_n       15
xy_y2_pca_quality 0.877117
xy_y2_r2          0.362173
xy_y2_corr        0.601808
xy_y2_cov         0.022316

a                 pan
b                 pan
i                 16
x                 0.3959177828066379
y                 0.6339858483805666
x2                0.15675089074252413
xy                0.25100627142161924
y2                0.4019380559468268
x_y_ols_m         -0.734975
x_y_ols_b         0.810106
x_y_ols_n         16
x_y_pca_m         -1.451312
x_y_pca_b         1.134988
x_y_pca_n         16
x_y_pca_quality   0.761173
x_y_r2            0.346218
x_y_corr          -0.588403
x_y_cov           -0.037547
xy_y2_ols_m       1.253418
xy_y2_ols_b       0.075130
xy_y2_ols_n       16
xy_y2_pca_m       2.945315
xy_y2_pca_b       -0.231155
xy_y2_pca_n       16
xy_y2_pca_quality 0.877563
xy_y2_r2          0.368261
xy_y2_corr        0.606845
xy_y2_cov         0.021325

a                 dog
b                 hat
i                 17
x                 0.34033844788864975
y                 0.8845934733681523
x2                0.11583025911125516
xy                0.3010611697385466
y2                0.782505613125532
x_y_ols_m         -0.779408
x_y_ols_b         0.849058
x_y_ols_n         17
x_y_pca_m         -1.579107
x_y_pca_b         1.206423
x_y_pca_n         17
x_y_pca_quality   0.772982
x_y_r2            0.349689
x_y_corr          -0.591345
x_y_cov           -0.037916
xy_y2_ols_m       1.392136
xy_y2_ols_b       0.068451
xy_y2_ols_n       17
xy_y2_pca_m       3.095298
xy_y2_pca_b       -0.251899
xy_y2_pca_n       17
xy_y2_pca_quality 0.896358
xy_y2_r2          0.398830
xy_y2_corr        0.631530
xy_y2_cov         0.023385

a                 wye
b                 wye
i                 18
x                 0.6770613653962891
y                 0.896307226056897
x2                0.4584120925122874
xy                0.6068549942886431
y2                0.8033666434818095
x_y_ols_m         -0.628521
x_y_ols_b         0.811643
x_y_ols_n         18
x_y_pca_m         -1.834767
x_y_pca_b         1.366109
x_y_pca_n         18
x_y_pca_quality   0.694668
x_y_r2            0.218178
x_y_corr          -0.467095
x_y_cov           -0.030628
xy_y2_ols_m       1.292066
xy_y2_ols_b       0.083495
xy_y2_ols_n       18
xy_y2_pca_m       2.354328
xy_y2_pca_b       -0.141020
xy_y2_pca_n       18
xy_y2_pca_quality 0.888372
xy_y2_r2          0.477918
xy_y2_corr        0.691316
xy_y2_cov         0.033015

a                 dog
b                 wye
i                 19
x                 0.4865373244199632
y                 0.44117766146315884
x2                0.23671856805373653
xy                0.2146493990021416
y2                0.1946377289741016
x_y_ols_m         -0.630507
x_y_ols_b         0.809155
x_y_ols_n         19
x_y_pca_m         -1.839104
x_y_pca_b         1.366411
x_y_pca_n         19
x_y_pca_quality   0.695696
x_y_r2            0.218821
x_y_corr          -0.467783
x_y_cov           -0.029041
xy_y2_ols_m       1.290872
xy_y2_ols_b       0.075000
xy_y2_ols_n       19
xy_y2_pca_m       2.393419
xy_y2_pca_b       -0.158220
xy_y2_pca_n       19
xy_y2_pca_quality 0.887359
xy_y2_r2          0.469361
xy_y2_corr        0.685099
xy_y2_cov         0.031153

a                 dog
b                 dog
i                 20
x                 0.3223311725542929
y                 0.08115611029827985
x2                0.10389738480022534
xy                0.026159144192390068
y2                0.006586314238746564
x_y_ols_m         -0.548880
x_y_ols_b         0.745846
x_y_ols_n         20
x_y_pca_m         -2.251324
x_y_pca_b         1.518994
x_y_pca_n         20
x_y_pca_quality   0.661764
x_y_r2            0.151247
x_y_corr          -0.388905
x_y_cov           -0.024479
xy_y2_ols_m       1.329401
xy_y2_ols_b       0.062098
xy_y2_ols_n       20
xy_y2_pca_m       2.337844
xy_y2_pca_b       -0.141870
xy_y2_pca_n       20
xy_y2_pca_quality 0.894994
xy_y2_r2          0.499340
xy_y2_corr        0.706640
xy_y2_cov         0.032678

mlr --oxtab stats2 -s -a linreg-ols,linreg-pca,r2,corr,cov -f x,y,xy,y2 -g a,b ./reg_test/input/abixy-wide-short
a                 cat
b                 pan
i                 1
x                 0.5117389009583777
y                 0.08295224980036853
x2                0.2618767027540883
xy                0.0424498931448654
y2                0.006881075746942741
x_y_ols_m         
x_y_ols_b         
x_y_ols_n         1
x_y_pca_m         
x_y_pca_b         
x_y_pca_n         
x_y_pca_quality   
x_y_r2            
x_y_corr          
x_y_cov           
xy_y2_ols_m       
xy_y2_ols_b       
xy_y2_ols_n       1
xy_y2_pca_m       
xy_y2_pca_b       
xy_y2_pca_n       
xy_y2_pca_quality 
xy_y2_r2          
xy_y2_corr        
xy_y2_cov         

a                 pan
b                 wye
i                 2
x                 0.5225940442098578
y                 0.511678736087022
x2                0.27310453504361476
xy                0.2674002600279053
y2                0.26181512896361225
x_y_ols_m         
x_y_ols_b         
x_y_ols_n         1
x_y_pca_m         
x_y_pca_b         
x_y_pca_n         
x_y_pca_quality   
x_y_r2            
x_y_corr          
x_y_cov           
xy_y2_ols_m       
xy_y2_ols_b       
xy_y2_ols_n       1
xy_y2_pca_m       
xy_y2_pca_b       
xy_y2_pca_n       
xy_y2_pca_quality 
xy_y2_r2          
xy_y2_corr        
xy_y2_cov         

a                 wye
b                 cat
i                 3
x                 0.8150401717873625
y                 0.07989551500795256
x2                0.6642904816271734
xy                0.06511805427712146
y2                0.006383293318385972
x_y_ols_m         
x_y_ols_b         
x_y_ols_n         1
x_y_pca_m         
x_y_pca_b         
x_y_pca_n         
x_y_pca_quality   
x_y_r2            
x_y_corr          
x_y_cov           
xy_y2_ols_m       
xy_y2_ols_b       
xy_y2_ols_n       1
xy_y2_pca_m       
xy_y2_pca_b       
xy_y2_pca_n       
xy_y2_pca_quality 
xy_y2_r2          
xy_y2_corr        
xy_y2_cov         

a                 dog
b                 hat
i                 4
x                 0.4488733555675044
y                 0.5730530513123552
x2                0.20148728933843124
xy                0.25722824606077416
y2                0.32838979961840076
x_y_ols_m         
x_y_ols_b         
x_y_ols_n         1
x_y_pca_m         
x_y_pca_b         
x_y_pca_n         
x_y_pca_quality   
x_y_r2            
x_y_corr          
x_y_cov           
xy_y2_ols_m       
xy_y2_ols_b       
xy_y2_ols_n       1
xy_y2_pca_m       
xy_y2_pca_b       
xy_y2_pca_n       
xy_y2_pca_quality 
xy_y2_r2          
xy_y2_corr        
xy_y2_cov         

a                 dog
b                 pan
i                 5
x                 0.2946557960430134
y                 0.6850437256584863
x2                0.08682203814174191
xy                0.20185210430817294
y2                0.46928490606405937
x_y_ols_m         
x_y_ols_b         
x_y_ols_n         1
x_y_pca_m         
x_y_pca_b         
x_y_pca_n         
x_y_pca_quality   
x_y_r2            
x_y_corr          
x_y_cov           
xy_y2_ols_m       
xy_y2_ols_b       
xy_y2_ols_n       1
xy_y2_pca_m       
xy_y2_pca_b       
xy_y2_pca_n       
xy_y2_pca_quality 
xy_y2_r2          
xy_y2_corr        
xy_y2_cov         

a                 wye
b                 cat
i                 6
x                 0.048709182664292916
y                 0.5851879044762575
x2                0.0023725844758234536
xy                0.02850402453206882
y2                0.34244488354531344
x_y_ols_m         -0.659366
x_y_ols_b         0.617305
x_y_ols_n         2
x_y_pca_m         -0.659366
x_y_pca_b         0.617305
x_y_pca_n         2
x_y_pca_quality   1.000000
x_y_r2            1.000000
x_y_corr          -1.000000
x_y_cov           -0.193611
xy_y2_ols_m       -9.178492
xy_y2_ols_b       0.604069
xy_y2_ols_n       2
xy_y2_pca_m       -9.178492
xy_y2_pca_b       0.604069
xy_y2_pca_n       2
xy_y2_pca_quality 1.000000
xy_y2_r2          1.000000
xy_y2_corr        -1.000000
xy_y2_cov         -0.006152

a                 dog
b                 hat
i                 7
x                 0.8500003149528544
y                 0.2984098741712895
x2                0.7225005354199517
xy                0.25364848703063775
y2                0.08904845300292483
x_y_ols_m         -0.684679
x_y_ols_b         0.880387
x_y_ols_n         2
x_y_pca_m         -0.684679
x_y_pca_b         0.880387
x_y_pca_n         2
x_y_pca_quality   1.000000
x_y_r2            1.000000
x_y_corr          -1.000000
x_y_cov           -0.055083
xy_y2_ols_m       66.859625
xy_y2_ols_b       -16.869794
xy_y2_ols_n       2
xy_y2_pca_m       66.859625
xy_y2_pca_b       -16.869794
xy_y2_pca_n       2
xy_y2_pca_quality 1.000000
xy_y2_r2          1.000000
xy_y2_corr        1.000000
xy_y2_cov         0.000428

a                 pan
b                 pan
i                 8
x                 0.616507208914765
y                 0.25924335982487057
x2                0.38008113864387366
xy                0.15982540019531707
y2                0.06720711961328732
x_y_ols_m         
x_y_ols_b         
x_y_ols_n         1
x_y_pca_m         
x_y_pca_b         
x_y_pca_n         
x_y_pca_quality   
x_y_r2            
x_y_corr          
x_y_cov           
xy_y2_ols_m       
xy_y2_ols_b       
xy_y2_ols_n       1
xy_y2_pca_m       
xy_y2_pca_b       
xy_y2_pca_n       
xy_y2_pca_quality 
xy_y2_r2          
xy_y2_corr        
xy_y2_cov         

a                 hat
b                 hat
i                 9
x                 0.33786884067769307
y                 0.6036735617015514
x2                0.11415535350088835
xy                0.203962486439877
y2                0.3644217690974368
x_y_ols_m         
x_y_ols_b         
x_y_ols_n         1
x_y_pca_m         
x_y_pca_b         
x_y_pca_n         
x_y_pca_quality   
x_y_r2            
x_y_corr          
x_y_cov           
xy_y2_ols_m       
xy_y2_ols_b       
xy_y2_ols_n       1
xy_y2_pca_m       
xy_y2_pca_b       
xy_y2_pca_n       
xy_y2_pca_quality 
xy_y2_r2          
xy_y2_corr        
xy_y2_cov         

a                 wye
b                 hat
i                 10
x                 0.3834648944206174
y                 0.4999709279216641
x2                0.14704532525301522
xy                0.19172129908885902
y2                0.24997092876684981
x_y_ols_m         
x_y_ols_b         
x_y_ols_n         1
x_y_pca_m         
x_y_pca_b         
x_y_pca_n         
x_y_pca_quality   
x_y_r2            
x_y_corr          
x_y_cov           
xy_y2_ols_m       
xy_y2_ols_b       
xy_y2_ols_n       1
xy_y2_pca_m       
xy_y2_pca_b       
xy_y2_pca_n       
xy_y2_pca_quality 
xy_y2_r2          
xy_y2_corr        
xy_y2_cov         

a                 pan
b                 hat
i                 11
x                 0.025474999754416028
y                 0.7861954915044592
x2                0.0006489756124874967
xy                0.020028329952999087
y2                0.6181033508619382
x_y_ols_m         
x_y_ols_b         
x_y_ols_n         1
x_y_pca_m         
x_y_pca_b         
x_y_pca_n         
x_y_pca_quality   
x_y_r2            
x_y_corr          
x_y_cov           
xy_y2_ols_m       
xy_y2_ols_b       
xy_y2_ols_n       1
xy_y2_pca_m       
xy_y2_pca_b       
xy_y2_pca_n       
xy_y2_pca_quality 
xy_y2_r2          
xy_y2_corr        
xy_y2_cov         

a                 cat
b                 hat
i                 12
x                 0.6335445699880142
y                 0.15467178563525052
x2                0.4013787221612979
xy                0.0979914699195631
y2                0.02392336127159689
x_y_ols_m         
x_y_ols_b         
x_y_ols_n         1
x_y_pca_m         
x_y_pca_b         
x_y_pca_n         
x_y_pca_quality   
x_y_r2            
x_y_corr          
x_y_cov           
xy_y2_ols_m       
xy_y2_ols_b       
xy_y2_ols_n       1
xy_y2_pca_m       
xy_y2_pca_b       
xy_y2_pca_n       
xy_y2_pca_quality 
xy_y2_r2          
xy_y2_corr        
xy_y2_cov         

a                 hat
b                 wye
i                 13
x                 0.35922068401384877
y                 0.8502678133887914
x2                0.1290394998233774
xy                0.30543378552048117
y2                0.7229553544849566
x_y_ols_m         
x_y_ols_b         
x_y_ols_n         1
x_y_pca_m         
x_y_pca_b         
x_y_pca_n         
x_y_pca_quality   
x_y_r2            
x_y_corr          
x_y_cov           
xy_y2_ols_m       
xy_y2_ols_b       
xy_y2_ols_n       1
xy_y2_pca_m       
xy_y2_pca_b       
xy_y2_pca_n       
xy_y2_pca_quality 
xy_y2_r2          
xy_y2_corr        
xy_y2_cov         

a                 dog
b                 dog
i                 14
x                 0.5440047442770544
y                 0.933608851612059
x2                0.2959411617959433
xy                0.5078876445760125
y2                0.8716254878083876
x_y_ols_m         
x_y_ols_b         
x_y_ols_n         1
x_y_pca_m         
x_y_pca_b         
x_y_pca_n         
x_y_pca_quality   
x_y_r2            
x_y_corr          
x_y_cov           
xy_y2_ols_m       
xy_y2_ols_b       
xy_y2_ols_n       1
xy_y2_pca_m       
xy_y2_pca_b       
xy_y2_pca_n       
xy_y2_pca_quality 
xy_y2_r2          
xy_y2_corr        
xy_y2_cov         

a                 wye
b                 dog
i                 15
x                 0.4689175303764642
y                 0.09048353045392021
x2                0.21988365029436224
xy                0.04242931364019586
y2                0.008187269283405506
x_y_ols_m         
x_y_ols_b         
x_y_ols_n         1
x_y_pca_m         
x_y_pca_b         
x_y_pca_n         
x_y_pca_quality   
x_y_r2            
x_y_corr          
x_y_cov           
xy_y2_ols_m       
xy_y2_ols_b       
xy_y2_ols_n       1
xy_y2_pca_m       
xy_y2_pca_b       
xy_y2_pca_n       
xy_y2_pca_quality 
xy_y2_r2          
xy_y2_corr        
xy_y2_cov         

a                 pan
b                 pan
i                 16
x                 0.3959177828066379
y                 0.6339858483805666
x2                0.15675089074252413
xy                0.25100627142161924
y2                0.4019380559468268
x_y_ols_m         -1.698823
x_y_ols_b         1.306580
x_y_ols_n         2
x_y_pca_m         -1.698823
x_y_pca_b         1.306580
x_y_pca_n         2
x_y_pca_quality   1.000000
x_y_r2            1.000000
x_y_corr          -1.000000
x_y_cov           -0.041332
xy_y2_ols_m       3.671065
xy_y2_ols_b       -0.519522
xy_y2_ols_n       2
xy_y2_pca_m       3.671065
xy_y2_pca_b       -0.519522
xy_y2_pca_n       2
xy_y2_pca_quality 1.000000
xy_y2_r2          1.000000
xy_y2_corr        1.000000
xy_y2_cov         0.015261

a                 dog
b                 hat
i                 17
x                 0.34033844788864975
y                 0.8845934733681523
x2                0.11583025911125516
xy                0.3010611697385466
y2                0.782505613125532
x_y_ols_m         -1.023812
x_y_ols_b         1.144767
x_y_ols_n         3
x_y_pca_m         -1.098934
x_y_pca_b         1.185814
x_y_pca_n         3
x_y_pca_quality   0.967833
x_y_r2            0.878279
x_y_corr          -0.937166
x_y_cov           -0.073789
xy_y2_ols_m       12.826246
xy_y2_ols_b       -3.071390
xy_y2_ols_n       3
xy_y2_pca_m       13.871436
xy_y2_pca_b       -3.354267
xy_y2_pca_n       3
xy_y2_pca_quality 0.999579
xy_y2_r2          0.924260
xy_y2_corr        0.961385
xy_y2_cov         0.008940

a                 wye
b                 wye
i                 18
x                 0.6770613653962891
y                 0.896307226056897
x2                0.4584120925122874
xy                0.6068549942886431
y2                0.8033666434818095
x_y_ols_m         
x_y_ols_b         
x_y_ols_n         1
x_y_pca_m         
x_y_pca_b         
x_y_pca_n         
x_y_pca_quality   
x_y_r2            
x_y_corr          
x_y_cov           
xy_y2_ols_m       
xy_y2_ols_b       
xy_y2_ols_n       1
xy_y2_pca_m       
xy_y2_pca_b       
xy_y2_pca_n       
xy_y2_pca_quality 
xy_y2_r2          
xy_y2_corr        
xy_y2_cov         

a                 dog
b                 wye
i                 19
x                 0.4865373244199632
y                 0.44117766146315884
x2                0.23671856805373653
xy                0.2146493990021416
y2                0.1946377289741016
x_y_ols_m         
x_y_ols_b         
x_y_ols_n         1
x_y_pca_m         
x_y_pca_b         
x_y_pca_n         
x_y_pca_quality   
x_y_r2            
x_y_corr          
x_y_cov           
xy_y2_ols_m       
xy_y2_ols_b       
xy_y2_ols_n       1
xy_y2_pca_m       
xy_y2_pca_b       
xy_y2_pca_n       
xy_y2_pca_quality 
xy_y2_r2          
xy_y2_corr        
xy_y2_cov         

a                 dog
b                 dog
i                 20
x                 0.3223311725542929
y                 0.08115611029827985
x2                0.10389738480022534
xy                0.026159144192390068
y2                0.006586314238746564
x_y_ols_m         3.845532
x_y_ols_b         -1.158379
x_y_ols_n         2
x_y_pca_m         3.845532
x_y_pca_b         -1.158379
x_y_pca_n         2
x_y_pca_quality   1.000000
x_y_r2            1.000000
x_y_corr          1.000000
x_y_cov           0.094483
xy_y2_ols_m       1.795699
xy_y2_ols_b       -0.040388
xy_y2_ols_n       2
xy_y2_pca_m       1.795699
xy_y2_pca_b       -0.040388
xy_y2_pca_n       2
xy_y2_pca_quality 1.000000
xy_y2_r2          1.000000
xy_y2_corr        1.000000
xy_y2_cov         0.208357

mlr --opprint stats2 --fit -a linreg-ols,linreg-pca -f x,y,xy,y2 ./reg_test/input/abixy-wide-short
a   b   i  x                    y                   x2                    xy                   y2                   x_y_ols_fit x_y_pca_fit xy_y2_ols_fit xy_y2_pca_fit
cat pan 1  0.5117389009583777   0.08295224980036853 0.2618767027540883    0.0424498931448654   0.006881075746942741 0.464963    0.366904    0.118531      -0.042629
pan wye 2  0.5225940442098578   0.511678736087022   0.27310453504361476   0.2674002600279053   0.26181512896361225  0.459005    0.342466    0.417581      0.483270
wye cat 3  0.8150401717873625   0.07989551500795256 0.6642904816271734    0.06511805427712146  0.006383293318385972 0.298487    -0.315925   0.148666      0.010366
dog hat 4  0.4488733555675044   0.5730530513123552  0.20148728933843124   0.25722824606077416  0.32838979961840076  0.499469    0.508435    0.404058      0.459490
dog pan 5  0.2946557960430134   0.6850437256584863  0.08682203814174191   0.20185210430817294  0.46928490606405937  0.584116    0.855629    0.330441      0.330029
wye cat 6  0.048709182664292916 0.5851879044762575  0.0023725844758234536 0.02850402453206882  0.34244488354531344  0.719111    1.409334    0.099992      -0.075232
dog hat 7  0.8500003149528544   0.2984098741712895  0.7225005354199517    0.25364848703063775  0.08904845300292483  0.279298    -0.394632   0.399299      0.451121
pan pan 8  0.616507208914765    0.25924335982487057 0.38008113864387366   0.15982540019531707  0.06720711961328732  0.407458    0.131037    0.274570      0.231777
hat hat 9  0.33786884067769307  0.6036735617015514  0.11415535350088835   0.203962486439877    0.3644217690974368   0.560397    0.758342    0.333246      0.334963
wye hat 10 0.3834648944206174   0.4999709279216641  0.14704532525301522   0.19172129908885902  0.24997092876684981  0.535370    0.655691    0.316973      0.306345
pan hat 11 0.025474999754416028 0.7861954915044592  0.0006489756124874967 0.020028329952999087 0.6181033508619382   0.731863    1.461642    0.088724      -0.095047
cat hat 12 0.6335445699880142   0.15467178563525052 0.4013787221612979    0.0979914699195631   0.02392336127159689  0.398106    0.092680    0.192368      0.087219
hat wye 13 0.35922068401384877  0.8502678133887914  0.1290394998233774    0.30543378552048117  0.7229553544849566   0.548677    0.710272    0.468142      0.572187
dog dog 14 0.5440047442770544   0.933608851612059   0.2959411617959433    0.5078876445760125   0.8716254878083876   0.447253    0.294263    0.737285      1.045492
wye dog 15 0.4689175303764642   0.09048353045392021 0.21988365029436224   0.04242931364019586  0.008187269283405506 0.488467    0.463309    0.118504      -0.042677
pan pan 16 0.3959177828066379   0.6339858483805666  0.15675089074252413   0.25100627142161924  0.4019380559468268   0.528535    0.627655    0.395786      0.444944
dog hat 17 0.34033844788864975  0.8845934733681523  0.11583025911125516   0.3010611697385466   0.782505613125532    0.559041    0.752782    0.462329      0.561964
wye wye 18 0.6770613653962891   0.896307226056897   0.4584120925122874    0.6068549942886431   0.8033666434818095   0.374221    -0.005290   0.868852      1.276863
dog wye 19 0.4865373244199632   0.44117766146315884 0.23671856805373653   0.2146493990021416   0.1946377289741016   0.478796    0.423641    0.347454      0.359947
dog dog 20 0.3223311725542929   0.08115611029827985 0.10389738480022534   0.026159144192390068 0.006586314238746564 0.568925    0.793322    0.096874      -0.080714

mlr --opprint stats2 --fit -a linreg-ols,linreg-pca -f x,y,xy,y2 -g a ./reg_test/input/abixy-wide-short
a   b   i  x                    y                   x2                    xy                   y2                   x_y_ols_fit x_y_pca_fit xy_y2_ols_fit xy_y2_pca_fit
cat pan 1  0.5117389009583777   0.08295224980036853 0.2618767027540883    0.0424498931448654   0.006881075746942741 0.082952    0.082952    0.006881      0.006881
cat hat 12 0.6335445699880142   0.15467178563525052 0.4013787221612979    0.0979914699195631   0.02392336127159689  0.154672    0.154672    0.023923      0.023923
pan wye 2  0.5225940442098578   0.511678736087022   0.27310453504361476   0.2674002600279053   0.26181512896361225  0.445016    0.435835    0.237402      0.033364
pan pan 8  0.616507208914765    0.25924335982487057 0.38008113864387366   0.15982540019531707  0.06720711961328732  0.372165    0.356477    0.353122      0.385517
pan hat 11 0.025474999754416028 0.7861954915044592  0.0006489756124874967 0.020028329952999087 0.6181033508619382   0.830642    0.855912    0.503503      0.843152
pan pan 16 0.3959177828066379   0.6339858483805666  0.15675089074252413   0.25100627142161924  0.4019380559468268   0.543281    0.542880    0.255037      0.087031
wye cat 3  0.8150401717873625   0.07989551500795256 0.6642904816271734    0.06511805427712146  0.006383293318385972 0.337827    -0.227660   0.137066      0.112494
wye cat 6  0.048709182664292916 0.5851879044762575  0.0023725844758234536 0.02850402453206882  0.34244488354531344  0.548640    1.271347    0.093480      0.061521
wye hat 10 0.3834648944206174   0.4999709279216641  0.14704532525301522   0.19172129908885902  0.24997092876684981  0.456551    0.616537    0.287780      0.288747
wye dog 15 0.4689175303764642   0.09048353045392021 0.21988365029436224   0.04242931364019586  0.008187269283405506 0.433043    0.449384    0.110057      0.080907
wye wye 18 0.6770613653962891   0.896307226056897   0.4584120925122874    0.6068549942886431   0.8033666434818095   0.375784    0.042238    0.781971      0.866684
dog hat 4  0.4488733555675044   0.5730530513123552  0.20148728933843124   0.25722824606077416  0.32838979961840076  0.563043    0.668750    0.401991      0.406622
dog pan 5  0.2946557960430134   0.6850437256584863  0.08682203814174191   0.20185210430817294  0.46928490606405937  0.610235    1.504956    0.297579      0.255112
dog hat 7  0.8500003149528544   0.2984098741712895  0.7225005354199517    0.25364848703063775  0.08904845300292483  0.440294    -1.506261   0.395241      0.396827
dog dog 14 0.5440047442770544   0.933608851612059   0.2959411617959433    0.5078876445760125   0.8716254878083876   0.533932    0.152924    0.874610      1.092430
dog hat 17 0.34033844788864975  0.8845934733681523  0.11583025911125516   0.3010611697385466   0.782505613125532    0.596256    1.257254    0.484638      0.526549
dog wye 19 0.4865373244199632   0.44117766146315884 0.23671856805373653   0.2146493990021416   0.1946377289741016   0.551517    0.464527    0.321709      0.290125
dog dog 20 0.3223311725542929   0.08115611029827985 0.10389738480022534   0.026159144192390068 0.006586314238746564 0.601766    1.354893    -0.033690     -0.225587
hat hat 9  0.33786884067769307  0.6036735617015514  0.11415535350088835   0.203962486439877    0.3644217690974368   0.603674    0.603674    0.364422      0.364422
hat wye 13 0.35922068401384877  0.8502678133887914  0.1290394998233774    0.30543378552048117  0.7229553544849566   0.850268    0.850268    0.722955      0.722955

mlr --opprint stats2 -a logireg -f x,y ./reg_test/input/logi.dkvp
x_y_logistic_m x_y_logistic_b x_y_logistic_n
0.145457       0.145449       22

mlr --opprint stats2 -a logireg -f x,y -g g ./reg_test/input/logi.dkvp
g    x_y_logistic_m x_y_logistic_b x_y_logistic_n
red  0.145458       -0.036371      11
blue 0.145457       0.327269       11

mlr --oxtab stats2 -a cov -f x,y ./reg_test/input/abixy-het
x_y_cov -0.011481

mlr --oxtab stats2 -a cov -f x,y -g a ./reg_test/input/abixy-het
a       pan
x_y_cov 0.017595

a       eks
x_y_cov 0.034641

a wye

a       zee
x_y_cov 

mlr --opprint step -a rsum,shift,delta,counter -f x,y ./reg_test/input/abixy
a   b   i  x                   y                   x_rsum   x_shift             x_delta   x_counter y_rsum   y_shift             y_delta   y_counter
pan pan 1  0.3467901443380824  0.7268028627434533  0.346790 -                   0         1         0.726803 -                   0         1
eks pan 2  0.7586799647899636  0.5221511083334797  1.105470 0.3467901443380824  0.411890  2         1.248954 0.7268028627434533  -0.204652 2
wye wye 3  0.20460330576630303 0.33831852551664776 1.310073 0.7586799647899636  -0.554077 3         1.587272 0.5221511083334797  -0.183833 3
eks wye 4  0.38139939387114097 0.13418874328430463 1.691473 0.20460330576630303 0.176796  4         1.721461 0.33831852551664776 -0.204130 4
wye pan 5  0.5732889198020006  0.8636244699032729  2.264762 0.38139939387114097 0.191890  5         2.585086 0.13418874328430463 0.729436  5
zee pan 6  0.5271261600918548  0.49322128674835697 2.791888 0.5732889198020006  -0.046163 6         3.078307 0.8636244699032729  -0.370403 6
eks zee 7  0.6117840605678454  0.1878849191181694  3.403672 0.5271261600918548  0.084658  7         3.266192 0.49322128674835697 -0.305336 7
zee wye 8  0.5985540091064224  0.976181385699006   4.002226 0.6117840605678454  -0.013230 8         4.242373 0.1878849191181694  0.788296  8
hat wye 9  0.03144187646093577 0.7495507603507059  4.033668 0.5985540091064224  -0.567112 9         4.991924 0.976181385699006   -0.226631 9
pan wye 10 0.5026260055412137  0.9526183602969864  4.536294 0.03144187646093577 0.471184  10        5.944542 0.7495507603507059  0.203068  10

mlr --opprint step -a rsum,shift,delta,counter -f x,y -g a ./reg_test/input/abixy
a   b   i  x                   y                   x_rsum   x_shift             x_delta   x_counter y_rsum   y_shift             y_delta   y_counter
pan pan 1  0.3467901443380824  0.7268028627434533  0.346790 -                   0         1         0.726803 -                   0         1
eks pan 2  0.7586799647899636  0.5221511083334797  0.758680 -                   0         1         0.522151 -                   0         1
wye wye 3  0.20460330576630303 0.33831852551664776 0.204603 -                   0         1         0.338319 -                   0         1
eks wye 4  0.38139939387114097 0.13418874328430463 1.140079 0.7586799647899636  -0.377281 2         0.656340 0.5221511083334797  -0.387962 2
wye pan 5  0.5732889198020006  0.8636244699032729  0.777892 0.20460330576630303 0.368686  2         1.201943 0.33831852551664776 0.525306  2
zee pan 6  0.5271261600918548  0.49322128674835697 0.527126 -                   0         1         0.493221 -                   0         1
eks zee 7  0.6117840605678454  0.1878849191181694  1.751863 0.38139939387114097 0.230385  3         0.844225 0.13418874328430463 0.053696  3
zee wye 8  0.5985540091064224  0.976181385699006   1.125680 0.5271261600918548  0.071428  2         1.469403 0.49322128674835697 0.482960  2
hat wye 9  0.03144187646093577 0.7495507603507059  0.031442 -                   0         1         0.749551 -                   0         1
pan wye 10 0.5026260055412137  0.9526183602969864  0.849416 0.3467901443380824  0.155836  2         1.679421 0.7268028627434533  0.225815  2

mlr --opprint step -a ewma -d 0.1,0.9 -f x,y -g a ./reg_test/input/abixy
a   b   i  x                   y                   x_ewma_0.1 x_ewma_0.9 y_ewma_0.1 y_ewma_0.9
pan pan 1  0.3467901443380824  0.7268028627434533  0.346790   0.346790   0.726803   0.726803
eks pan 2  0.7586799647899636  0.5221511083334797  0.758680   0.758680   0.522151   0.522151
wye wye 3  0.20460330576630303 0.33831852551664776 0.204603   0.204603   0.338319   0.338319
eks wye 4  0.38139939387114097 0.13418874328430463 0.720952   0.419127   0.483355   0.172985
wye pan 5  0.5732889198020006  0.8636244699032729  0.241472   0.536420   0.390849   0.811094
zee pan 6  0.5271261600918548  0.49322128674835697 0.527126   0.527126   0.493221   0.493221
eks zee 7  0.6117840605678454  0.1878849191181694  0.710035   0.592518   0.453808   0.186395
zee wye 8  0.5985540091064224  0.976181385699006   0.534269   0.591411   0.541517   0.927885
hat wye 9  0.03144187646093577 0.7495507603507059  0.031442   0.031442   0.749551   0.749551
pan wye 10 0.5026260055412137  0.9526183602969864  0.362374   0.487042   0.749384   0.930037

mlr --opprint step -a ewma -d 0.1,0.9 -o smooth,rough -f x,y -g a ./reg_test/input/abixy
a   b   i  x                   y                   x_ewma_smooth x_ewma_rough y_ewma_smooth y_ewma_rough
pan pan 1  0.3467901443380824  0.7268028627434533  0.346790      0.346790     0.726803      0.726803
eks pan 2  0.7586799647899636  0.5221511083334797  0.758680      0.758680     0.522151      0.522151
wye wye 3  0.20460330576630303 0.33831852551664776 0.204603      0.204603     0.338319      0.338319
eks wye 4  0.38139939387114097 0.13418874328430463 0.720952      0.419127     0.483355      0.172985
wye pan 5  0.5732889198020006  0.8636244699032729  0.241472      0.536420     0.390849      0.811094
zee pan 6  0.5271261600918548  0.49322128674835697 0.527126      0.527126     0.493221      0.493221
eks zee 7  0.6117840605678454  0.1878849191181694  0.710035      0.592518     0.453808      0.186395
zee wye 8  0.5985540091064224  0.976181385699006   0.534269      0.591411     0.541517      0.927885
hat wye 9  0.03144187646093577 0.7495507603507059  0.031442      0.031442     0.749551      0.749551
pan wye 10 0.5026260055412137  0.9526183602969864  0.362374      0.487042     0.749384      0.930037

mlr --odkvp step -a rsum,shift,delta,counter -f x,y ./reg_test/input/abixy-het
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533,x_rsum=0.346790,x_shift=,x_delta=0,x_counter=1,y_rsum=0.726803,y_shift=,y_delta=0,y_counter=1
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797,x_rsum=1.105470,x_shift=0.3467901443380824,x_delta=0.411890,x_counter=2,y_rsum=1.248954,y_shift=0.7268028627434533,y_delta=-0.204652,y_counter=2
aaa=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776,x_rsum=1.310073,x_shift=0.7586799647899636,x_delta=-0.554077,x_counter=3,y_rsum=1.587272,y_shift=0.5221511083334797,y_delta=-0.183833,y_counter=3
a=eks,bbb=wye,i=4,x=0.38139939387114097,y=0.13418874328430463,x_rsum=1.691473,x_shift=0.20460330576630303,x_delta=0.176796,x_counter=4,y_rsum=1.721461,y_shift=0.33831852551664776,y_delta=-0.204130,y_counter=4
a=wye,b=pan,i=5,xxx=0.5732889198020006,y=0.8636244699032729,y_rsum=2.585086,y_shift=0.13418874328430463,y_delta=0.729436,y_counter=5
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697,x_rsum=2.218599,x_shift=0.38139939387114097,x_delta=0.145727,x_counter=5,y_rsum=3.078307,y_shift=0.8636244699032729,y_delta=-0.370403,y_counter=6
a=eks,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694,x_rsum=2.830383,x_shift=0.5271261600918548,x_delta=0.084658,x_counter=6,y_rsum=3.266192,y_shift=0.49322128674835697,y_delta=-0.305336,y_counter=7
a=zee,b=wye,i=8,x=0.5985540091064224,yyy=0.976181385699006,x_rsum=3.428937,x_shift=0.6117840605678454,x_delta=-0.013230,x_counter=7
aaa=hat,bbb=wye,i=9,x=0.03144187646093577,y=0.7495507603507059,x_rsum=3.460379,x_shift=0.5985540091064224,x_delta=-0.567112,x_counter=8,y_rsum=4.015743,y_shift=0.1878849191181694,y_delta=0.561666,y_counter=8
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864,x_rsum=3.963005,x_shift=0.03144187646093577,x_delta=0.471184,x_counter=9,y_rsum=4.968361,y_shift=0.7495507603507059,y_delta=0.203068,y_counter=9

mlr --odkvp step -a rsum,shift,delta,counter -f x,y -g a ./reg_test/input/abixy-het
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533,x_rsum=0.346790,x_shift=,x_delta=0,x_counter=1,y_rsum=0.726803,y_shift=,y_delta=0,y_counter=1
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797,x_rsum=0.758680,x_shift=,x_delta=0,x_counter=1,y_rsum=0.522151,y_shift=,y_delta=0,y_counter=1
aaa=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=eks,bbb=wye,i=4,x=0.38139939387114097,y=0.13418874328430463,x_rsum=1.140079,x_shift=0.7586799647899636,x_delta=-0.377281,x_counter=2,y_rsum=0.656340,y_shift=0.5221511083334797,y_delta=-0.387962,y_counter=2
a=wye,b=pan,i=5,xxx=0.5732889198020006,y=0.8636244699032729,y_rsum=0.863624,y_shift=,y_delta=0,y_counter=1
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697,x_rsum=0.527126,x_shift=,x_delta=0,x_counter=1,y_rsum=0.493221,y_shift=,y_delta=0,y_counter=1
a=eks,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694,x_rsum=1.751863,x_shift=0.38139939387114097,x_delta=0.230385,x_counter=3,y_rsum=0.844225,y_shift=0.13418874328430463,y_delta=0.053696,y_counter=3
a=zee,b=wye,i=8,x=0.5985540091064224,yyy=0.976181385699006,x_rsum=1.125680,x_shift=0.5271261600918548,x_delta=0.071428,x_counter=2
aaa=hat,bbb=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864,x_rsum=0.849416,x_shift=0.3467901443380824,x_delta=0.155836,x_counter=2,y_rsum=1.679421,y_shift=0.7268028627434533,y_delta=0.225815,y_counter=2

mlr --opprint step -a ewma -d 0.1,0.9 -f x,y -g a ./reg_test/input/abixy-het
a   b   i x                  y                  x_ewma_0.1 x_ewma_0.9 y_ewma_0.1 y_ewma_0.9
pan pan 1 0.3467901443380824 0.7268028627434533 0.346790   0.346790   0.726803   0.726803
eks pan 2 0.7586799647899636 0.5221511083334797 0.758680   0.758680   0.522151   0.522151

aaa b   i x                   y
wye wye 3 0.20460330576630303 0.33831852551664776

a   bbb i x                   y                   x_ewma_0.1 x_ewma_0.9 y_ewma_0.1 y_ewma_0.9
eks wye 4 0.38139939387114097 0.13418874328430463 0.720952   0.419127   0.483355   0.172985

a   b   i xxx                y                  y_ewma_0.1 y_ewma_0.9
wye pan 5 0.5732889198020006 0.8636244699032729 0.863624   0.863624

a   b   i x                  y                   x_ewma_0.1 x_ewma_0.9 y_ewma_0.1 y_ewma_0.9
zee pan 6 0.5271261600918548 0.49322128674835697 0.527126   0.527126   0.493221   0.493221

a   b   iii x                  y                  x_ewma_0.1 x_ewma_0.9 y_ewma_0.1 y_ewma_0.9
eks zee 7   0.6117840605678454 0.1878849191181694 0.710035   0.592518   0.453808   0.186395

a   b   i x                  yyy               x_ewma_0.1 x_ewma_0.9
zee wye 8 0.5985540091064224 0.976181385699006 0.534269   0.591411

aaa bbb i x                   y
hat wye 9 0.03144187646093577 0.7495507603507059

a   b   i  x                  y                  x_ewma_0.1 x_ewma_0.9 y_ewma_0.1 y_ewma_0.9
pan wye 10 0.5026260055412137 0.9526183602969864 0.362374   0.487042   0.749384   0.930037

mlr --opprint step -a ewma -d 0.1,0.9 -o smooth,rough -f x,y -g a ./reg_test/input/abixy-het
a   b   i x                  y                  x_ewma_smooth x_ewma_rough y_ewma_smooth y_ewma_rough
pan pan 1 0.3467901443380824 0.7268028627434533 0.346790      0.346790     0.726803      0.726803
eks pan 2 0.7586799647899636 0.5221511083334797 0.758680      0.758680     0.522151      0.522151

aaa b   i x                   y
wye wye 3 0.20460330576630303 0.33831852551664776

a   bbb i x                   y                   x_ewma_smooth x_ewma_rough y_ewma_smooth y_ewma_rough
eks wye 4 0.38139939387114097 0.13418874328430463 0.720952      0.419127     0.483355      0.172985

a   b   i xxx                y                  y_ewma_smooth y_ewma_rough
wye pan 5 0.5732889198020006 0.8636244699032729 0.863624      0.863624

a   b   i x                  y                   x_ewma_smooth x_ewma_rough y_ewma_smooth y_ewma_rough
zee pan 6 0.5271261600918548 0.49322128674835697 0.527126      0.527126     0.493221      0.493221

a   b   iii x                  y                  x_ewma_smooth x_ewma_rough y_ewma_smooth y_ewma_rough
eks zee 7   0.6117840605678454 0.1878849191181694 0.710035      0.592518     0.453808      0.186395

a   b   i x                  yyy               x_ewma_smooth x_ewma_rough
zee wye 8 0.5985540091064224 0.976181385699006 0.534269      0.591411

aaa bbb i x                   y
hat wye 9 0.03144187646093577 0.7495507603507059

a   b   i  x                  y                  x_ewma_smooth x_ewma_rough y_ewma_smooth y_ewma_rough
pan wye 10 0.5026260055412137 0.9526183602969864 0.362374      0.487042     0.749384      0.930037

mlr --icsvlite --opprint step -a from-first -f x ./reg_test/input/from-first.csv
x   g     x_from_first
100 red   0
203 red   103
101 green 1
307 red   207
209 green 109
314 green 214

mlr --icsvlite --opprint step -a from-first -f x -g g ./reg_test/input/from-first.csv
x   g     x_from_first
100 red   0
203 red   103
101 green 0
307 red   207
209 green 108
314 green 213

mlr --opprint histogram -f x,y --lo 0 --hi 1 --nbins 20 ./reg_test/input/small
bin_lo   bin_hi   x_count y_count
0.000000 0.050000 1       0
0.050000 0.100000 0       0
0.100000 0.150000 0       1
0.150000 0.200000 0       1
0.200000 0.250000 1       0
0.250000 0.300000 0       0
0.300000 0.350000 1       1
0.350000 0.400000 1       0
0.400000 0.450000 0       0
0.450000 0.500000 0       1
0.500000 0.550000 2       1
0.550000 0.600000 2       0
0.600000 0.650000 1       0
0.650000 0.700000 0       0
0.700000 0.750000 0       2
0.750000 0.800000 1       0
0.800000 0.850000 0       0
0.850000 0.900000 0       1
0.900000 0.950000 0       0
0.950000 1.000000 0       2

mlr --opprint histogram -f x,y --lo 0 --hi 1 --nbins 20 -o foo_ ./reg_test/input/small
foo_bin_lo foo_bin_hi foo_x_count foo_y_count
0.000000   0.050000   1           0
0.050000   0.100000   0           0
0.100000   0.150000   0           1
0.150000   0.200000   0           1
0.200000   0.250000   1           0
0.250000   0.300000   0           0
0.300000   0.350000   1           1
0.350000   0.400000   1           0
0.400000   0.450000   0           0
0.450000   0.500000   0           1
0.500000   0.550000   2           1
0.550000   0.600000   2           0
0.600000   0.650000   1           0
0.650000   0.700000   0           0
0.700000   0.750000   0           2
0.750000   0.800000   1           0
0.800000   0.850000   0           0
0.850000   0.900000   0           1
0.900000   0.950000   0           0
0.950000   1.000000   0           2

mlr --opprint histogram --nbins 9 --auto -f x,y ./reg_test/input/ints.dkvp
bin_lo   bin_hi   x_count y_count
0.000000 1.000000 8       1
1.000000 2.000000 2       2
2.000000 3.000000 5       5
3.000000 4.000000 4       1
4.000000 5.000000 3       2
5.000000 6.000000 1       4
6.000000 7.000000 3       4
7.000000 8.000000 2       4
8.000000 9.000000 2       7

mlr --opprint histogram --nbins 9 --auto -f x,y -o foo_ ./reg_test/input/ints.dkvp
foo_bin_lo bin_hi   foo_x_count foo_y_count
0.000000   1.000000 8           1
1.000000   2.000000 2           2
2.000000   3.000000 5           5
3.000000   4.000000 4           1
4.000000   5.000000 3           2
5.000000   6.000000 1           4
6.000000   7.000000 3           4
7.000000   8.000000 2           4
8.000000   9.000000 2           7

mlr --csvlite --opprint merge-fields -a p0,min,p29,max,p100,sum -c _in,_out ./reg_test/input/merge-fields-in-out.csv
a_p0 a_min a_p29 a_max a_p100 a_sum b_p0 b_min b_p29 b_max b_p100 b_sum
436  436   436   490   490    926   195  195   195   446   446    641
320  320   320   526   526    846   780  780   780   963   963    1743
220  220   220   888   888    1108  705  705   705   831   831    1536

mlr --csvlite --opprint merge-fields -k -a p0,min,p29,max,p100,sum -c _in,_out ./reg_test/input/merge-fields-in-out.csv
a_in a_out b_in b_out a_p0 a_min a_p29 a_max a_p100 a_sum b_p0 b_min b_p29 b_max b_p100 b_sum
436  490   446  195   436  436   436   490   490    926   195  195   195   446   446    641
526  320   963  780   320  320   320   526   526    846   780  780   780   963   963    1743
220  888   705  831   220  220   220   888   888    1108  705  705   705   831   831    1536

mlr --csvlite --opprint merge-fields -i -a p0,min,p29,max,p100,sum -c _in,_out ./reg_test/input/merge-fields-in-out.csv
a_p0       a_min a_p29      a_max a_p100 a_sum b_p0       b_min b_p29      b_max b_p100 b_sum
436.000000 436   451.660000 490   490    926   195.000000 195   267.790000 446   446    641
320.000000 320   379.740000 526   526    846   780.000000 780   833.070000 963   963    1743
220.000000 220   413.720000 888   888    1108  705.000000 705   741.540000 831   831    1536

mlr --csvlite --opprint merge-fields -i -k -a p0,min,p29,max,p100,sum -c _in,_out ./reg_test/input/merge-fields-in-out.csv
a_in a_out b_in b_out a_p0       a_min a_p29      a_max a_p100 a_sum b_p0       b_min b_p29      b_max b_p100 b_sum
436  490   446  195   436.000000 436   451.660000 490   490    926   195.000000 195   267.790000 446   446    641
526  320   963  780   320.000000 320   379.740000 526   526    846   780.000000 780   833.070000 963   963    1743
220  888   705  831   220.000000 220   413.720000 888   888    1108  705.000000 705   741.540000 831   831    1536

mlr --csvlite --opprint merge-fields -a p0,min,p29,max,p100 -c _in,_out ./reg_test/input/merge-fields-in-out-mixed.csv
a_p0 a_min a_p29 a_max a_p100 b_p0 b_min b_p29 b_max b_p100
436  436   436   abc   abc    195  195   195   446   446
320  320   320   526   526    780  780   780   def   def
220  220   220   888   888    705  705   705   ghi   ghi
jkl  jkl   jkl   mno   mno    pqr  pqr   pqr   stu   stu

mlr --csvlite --opprint merge-fields -k -a p0,min,p29,max,p100 -c _in,_out ./reg_test/input/merge-fields-in-out-mixed.csv
a_in a_out b_in b_out a_p0 a_min a_p29 a_max a_p100 b_p0 b_min b_p29 b_max b_p100
436  abc   446  195   436  436   436   abc   abc    195  195   195   446   446
526  320   def  780   320  320   320   526   526    780  780   780   def   def
220  888   705  ghi   220  220   220   888   888    705  705   705   ghi   ghi
jkl  mno   pqr  stu   jkl  jkl   jkl   mno   mno    pqr  pqr   pqr   stu   stu

mlr --oxtab merge-fields -k -a p0,min,p29,max,p100,sum,count -f a_in_x,a_out_x -o foo ./reg_test/input/merge-fields-abxy.dkvp
a_in_x    1
a_out_x   2
b_in_y    4
b_out_x   8
foo_p0    1
foo_min   1
foo_p29   1
foo_max   2
foo_p100  2
foo_sum   3
foo_count 2

z         1
foo_p0    
foo_min   
foo_p29   
foo_max   
foo_p100  
foo_sum   0
foo_count 0

a_on_x    1
a_out_x   2
b_in_y    4
b_out_x   8
foo_p0    2
foo_min   2
foo_p29   2
foo_max   2
foo_p100  2
foo_sum   2
foo_count 1

a_in_x    1
a_oot_x   2
b_in_y    4
b_out_x   8
foo_p0    1
foo_min   1
foo_p29   1
foo_max   1
foo_p100  1
foo_sum   1
foo_count 1

a_in_x    1
a_out_x   2
b_on_y    4
b_out_x   8
foo_p0    1
foo_min   1
foo_p29   1
foo_max   2
foo_p100  2
foo_sum   3
foo_count 2

a_in_x    1
a_out_x   2
b_in_y    4
b_oot_x   8
foo_p0    1
foo_min   1
foo_p29   1
foo_max   2
foo_p100  2
foo_sum   3
foo_count 2

z         2
foo_p0    
foo_min   
foo_p29   
foo_max   
foo_p100  
foo_sum   0
foo_count 0

a_on_x    1
a_oot_x   2
b_in_y    4
b_out_x   8
foo_p0    
foo_min   
foo_p29   
foo_max   
foo_p100  
foo_sum   0
foo_count 0

a_on_x    1
a_out_x   2
b_on_y    4
b_out_x   8
foo_p0    2
foo_min   2
foo_p29   2
foo_max   2
foo_p100  2
foo_sum   2
foo_count 1

a_on_x    1
a_out_x   2
b_in_y    4
b_oot_x   8
foo_p0    2
foo_min   2
foo_p29   2
foo_max   2
foo_p100  2
foo_sum   2
foo_count 1

a_in_x    1
a_oot_x   2
b_on_y    4
b_out_x   8
foo_p0    1
foo_min   1
foo_p29   1
foo_max   1
foo_p100  1
foo_sum   1
foo_count 1

a_in_x    1
a_oot_x   2
b_in_y    4
b_oot_x   8
foo_p0    1
foo_min   1
foo_p29   1
foo_max   1
foo_p100  1
foo_sum   1
foo_count 1

a_in_x    1
a_out_x   2
b_on_y    4
b_oot_x   8
foo_p0    1
foo_min   1
foo_p29   1
foo_max   2
foo_p100  2
foo_sum   3
foo_count 2

z         3
foo_p0    
foo_min   
foo_p29   
foo_max   
foo_p100  
foo_sum   0
foo_count 0

a_in_x    1
a_oot_x   2
b_on_y    4
b_oot_x   8
foo_p0    1
foo_min   1
foo_p29   1
foo_max   1
foo_p100  1
foo_sum   1
foo_count 1

a_on_x    1
a_out_x   2
b_on_y    4
b_oot_x   8
foo_p0    2
foo_min   2
foo_p29   2
foo_max   2
foo_p100  2
foo_sum   2
foo_count 1

a_on_x    1
a_oot_x   2
b_in_y    4
b_oot_x   8
foo_p0    
foo_min   
foo_p29   
foo_max   
foo_p100  
foo_sum   0
foo_count 0

a_on_x    1
a_oot_x   2
b_on_y    4
b_out_x   8
foo_p0    
foo_min   
foo_p29   
foo_max   
foo_p100  
foo_sum   0
foo_count 0

z         4
foo_p0    
foo_min   
foo_p29   
foo_max   
foo_p100  
foo_sum   0
foo_count 0

a_on_x    1
a_oot_x   2
b_on_y    4
b_oot_x   8
foo_p0    
foo_min   
foo_p29   
foo_max   
foo_p100  
foo_sum   0
foo_count 0

mlr --oxtab merge-fields -k -a p0,min,p29,max,p100,sum,count -r in_,out_ -o bar ./reg_test/input/merge-fields-abxy.dkvp
a_in_x    1
a_out_x   2
b_in_y    4
b_out_x   8
bar_p0    1
bar_min   1
bar_p29   2
bar_max   8
bar_p100  8
bar_sum   15
bar_count 4

z         1
bar_p0    
bar_min   
bar_p29   
bar_max   
bar_p100  
bar_sum   0
bar_count 0

a_on_x    1
a_out_x   2
b_in_y    4
b_out_x   8
bar_p0    2
bar_min   2
bar_p29   2
bar_max   8
bar_p100  8
bar_sum   14
bar_count 3

a_in_x    1
a_oot_x   2
b_in_y    4
b_out_x   8
bar_p0    1
bar_min   1
bar_p29   1
bar_max   8
bar_p100  8
bar_sum   13
bar_count 3

a_in_x    1
a_out_x   2
b_on_y    4
b_out_x   8
bar_p0    1
bar_min   1
bar_p29   1
bar_max   8
bar_p100  8
bar_sum   11
bar_count 3

a_in_x    1
a_out_x   2
b_in_y    4
b_oot_x   8
bar_p0    1
bar_min   1
bar_p29   1
bar_max   4
bar_p100  4
bar_sum   7
bar_count 3

z         2
bar_p0    
bar_min   
bar_p29   
bar_max   
bar_p100  
bar_sum   0
bar_count 0

a_on_x    1
a_oot_x   2
b_in_y    4
b_out_x   8
bar_p0    4
bar_min   4
bar_p29   4
bar_max   8
bar_p100  8
bar_sum   12
bar_count 2

a_on_x    1
a_out_x   2
b_on_y    4
b_out_x   8
bar_p0    2
bar_min   2
bar_p29   2
bar_max   8
bar_p100  8
bar_sum   10
bar_count 2

a_on_x    1
a_out_x   2
b_in_y    4
b_oot_x   8
bar_p0    2
bar_min   2
bar_p29   2
bar_max   4
bar_p100  4
bar_sum   6
bar_count 2

a_in_x    1
a_oot_x   2
b_on_y    4
b_out_x   8
bar_p0    1
bar_min   1
bar_p29   1
bar_max   8
bar_p100  8
bar_sum   9
bar_count 2

a_in_x    1
a_oot_x   2
b_in_y    4
b_oot_x   8
bar_p0    1
bar_min   1
bar_p29   1
bar_max   4
bar_p100  4
bar_sum   5
bar_count 2

a_in_x    1
a_out_x   2
b_on_y    4
b_oot_x   8
bar_p0    1
bar_min   1
bar_p29   1
bar_max   2
bar_p100  2
bar_sum   3
bar_count 2

z         3
bar_p0    
bar_min   
bar_p29   
bar_max   
bar_p100  
bar_sum   0
bar_count 0

a_in_x    1
a_oot_x   2
b_on_y    4
b_oot_x   8
bar_p0    1
bar_min   1
bar_p29   1
bar_max   1
bar_p100  1
bar_sum   1
bar_count 1

a_on_x    1
a_out_x   2
b_on_y    4
b_oot_x   8
bar_p0    2
bar_min   2
bar_p29   2
bar_max   2
bar_p100  2
bar_sum   2
bar_count 1

a_on_x    1
a_oot_x   2
b_in_y    4
b_oot_x   8
bar_p0    4
bar_min   4
bar_p29   4
bar_max   4
bar_p100  4
bar_sum   4
bar_count 1

a_on_x    1
a_oot_x   2
b_on_y    4
b_out_x   8
bar_p0    8
bar_min   8
bar_p29   8
bar_max   8
bar_p100  8
bar_sum   8
bar_count 1

z         4
bar_p0    
bar_min   
bar_p29   
bar_max   
bar_p100  
bar_sum   0
bar_count 0

a_on_x    1
a_oot_x   2
b_on_y    4
b_oot_x   8
bar_p0    
bar_min   
bar_p29   
bar_max   
bar_p100  
bar_sum   0
bar_count 0

mlr --oxtab merge-fields -k -a p0,min,p29,max,p100,sum,count -c in_,out_ ./reg_test/input/merge-fields-abxy.dkvp
a_in_x    1
a_out_x   2
b_in_y    4
b_out_x   8
a_x_p0    1
a_x_min   1
a_x_p29   1
a_x_max   2
a_x_p100  2
a_x_sum   3
a_x_count 2
b_y_p0    4
b_y_min   4
b_y_p29   4
b_y_max   4
b_y_p100  4
b_y_sum   4
b_y_count 1
b_x_p0    8
b_x_min   8
b_x_p29   8
b_x_max   8
b_x_p100  8
b_x_sum   8
b_x_count 1

z 1

a_on_x    1
a_out_x   2
b_in_y    4
b_out_x   8
a_x_p0    2
a_x_min   2
a_x_p29   2
a_x_max   2
a_x_p100  2
a_x_sum   2
a_x_count 1
b_y_p0    4
b_y_min   4
b_y_p29   4
b_y_max   4
b_y_p100  4
b_y_sum   4
b_y_count 1
b_x_p0    8
b_x_min   8
b_x_p29   8
b_x_max   8
b_x_p100  8
b_x_sum   8
b_x_count 1

a_in_x    1
a_oot_x   2
b_in_y    4
b_out_x   8
a_x_p0    1
a_x_min   1
a_x_p29   1
a_x_max   1
a_x_p100  1
a_x_sum   1
a_x_count 1
b_y_p0    4
b_y_min   4
b_y_p29   4
b_y_max   4
b_y_p100  4
b_y_sum   4
b_y_count 1
b_x_p0    8
b_x_min   8
b_x_p29   8
b_x_max   8
b_x_p100  8
b_x_sum   8
b_x_count 1

a_in_x    1
a_out_x   2
b_on_y    4
b_out_x   8
a_x_p0    1
a_x_min   1
a_x_p29   1
a_x_max   2
a_x_p100  2
a_x_sum   3
a_x_count 2
b_x_p0    8
b_x_min   8
b_x_p29   8
b_x_max   8
b_x_p100  8
b_x_sum   8
b_x_count 1

a_in_x    1
a_out_x   2
b_in_y    4
b_oot_x   8
a_x_p0    1
a_x_min   1
a_x_p29   1
a_x_max   2
a_x_p100  2
a_x_sum   3
a_x_count 2
b_y_p0    4
b_y_min   4
b_y_p29   4
b_y_max   4
b_y_p100  4
b_y_sum   4
b_y_count 1

z 2

a_on_x    1
a_oot_x   2
b_in_y    4
b_out_x   8
b_y_p0    4
b_y_min   4
b_y_p29   4
b_y_max   4
b_y_p100  4
b_y_sum   4
b_y_count 1
b_x_p0    8
b_x_min   8
b_x_p29   8
b_x_max   8
b_x_p100  8
b_x_sum   8
b_x_count 1

a_on_x    1
a_out_x   2
b_on_y    4
b_out_x   8
a_x_p0    2
a_x_min   2
a_x_p29   2
a_x_max   2
a_x_p100  2
a_x_sum   2
a_x_count 1
b_x_p0    8
b_x_min   8
b_x_p29   8
b_x_max   8
b_x_p100  8
b_x_sum   8
b_x_count 1

a_on_x    1
a_out_x   2
b_in_y    4
b_oot_x   8
a_x_p0    2
a_x_min   2
a_x_p29   2
a_x_max   2
a_x_p100  2
a_x_sum   2
a_x_count 1
b_y_p0    4
b_y_min   4
b_y_p29   4
b_y_max   4
b_y_p100  4
b_y_sum   4
b_y_count 1

a_in_x    1
a_oot_x   2
b_on_y    4
b_out_x   8
a_x_p0    1
a_x_min   1
a_x_p29   1
a_x_max   1
a_x_p100  1
a_x_sum   1
a_x_count 1
b_x_p0    8
b_x_min   8
b_x_p29   8
b_x_max   8
b_x_p100  8
b_x_sum   8
b_x_count 1

a_in_x    1
a_oot_x   2
b_in_y    4
b_oot_x   8
a_x_p0    1
a_x_min   1
a_x_p29   1
a_x_max   1
a_x_p100  1
a_x_sum   1
a_x_count 1
b_y_p0    4
b_y_min   4
b_y_p29   4
b_y_max   4
b_y_p100  4
b_y_sum   4
b_y_count 1

a_in_x    1
a_out_x   2
b_on_y    4
b_oot_x   8
a_x_p0    1
a_x_min   1
a_x_p29   1
a_x_max   2
a_x_p100  2
a_x_sum   3
a_x_count 2

z 3

a_in_x    1
a_oot_x   2
b_on_y    4
b_oot_x   8
a_x_p0    1
a_x_min   1
a_x_p29   1
a_x_max   1
a_x_p100  1
a_x_sum   1
a_x_count 1

a_on_x    1
a_out_x   2
b_on_y    4
b_oot_x   8
a_x_p0    2
a_x_min   2
a_x_p29   2
a_x_max   2
a_x_p100  2
a_x_sum   2
a_x_count 1

a_on_x    1
a_oot_x   2
b_in_y    4
b_oot_x   8
b_y_p0    4
b_y_min   4
b_y_p29   4
b_y_max   4
b_y_p100  4
b_y_sum   4
b_y_count 1

a_on_x    1
a_oot_x   2
b_on_y    4
b_out_x   8
b_x_p0    8
b_x_min   8
b_x_p29   8
b_x_max   8
b_x_p100  8
b_x_sum   8
b_x_count 1

z 4

a_on_x  1
a_oot_x 2
b_on_y  4
b_oot_x 8

mlr --oxtab merge-fields -i -k -a p0,min,p29,max,p100,sum,count -f a_in_x,a_out_x -o foo ./reg_test/input/merge-fields-abxy.dkvp
a_in_x    1
a_out_x   2
b_in_y    4
b_out_x   8
foo_p0    1.000000
foo_min   1
foo_p29   1.290000
foo_max   2
foo_p100  2
foo_sum   3
foo_count 2

z         1
foo_p0    
foo_min   
foo_p29   
foo_max   
foo_p100  
foo_sum   0
foo_count 0

a_on_x    1
a_out_x   2
b_in_y    4
b_out_x   8
foo_p0    2
foo_min   2
foo_p29   2
foo_max   2
foo_p100  2
foo_sum   2
foo_count 1

a_in_x    1
a_oot_x   2
b_in_y    4
b_out_x   8
foo_p0    1
foo_min   1
foo_p29   1
foo_max   1
foo_p100  1
foo_sum   1
foo_count 1

a_in_x    1
a_out_x   2
b_on_y    4
b_out_x   8
foo_p0    1.000000
foo_min   1
foo_p29   1.290000
foo_max   2
foo_p100  2
foo_sum   3
foo_count 2

a_in_x    1
a_out_x   2
b_in_y    4
b_oot_x   8
foo_p0    1.000000
foo_min   1
foo_p29   1.290000
foo_max   2
foo_p100  2
foo_sum   3
foo_count 2

z         2
foo_p0    
foo_min   
foo_p29   
foo_max   
foo_p100  
foo_sum   0
foo_count 0

a_on_x    1
a_oot_x   2
b_in_y    4
b_out_x   8
foo_p0    
foo_min   
foo_p29   
foo_max   
foo_p100  
foo_sum   0
foo_count 0

a_on_x    1
a_out_x   2
b_on_y    4
b_out_x   8
foo_p0    2
foo_min   2
foo_p29   2
foo_max   2
foo_p100  2
foo_sum   2
foo_count 1

a_on_x    1
a_out_x   2
b_in_y    4
b_oot_x   8
foo_p0    2
foo_min   2
foo_p29   2
foo_max   2
foo_p100  2
foo_sum   2
foo_count 1

a_in_x    1
a_oot_x   2
b_on_y    4
b_out_x   8
foo_p0    1
foo_min   1
foo_p29   1
foo_max   1
foo_p100  1
foo_sum   1
foo_count 1

a_in_x    1
a_oot_x   2
b_in_y    4
b_oot_x   8
foo_p0    1
foo_min   1
foo_p29   1
foo_max   1
foo_p100  1
foo_sum   1
foo_count 1

a_in_x    1
a_out_x   2
b_on_y    4
b_oot_x   8
foo_p0    1.000000
foo_min   1
foo_p29   1.290000
foo_max   2
foo_p100  2
foo_sum   3
foo_count 2

z         3
foo_p0    
foo_min   
foo_p29   
foo_max   
foo_p100  
foo_sum   0
foo_count 0

a_in_x    1
a_oot_x   2
b_on_y    4
b_oot_x   8
foo_p0    1
foo_min   1
foo_p29   1
foo_max   1
foo_p100  1
foo_sum   1
foo_count 1

a_on_x    1
a_out_x   2
b_on_y    4
b_oot_x   8
foo_p0    2
foo_min   2
foo_p29   2
foo_max   2
foo_p100  2
foo_sum   2
foo_count 1

a_on_x    1
a_oot_x   2
b_in_y    4
b_oot_x   8
foo_p0    
foo_min   
foo_p29   
foo_max   
foo_p100  
foo_sum   0
foo_count 0

a_on_x    1
a_oot_x   2
b_on_y    4
b_out_x   8
foo_p0    
foo_min   
foo_p29   
foo_max   
foo_p100  
foo_sum   0
foo_count 0

z         4
foo_p0    
foo_min   
foo_p29   
foo_max   
foo_p100  
foo_sum   0
foo_count 0

a_on_x    1
a_oot_x   2
b_on_y    4
b_oot_x   8
foo_p0    
foo_min   
foo_p29   
foo_max   
foo_p100  
foo_sum   0
foo_count 0

mlr --oxtab merge-fields -i -k -a p0,min,p29,max,p100,sum,count -r in_,out_ -o bar ./reg_test/input/merge-fields-abxy.dkvp
a_in_x    1
a_out_x   2
b_in_y    4
b_out_x   8
bar_p0    1.000000
bar_min   1
bar_p29   1.870000
bar_max   8
bar_p100  8
bar_sum   15
bar_count 4

z         1
bar_p0    
bar_min   
bar_p29   
bar_max   
bar_p100  
bar_sum   0
bar_count 0

a_on_x    1
a_out_x   2
b_in_y    4
b_out_x   8
bar_p0    2.000000
bar_min   2
bar_p29   3.160000
bar_max   8
bar_p100  8
bar_sum   14
bar_count 3

a_in_x    1
a_oot_x   2
b_in_y    4
b_out_x   8
bar_p0    1.000000
bar_min   1
bar_p29   2.740000
bar_max   8
bar_p100  8
bar_sum   13
bar_count 3

a_in_x    1
a_out_x   2
b_on_y    4
b_out_x   8
bar_p0    1.000000
bar_min   1
bar_p29   1.580000
bar_max   8
bar_p100  8
bar_sum   11
bar_count 3

a_in_x    1
a_out_x   2
b_in_y    4
b_oot_x   8
bar_p0    1.000000
bar_min   1
bar_p29   1.580000
bar_max   4
bar_p100  4
bar_sum   7
bar_count 3

z         2
bar_p0    
bar_min   
bar_p29   
bar_max   
bar_p100  
bar_sum   0
bar_count 0

a_on_x    1
a_oot_x   2
b_in_y    4
b_out_x   8
bar_p0    4.000000
bar_min   4
bar_p29   5.160000
bar_max   8
bar_p100  8
bar_sum   12
bar_count 2

a_on_x    1
a_out_x   2
b_on_y    4
b_out_x   8
bar_p0    2.000000
bar_min   2
bar_p29   3.740000
bar_max   8
bar_p100  8
bar_sum   10
bar_count 2

a_on_x    1
a_out_x   2
b_in_y    4
b_oot_x   8
bar_p0    2.000000
bar_min   2
bar_p29   2.580000
bar_max   4
bar_p100  4
bar_sum   6
bar_count 2

a_in_x    1
a_oot_x   2
b_on_y    4
b_out_x   8
bar_p0    1.000000
bar_min   1
bar_p29   3.030000
bar_max   8
bar_p100  8
bar_sum   9
bar_count 2

a_in_x    1
a_oot_x   2
b_in_y    4
b_oot_x   8
bar_p0    1.000000
bar_min   1
bar_p29   1.870000
bar_max   4
bar_p100  4
bar_sum   5
bar_count 2

a_in_x    1
a_out_x   2
b_on_y    4
b_oot_x   8
bar_p0    1.000000
bar_min   1
bar_p29   1.290000
bar_max   2
bar_p100  2
bar_sum   3
bar_count 2

z         3
bar_p0    
bar_min   
bar_p29   
bar_max   
bar_p100  
bar_sum   0
bar_count 0

a_in_x    1
a_oot_x   2
b_on_y    4
b_oot_x   8
bar_p0    1
bar_min   1
bar_p29   1
bar_max   1
bar_p100  1
bar_sum   1
bar_count 1

a_on_x    1
a_out_x   2
b_on_y    4
b_oot_x   8
bar_p0    2
bar_min   2
bar_p29   2
bar_max   2
bar_p100  2
bar_sum   2
bar_count 1

a_on_x    1
a_oot_x   2
b_in_y    4
b_oot_x   8
bar_p0    4
bar_min   4
bar_p29   4
bar_max   4
bar_p100  4
bar_sum   4
bar_count 1

a_on_x    1
a_oot_x   2
b_on_y    4
b_out_x   8
bar_p0    8
bar_min   8
bar_p29   8
bar_max   8
bar_p100  8
bar_sum   8
bar_count 1

z         4
bar_p0    
bar_min   
bar_p29   
bar_max   
bar_p100  
bar_sum   0
bar_count 0

a_on_x    1
a_oot_x   2
b_on_y    4
b_oot_x   8
bar_p0    
bar_min   
bar_p29   
bar_max   
bar_p100  
bar_sum   0
bar_count 0

mlr --oxtab merge-fields -i -k -a p0,min,p29,max,p100,sum,count -c in_,out_ ./reg_test/input/merge-fields-abxy.dkvp
a_in_x    1
a_out_x   2
b_in_y    4
b_out_x   8
a_x_p0    1.000000
a_x_min   1
a_x_p29   1.290000
a_x_max   2
a_x_p100  2
a_x_sum   3
a_x_count 2
b_y_p0    4
b_y_min   4
b_y_p29   4
b_y_max   4
b_y_p100  4
b_y_sum   4
b_y_count 1
b_x_p0    8
b_x_min   8
b_x_p29   8
b_x_max   8
b_x_p100  8
b_x_sum   8
b_x_count 1

z 1

a_on_x    1
a_out_x   2
b_in_y    4
b_out_x   8
a_x_p0    2
a_x_min   2
a_x_p29   2
a_x_max   2
a_x_p100  2
a_x_sum   2
a_x_count 1
b_y_p0    4
b_y_min   4
b_y_p29   4
b_y_max   4
b_y_p100  4
b_y_sum   4
b_y_count 1
b_x_p0    8
b_x_min   8
b_x_p29   8
b_x_max   8
b_x_p100  8
b_x_sum   8
b_x_count 1

a_in_x    1
a_oot_x   2
b_in_y    4
b_out_x   8
a_x_p0    1
a_x_min   1
a_x_p29   1
a_x_max   1
a_x_p100  1
a_x_sum   1
a_x_count 1
b_y_p0    4
b_y_min   4
b_y_p29   4
b_y_max   4
b_y_p100  4
b_y_sum   4
b_y_count 1
b_x_p0    8
b_x_min   8
b_x_p29   8
b_x_max   8
b_x_p100  8
b_x_sum   8
b_x_count 1

a_in_x    1
a_out_x   2
b_on_y    4
b_out_x   8
a_x_p0    1.000000
a_x_min   1
a_x_p29   1.290000
a_x_max   2
a_x_p100  2
a_x_sum   3
a_x_count 2
b_x_p0    8
b_x_min   8
b_x_p29   8
b_x_max   8
b_x_p100  8
b_x_sum   8
b_x_count 1

a_in_x    1
a_out_x   2
b_in_y    4
b_oot_x   8
a_x_p0    1.000000
a_x_min   1
a_x_p29   1.290000
a_x_max   2
a_x_p100  2
a_x_sum   3
a_x_count 2
b_y_p0    4
b_y_min   4
b_y_p29   4
b_y_max   4
b_y_p100  4
b_y_sum   4
b_y_count 1

z 2

a_on_x    1
a_oot_x   2
b_in_y    4
b_out_x   8
b_y_p0    4
b_y_min   4
b_y_p29   4
b_y_max   4
b_y_p100  4
b_y_sum   4
b_y_count 1
b_x_p0    8
b_x_min   8
b_x_p29   8
b_x_max   8
b_x_p100  8
b_x_sum   8
b_x_count 1

a_on_x    1
a_out_x   2
b_on_y    4
b_out_x   8
a_x_p0    2
a_x_min   2
a_x_p29   2
a_x_max   2
a_x_p100  2
a_x_sum   2
a_x_count 1
b_x_p0    8
b_x_min   8
b_x_p29   8
b_x_max   8
b_x_p100  8
b_x_sum   8
b_x_count 1

a_on_x    1
a_out_x   2
b_in_y    4
b_oot_x   8
a_x_p0    2
a_x_min   2
a_x_p29   2
a_x_max   2
a_x_p100  2
a_x_sum   2
a_x_count 1
b_y_p0    4
b_y_min   4
b_y_p29   4
b_y_max   4
b_y_p100  4
b_y_sum   4
b_y_count 1

a_in_x    1
a_oot_x   2
b_on_y    4
b_out_x   8
a_x_p0    1
a_x_min   1
a_x_p29   1
a_x_max   1
a_x_p100  1
a_x_sum   1
a_x_count 1
b_x_p0    8
b_x_min   8
b_x_p29   8
b_x_max   8
b_x_p100  8
b_x_sum   8
b_x_count 1

a_in_x    1
a_oot_x   2
b_in_y    4
b_oot_x   8
a_x_p0    1
a_x_min   1
a_x_p29   1
a_x_max   1
a_x_p100  1
a_x_sum   1
a_x_count 1
b_y_p0    4
b_y_min   4
b_y_p29   4
b_y_max   4
b_y_p100  4
b_y_sum   4
b_y_count 1

a_in_x    1
a_out_x   2
b_on_y    4
b_oot_x   8
a_x_p0    1.000000
a_x_min   1
a_x_p29   1.290000
a_x_max   2
a_x_p100  2
a_x_sum   3
a_x_count 2

z 3

a_in_x    1
a_oot_x   2
b_on_y    4
b_oot_x   8
a_x_p0    1
a_x_min   1
a_x_p29   1
a_x_max   1
a_x_p100  1
a_x_sum   1
a_x_count 1

a_on_x    1
a_out_x   2
b_on_y    4
b_oot_x   8
a_x_p0    2
a_x_min   2
a_x_p29   2
a_x_max   2
a_x_p100  2
a_x_sum   2
a_x_count 1

a_on_x    1
a_oot_x   2
b_in_y    4
b_oot_x   8
b_y_p0    4
b_y_min   4
b_y_p29   4
b_y_max   4
b_y_p100  4
b_y_sum   4
b_y_count 1

a_on_x    1
a_oot_x   2
b_on_y    4
b_out_x   8
b_x_p0    8
b_x_min   8
b_x_p29   8
b_x_max   8
b_x_p100  8
b_x_sum   8
b_x_count 1

z 4

a_on_x  1
a_oot_x 2
b_on_y  4
b_oot_x 8


================================================================
STATS1 WITH REGEXED FIELD NAMES

mlr --from ./reg_test/input/abixy --opprint stats1 -a sum -g a,b -f i,x,y
a   b   i_sum x_sum    y_sum
pan pan 1     0.346790 0.726803
eks pan 2     0.758680 0.522151
wye wye 3     0.204603 0.338319
eks wye 4     0.381399 0.134189
wye pan 5     0.573289 0.863624
zee pan 6     0.527126 0.493221
eks zee 7     0.611784 0.187885
zee wye 8     0.598554 0.976181
hat wye 9     0.031442 0.749551
pan wye 10    0.502626 0.952618

mlr --from ./reg_test/input/abixy --opprint stats1 -a sum --gr ^[a-h]$ --fr ^[i-z]$
a   b   i_sum x_sum    y_sum
pan pan 1     0.346790 0.726803
eks pan 2     0.758680 0.522151
wye wye 3     0.204603 0.338319
eks wye 4     0.381399 0.134189
wye pan 5     0.573289 0.863624
zee pan 6     0.527126 0.493221
eks zee 7     0.611784 0.187885
zee wye 8     0.598554 0.976181
hat wye 9     0.031442 0.749551
pan wye 10    0.502626 0.952618

mlr --from ./reg_test/input/abixy --opprint stats1 -a sum -g a,b --fr ^[i-z]$
a   b   i_sum x_sum    y_sum
pan pan 1     0.346790 0.726803
eks pan 2     0.758680 0.522151
wye wye 3     0.204603 0.338319
eks wye 4     0.381399 0.134189
wye pan 5     0.573289 0.863624
zee pan 6     0.527126 0.493221
eks zee 7     0.611784 0.187885
zee wye 8     0.598554 0.976181
hat wye 9     0.031442 0.749551
pan wye 10    0.502626 0.952618

mlr --from ./reg_test/input/abixy --opprint stats1 -a sum --gr ^[a-h]$ -f i,x,y
a   b   i_sum x_sum    y_sum
pan pan 1     0.346790 0.726803
eks pan 2     0.758680 0.522151
wye wye 3     0.204603 0.338319
eks wye 4     0.381399 0.134189
wye pan 5     0.573289 0.863624
zee pan 6     0.527126 0.493221
eks zee 7     0.611784 0.187885
zee wye 8     0.598554 0.976181
hat wye 9     0.031442 0.749551
pan wye 10    0.502626 0.952618

mlr --from ./reg_test/input/abixy --opprint stats1 -a sum --gx ^[i-z]$ --fx ^[a-h]$
a   b   i_sum x_sum    y_sum
pan pan 1     0.346790 0.726803
eks pan 2     0.758680 0.522151
wye wye 3     0.204603 0.338319
eks wye 4     0.381399 0.134189
wye pan 5     0.573289 0.863624
zee pan 6     0.527126 0.493221
eks zee 7     0.611784 0.187885
zee wye 8     0.598554 0.976181
hat wye 9     0.031442 0.749551
pan wye 10    0.502626 0.952618

mlr --from ./reg_test/input/abixy --opprint stats1 -a sum -g a,b --fx ^[a-h]$
a   b   i_sum x_sum    y_sum
pan pan 1     0.346790 0.726803
eks pan 2     0.758680 0.522151
wye wye 3     0.204603 0.338319
eks wye 4     0.381399 0.134189
wye pan 5     0.573289 0.863624
zee pan 6     0.527126 0.493221
eks zee 7     0.611784 0.187885
zee wye 8     0.598554 0.976181
hat wye 9     0.031442 0.749551
pan wye 10    0.502626 0.952618

mlr --from ./reg_test/input/abixy --opprint stats1 -a sum --gx ^[i-z]$ -f i,x,y
a   b   i_sum x_sum    y_sum
pan pan 1     0.346790 0.726803
eks pan 2     0.758680 0.522151
wye wye 3     0.204603 0.338319
eks wye 4     0.381399 0.134189
wye pan 5     0.573289 0.863624
zee pan 6     0.527126 0.493221
eks zee 7     0.611784 0.187885
zee wye 8     0.598554 0.976181
hat wye 9     0.031442 0.749551
pan wye 10    0.502626 0.952618


================================================================
MOST/LEAST FREQUENT

mlr --opprint --from ./reg_test/input/freq.dkvp most-frequent -f a -n 3
a     count
apple 6
bat   5
cat   4

mlr --opprint --from ./reg_test/input/freq.dkvp most-frequent -f a,b -n 3
a     b     count
apple apple 6
bat   cat   5
cat   bat   3

mlr --opprint --from ./reg_test/input/freq.dkvp most-frequent -f a,b -n 3 -b
a     b
apple apple
bat   cat
cat   bat

mlr --opprint --from ./reg_test/input/freq.dkvp most-frequent -f nonesuch -n 3

mlr --opprint --from ./reg_test/input/freq.dkvp least-frequent -f a -n 3
a   count
dog 2
cat 4
bat 5

mlr --opprint --from ./reg_test/input/freq.dkvp least-frequent -f a,b -n 3
a   b   count
cat cat 1
dog dog 2
cat bat 3

mlr --opprint --from ./reg_test/input/freq.dkvp least-frequent -f a,b -n 3 -b
a   b
cat cat
dog dog
cat bat

mlr --opprint --from ./reg_test/input/freq.dkvp least-frequent -f nonesuch -n 3

mlr --opprint --from ./reg_test/input/freq.dkvp most-frequent -f a -n 3 -o foo
a     foo
apple 6
bat   5
cat   4

mlr --opprint --from ./reg_test/input/freq.dkvp most-frequent -f a,b -n 3 -o foo
a     b     foo
apple apple 6
bat   cat   5
cat   bat   3

mlr --opprint --from ./reg_test/input/freq.dkvp most-frequent -f a,b -n 3 -b -o foo
a     b
apple apple
bat   cat
cat   bat

mlr --opprint --from ./reg_test/input/freq.dkvp most-frequent -f nonesuch -n 3 -o foo

mlr --opprint --from ./reg_test/input/freq.dkvp least-frequent -f a -n 3 -o foo
a   foo
dog 2
cat 4
bat 5

mlr --opprint --from ./reg_test/input/freq.dkvp least-frequent -f a,b -n 3 -o foo
a   b   foo
cat cat 1
dog dog 2
cat bat 3

mlr --opprint --from ./reg_test/input/freq.dkvp least-frequent -f a,b -n 3 -b -o foo
a   b
cat cat
dog dog
cat bat

mlr --opprint --from ./reg_test/input/freq.dkvp least-frequent -f nonesuch -n 3 -o foo


================================================================
COUNT-SIMILAR

mlr --opprint --from ./reg_test/input/abixy count-similar -g a
a   b   i  x                   y                   count
pan pan 1  0.3467901443380824  0.7268028627434533  2
pan wye 10 0.5026260055412137  0.9526183602969864  2
eks pan 2  0.7586799647899636  0.5221511083334797  3
eks wye 4  0.38139939387114097 0.13418874328430463 3
eks zee 7  0.6117840605678454  0.1878849191181694  3
wye wye 3  0.20460330576630303 0.33831852551664776 2
wye pan 5  0.5732889198020006  0.8636244699032729  2
zee pan 6  0.5271261600918548  0.49322128674835697 2
zee wye 8  0.5985540091064224  0.976181385699006   2
hat wye 9  0.03144187646093577 0.7495507603507059  1

mlr --opprint --from ./reg_test/input/abixy count-similar -g b,i
a   b   i  x                   y                   count
pan pan 1  0.3467901443380824  0.7268028627434533  1
eks pan 2  0.7586799647899636  0.5221511083334797  1
wye wye 3  0.20460330576630303 0.33831852551664776 1
eks wye 4  0.38139939387114097 0.13418874328430463 1
wye pan 5  0.5732889198020006  0.8636244699032729  1
zee pan 6  0.5271261600918548  0.49322128674835697 1
eks zee 7  0.6117840605678454  0.1878849191181694  1
zee wye 8  0.5985540091064224  0.976181385699006   1
hat wye 9  0.03144187646093577 0.7495507603507059  1
pan wye 10 0.5026260055412137  0.9526183602969864  1

mlr --opprint --from ./reg_test/input/abixy count-similar -g a,b,i -o other_name_for_counter
a   b   i  x                   y                   other_name_for_counter
pan pan 1  0.3467901443380824  0.7268028627434533  1
eks pan 2  0.7586799647899636  0.5221511083334797  1
wye wye 3  0.20460330576630303 0.33831852551664776 1
eks wye 4  0.38139939387114097 0.13418874328430463 1
wye pan 5  0.5732889198020006  0.8636244699032729  1
zee pan 6  0.5271261600918548  0.49322128674835697 1
eks zee 7  0.6117840605678454  0.1878849191181694  1
zee wye 8  0.5985540091064224  0.976181385699006   1
hat wye 9  0.03144187646093577 0.7495507603507059  1
pan wye 10 0.5026260055412137  0.9526183602969864  1


================================================================
NON-INTERPOLATED AND INTERPOLATED PERCENTILES

mlr --from ./reg_test/input/x0to10.dat --oxtab head -n 1 then stats1 -f x -a p00,p01,p02,p03,p04,p05,p06,p07,p08,p09,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81,p82,p83,p84,p85,p86,p87,p88,p89,p90,p91,p92,p93,p94,p95,p96,p97,p98,p99,p100
x_p00  0
x_p01  0
x_p02  0
x_p03  0
x_p04  0
x_p05  0
x_p06  0
x_p07  0
x_p08  0
x_p09  0
x_p10  0
x_p11  0
x_p12  0
x_p13  0
x_p14  0
x_p15  0
x_p16  0
x_p17  0
x_p18  0
x_p19  0
x_p20  0
x_p21  0
x_p22  0
x_p23  0
x_p24  0
x_p25  0
x_p26  0
x_p27  0
x_p28  0
x_p29  0
x_p30  0
x_p31  0
x_p32  0
x_p33  0
x_p34  0
x_p35  0
x_p36  0
x_p37  0
x_p38  0
x_p39  0
x_p40  0
x_p41  0
x_p42  0
x_p43  0
x_p44  0
x_p45  0
x_p46  0
x_p47  0
x_p48  0
x_p49  0
x_p50  0
x_p51  0
x_p52  0
x_p53  0
x_p54  0
x_p55  0
x_p56  0
x_p57  0
x_p58  0
x_p59  0
x_p60  0
x_p61  0
x_p62  0
x_p63  0
x_p64  0
x_p65  0
x_p66  0
x_p67  0
x_p68  0
x_p69  0
x_p70  0
x_p71  0
x_p72  0
x_p73  0
x_p74  0
x_p75  0
x_p76  0
x_p77  0
x_p78  0
x_p79  0
x_p80  0
x_p81  0
x_p82  0
x_p83  0
x_p84  0
x_p85  0
x_p86  0
x_p87  0
x_p88  0
x_p89  0
x_p90  0
x_p91  0
x_p92  0
x_p93  0
x_p94  0
x_p95  0
x_p96  0
x_p97  0
x_p98  0
x_p99  0
x_p100 0

mlr --from ./reg_test/input/x0to10.dat --oxtab head -n 2 then stats1 -f x -a p00,p01,p02,p03,p04,p05,p06,p07,p08,p09,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81,p82,p83,p84,p85,p86,p87,p88,p89,p90,p91,p92,p93,p94,p95,p96,p97,p98,p99,p100
x_p00  0
x_p01  0
x_p02  0
x_p03  0
x_p04  0
x_p05  0
x_p06  0
x_p07  0
x_p08  0
x_p09  0
x_p10  0
x_p11  0
x_p12  0
x_p13  0
x_p14  0
x_p15  0
x_p16  0
x_p17  0
x_p18  0
x_p19  0
x_p20  0
x_p21  0
x_p22  0
x_p23  0
x_p24  0
x_p25  0
x_p26  0
x_p27  0
x_p28  0
x_p29  0
x_p30  0
x_p31  0
x_p32  0
x_p33  0
x_p34  0
x_p35  0
x_p36  0
x_p37  0
x_p38  0
x_p39  0
x_p40  0
x_p41  0
x_p42  0
x_p43  0
x_p44  0
x_p45  0
x_p46  0
x_p47  0
x_p48  0
x_p49  0
x_p50  1
x_p51  1
x_p52  1
x_p53  1
x_p54  1
x_p55  1
x_p56  1
x_p57  1
x_p58  1
x_p59  1
x_p60  1
x_p61  1
x_p62  1
x_p63  1
x_p64  1
x_p65  1
x_p66  1
x_p67  1
x_p68  1
x_p69  1
x_p70  1
x_p71  1
x_p72  1
x_p73  1
x_p74  1
x_p75  1
x_p76  1
x_p77  1
x_p78  1
x_p79  1
x_p80  1
x_p81  1
x_p82  1
x_p83  1
x_p84  1
x_p85  1
x_p86  1
x_p87  1
x_p88  1
x_p89  1
x_p90  1
x_p91  1
x_p92  1
x_p93  1
x_p94  1
x_p95  1
x_p96  1
x_p97  1
x_p98  1
x_p99  1
x_p100 1

mlr --from ./reg_test/input/x0to10.dat --oxtab head -n 3 then stats1 -f x -a p00,p01,p02,p03,p04,p05,p06,p07,p08,p09,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81,p82,p83,p84,p85,p86,p87,p88,p89,p90,p91,p92,p93,p94,p95,p96,p97,p98,p99,p100
x_p00  0
x_p01  0
x_p02  0
x_p03  0
x_p04  0
x_p05  0
x_p06  0
x_p07  0
x_p08  0
x_p09  0
x_p10  0
x_p11  0
x_p12  0
x_p13  0
x_p14  0
x_p15  0
x_p16  0
x_p17  0
x_p18  0
x_p19  0
x_p20  0
x_p21  0
x_p22  0
x_p23  0
x_p24  0
x_p25  0
x_p26  0
x_p27  0
x_p28  0
x_p29  0
x_p30  0
x_p31  0
x_p32  0
x_p33  0
x_p34  1
x_p35  1
x_p36  1
x_p37  1
x_p38  1
x_p39  1
x_p40  1
x_p41  1
x_p42  1
x_p43  1
x_p44  1
x_p45  1
x_p46  1
x_p47  1
x_p48  1
x_p49  1
x_p50  1
x_p51  1
x_p52  1
x_p53  1
x_p54  1
x_p55  1
x_p56  1
x_p57  1
x_p58  1
x_p59  1
x_p60  1
x_p61  1
x_p62  1
x_p63  1
x_p64  1
x_p65  1
x_p66  1
x_p67  2
x_p68  2
x_p69  2
x_p70  2
x_p71  2
x_p72  2
x_p73  2
x_p74  2
x_p75  2
x_p76  2
x_p77  2
x_p78  2
x_p79  2
x_p80  2
x_p81  2
x_p82  2
x_p83  2
x_p84  2
x_p85  2
x_p86  2
x_p87  2
x_p88  2
x_p89  2
x_p90  2
x_p91  2
x_p92  2
x_p93  2
x_p94  2
x_p95  2
x_p96  2
x_p97  2
x_p98  2
x_p99  2
x_p100 2

mlr --from ./reg_test/input/x0to10.dat --oxtab head -n 4 then stats1 -f x -a p00,p01,p02,p03,p04,p05,p06,p07,p08,p09,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81,p82,p83,p84,p85,p86,p87,p88,p89,p90,p91,p92,p93,p94,p95,p96,p97,p98,p99,p100
x_p00  0
x_p01  0
x_p02  0
x_p03  0
x_p04  0
x_p05  0
x_p06  0
x_p07  0
x_p08  0
x_p09  0
x_p10  0
x_p11  0
x_p12  0
x_p13  0
x_p14  0
x_p15  0
x_p16  0
x_p17  0
x_p18  0
x_p19  0
x_p20  0
x_p21  0
x_p22  0
x_p23  0
x_p24  0
x_p25  1
x_p26  1
x_p27  1
x_p28  1
x_p29  1
x_p30  1
x_p31  1
x_p32  1
x_p33  1
x_p34  1
x_p35  1
x_p36  1
x_p37  1
x_p38  1
x_p39  1
x_p40  1
x_p41  1
x_p42  1
x_p43  1
x_p44  1
x_p45  1
x_p46  1
x_p47  1
x_p48  1
x_p49  1
x_p50  2
x_p51  2
x_p52  2
x_p53  2
x_p54  2
x_p55  2
x_p56  2
x_p57  2
x_p58  2
x_p59  2
x_p60  2
x_p61  2
x_p62  2
x_p63  2
x_p64  2
x_p65  2
x_p66  2
x_p67  2
x_p68  2
x_p69  2
x_p70  2
x_p71  2
x_p72  2
x_p73  2
x_p74  2
x_p75  3
x_p76  3
x_p77  3
x_p78  3
x_p79  3
x_p80  3
x_p81  3
x_p82  3
x_p83  3
x_p84  3
x_p85  3
x_p86  3
x_p87  3
x_p88  3
x_p89  3
x_p90  3
x_p91  3
x_p92  3
x_p93  3
x_p94  3
x_p95  3
x_p96  3
x_p97  3
x_p98  3
x_p99  3
x_p100 3

mlr --from ./reg_test/input/x0to10.dat --oxtab head -n 5 then stats1 -f x -a p00,p01,p02,p03,p04,p05,p06,p07,p08,p09,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81,p82,p83,p84,p85,p86,p87,p88,p89,p90,p91,p92,p93,p94,p95,p96,p97,p98,p99,p100
x_p00  0
x_p01  0
x_p02  0
x_p03  0
x_p04  0
x_p05  0
x_p06  0
x_p07  0
x_p08  0
x_p09  0
x_p10  0
x_p11  0
x_p12  0
x_p13  0
x_p14  0
x_p15  0
x_p16  0
x_p17  0
x_p18  0
x_p19  0
x_p20  1
x_p21  1
x_p22  1
x_p23  1
x_p24  1
x_p25  1
x_p26  1
x_p27  1
x_p28  1
x_p29  1
x_p30  1
x_p31  1
x_p32  1
x_p33  1
x_p34  1
x_p35  1
x_p36  1
x_p37  1
x_p38  1
x_p39  1
x_p40  2
x_p41  2
x_p42  2
x_p43  2
x_p44  2
x_p45  2
x_p46  2
x_p47  2
x_p48  2
x_p49  2
x_p50  2
x_p51  2
x_p52  2
x_p53  2
x_p54  2
x_p55  2
x_p56  2
x_p57  2
x_p58  2
x_p59  2
x_p60  3
x_p61  3
x_p62  3
x_p63  3
x_p64  3
x_p65  3
x_p66  3
x_p67  3
x_p68  3
x_p69  3
x_p70  3
x_p71  3
x_p72  3
x_p73  3
x_p74  3
x_p75  3
x_p76  3
x_p77  3
x_p78  3
x_p79  3
x_p80  4
x_p81  4
x_p82  4
x_p83  4
x_p84  4
x_p85  4
x_p86  4
x_p87  4
x_p88  4
x_p89  4
x_p90  4
x_p91  4
x_p92  4
x_p93  4
x_p94  4
x_p95  4
x_p96  4
x_p97  4
x_p98  4
x_p99  4
x_p100 4

mlr --from ./reg_test/input/x0to10.dat --oxtab head -n 6 then stats1 -f x -a p00,p01,p02,p03,p04,p05,p06,p07,p08,p09,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81,p82,p83,p84,p85,p86,p87,p88,p89,p90,p91,p92,p93,p94,p95,p96,p97,p98,p99,p100
x_p00  0
x_p01  0
x_p02  0
x_p03  0
x_p04  0
x_p05  0
x_p06  0
x_p07  0
x_p08  0
x_p09  0
x_p10  0
x_p11  0
x_p12  0
x_p13  0
x_p14  0
x_p15  0
x_p16  0
x_p17  1
x_p18  1
x_p19  1
x_p20  1
x_p21  1
x_p22  1
x_p23  1
x_p24  1
x_p25  1
x_p26  1
x_p27  1
x_p28  1
x_p29  1
x_p30  1
x_p31  1
x_p32  1
x_p33  1
x_p34  2
x_p35  2
x_p36  2
x_p37  2
x_p38  2
x_p39  2
x_p40  2
x_p41  2
x_p42  2
x_p43  2
x_p44  2
x_p45  2
x_p46  2
x_p47  2
x_p48  2
x_p49  2
x_p50  3
x_p51  3
x_p52  3
x_p53  3
x_p54  3
x_p55  3
x_p56  3
x_p57  3
x_p58  3
x_p59  3
x_p60  3
x_p61  3
x_p62  3
x_p63  3
x_p64  3
x_p65  3
x_p66  3
x_p67  4
x_p68  4
x_p69  4
x_p70  4
x_p71  4
x_p72  4
x_p73  4
x_p74  4
x_p75  4
x_p76  4
x_p77  4
x_p78  4
x_p79  4
x_p80  4
x_p81  4
x_p82  4
x_p83  4
x_p84  5
x_p85  5
x_p86  5
x_p87  5
x_p88  5
x_p89  5
x_p90  5
x_p91  5
x_p92  5
x_p93  5
x_p94  5
x_p95  5
x_p96  5
x_p97  5
x_p98  5
x_p99  5
x_p100 5

mlr --from ./reg_test/input/x0to10.dat --oxtab head -n 7 then stats1 -f x -a p00,p01,p02,p03,p04,p05,p06,p07,p08,p09,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81,p82,p83,p84,p85,p86,p87,p88,p89,p90,p91,p92,p93,p94,p95,p96,p97,p98,p99,p100
x_p00  0
x_p01  0
x_p02  0
x_p03  0
x_p04  0
x_p05  0
x_p06  0
x_p07  0
x_p08  0
x_p09  0
x_p10  0
x_p11  0
x_p12  0
x_p13  0
x_p14  0
x_p15  1
x_p16  1
x_p17  1
x_p18  1
x_p19  1
x_p20  1
x_p21  1
x_p22  1
x_p23  1
x_p24  1
x_p25  1
x_p26  1
x_p27  1
x_p28  1
x_p29  2
x_p30  2
x_p31  2
x_p32  2
x_p33  2
x_p34  2
x_p35  2
x_p36  2
x_p37  2
x_p38  2
x_p39  2
x_p40  2
x_p41  2
x_p42  2
x_p43  3
x_p44  3
x_p45  3
x_p46  3
x_p47  3
x_p48  3
x_p49  3
x_p50  3
x_p51  3
x_p52  3
x_p53  3
x_p54  3
x_p55  3
x_p56  3
x_p57  3
x_p58  4
x_p59  4
x_p60  4
x_p61  4
x_p62  4
x_p63  4
x_p64  4
x_p65  4
x_p66  4
x_p67  4
x_p68  4
x_p69  4
x_p70  4
x_p71  4
x_p72  5
x_p73  5
x_p74  5
x_p75  5
x_p76  5
x_p77  5
x_p78  5
x_p79  5
x_p80  5
x_p81  5
x_p82  5
x_p83  5
x_p84  5
x_p85  5
x_p86  6
x_p87  6
x_p88  6
x_p89  6
x_p90  6
x_p91  6
x_p92  6
x_p93  6
x_p94  6
x_p95  6
x_p96  6
x_p97  6
x_p98  6
x_p99  6
x_p100 6

mlr --from ./reg_test/input/x0to10.dat --oxtab head -n 8 then stats1 -f x -a p00,p01,p02,p03,p04,p05,p06,p07,p08,p09,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81,p82,p83,p84,p85,p86,p87,p88,p89,p90,p91,p92,p93,p94,p95,p96,p97,p98,p99,p100
x_p00  0
x_p01  0
x_p02  0
x_p03  0
x_p04  0
x_p05  0
x_p06  0
x_p07  0
x_p08  0
x_p09  0
x_p10  0
x_p11  0
x_p12  0
x_p13  1
x_p14  1
x_p15  1
x_p16  1
x_p17  1
x_p18  1
x_p19  1
x_p20  1
x_p21  1
x_p22  1
x_p23  1
x_p24  1
x_p25  2
x_p26  2
x_p27  2
x_p28  2
x_p29  2
x_p30  2
x_p31  2
x_p32  2
x_p33  2
x_p34  2
x_p35  2
x_p36  2
x_p37  2
x_p38  3
x_p39  3
x_p40  3
x_p41  3
x_p42  3
x_p43  3
x_p44  3
x_p45  3
x_p46  3
x_p47  3
x_p48  3
x_p49  3
x_p50  4
x_p51  4
x_p52  4
x_p53  4
x_p54  4
x_p55  4
x_p56  4
x_p57  4
x_p58  4
x_p59  4
x_p60  4
x_p61  4
x_p62  4
x_p63  5
x_p64  5
x_p65  5
x_p66  5
x_p67  5
x_p68  5
x_p69  5
x_p70  5
x_p71  5
x_p72  5
x_p73  5
x_p74  5
x_p75  6
x_p76  6
x_p77  6
x_p78  6
x_p79  6
x_p80  6
x_p81  6
x_p82  6
x_p83  6
x_p84  6
x_p85  6
x_p86  6
x_p87  6
x_p88  7
x_p89  7
x_p90  7
x_p91  7
x_p92  7
x_p93  7
x_p94  7
x_p95  7
x_p96  7
x_p97  7
x_p98  7
x_p99  7
x_p100 7

mlr --from ./reg_test/input/x0to10.dat --oxtab head -n 9 then stats1 -f x -a p00,p01,p02,p03,p04,p05,p06,p07,p08,p09,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81,p82,p83,p84,p85,p86,p87,p88,p89,p90,p91,p92,p93,p94,p95,p96,p97,p98,p99,p100
x_p00  0
x_p01  0
x_p02  0
x_p03  0
x_p04  0
x_p05  0
x_p06  0
x_p07  0
x_p08  0
x_p09  0
x_p10  0
x_p11  0
x_p12  1
x_p13  1
x_p14  1
x_p15  1
x_p16  1
x_p17  1
x_p18  1
x_p19  1
x_p20  1
x_p21  1
x_p22  1
x_p23  2
x_p24  2
x_p25  2
x_p26  2
x_p27  2
x_p28  2
x_p29  2
x_p30  2
x_p31  2
x_p32  2
x_p33  2
x_p34  3
x_p35  3
x_p36  3
x_p37  3
x_p38  3
x_p39  3
x_p40  3
x_p41  3
x_p42  3
x_p43  3
x_p44  3
x_p45  4
x_p46  4
x_p47  4
x_p48  4
x_p49  4
x_p50  4
x_p51  4
x_p52  4
x_p53  4
x_p54  4
x_p55  4
x_p56  5
x_p57  5
x_p58  5
x_p59  5
x_p60  5
x_p61  5
x_p62  5
x_p63  5
x_p64  5
x_p65  5
x_p66  5
x_p67  6
x_p68  6
x_p69  6
x_p70  6
x_p71  6
x_p72  6
x_p73  6
x_p74  6
x_p75  6
x_p76  6
x_p77  6
x_p78  7
x_p79  7
x_p80  7
x_p81  7
x_p82  7
x_p83  7
x_p84  7
x_p85  7
x_p86  7
x_p87  7
x_p88  7
x_p89  8
x_p90  8
x_p91  8
x_p92  8
x_p93  8
x_p94  8
x_p95  8
x_p96  8
x_p97  8
x_p98  8
x_p99  8
x_p100 8

mlr --from ./reg_test/input/x0to10.dat --oxtab head -n 10 then stats1 -f x -a p00,p01,p02,p03,p04,p05,p06,p07,p08,p09,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81,p82,p83,p84,p85,p86,p87,p88,p89,p90,p91,p92,p93,p94,p95,p96,p97,p98,p99,p100
x_p00  0
x_p01  0
x_p02  0
x_p03  0
x_p04  0
x_p05  0
x_p06  0
x_p07  0
x_p08  0
x_p09  0
x_p10  1
x_p11  1
x_p12  1
x_p13  1
x_p14  1
x_p15  1
x_p16  1
x_p17  1
x_p18  1
x_p19  1
x_p20  2
x_p21  2
x_p22  2
x_p23  2
x_p24  2
x_p25  2
x_p26  2
x_p27  2
x_p28  2
x_p29  2
x_p30  3
x_p31  3
x_p32  3
x_p33  3
x_p34  3
x_p35  3
x_p36  3
x_p37  3
x_p38  3
x_p39  3
x_p40  4
x_p41  4
x_p42  4
x_p43  4
x_p44  4
x_p45  4
x_p46  4
x_p47  4
x_p48  4
x_p49  4
x_p50  5
x_p51  5
x_p52  5
x_p53  5
x_p54  5
x_p55  5
x_p56  5
x_p57  5
x_p58  5
x_p59  5
x_p60  6
x_p61  6
x_p62  6
x_p63  6
x_p64  6
x_p65  6
x_p66  6
x_p67  6
x_p68  6
x_p69  6
x_p70  7
x_p71  7
x_p72  7
x_p73  7
x_p74  7
x_p75  7
x_p76  7
x_p77  7
x_p78  7
x_p79  7
x_p80  8
x_p81  8
x_p82  8
x_p83  8
x_p84  8
x_p85  8
x_p86  8
x_p87  8
x_p88  8
x_p89  8
x_p90  9
x_p91  9
x_p92  9
x_p93  9
x_p94  9
x_p95  9
x_p96  9
x_p97  9
x_p98  9
x_p99  9
x_p100 9

mlr --from ./reg_test/input/x0to10.dat --oxtab head -n 11 then stats1 -f x -a p00,p01,p02,p03,p04,p05,p06,p07,p08,p09,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81,p82,p83,p84,p85,p86,p87,p88,p89,p90,p91,p92,p93,p94,p95,p96,p97,p98,p99,p100
x_p00  0
x_p01  0
x_p02  0
x_p03  0
x_p04  0
x_p05  0
x_p06  0
x_p07  0
x_p08  0
x_p09  0
x_p10  1
x_p11  1
x_p12  1
x_p13  1
x_p14  1
x_p15  1
x_p16  1
x_p17  1
x_p18  1
x_p19  2
x_p20  2
x_p21  2
x_p22  2
x_p23  2
x_p24  2
x_p25  2
x_p26  2
x_p27  2
x_p28  3
x_p29  3
x_p30  3
x_p31  3
x_p32  3
x_p33  3
x_p34  3
x_p35  3
x_p36  3
x_p37  4
x_p38  4
x_p39  4
x_p40  4
x_p41  4
x_p42  4
x_p43  4
x_p44  4
x_p45  4
x_p46  5
x_p47  5
x_p48  5
x_p49  5
x_p50  5
x_p51  5
x_p52  5
x_p53  5
x_p54  5
x_p55  6
x_p56  6
x_p57  6
x_p58  6
x_p59  6
x_p60  6
x_p61  6
x_p62  6
x_p63  6
x_p64  7
x_p65  7
x_p66  7
x_p67  7
x_p68  7
x_p69  7
x_p70  7
x_p71  7
x_p72  7
x_p73  8
x_p74  8
x_p75  8
x_p76  8
x_p77  8
x_p78  8
x_p79  8
x_p80  8
x_p81  8
x_p82  9
x_p83  9
x_p84  9
x_p85  9
x_p86  9
x_p87  9
x_p88  9
x_p89  9
x_p90  9
x_p91  10
x_p92  10
x_p93  10
x_p94  10
x_p95  10
x_p96  10
x_p97  10
x_p98  10
x_p99  10
x_p100 10

mlr --from ./reg_test/input/x0to10.dat --oxtab head -n 1 then stats1 -i -f x -a p00,p01,p02,p03,p04,p05,p06,p07,p08,p09,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81,p82,p83,p84,p85,p86,p87,p88,p89,p90,p91,p92,p93,p94,p95,p96,p97,p98,p99,p100
x_p00  0
x_p01  0
x_p02  0
x_p03  0
x_p04  0
x_p05  0
x_p06  0
x_p07  0
x_p08  0
x_p09  0
x_p10  0
x_p11  0
x_p12  0
x_p13  0
x_p14  0
x_p15  0
x_p16  0
x_p17  0
x_p18  0
x_p19  0
x_p20  0
x_p21  0
x_p22  0
x_p23  0
x_p24  0
x_p25  0
x_p26  0
x_p27  0
x_p28  0
x_p29  0
x_p30  0
x_p31  0
x_p32  0
x_p33  0
x_p34  0
x_p35  0
x_p36  0
x_p37  0
x_p38  0
x_p39  0
x_p40  0
x_p41  0
x_p42  0
x_p43  0
x_p44  0
x_p45  0
x_p46  0
x_p47  0
x_p48  0
x_p49  0
x_p50  0
x_p51  0
x_p52  0
x_p53  0
x_p54  0
x_p55  0
x_p56  0
x_p57  0
x_p58  0
x_p59  0
x_p60  0
x_p61  0
x_p62  0
x_p63  0
x_p64  0
x_p65  0
x_p66  0
x_p67  0
x_p68  0
x_p69  0
x_p70  0
x_p71  0
x_p72  0
x_p73  0
x_p74  0
x_p75  0
x_p76  0
x_p77  0
x_p78  0
x_p79  0
x_p80  0
x_p81  0
x_p82  0
x_p83  0
x_p84  0
x_p85  0
x_p86  0
x_p87  0
x_p88  0
x_p89  0
x_p90  0
x_p91  0
x_p92  0
x_p93  0
x_p94  0
x_p95  0
x_p96  0
x_p97  0
x_p98  0
x_p99  0
x_p100 0

mlr --from ./reg_test/input/x0to10.dat --oxtab head -n 2 then stats1 -i -f x -a p00,p01,p02,p03,p04,p05,p06,p07,p08,p09,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81,p82,p83,p84,p85,p86,p87,p88,p89,p90,p91,p92,p93,p94,p95,p96,p97,p98,p99,p100
x_p00  0.000000
x_p01  0.010000
x_p02  0.020000
x_p03  0.030000
x_p04  0.040000
x_p05  0.050000
x_p06  0.060000
x_p07  0.070000
x_p08  0.080000
x_p09  0.090000
x_p10  0.100000
x_p11  0.110000
x_p12  0.120000
x_p13  0.130000
x_p14  0.140000
x_p15  0.150000
x_p16  0.160000
x_p17  0.170000
x_p18  0.180000
x_p19  0.190000
x_p20  0.200000
x_p21  0.210000
x_p22  0.220000
x_p23  0.230000
x_p24  0.240000
x_p25  0.250000
x_p26  0.260000
x_p27  0.270000
x_p28  0.280000
x_p29  0.290000
x_p30  0.300000
x_p31  0.310000
x_p32  0.320000
x_p33  0.330000
x_p34  0.340000
x_p35  0.350000
x_p36  0.360000
x_p37  0.370000
x_p38  0.380000
x_p39  0.390000
x_p40  0.400000
x_p41  0.410000
x_p42  0.420000
x_p43  0.430000
x_p44  0.440000
x_p45  0.450000
x_p46  0.460000
x_p47  0.470000
x_p48  0.480000
x_p49  0.490000
x_p50  0.500000
x_p51  0.510000
x_p52  0.520000
x_p53  0.530000
x_p54  0.540000
x_p55  0.550000
x_p56  0.560000
x_p57  0.570000
x_p58  0.580000
x_p59  0.590000
x_p60  0.600000
x_p61  0.610000
x_p62  0.620000
x_p63  0.630000
x_p64  0.640000
x_p65  0.650000
x_p66  0.660000
x_p67  0.670000
x_p68  0.680000
x_p69  0.690000
x_p70  0.700000
x_p71  0.710000
x_p72  0.720000
x_p73  0.730000
x_p74  0.740000
x_p75  0.750000
x_p76  0.760000
x_p77  0.770000
x_p78  0.780000
x_p79  0.790000
x_p80  0.800000
x_p81  0.810000
x_p82  0.820000
x_p83  0.830000
x_p84  0.840000
x_p85  0.850000
x_p86  0.860000
x_p87  0.870000
x_p88  0.880000
x_p89  0.890000
x_p90  0.900000
x_p91  0.910000
x_p92  0.920000
x_p93  0.930000
x_p94  0.940000
x_p95  0.950000
x_p96  0.960000
x_p97  0.970000
x_p98  0.980000
x_p99  0.990000
x_p100 1

mlr --from ./reg_test/input/x0to10.dat --oxtab head -n 3 then stats1 -i -f x -a p00,p01,p02,p03,p04,p05,p06,p07,p08,p09,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81,p82,p83,p84,p85,p86,p87,p88,p89,p90,p91,p92,p93,p94,p95,p96,p97,p98,p99,p100
x_p00  0.000000
x_p01  0.020000
x_p02  0.040000
x_p03  0.060000
x_p04  0.080000
x_p05  0.100000
x_p06  0.120000
x_p07  0.140000
x_p08  0.160000
x_p09  0.180000
x_p10  0.200000
x_p11  0.220000
x_p12  0.240000
x_p13  0.260000
x_p14  0.280000
x_p15  0.300000
x_p16  0.320000
x_p17  0.340000
x_p18  0.360000
x_p19  0.380000
x_p20  0.400000
x_p21  0.420000
x_p22  0.440000
x_p23  0.460000
x_p24  0.480000
x_p25  0.500000
x_p26  0.520000
x_p27  0.540000
x_p28  0.560000
x_p29  0.580000
x_p30  0.600000
x_p31  0.620000
x_p32  0.640000
x_p33  0.660000
x_p34  0.680000
x_p35  0.700000
x_p36  0.720000
x_p37  0.740000
x_p38  0.760000
x_p39  0.780000
x_p40  0.800000
x_p41  0.820000
x_p42  0.840000
x_p43  0.860000
x_p44  0.880000
x_p45  0.900000
x_p46  0.920000
x_p47  0.940000
x_p48  0.960000
x_p49  0.980000
x_p50  1.000000
x_p51  1.020000
x_p52  1.040000
x_p53  1.060000
x_p54  1.080000
x_p55  1.100000
x_p56  1.120000
x_p57  1.140000
x_p58  1.160000
x_p59  1.180000
x_p60  1.200000
x_p61  1.220000
x_p62  1.240000
x_p63  1.260000
x_p64  1.280000
x_p65  1.300000
x_p66  1.320000
x_p67  1.340000
x_p68  1.360000
x_p69  1.380000
x_p70  1.400000
x_p71  1.420000
x_p72  1.440000
x_p73  1.460000
x_p74  1.480000
x_p75  1.500000
x_p76  1.520000
x_p77  1.540000
x_p78  1.560000
x_p79  1.580000
x_p80  1.600000
x_p81  1.620000
x_p82  1.640000
x_p83  1.660000
x_p84  1.680000
x_p85  1.700000
x_p86  1.720000
x_p87  1.740000
x_p88  1.760000
x_p89  1.780000
x_p90  1.800000
x_p91  1.820000
x_p92  1.840000
x_p93  1.860000
x_p94  1.880000
x_p95  1.900000
x_p96  1.920000
x_p97  1.940000
x_p98  1.960000
x_p99  1.980000
x_p100 2

mlr --from ./reg_test/input/x0to10.dat --oxtab head -n 4 then stats1 -i -f x -a p00,p01,p02,p03,p04,p05,p06,p07,p08,p09,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81,p82,p83,p84,p85,p86,p87,p88,p89,p90,p91,p92,p93,p94,p95,p96,p97,p98,p99,p100
x_p00  0.000000
x_p01  0.030000
x_p02  0.060000
x_p03  0.090000
x_p04  0.120000
x_p05  0.150000
x_p06  0.180000
x_p07  0.210000
x_p08  0.240000
x_p09  0.270000
x_p10  0.300000
x_p11  0.330000
x_p12  0.360000
x_p13  0.390000
x_p14  0.420000
x_p15  0.450000
x_p16  0.480000
x_p17  0.510000
x_p18  0.540000
x_p19  0.570000
x_p20  0.600000
x_p21  0.630000
x_p22  0.660000
x_p23  0.690000
x_p24  0.720000
x_p25  0.750000
x_p26  0.780000
x_p27  0.810000
x_p28  0.840000
x_p29  0.870000
x_p30  0.900000
x_p31  0.930000
x_p32  0.960000
x_p33  0.990000
x_p34  1.020000
x_p35  1.050000
x_p36  1.080000
x_p37  1.110000
x_p38  1.140000
x_p39  1.170000
x_p40  1.200000
x_p41  1.230000
x_p42  1.260000
x_p43  1.290000
x_p44  1.320000
x_p45  1.350000
x_p46  1.380000
x_p47  1.410000
x_p48  1.440000
x_p49  1.470000
x_p50  1.500000
x_p51  1.530000
x_p52  1.560000
x_p53  1.590000
x_p54  1.620000
x_p55  1.650000
x_p56  1.680000
x_p57  1.710000
x_p58  1.740000
x_p59  1.770000
x_p60  1.800000
x_p61  1.830000
x_p62  1.860000
x_p63  1.890000
x_p64  1.920000
x_p65  1.950000
x_p66  1.980000
x_p67  2.010000
x_p68  2.040000
x_p69  2.070000
x_p70  2.100000
x_p71  2.130000
x_p72  2.160000
x_p73  2.190000
x_p74  2.220000
x_p75  2.250000
x_p76  2.280000
x_p77  2.310000
x_p78  2.340000
x_p79  2.370000
x_p80  2.400000
x_p81  2.430000
x_p82  2.460000
x_p83  2.490000
x_p84  2.520000
x_p85  2.550000
x_p86  2.580000
x_p87  2.610000
x_p88  2.640000
x_p89  2.670000
x_p90  2.700000
x_p91  2.730000
x_p92  2.760000
x_p93  2.790000
x_p94  2.820000
x_p95  2.850000
x_p96  2.880000
x_p97  2.910000
x_p98  2.940000
x_p99  2.970000
x_p100 3

mlr --from ./reg_test/input/x0to10.dat --oxtab head -n 5 then stats1 -i -f x -a p00,p01,p02,p03,p04,p05,p06,p07,p08,p09,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81,p82,p83,p84,p85,p86,p87,p88,p89,p90,p91,p92,p93,p94,p95,p96,p97,p98,p99,p100
x_p00  0.000000
x_p01  0.040000
x_p02  0.080000
x_p03  0.120000
x_p04  0.160000
x_p05  0.200000
x_p06  0.240000
x_p07  0.280000
x_p08  0.320000
x_p09  0.360000
x_p10  0.400000
x_p11  0.440000
x_p12  0.480000
x_p13  0.520000
x_p14  0.560000
x_p15  0.600000
x_p16  0.640000
x_p17  0.680000
x_p18  0.720000
x_p19  0.760000
x_p20  0.800000
x_p21  0.840000
x_p22  0.880000
x_p23  0.920000
x_p24  0.960000
x_p25  1.000000
x_p26  1.040000
x_p27  1.080000
x_p28  1.120000
x_p29  1.160000
x_p30  1.200000
x_p31  1.240000
x_p32  1.280000
x_p33  1.320000
x_p34  1.360000
x_p35  1.400000
x_p36  1.440000
x_p37  1.480000
x_p38  1.520000
x_p39  1.560000
x_p40  1.600000
x_p41  1.640000
x_p42  1.680000
x_p43  1.720000
x_p44  1.760000
x_p45  1.800000
x_p46  1.840000
x_p47  1.880000
x_p48  1.920000
x_p49  1.960000
x_p50  2.000000
x_p51  2.040000
x_p52  2.080000
x_p53  2.120000
x_p54  2.160000
x_p55  2.200000
x_p56  2.240000
x_p57  2.280000
x_p58  2.320000
x_p59  2.360000
x_p60  2.400000
x_p61  2.440000
x_p62  2.480000
x_p63  2.520000
x_p64  2.560000
x_p65  2.600000
x_p66  2.640000
x_p67  2.680000
x_p68  2.720000
x_p69  2.760000
x_p70  2.800000
x_p71  2.840000
x_p72  2.880000
x_p73  2.920000
x_p74  2.960000
x_p75  3.000000
x_p76  3.040000
x_p77  3.080000
x_p78  3.120000
x_p79  3.160000
x_p80  3.200000
x_p81  3.240000
x_p82  3.280000
x_p83  3.320000
x_p84  3.360000
x_p85  3.400000
x_p86  3.440000
x_p87  3.480000
x_p88  3.520000
x_p89  3.560000
x_p90  3.600000
x_p91  3.640000
x_p92  3.680000
x_p93  3.720000
x_p94  3.760000
x_p95  3.800000
x_p96  3.840000
x_p97  3.880000
x_p98  3.920000
x_p99  3.960000
x_p100 4

mlr --from ./reg_test/input/x0to10.dat --oxtab head -n 6 then stats1 -i -f x -a p00,p01,p02,p03,p04,p05,p06,p07,p08,p09,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81,p82,p83,p84,p85,p86,p87,p88,p89,p90,p91,p92,p93,p94,p95,p96,p97,p98,p99,p100
x_p00  0.000000
x_p01  0.050000
x_p02  0.100000
x_p03  0.150000
x_p04  0.200000
x_p05  0.250000
x_p06  0.300000
x_p07  0.350000
x_p08  0.400000
x_p09  0.450000
x_p10  0.500000
x_p11  0.550000
x_p12  0.600000
x_p13  0.650000
x_p14  0.700000
x_p15  0.750000
x_p16  0.800000
x_p17  0.850000
x_p18  0.900000
x_p19  0.950000
x_p20  1.000000
x_p21  1.050000
x_p22  1.100000
x_p23  1.150000
x_p24  1.200000
x_p25  1.250000
x_p26  1.300000
x_p27  1.350000
x_p28  1.400000
x_p29  1.450000
x_p30  1.500000
x_p31  1.550000
x_p32  1.600000
x_p33  1.650000
x_p34  1.700000
x_p35  1.750000
x_p36  1.800000
x_p37  1.850000
x_p38  1.900000
x_p39  1.950000
x_p40  2.000000
x_p41  2.050000
x_p42  2.100000
x_p43  2.150000
x_p44  2.200000
x_p45  2.250000
x_p46  2.300000
x_p47  2.350000
x_p48  2.400000
x_p49  2.450000
x_p50  2.500000
x_p51  2.550000
x_p52  2.600000
x_p53  2.650000
x_p54  2.700000
x_p55  2.750000
x_p56  2.800000
x_p57  2.850000
x_p58  2.900000
x_p59  2.950000
x_p60  3.000000
x_p61  3.050000
x_p62  3.100000
x_p63  3.150000
x_p64  3.200000
x_p65  3.250000
x_p66  3.300000
x_p67  3.350000
x_p68  3.400000
x_p69  3.450000
x_p70  3.500000
x_p71  3.550000
x_p72  3.600000
x_p73  3.650000
x_p74  3.700000
x_p75  3.750000
x_p76  3.800000
x_p77  3.850000
x_p78  3.900000
x_p79  3.950000
x_p80  4.000000
x_p81  4.050000
x_p82  4.100000
x_p83  4.150000
x_p84  4.200000
x_p85  4.250000
x_p86  4.300000
x_p87  4.350000
x_p88  4.400000
x_p89  4.450000
x_p90  4.500000
x_p91  4.550000
x_p92  4.600000
x_p93  4.650000
x_p94  4.700000
x_p95  4.750000
x_p96  4.800000
x_p97  4.850000
x_p98  4.900000
x_p99  4.950000
x_p100 5

mlr --from ./reg_test/input/x0to10.dat --oxtab head -n 7 then stats1 -i -f x -a p00,p01,p02,p03,p04,p05,p06,p07,p08,p09,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81,p82,p83,p84,p85,p86,p87,p88,p89,p90,p91,p92,p93,p94,p95,p96,p97,p98,p99,p100
x_p00  0.000000
x_p01  0.060000
x_p02  0.120000
x_p03  0.180000
x_p04  0.240000
x_p05  0.300000
x_p06  0.360000
x_p07  0.420000
x_p08  0.480000
x_p09  0.540000
x_p10  0.600000
x_p11  0.660000
x_p12  0.720000
x_p13  0.780000
x_p14  0.840000
x_p15  0.900000
x_p16  0.960000
x_p17  1.020000
x_p18  1.080000
x_p19  1.140000
x_p20  1.200000
x_p21  1.260000
x_p22  1.320000
x_p23  1.380000
x_p24  1.440000
x_p25  1.500000
x_p26  1.560000
x_p27  1.620000
x_p28  1.680000
x_p29  1.740000
x_p30  1.800000
x_p31  1.860000
x_p32  1.920000
x_p33  1.980000
x_p34  2.040000
x_p35  2.100000
x_p36  2.160000
x_p37  2.220000
x_p38  2.280000
x_p39  2.340000
x_p40  2.400000
x_p41  2.460000
x_p42  2.520000
x_p43  2.580000
x_p44  2.640000
x_p45  2.700000
x_p46  2.760000
x_p47  2.820000
x_p48  2.880000
x_p49  2.940000
x_p50  3.000000
x_p51  3.060000
x_p52  3.120000
x_p53  3.180000
x_p54  3.240000
x_p55  3.300000
x_p56  3.360000
x_p57  3.420000
x_p58  3.480000
x_p59  3.540000
x_p60  3.600000
x_p61  3.660000
x_p62  3.720000
x_p63  3.780000
x_p64  3.840000
x_p65  3.900000
x_p66  3.960000
x_p67  4.020000
x_p68  4.080000
x_p69  4.140000
x_p70  4.200000
x_p71  4.260000
x_p72  4.320000
x_p73  4.380000
x_p74  4.440000
x_p75  4.500000
x_p76  4.560000
x_p77  4.620000
x_p78  4.680000
x_p79  4.740000
x_p80  4.800000
x_p81  4.860000
x_p82  4.920000
x_p83  4.980000
x_p84  5.040000
x_p85  5.100000
x_p86  5.160000
x_p87  5.220000
x_p88  5.280000
x_p89  5.340000
x_p90  5.400000
x_p91  5.460000
x_p92  5.520000
x_p93  5.580000
x_p94  5.640000
x_p95  5.700000
x_p96  5.760000
x_p97  5.820000
x_p98  5.880000
x_p99  5.940000
x_p100 6

mlr --from ./reg_test/input/x0to10.dat --oxtab head -n 8 then stats1 -i -f x -a p00,p01,p02,p03,p04,p05,p06,p07,p08,p09,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81,p82,p83,p84,p85,p86,p87,p88,p89,p90,p91,p92,p93,p94,p95,p96,p97,p98,p99,p100
x_p00  0.000000
x_p01  0.070000
x_p02  0.140000
x_p03  0.210000
x_p04  0.280000
x_p05  0.350000
x_p06  0.420000
x_p07  0.490000
x_p08  0.560000
x_p09  0.630000
x_p10  0.700000
x_p11  0.770000
x_p12  0.840000
x_p13  0.910000
x_p14  0.980000
x_p15  1.050000
x_p16  1.120000
x_p17  1.190000
x_p18  1.260000
x_p19  1.330000
x_p20  1.400000
x_p21  1.470000
x_p22  1.540000
x_p23  1.610000
x_p24  1.680000
x_p25  1.750000
x_p26  1.820000
x_p27  1.890000
x_p28  1.960000
x_p29  2.030000
x_p30  2.100000
x_p31  2.170000
x_p32  2.240000
x_p33  2.310000
x_p34  2.380000
x_p35  2.450000
x_p36  2.520000
x_p37  2.590000
x_p38  2.660000
x_p39  2.730000
x_p40  2.800000
x_p41  2.870000
x_p42  2.940000
x_p43  3.010000
x_p44  3.080000
x_p45  3.150000
x_p46  3.220000
x_p47  3.290000
x_p48  3.360000
x_p49  3.430000
x_p50  3.500000
x_p51  3.570000
x_p52  3.640000
x_p53  3.710000
x_p54  3.780000
x_p55  3.850000
x_p56  3.920000
x_p57  3.990000
x_p58  4.060000
x_p59  4.130000
x_p60  4.200000
x_p61  4.270000
x_p62  4.340000
x_p63  4.410000
x_p64  4.480000
x_p65  4.550000
x_p66  4.620000
x_p67  4.690000
x_p68  4.760000
x_p69  4.830000
x_p70  4.900000
x_p71  4.970000
x_p72  5.040000
x_p73  5.110000
x_p74  5.180000
x_p75  5.250000
x_p76  5.320000
x_p77  5.390000
x_p78  5.460000
x_p79  5.530000
x_p80  5.600000
x_p81  5.670000
x_p82  5.740000
x_p83  5.810000
x_p84  5.880000
x_p85  5.950000
x_p86  6.020000
x_p87  6.090000
x_p88  6.160000
x_p89  6.230000
x_p90  6.300000
x_p91  6.370000
x_p92  6.440000
x_p93  6.510000
x_p94  6.580000
x_p95  6.650000
x_p96  6.720000
x_p97  6.790000
x_p98  6.860000
x_p99  6.930000
x_p100 7

mlr --from ./reg_test/input/x0to10.dat --oxtab head -n 9 then stats1 -i -f x -a p00,p01,p02,p03,p04,p05,p06,p07,p08,p09,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81,p82,p83,p84,p85,p86,p87,p88,p89,p90,p91,p92,p93,p94,p95,p96,p97,p98,p99,p100
x_p00  0.000000
x_p01  0.080000
x_p02  0.160000
x_p03  0.240000
x_p04  0.320000
x_p05  0.400000
x_p06  0.480000
x_p07  0.560000
x_p08  0.640000
x_p09  0.720000
x_p10  0.800000
x_p11  0.880000
x_p12  0.960000
x_p13  1.040000
x_p14  1.120000
x_p15  1.200000
x_p16  1.280000
x_p17  1.360000
x_p18  1.440000
x_p19  1.520000
x_p20  1.600000
x_p21  1.680000
x_p22  1.760000
x_p23  1.840000
x_p24  1.920000
x_p25  2.000000
x_p26  2.080000
x_p27  2.160000
x_p28  2.240000
x_p29  2.320000
x_p30  2.400000
x_p31  2.480000
x_p32  2.560000
x_p33  2.640000
x_p34  2.720000
x_p35  2.800000
x_p36  2.880000
x_p37  2.960000
x_p38  3.040000
x_p39  3.120000
x_p40  3.200000
x_p41  3.280000
x_p42  3.360000
x_p43  3.440000
x_p44  3.520000
x_p45  3.600000
x_p46  3.680000
x_p47  3.760000
x_p48  3.840000
x_p49  3.920000
x_p50  4.000000
x_p51  4.080000
x_p52  4.160000
x_p53  4.240000
x_p54  4.320000
x_p55  4.400000
x_p56  4.480000
x_p57  4.560000
x_p58  4.640000
x_p59  4.720000
x_p60  4.800000
x_p61  4.880000
x_p62  4.960000
x_p63  5.040000
x_p64  5.120000
x_p65  5.200000
x_p66  5.280000
x_p67  5.360000
x_p68  5.440000
x_p69  5.520000
x_p70  5.600000
x_p71  5.680000
x_p72  5.760000
x_p73  5.840000
x_p74  5.920000
x_p75  6.000000
x_p76  6.080000
x_p77  6.160000
x_p78  6.240000
x_p79  6.320000
x_p80  6.400000
x_p81  6.480000
x_p82  6.560000
x_p83  6.640000
x_p84  6.720000
x_p85  6.800000
x_p86  6.880000
x_p87  6.960000
x_p88  7.040000
x_p89  7.120000
x_p90  7.200000
x_p91  7.280000
x_p92  7.360000
x_p93  7.440000
x_p94  7.520000
x_p95  7.600000
x_p96  7.680000
x_p97  7.760000
x_p98  7.840000
x_p99  7.920000
x_p100 8

mlr --from ./reg_test/input/x0to10.dat --oxtab head -n 10 then stats1 -i -f x -a p00,p01,p02,p03,p04,p05,p06,p07,p08,p09,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81,p82,p83,p84,p85,p86,p87,p88,p89,p90,p91,p92,p93,p94,p95,p96,p97,p98,p99,p100
x_p00  0.000000
x_p01  0.090000
x_p02  0.180000
x_p03  0.270000
x_p04  0.360000
x_p05  0.450000
x_p06  0.540000
x_p07  0.630000
x_p08  0.720000
x_p09  0.810000
x_p10  0.900000
x_p11  0.990000
x_p12  1.080000
x_p13  1.170000
x_p14  1.260000
x_p15  1.350000
x_p16  1.440000
x_p17  1.530000
x_p18  1.620000
x_p19  1.710000
x_p20  1.800000
x_p21  1.890000
x_p22  1.980000
x_p23  2.070000
x_p24  2.160000
x_p25  2.250000
x_p26  2.340000
x_p27  2.430000
x_p28  2.520000
x_p29  2.610000
x_p30  2.700000
x_p31  2.790000
x_p32  2.880000
x_p33  2.970000
x_p34  3.060000
x_p35  3.150000
x_p36  3.240000
x_p37  3.330000
x_p38  3.420000
x_p39  3.510000
x_p40  3.600000
x_p41  3.690000
x_p42  3.780000
x_p43  3.870000
x_p44  3.960000
x_p45  4.050000
x_p46  4.140000
x_p47  4.230000
x_p48  4.320000
x_p49  4.410000
x_p50  4.500000
x_p51  4.590000
x_p52  4.680000
x_p53  4.770000
x_p54  4.860000
x_p55  4.950000
x_p56  5.040000
x_p57  5.130000
x_p58  5.220000
x_p59  5.310000
x_p60  5.400000
x_p61  5.490000
x_p62  5.580000
x_p63  5.670000
x_p64  5.760000
x_p65  5.850000
x_p66  5.940000
x_p67  6.030000
x_p68  6.120000
x_p69  6.210000
x_p70  6.300000
x_p71  6.390000
x_p72  6.480000
x_p73  6.570000
x_p74  6.660000
x_p75  6.750000
x_p76  6.840000
x_p77  6.930000
x_p78  7.020000
x_p79  7.110000
x_p80  7.200000
x_p81  7.290000
x_p82  7.380000
x_p83  7.470000
x_p84  7.560000
x_p85  7.650000
x_p86  7.740000
x_p87  7.830000
x_p88  7.920000
x_p89  8.010000
x_p90  8.100000
x_p91  8.190000
x_p92  8.280000
x_p93  8.370000
x_p94  8.460000
x_p95  8.550000
x_p96  8.640000
x_p97  8.730000
x_p98  8.820000
x_p99  8.910000
x_p100 9

mlr --from ./reg_test/input/x0to10.dat --oxtab head -n 11 then stats1 -i -f x -a p00,p01,p02,p03,p04,p05,p06,p07,p08,p09,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81,p82,p83,p84,p85,p86,p87,p88,p89,p90,p91,p92,p93,p94,p95,p96,p97,p98,p99,p100
x_p00  0.000000
x_p01  0.100000
x_p02  0.200000
x_p03  0.300000
x_p04  0.400000
x_p05  0.500000
x_p06  0.600000
x_p07  0.700000
x_p08  0.800000
x_p09  0.900000
x_p10  1.000000
x_p11  1.100000
x_p12  1.200000
x_p13  1.300000
x_p14  1.400000
x_p15  1.500000
x_p16  1.600000
x_p17  1.700000
x_p18  1.800000
x_p19  1.900000
x_p20  2.000000
x_p21  2.100000
x_p22  2.200000
x_p23  2.300000
x_p24  2.400000
x_p25  2.500000
x_p26  2.600000
x_p27  2.700000
x_p28  2.800000
x_p29  2.900000
x_p30  3.000000
x_p31  3.100000
x_p32  3.200000
x_p33  3.300000
x_p34  3.400000
x_p35  3.500000
x_p36  3.600000
x_p37  3.700000
x_p38  3.800000
x_p39  3.900000
x_p40  4.000000
x_p41  4.100000
x_p42  4.200000
x_p43  4.300000
x_p44  4.400000
x_p45  4.500000
x_p46  4.600000
x_p47  4.700000
x_p48  4.800000
x_p49  4.900000
x_p50  5.000000
x_p51  5.100000
x_p52  5.200000
x_p53  5.300000
x_p54  5.400000
x_p55  5.500000
x_p56  5.600000
x_p57  5.700000
x_p58  5.800000
x_p59  5.900000
x_p60  6.000000
x_p61  6.100000
x_p62  6.200000
x_p63  6.300000
x_p64  6.400000
x_p65  6.500000
x_p66  6.600000
x_p67  6.700000
x_p68  6.800000
x_p69  6.900000
x_p70  7.000000
x_p71  7.100000
x_p72  7.200000
x_p73  7.300000
x_p74  7.400000
x_p75  7.500000
x_p76  7.600000
x_p77  7.700000
x_p78  7.800000
x_p79  7.900000
x_p80  8.000000
x_p81  8.100000
x_p82  8.200000
x_p83  8.300000
x_p84  8.400000
x_p85  8.500000
x_p86  8.600000
x_p87  8.700000
x_p88  8.800000
x_p89  8.900000
x_p90  9.000000
x_p91  9.100000
x_p92  9.200000
x_p93  9.300000
x_p94  9.400000
x_p95  9.500000
x_p96  9.600000
x_p97  9.700000
x_p98  9.800000
x_p99  9.900000
x_p100 10


================================================================
IN-PLACE PROCESSING

cat /Users/kerl/pub_http_internet/miller-releases/miller-head/c/output-regtest/abixy.temp1
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

cat /Users/kerl/pub_http_internet/miller-releases/miller-head/c/output-regtest/abixy.temp2
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 -I --opprint head -n 2 /Users/kerl/pub_http_internet/miller-releases/miller-head/c/output-regtest/abixy.temp1 /Users/kerl/pub_http_internet/miller-releases/miller-head/c/output-regtest/abixy.temp2

cat /Users/kerl/pub_http_internet/miller-releases/miller-head/c/output-regtest/abixy.temp1
a   b   i x                  y
pan pan 1 0.3467901443380824 0.7268028627434533
eks pan 2 0.7586799647899636 0.5221511083334797

cat /Users/kerl/pub_http_internet/miller-releases/miller-head/c/output-regtest/abixy.temp2
a   b   i x                  y
pan pan 1 0.3467901443380824 0.7268028627434533
eks pan 2 0.7586799647899636 0.5221511083334797

mlr -I --opprint head -n 2
mlr: -I option (in-place operation) requires input files.

mlr -I --opprint -n head -n 2 /Users/kerl/pub_http_internet/miller-releases/miller-head/c/output-regtest/abixy.temp1
mlr: -I option (in-place operation) requires input files.

cat /Users/kerl/pub_http_internet/miller-releases/miller-head/c/output-regtest/abixy.temp1
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

cat /Users/kerl/pub_http_internet/miller-releases/miller-head/c/output-regtest/abixy.temp2
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 -I --opprint rename a,AYE,b,BEE /Users/kerl/pub_http_internet/miller-releases/miller-head/c/output-regtest/abixy.temp1 /Users/kerl/pub_http_internet/miller-releases/miller-head/c/output-regtest/abixy.temp2

cat /Users/kerl/pub_http_internet/miller-releases/miller-head/c/output-regtest/abixy.temp1
AYE BEE i  x                   y
pan pan 1  0.3467901443380824  0.7268028627434533
eks pan 2  0.7586799647899636  0.5221511083334797
wye wye 3  0.20460330576630303 0.33831852551664776
eks wye 4  0.38139939387114097 0.13418874328430463
wye pan 5  0.5732889198020006  0.8636244699032729
zee pan 6  0.5271261600918548  0.49322128674835697
eks zee 7  0.6117840605678454  0.1878849191181694
zee wye 8  0.5985540091064224  0.976181385699006
hat wye 9  0.03144187646093577 0.7495507603507059
pan wye 10 0.5026260055412137  0.9526183602969864

cat /Users/kerl/pub_http_internet/miller-releases/miller-head/c/output-regtest/abixy.temp2
AYE BEE i  x                   y
pan pan 1  0.3467901443380824  0.7268028627434533
eks pan 2  0.7586799647899636  0.5221511083334797
wye wye 3  0.20460330576630303 0.33831852551664776
eks wye 4  0.38139939387114097 0.13418874328430463
wye pan 5  0.5732889198020006  0.8636244699032729
zee pan 6  0.5271261600918548  0.49322128674835697
eks zee 7  0.6117840605678454  0.1878849191181694
zee wye 8  0.5985540091064224  0.976181385699006
hat wye 9  0.03144187646093577 0.7495507603507059
pan wye 10 0.5026260055412137  0.9526183602969864


================================================================
DSL OPERATOR ASSOCIATIVITY

mlr put -v $x = 1 || 2 || 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="||", type=OPERATOR:
            text="||", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="||", type=OPERATOR:
            text="||", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr filter -v      1 || 2 || 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="||", type=OPERATOR:
        text="||", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="||", type=OPERATOR:
        text="||", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.


mlr put -v $x = 1 ^^ 2 ^^ 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="^^", type=OPERATOR:
            text="^^", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="^^", type=OPERATOR:
            text="^^", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr filter -v      1 ^^ 2 ^^ 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="^^", type=OPERATOR:
        text="^^", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="^^", type=OPERATOR:
        text="^^", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.


mlr put -v $x = 1 && 2 && 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="&&", type=OPERATOR:
            text="&&", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="&&", type=OPERATOR:
            text="&&", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr filter -v      1 && 2 && 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="&&", type=OPERATOR:
        text="&&", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="&&", type=OPERATOR:
        text="&&", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.


mlr put -v $x = 1  == 2  == 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="==", type=OPERATOR:
            text="==", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="==", type=OPERATOR:
            text="==", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr filter -v      1  == 2  == 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="==", type=OPERATOR:
        text="==", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="==", type=OPERATOR:
        text="==", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.


mlr put -v $x = 1  != 2  != 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="!=", type=OPERATOR:
            text="!=", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="!=", type=OPERATOR:
            text="!=", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr filter -v      1  != 2  != 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="!=", type=OPERATOR:
        text="!=", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="!=", type=OPERATOR:
        text="!=", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.


mlr put -v $x = 1  =~ 2  =~ 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="=~", type=OPERATOR:
            text="=~", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="=~", type=OPERATOR:
            text="=~", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr filter -v      1  =~ 2  =~ 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=~", type=OPERATOR:
        text="=~", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=~", type=OPERATOR:
        text="=~", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.


mlr put -v $x = 1 !=~ 2 !=~ 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="!=~", type=OPERATOR:
            text="!=~", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="!=~", type=OPERATOR:
            text="!=~", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr filter -v      1 !=~ 2 !=~ 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="!=~", type=OPERATOR:
        text="!=~", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="!=~", type=OPERATOR:
        text="!=~", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.


mlr put -v $x = 1  == 2  != 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="!=", type=OPERATOR:
            text="==", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="!=", type=OPERATOR:
            text="==", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr filter -v      1  == 2  != 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="!=", type=OPERATOR:
        text="==", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="!=", type=OPERATOR:
        text="==", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.


mlr put -v $x = 1  != 2  == 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="==", type=OPERATOR:
            text="!=", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="==", type=OPERATOR:
            text="!=", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr filter -v      1  != 2  == 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="==", type=OPERATOR:
        text="!=", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="==", type=OPERATOR:
        text="!=", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.


mlr put -v $x = 1  <  2  <  3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="<", type=OPERATOR:
            text="<", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="<", type=OPERATOR:
            text="<", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr filter -v      1  <  2  <  3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="<", type=OPERATOR:
        text="<", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="<", type=OPERATOR:
        text="<", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.


mlr put -v $x = 1  <= 2  <= 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="<=", type=OPERATOR:
            text="<=", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="<=", type=OPERATOR:
            text="<=", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr filter -v      1  <= 2  <= 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="<=", type=OPERATOR:
        text="<=", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="<=", type=OPERATOR:
        text="<=", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.


mlr put -v $x = 1  >  2  >  3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text=">", type=OPERATOR:
            text=">", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text=">", type=OPERATOR:
            text=">", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr filter -v      1  >  2  >  3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text=">", type=OPERATOR:
        text=">", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text=">", type=OPERATOR:
        text=">", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.


mlr put -v $x = 1  >= 2  >= 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text=">=", type=OPERATOR:
            text=">=", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text=">=", type=OPERATOR:
            text=">=", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr filter -v      1  >= 2  >= 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text=">=", type=OPERATOR:
        text=">=", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text=">=", type=OPERATOR:
        text=">=", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.


mlr put -v $x = 1  <  2  <= 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="<=", type=OPERATOR:
            text="<", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="<=", type=OPERATOR:
            text="<", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr filter -v      1  <  2  <= 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="<=", type=OPERATOR:
        text="<", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="<=", type=OPERATOR:
        text="<", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.


mlr put -v $x = 1  <= 2  <  3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="<", type=OPERATOR:
            text="<=", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="<", type=OPERATOR:
            text="<=", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr filter -v      1  <= 2  <  3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="<", type=OPERATOR:
        text="<=", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="<", type=OPERATOR:
        text="<=", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.


mlr put -v $x = 1 |  2 |  3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="|", type=OPERATOR:
            text="|", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="|", type=OPERATOR:
            text="|", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr filter -v      1 |  2 |  3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="|", type=OPERATOR:
        text="|", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="|", type=OPERATOR:
        text="|", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.


mlr put -v $x = 1 ^  2 ^  3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="^", type=OPERATOR:
            text="^", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="^", type=OPERATOR:
            text="^", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr filter -v      1 ^  2 ^  3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="^", type=OPERATOR:
        text="^", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="^", type=OPERATOR:
        text="^", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.


mlr put -v $x = 1 &  2 &  3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="&", type=OPERATOR:
            text="&", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="&", type=OPERATOR:
            text="&", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr filter -v      1 &  2 &  3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="&", type=OPERATOR:
        text="&", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="&", type=OPERATOR:
        text="&", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.


mlr put -v $x = 1 |  2 &  3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="|", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="&", type=OPERATOR:
                text="2", type=NUMERIC_LITERAL.
                text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="|", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="&", type=OPERATOR:
                text="2", type=NUMERIC_LITERAL.
                text="3", type=NUMERIC_LITERAL.


mlr filter -v      1 |  2 &  3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="|", type=OPERATOR:
        text="1", type=NUMERIC_LITERAL.
        text="&", type=OPERATOR:
            text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="|", type=OPERATOR:
        text="1", type=NUMERIC_LITERAL.
        text="&", type=OPERATOR:
            text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr put -v $x = 1 |  2 ^  3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="|", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="^", type=OPERATOR:
                text="2", type=NUMERIC_LITERAL.
                text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="|", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="^", type=OPERATOR:
                text="2", type=NUMERIC_LITERAL.
                text="3", type=NUMERIC_LITERAL.


mlr filter -v      1 |  2 ^  3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="|", type=OPERATOR:
        text="1", type=NUMERIC_LITERAL.
        text="^", type=OPERATOR:
            text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="|", type=OPERATOR:
        text="1", type=NUMERIC_LITERAL.
        text="^", type=OPERATOR:
            text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr put -v $x = 1 ^  2 |  3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="|", type=OPERATOR:
            text="^", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="|", type=OPERATOR:
            text="^", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr filter -v      1 ^  2 |  3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="|", type=OPERATOR:
        text="^", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="|", type=OPERATOR:
        text="^", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.


mlr put -v $x = 1 ^  2 &  3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="^", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="&", type=OPERATOR:
                text="2", type=NUMERIC_LITERAL.
                text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="^", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="&", type=OPERATOR:
                text="2", type=NUMERIC_LITERAL.
                text="3", type=NUMERIC_LITERAL.


mlr filter -v      1 ^  2 &  3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="^", type=OPERATOR:
        text="1", type=NUMERIC_LITERAL.
        text="&", type=OPERATOR:
            text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="^", type=OPERATOR:
        text="1", type=NUMERIC_LITERAL.
        text="&", type=OPERATOR:
            text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr put -v $x = 1 &  2 |  3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="|", type=OPERATOR:
            text="&", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="|", type=OPERATOR:
            text="&", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr filter -v      1 &  2 |  3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="|", type=OPERATOR:
        text="&", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="|", type=OPERATOR:
        text="&", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.


mlr put -v $x = 1 &  2 ^  3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="^", type=OPERATOR:
            text="&", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="^", type=OPERATOR:
            text="&", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr filter -v      1 &  2 ^  3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="^", type=OPERATOR:
        text="&", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="^", type=OPERATOR:
        text="&", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.


mlr put -v $x = 1  << 2  << 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="<<", type=OPERATOR:
            text="<<", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="<<", type=OPERATOR:
            text="<<", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr filter -v      1  << 2  << 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="<<", type=OPERATOR:
        text="<<", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="<<", type=OPERATOR:
        text="<<", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.


mlr put -v $x = 1  >> 2  >> 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text=">>", type=OPERATOR:
            text=">>", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text=">>", type=OPERATOR:
            text=">>", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr filter -v      1  >> 2  >> 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text=">>", type=OPERATOR:
        text=">>", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text=">>", type=OPERATOR:
        text=">>", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.


mlr put -v $x = 1  << 2  >> 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text=">>", type=OPERATOR:
            text="<<", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text=">>", type=OPERATOR:
            text="<<", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr filter -v      1  << 2  >> 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text=">>", type=OPERATOR:
        text="<<", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text=">>", type=OPERATOR:
        text="<<", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.


mlr put -v $x = 1  >> 2  << 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="<<", type=OPERATOR:
            text=">>", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="<<", type=OPERATOR:
            text=">>", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr filter -v      1  >> 2  << 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="<<", type=OPERATOR:
        text=">>", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="<<", type=OPERATOR:
        text=">>", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.


mlr put -v $x = 1 + 2 + 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="+", type=OPERATOR:
            text="+", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="+", type=OPERATOR:
            text="+", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr filter -v      1 + 2 + 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="+", type=OPERATOR:
        text="+", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="+", type=OPERATOR:
        text="+", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.


mlr put -v $x = 1 - 2 - 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="-", type=OPERATOR:
            text="-", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="-", type=OPERATOR:
            text="-", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr filter -v      1 - 2 - 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="-", type=OPERATOR:
        text="-", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="-", type=OPERATOR:
        text="-", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.


mlr put -v $x = 1 + 2 - 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="-", type=OPERATOR:
            text="+", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="-", type=OPERATOR:
            text="+", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr filter -v      1 + 2 - 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="-", type=OPERATOR:
        text="+", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="-", type=OPERATOR:
        text="+", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.


mlr put -v $x = 1 - 2 + 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="+", type=OPERATOR:
            text="-", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="+", type=OPERATOR:
            text="-", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr filter -v      1 - 2 + 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="+", type=OPERATOR:
        text="-", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="+", type=OPERATOR:
        text="-", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.


mlr put -v $x = 1 . 2 . 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text=".", type=OPERATOR:
            text=".", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text=".", type=OPERATOR:
            text=".", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr filter -v      1 . 2 . 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text=".", type=OPERATOR:
        text=".", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text=".", type=OPERATOR:
        text=".", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.


mlr put -v $x = 1 * 2 * 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="*", type=OPERATOR:
            text="*", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="*", type=OPERATOR:
            text="*", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr filter -v      1 * 2 * 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="*", type=OPERATOR:
        text="*", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="*", type=OPERATOR:
        text="*", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.


mlr put -v $x = 1 / 2 / 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="/", type=OPERATOR:
            text="/", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="/", type=OPERATOR:
            text="/", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr filter -v      1 / 2 / 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="/", type=OPERATOR:
        text="/", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="/", type=OPERATOR:
        text="/", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.


mlr put -v $x = 1 // 2 // 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="//", type=OPERATOR:
            text="//", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="//", type=OPERATOR:
            text="//", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr filter -v      1 // 2 // 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="//", type=OPERATOR:
        text="//", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="//", type=OPERATOR:
        text="//", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.


mlr put -v $x = 1 % 2 % 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="%", type=OPERATOR:
            text="%", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="%", type=OPERATOR:
            text="%", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr filter -v      1 % 2 % 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="%", type=OPERATOR:
        text="%", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="%", type=OPERATOR:
        text="%", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.


mlr put -v $x = 1 ** 2 ** 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="**", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="**", type=OPERATOR:
                text="2", type=NUMERIC_LITERAL.
                text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="**", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="**", type=OPERATOR:
                text="2", type=NUMERIC_LITERAL.
                text="3", type=NUMERIC_LITERAL.


mlr filter -v      1 ** 2 ** 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="**", type=OPERATOR:
        text="1", type=NUMERIC_LITERAL.
        text="**", type=OPERATOR:
            text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="**", type=OPERATOR:
        text="1", type=NUMERIC_LITERAL.
        text="**", type=OPERATOR:
            text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr put -v $x = 1 *  2 /  3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="/", type=OPERATOR:
            text="*", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="/", type=OPERATOR:
            text="*", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr filter -v      1 *  2 /  3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="/", type=OPERATOR:
        text="*", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="/", type=OPERATOR:
        text="*", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.


mlr put -v $x = 1 *  2 // 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="//", type=OPERATOR:
            text="*", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="//", type=OPERATOR:
            text="*", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr filter -v      1 *  2 // 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="//", type=OPERATOR:
        text="*", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="//", type=OPERATOR:
        text="*", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.


mlr put -v $x = 1 *  2 %  3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="%", type=OPERATOR:
            text="*", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="%", type=OPERATOR:
            text="*", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr filter -v      1 *  2 %  3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="%", type=OPERATOR:
        text="*", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="%", type=OPERATOR:
        text="*", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.


mlr put -v $x = 1 *  2 ** 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="*", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="**", type=OPERATOR:
                text="2", type=NUMERIC_LITERAL.
                text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="*", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="**", type=OPERATOR:
                text="2", type=NUMERIC_LITERAL.
                text="3", type=NUMERIC_LITERAL.


mlr filter -v      1 *  2 ** 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="*", type=OPERATOR:
        text="1", type=NUMERIC_LITERAL.
        text="**", type=OPERATOR:
            text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="*", type=OPERATOR:
        text="1", type=NUMERIC_LITERAL.
        text="**", type=OPERATOR:
            text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr put -v $x = 1 /  2 *  3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="*", type=OPERATOR:
            text="/", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="*", type=OPERATOR:
            text="/", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr filter -v      1 /  2 *  3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="*", type=OPERATOR:
        text="/", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="*", type=OPERATOR:
        text="/", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.


mlr put -v $x = 1 /  2 // 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="//", type=OPERATOR:
            text="/", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="//", type=OPERATOR:
            text="/", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr filter -v      1 /  2 // 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="//", type=OPERATOR:
        text="/", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="//", type=OPERATOR:
        text="/", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.


mlr put -v $x = 1 /  2 %  3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="%", type=OPERATOR:
            text="/", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="%", type=OPERATOR:
            text="/", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr filter -v      1 /  2 %  3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="%", type=OPERATOR:
        text="/", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="%", type=OPERATOR:
        text="/", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.


mlr put -v $x = 1 /  2 ** 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="/", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="**", type=OPERATOR:
                text="2", type=NUMERIC_LITERAL.
                text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="/", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="**", type=OPERATOR:
                text="2", type=NUMERIC_LITERAL.
                text="3", type=NUMERIC_LITERAL.


mlr filter -v      1 /  2 ** 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="/", type=OPERATOR:
        text="1", type=NUMERIC_LITERAL.
        text="**", type=OPERATOR:
            text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="/", type=OPERATOR:
        text="1", type=NUMERIC_LITERAL.
        text="**", type=OPERATOR:
            text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr put -v $x = 1 // 2 *  3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="*", type=OPERATOR:
            text="//", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="*", type=OPERATOR:
            text="//", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr filter -v      1 // 2 *  3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="*", type=OPERATOR:
        text="//", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="*", type=OPERATOR:
        text="//", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.


mlr put -v $x = 1 // 2 /  3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="/", type=OPERATOR:
            text="//", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="/", type=OPERATOR:
            text="//", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr filter -v      1 // 2 /  3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="/", type=OPERATOR:
        text="//", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="/", type=OPERATOR:
        text="//", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.


mlr put -v $x = 1 // 2 %  3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="%", type=OPERATOR:
            text="//", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="%", type=OPERATOR:
            text="//", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr filter -v      1 // 2 %  3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="%", type=OPERATOR:
        text="//", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="%", type=OPERATOR:
        text="//", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.


mlr put -v $x = 1 // 2 ** 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="//", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="**", type=OPERATOR:
                text="2", type=NUMERIC_LITERAL.
                text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="//", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="**", type=OPERATOR:
                text="2", type=NUMERIC_LITERAL.
                text="3", type=NUMERIC_LITERAL.


mlr filter -v      1 // 2 ** 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="//", type=OPERATOR:
        text="1", type=NUMERIC_LITERAL.
        text="**", type=OPERATOR:
            text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="//", type=OPERATOR:
        text="1", type=NUMERIC_LITERAL.
        text="**", type=OPERATOR:
            text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr put -v $x = 1 %  2 *  3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="*", type=OPERATOR:
            text="%", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="*", type=OPERATOR:
            text="%", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr filter -v      1 %  2 *  3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="*", type=OPERATOR:
        text="%", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="*", type=OPERATOR:
        text="%", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.


mlr put -v $x = 1 %  2 /  3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="/", type=OPERATOR:
            text="%", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="/", type=OPERATOR:
            text="%", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr filter -v      1 %  2 /  3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="/", type=OPERATOR:
        text="%", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="/", type=OPERATOR:
        text="%", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.


mlr put -v $x = 1 %  2 // 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="//", type=OPERATOR:
            text="%", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="//", type=OPERATOR:
            text="%", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr filter -v      1 %  2 // 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="//", type=OPERATOR:
        text="%", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="//", type=OPERATOR:
        text="%", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.


mlr put -v $x = 1 %  2 ** 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="%", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="**", type=OPERATOR:
                text="2", type=NUMERIC_LITERAL.
                text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="%", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="**", type=OPERATOR:
                text="2", type=NUMERIC_LITERAL.
                text="3", type=NUMERIC_LITERAL.


mlr filter -v      1 %  2 ** 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="%", type=OPERATOR:
        text="1", type=NUMERIC_LITERAL.
        text="**", type=OPERATOR:
            text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="%", type=OPERATOR:
        text="1", type=NUMERIC_LITERAL.
        text="**", type=OPERATOR:
            text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr put -v $x = 1 ** 2 *  3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="*", type=OPERATOR:
            text="**", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="*", type=OPERATOR:
            text="**", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr filter -v      1 ** 2 *  3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="*", type=OPERATOR:
        text="**", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="*", type=OPERATOR:
        text="**", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.


mlr put -v $x = 1 ** 2 /  3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="/", type=OPERATOR:
            text="**", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="/", type=OPERATOR:
            text="**", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr filter -v      1 ** 2 /  3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="/", type=OPERATOR:
        text="**", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="/", type=OPERATOR:
        text="**", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.


mlr put -v $x = 1 ** 2 // 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="//", type=OPERATOR:
            text="**", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="//", type=OPERATOR:
            text="**", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr filter -v      1 ** 2 // 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="//", type=OPERATOR:
        text="**", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="//", type=OPERATOR:
        text="**", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.


mlr put -v $x = 1 ** 2 %  3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="%", type=OPERATOR:
            text="**", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="%", type=OPERATOR:
            text="**", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr filter -v      1 ** 2 %  3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="%", type=OPERATOR:
        text="**", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="%", type=OPERATOR:
        text="**", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.


mlr put -v $x = ++1 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="+", type=OPERATOR:
            text="+", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="+", type=OPERATOR:
            text="+", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.


mlr filter -v      ++1 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="+", type=OPERATOR:
        text="+", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="+", type=OPERATOR:
        text="+", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.


mlr put -v $x = --1 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="-", type=OPERATOR:
            text="-", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="-", type=OPERATOR:
            text="-", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.


mlr filter -v      --1 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="-", type=OPERATOR:
        text="-", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="-", type=OPERATOR:
        text="-", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.


mlr put -v $x = !!1 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="!", type=OPERATOR:
            text="!", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="!", type=OPERATOR:
            text="!", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.


mlr filter -v      !!1 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="!", type=OPERATOR:
        text="!", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="!", type=OPERATOR:
        text="!", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.


mlr put -v $x = ~~1 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="~", type=OPERATOR:
            text="~", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="~", type=OPERATOR:
            text="~", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.


mlr filter -v      ~~1 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="~", type=OPERATOR:
        text="~", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="~", type=OPERATOR:
        text="~", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.


mlr put -v $x = 1 ? 2 : 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="? :", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="? :", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr filter -v      1 ? 2 : 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="? :", type=OPERATOR:
        text="1", type=NUMERIC_LITERAL.
        text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="? :", type=OPERATOR:
        text="1", type=NUMERIC_LITERAL.
        text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.


mlr put -v $x = 1 ? 2 ? 3 : 4 : 5 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="? :", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="? :", type=OPERATOR:
                text="2", type=NUMERIC_LITERAL.
                text="3", type=NUMERIC_LITERAL.
                text="4", type=NUMERIC_LITERAL.
            text="5", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="? :", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="? :", type=OPERATOR:
                text="2", type=NUMERIC_LITERAL.
                text="3", type=NUMERIC_LITERAL.
                text="4", type=NUMERIC_LITERAL.
            text="5", type=NUMERIC_LITERAL.


mlr filter -v      1 ? 2 ? 3 : 4 : 5 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="? :", type=OPERATOR:
        text="1", type=NUMERIC_LITERAL.
        text="? :", type=OPERATOR:
            text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.
            text="4", type=NUMERIC_LITERAL.
        text="5", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="? :", type=OPERATOR:
        text="1", type=NUMERIC_LITERAL.
        text="? :", type=OPERATOR:
            text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.
            text="4", type=NUMERIC_LITERAL.
        text="5", type=NUMERIC_LITERAL.


mlr put -v $x = 1 ? 2 : 3 ? 4 : 5 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="? :", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
            text="? :", type=OPERATOR:
                text="3", type=NUMERIC_LITERAL.
                text="4", type=NUMERIC_LITERAL.
                text="5", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="? :", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
            text="? :", type=OPERATOR:
                text="3", type=NUMERIC_LITERAL.
                text="4", type=NUMERIC_LITERAL.
                text="5", type=NUMERIC_LITERAL.


mlr filter -v      1 ? 2 : 3 ? 4 : 5 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="? :", type=OPERATOR:
        text="1", type=NUMERIC_LITERAL.
        text="2", type=NUMERIC_LITERAL.
        text="? :", type=OPERATOR:
            text="3", type=NUMERIC_LITERAL.
            text="4", type=NUMERIC_LITERAL.
            text="5", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="? :", type=OPERATOR:
        text="1", type=NUMERIC_LITERAL.
        text="2", type=NUMERIC_LITERAL.
        text="? :", type=OPERATOR:
            text="3", type=NUMERIC_LITERAL.
            text="4", type=NUMERIC_LITERAL.
            text="5", type=NUMERIC_LITERAL.



================================================================
DSL OPERATOR PRECEDENCE

mlr put -v $x = 1 || 2 ^^ 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="||", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="^^", type=OPERATOR:
                text="2", type=NUMERIC_LITERAL.
                text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="||", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="^^", type=OPERATOR:
                text="2", type=NUMERIC_LITERAL.
                text="3", type=NUMERIC_LITERAL.


mlr filter -v      1 || 2 ^^ 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="||", type=OPERATOR:
        text="1", type=NUMERIC_LITERAL.
        text="^^", type=OPERATOR:
            text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="||", type=OPERATOR:
        text="1", type=NUMERIC_LITERAL.
        text="^^", type=OPERATOR:
            text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr put -v $x = 1 || 2 && 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="||", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="&&", type=OPERATOR:
                text="2", type=NUMERIC_LITERAL.
                text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="||", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="&&", type=OPERATOR:
                text="2", type=NUMERIC_LITERAL.
                text="3", type=NUMERIC_LITERAL.


mlr filter -v      1 || 2 && 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="||", type=OPERATOR:
        text="1", type=NUMERIC_LITERAL.
        text="&&", type=OPERATOR:
            text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="||", type=OPERATOR:
        text="1", type=NUMERIC_LITERAL.
        text="&&", type=OPERATOR:
            text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr put -v $x = 1 ^^ 2 || 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="||", type=OPERATOR:
            text="^^", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="||", type=OPERATOR:
            text="^^", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr filter -v      1 ^^ 2 || 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="||", type=OPERATOR:
        text="^^", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="||", type=OPERATOR:
        text="^^", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.


mlr put -v $x = 1 ^^ 2 && 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="^^", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="&&", type=OPERATOR:
                text="2", type=NUMERIC_LITERAL.
                text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="^^", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="&&", type=OPERATOR:
                text="2", type=NUMERIC_LITERAL.
                text="3", type=NUMERIC_LITERAL.


mlr filter -v      1 ^^ 2 && 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="^^", type=OPERATOR:
        text="1", type=NUMERIC_LITERAL.
        text="&&", type=OPERATOR:
            text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="^^", type=OPERATOR:
        text="1", type=NUMERIC_LITERAL.
        text="&&", type=OPERATOR:
            text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr put -v $x = 1 && 2 || 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="||", type=OPERATOR:
            text="&&", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="||", type=OPERATOR:
            text="&&", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr filter -v      1 && 2 || 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="||", type=OPERATOR:
        text="&&", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="||", type=OPERATOR:
        text="&&", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.


mlr put -v $x = 1 && 2 ^^ 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="^^", type=OPERATOR:
            text="&&", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="^^", type=OPERATOR:
            text="&&", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr filter -v      1 && 2 ^^ 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="^^", type=OPERATOR:
        text="&&", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="^^", type=OPERATOR:
        text="&&", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.


mlr put -v $x =  1 == 2 <= 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="==", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="<=", type=OPERATOR:
                text="2", type=NUMERIC_LITERAL.
                text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="==", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="<=", type=OPERATOR:
                text="2", type=NUMERIC_LITERAL.
                text="3", type=NUMERIC_LITERAL.


mlr filter -v       1 == 2 <= 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="==", type=OPERATOR:
        text="1", type=NUMERIC_LITERAL.
        text="<=", type=OPERATOR:
            text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="==", type=OPERATOR:
        text="1", type=NUMERIC_LITERAL.
        text="<=", type=OPERATOR:
            text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr put -v $x =  1 <= 2 == 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="==", type=OPERATOR:
            text="<=", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="==", type=OPERATOR:
            text="<=", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr filter -v       1 <= 2 == 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="==", type=OPERATOR:
        text="<=", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="==", type=OPERATOR:
        text="<=", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.


mlr put -v $x =  1 <= 2 |  3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="<=", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="|", type=OPERATOR:
                text="2", type=NUMERIC_LITERAL.
                text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="<=", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="|", type=OPERATOR:
                text="2", type=NUMERIC_LITERAL.
                text="3", type=NUMERIC_LITERAL.


mlr filter -v       1 <= 2 |  3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="<=", type=OPERATOR:
        text="1", type=NUMERIC_LITERAL.
        text="|", type=OPERATOR:
            text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="<=", type=OPERATOR:
        text="1", type=NUMERIC_LITERAL.
        text="|", type=OPERATOR:
            text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr put -v $x =  1 |  2 <= 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="<=", type=OPERATOR:
            text="|", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="<=", type=OPERATOR:
            text="|", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr filter -v       1 |  2 <= 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="<=", type=OPERATOR:
        text="|", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="<=", type=OPERATOR:
        text="|", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.


mlr put -v $x =  1 |  2 ^  3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="|", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="^", type=OPERATOR:
                text="2", type=NUMERIC_LITERAL.
                text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="|", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="^", type=OPERATOR:
                text="2", type=NUMERIC_LITERAL.
                text="3", type=NUMERIC_LITERAL.


mlr filter -v       1 |  2 ^  3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="|", type=OPERATOR:
        text="1", type=NUMERIC_LITERAL.
        text="^", type=OPERATOR:
            text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="|", type=OPERATOR:
        text="1", type=NUMERIC_LITERAL.
        text="^", type=OPERATOR:
            text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr put -v $x =  1 ^  2 |  3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="|", type=OPERATOR:
            text="^", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="|", type=OPERATOR:
            text="^", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr filter -v       1 ^  2 |  3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="|", type=OPERATOR:
        text="^", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="|", type=OPERATOR:
        text="^", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.


mlr put -v $x =  1 ^  2 &  3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="^", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="&", type=OPERATOR:
                text="2", type=NUMERIC_LITERAL.
                text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="^", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="&", type=OPERATOR:
                text="2", type=NUMERIC_LITERAL.
                text="3", type=NUMERIC_LITERAL.


mlr filter -v       1 ^  2 &  3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="^", type=OPERATOR:
        text="1", type=NUMERIC_LITERAL.
        text="&", type=OPERATOR:
            text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="^", type=OPERATOR:
        text="1", type=NUMERIC_LITERAL.
        text="&", type=OPERATOR:
            text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr put -v $x =  1 &  2 ^  3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="^", type=OPERATOR:
            text="&", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="^", type=OPERATOR:
            text="&", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr filter -v       1 &  2 ^  3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="^", type=OPERATOR:
        text="&", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="^", type=OPERATOR:
        text="&", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.


mlr put -v $x =  1 &  2 << 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="&", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="<<", type=OPERATOR:
                text="2", type=NUMERIC_LITERAL.
                text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="&", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="<<", type=OPERATOR:
                text="2", type=NUMERIC_LITERAL.
                text="3", type=NUMERIC_LITERAL.


mlr filter -v       1 &  2 << 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="&", type=OPERATOR:
        text="1", type=NUMERIC_LITERAL.
        text="<<", type=OPERATOR:
            text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="&", type=OPERATOR:
        text="1", type=NUMERIC_LITERAL.
        text="<<", type=OPERATOR:
            text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr put -v $x =  1 << 2 &  3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="&", type=OPERATOR:
            text="<<", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="&", type=OPERATOR:
            text="<<", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr filter -v       1 << 2 &  3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="&", type=OPERATOR:
        text="<<", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="&", type=OPERATOR:
        text="<<", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.


mlr put -v $x =  1 +  2 * 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="+", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="*", type=OPERATOR:
                text="2", type=NUMERIC_LITERAL.
                text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="+", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="*", type=OPERATOR:
                text="2", type=NUMERIC_LITERAL.
                text="3", type=NUMERIC_LITERAL.


mlr filter -v       1 +  2 * 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="+", type=OPERATOR:
        text="1", type=NUMERIC_LITERAL.
        text="*", type=OPERATOR:
            text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="+", type=OPERATOR:
        text="1", type=NUMERIC_LITERAL.
        text="*", type=OPERATOR:
            text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr put -v $x =  1 *  2 + 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="+", type=OPERATOR:
            text="*", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="+", type=OPERATOR:
            text="*", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr filter -v       1 *  2 + 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="+", type=OPERATOR:
        text="*", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="+", type=OPERATOR:
        text="*", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.


mlr put -v $x =  1 + (2 * 3) /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="+", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="*", type=OPERATOR:
                text="2", type=NUMERIC_LITERAL.
                text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="+", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="*", type=OPERATOR:
                text="2", type=NUMERIC_LITERAL.
                text="3", type=NUMERIC_LITERAL.


mlr filter -v       1 + (2 * 3) /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="+", type=OPERATOR:
        text="1", type=NUMERIC_LITERAL.
        text="*", type=OPERATOR:
            text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="+", type=OPERATOR:
        text="1", type=NUMERIC_LITERAL.
        text="*", type=OPERATOR:
            text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr put -v $x =  1 * (2 + 3) /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="*", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="+", type=OPERATOR:
                text="2", type=NUMERIC_LITERAL.
                text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="*", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="+", type=OPERATOR:
                text="2", type=NUMERIC_LITERAL.
                text="3", type=NUMERIC_LITERAL.


mlr filter -v       1 * (2 + 3) /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="*", type=OPERATOR:
        text="1", type=NUMERIC_LITERAL.
        text="+", type=OPERATOR:
            text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="*", type=OPERATOR:
        text="1", type=NUMERIC_LITERAL.
        text="+", type=OPERATOR:
            text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr put -v $x = (1 + 2) * 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="*", type=OPERATOR:
            text="+", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="*", type=OPERATOR:
            text="+", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr filter -v      (1 + 2) * 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="*", type=OPERATOR:
        text="+", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="*", type=OPERATOR:
        text="+", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.


mlr put -v $x = (1 * 2) + 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="+", type=OPERATOR:
            text="*", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="+", type=OPERATOR:
            text="*", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr filter -v      (1 * 2) + 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="+", type=OPERATOR:
        text="*", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="+", type=OPERATOR:
        text="*", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.


mlr put -v $x =  1 +   2 ** 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="+", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="**", type=OPERATOR:
                text="2", type=NUMERIC_LITERAL.
                text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="+", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="**", type=OPERATOR:
                text="2", type=NUMERIC_LITERAL.
                text="3", type=NUMERIC_LITERAL.


mlr filter -v       1 +   2 ** 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="+", type=OPERATOR:
        text="1", type=NUMERIC_LITERAL.
        text="**", type=OPERATOR:
            text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="+", type=OPERATOR:
        text="1", type=NUMERIC_LITERAL.
        text="**", type=OPERATOR:
            text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr put -v $x =  1 **  2 +  3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="+", type=OPERATOR:
            text="**", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="+", type=OPERATOR:
            text="**", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr filter -v       1 **  2 +  3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="+", type=OPERATOR:
        text="**", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="+", type=OPERATOR:
        text="**", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.


mlr put -v $x =  1 +  (2 ** 3) /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="+", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="**", type=OPERATOR:
                text="2", type=NUMERIC_LITERAL.
                text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="+", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="**", type=OPERATOR:
                text="2", type=NUMERIC_LITERAL.
                text="3", type=NUMERIC_LITERAL.


mlr filter -v       1 +  (2 ** 3) /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="+", type=OPERATOR:
        text="1", type=NUMERIC_LITERAL.
        text="**", type=OPERATOR:
            text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="+", type=OPERATOR:
        text="1", type=NUMERIC_LITERAL.
        text="**", type=OPERATOR:
            text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr put -v $x =  1 ** (2 +  3) /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="**", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="+", type=OPERATOR:
                text="2", type=NUMERIC_LITERAL.
                text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="**", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="+", type=OPERATOR:
                text="2", type=NUMERIC_LITERAL.
                text="3", type=NUMERIC_LITERAL.


mlr filter -v       1 ** (2 +  3) /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="**", type=OPERATOR:
        text="1", type=NUMERIC_LITERAL.
        text="+", type=OPERATOR:
            text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="**", type=OPERATOR:
        text="1", type=NUMERIC_LITERAL.
        text="+", type=OPERATOR:
            text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr put -v $x = (1 +  2) ** 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="**", type=OPERATOR:
            text="+", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="**", type=OPERATOR:
            text="+", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr filter -v      (1 +  2) ** 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="**", type=OPERATOR:
        text="+", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="**", type=OPERATOR:
        text="+", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.


mlr put -v $x = (1 ** 2) +  3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="+", type=OPERATOR:
            text="**", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="+", type=OPERATOR:
            text="**", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr filter -v      (1 ** 2) +  3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="+", type=OPERATOR:
        text="**", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="+", type=OPERATOR:
        text="**", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.


mlr put -v $x =  1 *   2 ** 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="*", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="**", type=OPERATOR:
                text="2", type=NUMERIC_LITERAL.
                text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="*", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="**", type=OPERATOR:
                text="2", type=NUMERIC_LITERAL.
                text="3", type=NUMERIC_LITERAL.


mlr filter -v       1 *   2 ** 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="*", type=OPERATOR:
        text="1", type=NUMERIC_LITERAL.
        text="**", type=OPERATOR:
            text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="*", type=OPERATOR:
        text="1", type=NUMERIC_LITERAL.
        text="**", type=OPERATOR:
            text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr put -v $x =  1 **  2 *  3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="*", type=OPERATOR:
            text="**", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="*", type=OPERATOR:
            text="**", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr filter -v       1 **  2 *  3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="*", type=OPERATOR:
        text="**", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="*", type=OPERATOR:
        text="**", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.


mlr put -v $x =  1 *  (2 ** 3) /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="*", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="**", type=OPERATOR:
                text="2", type=NUMERIC_LITERAL.
                text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="*", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="**", type=OPERATOR:
                text="2", type=NUMERIC_LITERAL.
                text="3", type=NUMERIC_LITERAL.


mlr filter -v       1 *  (2 ** 3) /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="*", type=OPERATOR:
        text="1", type=NUMERIC_LITERAL.
        text="**", type=OPERATOR:
            text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="*", type=OPERATOR:
        text="1", type=NUMERIC_LITERAL.
        text="**", type=OPERATOR:
            text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr put -v $x =  1 ** (2 *  3) /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="**", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="*", type=OPERATOR:
                text="2", type=NUMERIC_LITERAL.
                text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="**", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="*", type=OPERATOR:
                text="2", type=NUMERIC_LITERAL.
                text="3", type=NUMERIC_LITERAL.


mlr filter -v       1 ** (2 *  3) /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="**", type=OPERATOR:
        text="1", type=NUMERIC_LITERAL.
        text="*", type=OPERATOR:
            text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="**", type=OPERATOR:
        text="1", type=NUMERIC_LITERAL.
        text="*", type=OPERATOR:
            text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr put -v $x = (1 *  2) ** 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="**", type=OPERATOR:
            text="*", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="**", type=OPERATOR:
            text="*", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr filter -v      (1 *  2) ** 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="**", type=OPERATOR:
        text="*", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="**", type=OPERATOR:
        text="*", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.


mlr put -v $x = (1 ** 2) *  3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="*", type=OPERATOR:
            text="**", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="*", type=OPERATOR:
            text="**", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr filter -v      (1 ** 2) *  3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="*", type=OPERATOR:
        text="**", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="*", type=OPERATOR:
        text="**", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.


mlr put -v $x = -1 +  2 *  3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="+", type=OPERATOR:
            text="-", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
            text="*", type=OPERATOR:
                text="2", type=NUMERIC_LITERAL.
                text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="+", type=OPERATOR:
            text="-", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
            text="*", type=OPERATOR:
                text="2", type=NUMERIC_LITERAL.
                text="3", type=NUMERIC_LITERAL.


mlr filter -v      -1 +  2 *  3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="+", type=OPERATOR:
        text="-", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
        text="*", type=OPERATOR:
            text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="+", type=OPERATOR:
        text="-", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
        text="*", type=OPERATOR:
            text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr put -v $x = -1 *  2 +  3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="+", type=OPERATOR:
            text="*", type=OPERATOR:
                text="-", type=OPERATOR:
                    text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="+", type=OPERATOR:
            text="*", type=OPERATOR:
                text="-", type=OPERATOR:
                    text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr filter -v      -1 *  2 +  3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="+", type=OPERATOR:
        text="*", type=OPERATOR:
            text="-", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="+", type=OPERATOR:
        text="*", type=OPERATOR:
            text="-", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.


mlr put -v $x =  1 + -2 *  3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="+", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="*", type=OPERATOR:
                text="-", type=OPERATOR:
                    text="2", type=NUMERIC_LITERAL.
                text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="+", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="*", type=OPERATOR:
                text="-", type=OPERATOR:
                    text="2", type=NUMERIC_LITERAL.
                text="3", type=NUMERIC_LITERAL.


mlr filter -v       1 + -2 *  3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="+", type=OPERATOR:
        text="1", type=NUMERIC_LITERAL.
        text="*", type=OPERATOR:
            text="-", type=OPERATOR:
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="+", type=OPERATOR:
        text="1", type=NUMERIC_LITERAL.
        text="*", type=OPERATOR:
            text="-", type=OPERATOR:
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr put -v $x =  1 * -2 +  3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="+", type=OPERATOR:
            text="*", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="-", type=OPERATOR:
                    text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="+", type=OPERATOR:
            text="*", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="-", type=OPERATOR:
                    text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr filter -v       1 * -2 +  3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="+", type=OPERATOR:
        text="*", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="-", type=OPERATOR:
                text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="+", type=OPERATOR:
        text="*", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="-", type=OPERATOR:
                text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.


mlr put -v $x =  1 +  2 * -3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="+", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="*", type=OPERATOR:
                text="2", type=NUMERIC_LITERAL.
                text="-", type=OPERATOR:
                    text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="+", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="*", type=OPERATOR:
                text="2", type=NUMERIC_LITERAL.
                text="-", type=OPERATOR:
                    text="3", type=NUMERIC_LITERAL.


mlr filter -v       1 +  2 * -3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="+", type=OPERATOR:
        text="1", type=NUMERIC_LITERAL.
        text="*", type=OPERATOR:
            text="2", type=NUMERIC_LITERAL.
            text="-", type=OPERATOR:
                text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="+", type=OPERATOR:
        text="1", type=NUMERIC_LITERAL.
        text="*", type=OPERATOR:
            text="2", type=NUMERIC_LITERAL.
            text="-", type=OPERATOR:
                text="3", type=NUMERIC_LITERAL.


mlr put -v $x =  1 *  2 + -3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="+", type=OPERATOR:
            text="*", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="-", type=OPERATOR:
                text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="+", type=OPERATOR:
            text="*", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="-", type=OPERATOR:
                text="3", type=NUMERIC_LITERAL.


mlr filter -v       1 *  2 + -3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="+", type=OPERATOR:
        text="*", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="-", type=OPERATOR:
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="+", type=OPERATOR:
        text="*", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="-", type=OPERATOR:
            text="3", type=NUMERIC_LITERAL.


mlr put -v $x = ~1 |  2 &  3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="|", type=OPERATOR:
            text="~", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
            text="&", type=OPERATOR:
                text="2", type=NUMERIC_LITERAL.
                text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="|", type=OPERATOR:
            text="~", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
            text="&", type=OPERATOR:
                text="2", type=NUMERIC_LITERAL.
                text="3", type=NUMERIC_LITERAL.


mlr filter -v      ~1 |  2 &  3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="|", type=OPERATOR:
        text="~", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
        text="&", type=OPERATOR:
            text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="|", type=OPERATOR:
        text="~", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
        text="&", type=OPERATOR:
            text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr put -v $x = ~1 &  2 |  3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="|", type=OPERATOR:
            text="&", type=OPERATOR:
                text="~", type=OPERATOR:
                    text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="|", type=OPERATOR:
            text="&", type=OPERATOR:
                text="~", type=OPERATOR:
                    text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr filter -v      ~1 &  2 |  3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="|", type=OPERATOR:
        text="&", type=OPERATOR:
            text="~", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="|", type=OPERATOR:
        text="&", type=OPERATOR:
            text="~", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.


mlr put -v $x =  1 | ~2 &  3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="|", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="&", type=OPERATOR:
                text="~", type=OPERATOR:
                    text="2", type=NUMERIC_LITERAL.
                text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="|", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="&", type=OPERATOR:
                text="~", type=OPERATOR:
                    text="2", type=NUMERIC_LITERAL.
                text="3", type=NUMERIC_LITERAL.


mlr filter -v       1 | ~2 &  3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="|", type=OPERATOR:
        text="1", type=NUMERIC_LITERAL.
        text="&", type=OPERATOR:
            text="~", type=OPERATOR:
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="|", type=OPERATOR:
        text="1", type=NUMERIC_LITERAL.
        text="&", type=OPERATOR:
            text="~", type=OPERATOR:
                text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr put -v $x =  1 & ~2 |  3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="|", type=OPERATOR:
            text="&", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="~", type=OPERATOR:
                    text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="|", type=OPERATOR:
            text="&", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="~", type=OPERATOR:
                    text="2", type=NUMERIC_LITERAL.
            text="3", type=NUMERIC_LITERAL.


mlr filter -v       1 & ~2 |  3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="|", type=OPERATOR:
        text="&", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="~", type=OPERATOR:
                text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="|", type=OPERATOR:
        text="&", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="~", type=OPERATOR:
                text="2", type=NUMERIC_LITERAL.
        text="3", type=NUMERIC_LITERAL.


mlr put -v $x =  1 |  2 & ~3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="|", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="&", type=OPERATOR:
                text="2", type=NUMERIC_LITERAL.
                text="~", type=OPERATOR:
                    text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="|", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="&", type=OPERATOR:
                text="2", type=NUMERIC_LITERAL.
                text="~", type=OPERATOR:
                    text="3", type=NUMERIC_LITERAL.


mlr filter -v       1 |  2 & ~3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="|", type=OPERATOR:
        text="1", type=NUMERIC_LITERAL.
        text="&", type=OPERATOR:
            text="2", type=NUMERIC_LITERAL.
            text="~", type=OPERATOR:
                text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="|", type=OPERATOR:
        text="1", type=NUMERIC_LITERAL.
        text="&", type=OPERATOR:
            text="2", type=NUMERIC_LITERAL.
            text="~", type=OPERATOR:
                text="3", type=NUMERIC_LITERAL.


mlr put -v $x =  1 &  2 | ~3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="|", type=OPERATOR:
            text="&", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="~", type=OPERATOR:
                text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="|", type=OPERATOR:
            text="&", type=OPERATOR:
                text="1", type=NUMERIC_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="~", type=OPERATOR:
                text="3", type=NUMERIC_LITERAL.


mlr filter -v       1 &  2 | ~3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="|", type=OPERATOR:
        text="&", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="~", type=OPERATOR:
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="|", type=OPERATOR:
        text="&", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="~", type=OPERATOR:
            text="3", type=NUMERIC_LITERAL.


mlr put -v $x = $a==1 && $b == 1 && $c == 1 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="&&", type=OPERATOR:
            text="&&", type=OPERATOR:
                text="==", type=OPERATOR:
                    text="a", type=FIELD_NAME.
                    text="1", type=NUMERIC_LITERAL.
                text="==", type=OPERATOR:
                    text="b", type=FIELD_NAME.
                    text="1", type=NUMERIC_LITERAL.
            text="==", type=OPERATOR:
                text="c", type=FIELD_NAME.
                text="1", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="&&", type=OPERATOR:
            text="&&", type=OPERATOR:
                text="==", type=OPERATOR:
                    text="a", type=FIELD_NAME.
                    text="1", type=NUMERIC_LITERAL.
                text="==", type=OPERATOR:
                    text="b", type=FIELD_NAME.
                    text="1", type=NUMERIC_LITERAL.
            text="==", type=OPERATOR:
                text="c", type=FIELD_NAME.
                text="1", type=NUMERIC_LITERAL.


mlr filter -v      $a==1 && $b == 1 && $c == 1 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="&&", type=OPERATOR:
        text="&&", type=OPERATOR:
            text="==", type=OPERATOR:
                text="a", type=FIELD_NAME.
                text="1", type=NUMERIC_LITERAL.
            text="==", type=OPERATOR:
                text="b", type=FIELD_NAME.
                text="1", type=NUMERIC_LITERAL.
        text="==", type=OPERATOR:
            text="c", type=FIELD_NAME.
            text="1", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="&&", type=OPERATOR:
        text="&&", type=OPERATOR:
            text="==", type=OPERATOR:
                text="a", type=FIELD_NAME.
                text="1", type=NUMERIC_LITERAL.
            text="==", type=OPERATOR:
                text="b", type=FIELD_NAME.
                text="1", type=NUMERIC_LITERAL.
        text="==", type=OPERATOR:
            text="c", type=FIELD_NAME.
            text="1", type=NUMERIC_LITERAL.


mlr put -v $x = $a==1 || $b == 1 && $c == 1 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="||", type=OPERATOR:
            text="==", type=OPERATOR:
                text="a", type=FIELD_NAME.
                text="1", type=NUMERIC_LITERAL.
            text="&&", type=OPERATOR:
                text="==", type=OPERATOR:
                    text="b", type=FIELD_NAME.
                    text="1", type=NUMERIC_LITERAL.
                text="==", type=OPERATOR:
                    text="c", type=FIELD_NAME.
                    text="1", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="||", type=OPERATOR:
            text="==", type=OPERATOR:
                text="a", type=FIELD_NAME.
                text="1", type=NUMERIC_LITERAL.
            text="&&", type=OPERATOR:
                text="==", type=OPERATOR:
                    text="b", type=FIELD_NAME.
                    text="1", type=NUMERIC_LITERAL.
                text="==", type=OPERATOR:
                    text="c", type=FIELD_NAME.
                    text="1", type=NUMERIC_LITERAL.


mlr filter -v      $a==1 || $b == 1 && $c == 1 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="||", type=OPERATOR:
        text="==", type=OPERATOR:
            text="a", type=FIELD_NAME.
            text="1", type=NUMERIC_LITERAL.
        text="&&", type=OPERATOR:
            text="==", type=OPERATOR:
                text="b", type=FIELD_NAME.
                text="1", type=NUMERIC_LITERAL.
            text="==", type=OPERATOR:
                text="c", type=FIELD_NAME.
                text="1", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="||", type=OPERATOR:
        text="==", type=OPERATOR:
            text="a", type=FIELD_NAME.
            text="1", type=NUMERIC_LITERAL.
        text="&&", type=OPERATOR:
            text="==", type=OPERATOR:
                text="b", type=FIELD_NAME.
                text="1", type=NUMERIC_LITERAL.
            text="==", type=OPERATOR:
                text="c", type=FIELD_NAME.
                text="1", type=NUMERIC_LITERAL.


mlr put -v $x = $a==1 || $b == 1 || $c == 1 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="||", type=OPERATOR:
            text="||", type=OPERATOR:
                text="==", type=OPERATOR:
                    text="a", type=FIELD_NAME.
                    text="1", type=NUMERIC_LITERAL.
                text="==", type=OPERATOR:
                    text="b", type=FIELD_NAME.
                    text="1", type=NUMERIC_LITERAL.
            text="==", type=OPERATOR:
                text="c", type=FIELD_NAME.
                text="1", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="||", type=OPERATOR:
            text="||", type=OPERATOR:
                text="==", type=OPERATOR:
                    text="a", type=FIELD_NAME.
                    text="1", type=NUMERIC_LITERAL.
                text="==", type=OPERATOR:
                    text="b", type=FIELD_NAME.
                    text="1", type=NUMERIC_LITERAL.
            text="==", type=OPERATOR:
                text="c", type=FIELD_NAME.
                text="1", type=NUMERIC_LITERAL.


mlr filter -v      $a==1 || $b == 1 || $c == 1 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="||", type=OPERATOR:
        text="||", type=OPERATOR:
            text="==", type=OPERATOR:
                text="a", type=FIELD_NAME.
                text="1", type=NUMERIC_LITERAL.
            text="==", type=OPERATOR:
                text="b", type=FIELD_NAME.
                text="1", type=NUMERIC_LITERAL.
        text="==", type=OPERATOR:
            text="c", type=FIELD_NAME.
            text="1", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="||", type=OPERATOR:
        text="||", type=OPERATOR:
            text="==", type=OPERATOR:
                text="a", type=FIELD_NAME.
                text="1", type=NUMERIC_LITERAL.
            text="==", type=OPERATOR:
                text="b", type=FIELD_NAME.
                text="1", type=NUMERIC_LITERAL.
        text="==", type=OPERATOR:
            text="c", type=FIELD_NAME.
            text="1", type=NUMERIC_LITERAL.


mlr put -v $x = $a==1 && $b == 1 || $c == 1 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="||", type=OPERATOR:
            text="&&", type=OPERATOR:
                text="==", type=OPERATOR:
                    text="a", type=FIELD_NAME.
                    text="1", type=NUMERIC_LITERAL.
                text="==", type=OPERATOR:
                    text="b", type=FIELD_NAME.
                    text="1", type=NUMERIC_LITERAL.
            text="==", type=OPERATOR:
                text="c", type=FIELD_NAME.
                text="1", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="||", type=OPERATOR:
            text="&&", type=OPERATOR:
                text="==", type=OPERATOR:
                    text="a", type=FIELD_NAME.
                    text="1", type=NUMERIC_LITERAL.
                text="==", type=OPERATOR:
                    text="b", type=FIELD_NAME.
                    text="1", type=NUMERIC_LITERAL.
            text="==", type=OPERATOR:
                text="c", type=FIELD_NAME.
                text="1", type=NUMERIC_LITERAL.


mlr filter -v      $a==1 && $b == 1 || $c == 1 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="||", type=OPERATOR:
        text="&&", type=OPERATOR:
            text="==", type=OPERATOR:
                text="a", type=FIELD_NAME.
                text="1", type=NUMERIC_LITERAL.
            text="==", type=OPERATOR:
                text="b", type=FIELD_NAME.
                text="1", type=NUMERIC_LITERAL.
        text="==", type=OPERATOR:
            text="c", type=FIELD_NAME.
            text="1", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="||", type=OPERATOR:
        text="&&", type=OPERATOR:
            text="==", type=OPERATOR:
                text="a", type=FIELD_NAME.
                text="1", type=NUMERIC_LITERAL.
            text="==", type=OPERATOR:
                text="b", type=FIELD_NAME.
                text="1", type=NUMERIC_LITERAL.
        text="==", type=OPERATOR:
            text="c", type=FIELD_NAME.
            text="1", type=NUMERIC_LITERAL.


mlr put -v $x = $a==1 ? $b == 2 : $c == 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="? :", type=OPERATOR:
            text="==", type=OPERATOR:
                text="a", type=FIELD_NAME.
                text="1", type=NUMERIC_LITERAL.
            text="==", type=OPERATOR:
                text="b", type=FIELD_NAME.
                text="2", type=NUMERIC_LITERAL.
            text="==", type=OPERATOR:
                text="c", type=FIELD_NAME.
                text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="? :", type=OPERATOR:
            text="==", type=OPERATOR:
                text="a", type=FIELD_NAME.
                text="1", type=NUMERIC_LITERAL.
            text="==", type=OPERATOR:
                text="b", type=FIELD_NAME.
                text="2", type=NUMERIC_LITERAL.
            text="==", type=OPERATOR:
                text="c", type=FIELD_NAME.
                text="3", type=NUMERIC_LITERAL.


mlr filter -v      $a==1 ? $b == 2 : $c == 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="? :", type=OPERATOR:
        text="==", type=OPERATOR:
            text="a", type=FIELD_NAME.
            text="1", type=NUMERIC_LITERAL.
        text="==", type=OPERATOR:
            text="b", type=FIELD_NAME.
            text="2", type=NUMERIC_LITERAL.
        text="==", type=OPERATOR:
            text="c", type=FIELD_NAME.
            text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="? :", type=OPERATOR:
        text="==", type=OPERATOR:
            text="a", type=FIELD_NAME.
            text="1", type=NUMERIC_LITERAL.
        text="==", type=OPERATOR:
            text="b", type=FIELD_NAME.
            text="2", type=NUMERIC_LITERAL.
        text="==", type=OPERATOR:
            text="c", type=FIELD_NAME.
            text="3", type=NUMERIC_LITERAL.


mlr put -v $x = true /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="true", type=BOOLEAN_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="true", type=BOOLEAN_LITERAL.


mlr filter -v      true /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="true", type=BOOLEAN_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="true", type=BOOLEAN_LITERAL.


mlr put -v true || 1==0; $x = 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="||", type=OPERATOR:
        text="true", type=BOOLEAN_LITERAL.
        text="==", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="0", type=NUMERIC_LITERAL.
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="||", type=OPERATOR:
        text="true", type=BOOLEAN_LITERAL.
        text="==", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="0", type=NUMERIC_LITERAL.
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="3", type=NUMERIC_LITERAL.


mlr filter -v         true || 1==0 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="||", type=OPERATOR:
        text="true", type=BOOLEAN_LITERAL.
        text="==", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="0", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="||", type=OPERATOR:
        text="true", type=BOOLEAN_LITERAL.
        text="==", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="0", type=NUMERIC_LITERAL.


mlr put -v 1==0 || false; $x = 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="||", type=OPERATOR:
        text="==", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="0", type=NUMERIC_LITERAL.
        text="false", type=BOOLEAN_LITERAL.
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="||", type=OPERATOR:
        text="==", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="0", type=NUMERIC_LITERAL.
        text="false", type=BOOLEAN_LITERAL.
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="3", type=NUMERIC_LITERAL.


mlr filter -v         1==0 || false /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="||", type=OPERATOR:
        text="==", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="0", type=NUMERIC_LITERAL.
        text="false", type=BOOLEAN_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="||", type=OPERATOR:
        text="==", type=OPERATOR:
            text="1", type=NUMERIC_LITERAL.
            text="0", type=NUMERIC_LITERAL.
        text="false", type=BOOLEAN_LITERAL.


mlr put -v true && false; $x = 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="&&", type=OPERATOR:
        text="true", type=BOOLEAN_LITERAL.
        text="false", type=BOOLEAN_LITERAL.
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="&&", type=OPERATOR:
        text="true", type=BOOLEAN_LITERAL.
        text="false", type=BOOLEAN_LITERAL.
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="3", type=NUMERIC_LITERAL.


mlr filter -v         true && false /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="&&", type=OPERATOR:
        text="true", type=BOOLEAN_LITERAL.
        text="false", type=BOOLEAN_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="&&", type=OPERATOR:
        text="true", type=BOOLEAN_LITERAL.
        text="false", type=BOOLEAN_LITERAL.


mlr put -v true && false && true; $x = 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="&&", type=OPERATOR:
        text="&&", type=OPERATOR:
            text="true", type=BOOLEAN_LITERAL.
            text="false", type=BOOLEAN_LITERAL.
        text="true", type=BOOLEAN_LITERAL.
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="&&", type=OPERATOR:
        text="&&", type=OPERATOR:
            text="true", type=BOOLEAN_LITERAL.
            text="false", type=BOOLEAN_LITERAL.
        text="true", type=BOOLEAN_LITERAL.
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="3", type=NUMERIC_LITERAL.


mlr filter -v         true && false && true /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="&&", type=OPERATOR:
        text="&&", type=OPERATOR:
            text="true", type=BOOLEAN_LITERAL.
            text="false", type=BOOLEAN_LITERAL.
        text="true", type=BOOLEAN_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="&&", type=OPERATOR:
        text="&&", type=OPERATOR:
            text="true", type=BOOLEAN_LITERAL.
            text="false", type=BOOLEAN_LITERAL.
        text="true", type=BOOLEAN_LITERAL.


mlr put -v $y += $x + 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="y", type=FIELD_NAME.
        text="+", type=OPERATOR:
            text="y", type=FIELD_NAME.
            text="+", type=OPERATOR:
                text="x", type=FIELD_NAME.
                text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="y", type=FIELD_NAME.
        text="+", type=OPERATOR:
            text="y", type=FIELD_NAME.
            text="+", type=OPERATOR:
                text="x", type=FIELD_NAME.
                text="3", type=NUMERIC_LITERAL.


mlr put -v $y += $x * 3 /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="y", type=FIELD_NAME.
        text="+", type=OPERATOR:
            text="y", type=FIELD_NAME.
            text="*", type=OPERATOR:
                text="x", type=FIELD_NAME.
                text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="y", type=FIELD_NAME.
        text="+", type=OPERATOR:
            text="y", type=FIELD_NAME.
            text="*", type=OPERATOR:
                text="x", type=FIELD_NAME.
                text="3", type=NUMERIC_LITERAL.


mlr put -v $y ||= $x /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="y", type=FIELD_NAME.
        text="||", type=OPERATOR:
            text="y", type=FIELD_NAME.
            text="x", type=FIELD_NAME.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="y", type=FIELD_NAME.
        text="||", type=OPERATOR:
            text="y", type=FIELD_NAME.
            text="x", type=FIELD_NAME.


mlr put -v $y ^^= $x /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="y", type=FIELD_NAME.
        text="^^", type=OPERATOR:
            text="y", type=FIELD_NAME.
            text="x", type=FIELD_NAME.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="y", type=FIELD_NAME.
        text="^^", type=OPERATOR:
            text="y", type=FIELD_NAME.
            text="x", type=FIELD_NAME.


mlr put -v $y &&= $x /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="y", type=FIELD_NAME.
        text="&&", type=OPERATOR:
            text="y", type=FIELD_NAME.
            text="x", type=FIELD_NAME.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="y", type=FIELD_NAME.
        text="&&", type=OPERATOR:
            text="y", type=FIELD_NAME.
            text="x", type=FIELD_NAME.


mlr put -v $y |=  $x /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="y", type=FIELD_NAME.
        text="|", type=OPERATOR:
            text="y", type=FIELD_NAME.
            text="x", type=FIELD_NAME.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="y", type=FIELD_NAME.
        text="|", type=OPERATOR:
            text="y", type=FIELD_NAME.
            text="x", type=FIELD_NAME.


mlr put -v $y ^=  $x /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="y", type=FIELD_NAME.
        text="^", type=OPERATOR:
            text="y", type=FIELD_NAME.
            text="x", type=FIELD_NAME.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="y", type=FIELD_NAME.
        text="^", type=OPERATOR:
            text="y", type=FIELD_NAME.
            text="x", type=FIELD_NAME.


mlr put -v $y &=  $x /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="y", type=FIELD_NAME.
        text="&", type=OPERATOR:
            text="y", type=FIELD_NAME.
            text="x", type=FIELD_NAME.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="y", type=FIELD_NAME.
        text="&", type=OPERATOR:
            text="y", type=FIELD_NAME.
            text="x", type=FIELD_NAME.


mlr put -v $y <<= $x /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="y", type=FIELD_NAME.
        text="<<", type=OPERATOR:
            text="y", type=FIELD_NAME.
            text="x", type=FIELD_NAME.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="y", type=FIELD_NAME.
        text="<<", type=OPERATOR:
            text="y", type=FIELD_NAME.
            text="x", type=FIELD_NAME.


mlr put -v $y >>= $x /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="y", type=FIELD_NAME.
        text=">>", type=OPERATOR:
            text="y", type=FIELD_NAME.
            text="x", type=FIELD_NAME.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="y", type=FIELD_NAME.
        text=">>", type=OPERATOR:
            text="y", type=FIELD_NAME.
            text="x", type=FIELD_NAME.


mlr put -v $y +=  $x /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="y", type=FIELD_NAME.
        text="+", type=OPERATOR:
            text="y", type=FIELD_NAME.
            text="x", type=FIELD_NAME.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="y", type=FIELD_NAME.
        text="+", type=OPERATOR:
            text="y", type=FIELD_NAME.
            text="x", type=FIELD_NAME.


mlr put -v $y -=  $x /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="y", type=FIELD_NAME.
        text="-", type=OPERATOR:
            text="y", type=FIELD_NAME.
            text="x", type=FIELD_NAME.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="y", type=FIELD_NAME.
        text="-", type=OPERATOR:
            text="y", type=FIELD_NAME.
            text="x", type=FIELD_NAME.


mlr put -v $y .=  $x /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="y", type=FIELD_NAME.
        text=".", type=OPERATOR:
            text="y", type=FIELD_NAME.
            text="x", type=FIELD_NAME.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="y", type=FIELD_NAME.
        text=".", type=OPERATOR:
            text="y", type=FIELD_NAME.
            text="x", type=FIELD_NAME.


mlr put -v $y *=  $x /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="y", type=FIELD_NAME.
        text="*", type=OPERATOR:
            text="y", type=FIELD_NAME.
            text="x", type=FIELD_NAME.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="y", type=FIELD_NAME.
        text="*", type=OPERATOR:
            text="y", type=FIELD_NAME.
            text="x", type=FIELD_NAME.


mlr put -v $y /=  $x /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="y", type=FIELD_NAME.
        text="/", type=OPERATOR:
            text="y", type=FIELD_NAME.
            text="x", type=FIELD_NAME.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="y", type=FIELD_NAME.
        text="/", type=OPERATOR:
            text="y", type=FIELD_NAME.
            text="x", type=FIELD_NAME.


mlr put -v $y //= $x /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="y", type=FIELD_NAME.
        text="//", type=OPERATOR:
            text="y", type=FIELD_NAME.
            text="x", type=FIELD_NAME.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="y", type=FIELD_NAME.
        text="//", type=OPERATOR:
            text="y", type=FIELD_NAME.
            text="x", type=FIELD_NAME.


mlr put -v $y %=  $x /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="y", type=FIELD_NAME.
        text="%", type=OPERATOR:
            text="y", type=FIELD_NAME.
            text="x", type=FIELD_NAME.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="y", type=FIELD_NAME.
        text="%", type=OPERATOR:
            text="y", type=FIELD_NAME.
            text="x", type=FIELD_NAME.


mlr put -v $y **= $x /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="y", type=FIELD_NAME.
        text="**", type=OPERATOR:
            text="y", type=FIELD_NAME.
            text="x", type=FIELD_NAME.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="y", type=FIELD_NAME.
        text="**", type=OPERATOR:
            text="y", type=FIELD_NAME.
            text="x", type=FIELD_NAME.



================================================================
DSL COMMENTS

mlr --from ./reg_test/input/abixy put 
  $s = 1;
  #$t = 2;
  $u = 3;

a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533,s=1,u=3
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797,s=1,u=3
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776,s=1,u=3
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463,s=1,u=3
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729,s=1,u=3
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697,s=1,u=3
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694,s=1,u=3
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006,s=1,u=3
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059,s=1,u=3
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864,s=1,u=3

mlr --from ./reg_test/input/abixy filter 
  NR == 1 ||
  #NR == 2 ||
  NR == 3

a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776

mlr --from ./reg_test/input/abixy put 
  $s = "here is a pound#sign"; # but this is a comment
  #$t = 2;
  $u = 3;

a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533,s=here is a pound#sign,u=3
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797,s=here is a pound#sign,u=3
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776,s=here is a pound#sign,u=3
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463,s=here is a pound#sign,u=3
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729,s=here is a pound#sign,u=3
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697,s=here is a pound#sign,u=3
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694,s=here is a pound#sign,u=3
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006,s=here is a pound#sign,u=3
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059,s=here is a pound#sign,u=3
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864,s=here is a pound#sign,u=3


================================================================
DSL EMPTY STATEMENTS

mlr -n put -v 
RAW AST:

AST ROOT:
(null)

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1


mlr -n filter -v 
RAW AST:

AST ROOT:
(null)
mlr: filter statement must not be empty.

mlr -n put -v begin {}
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="begin", type=BEGIN:
        text="begin_block", type=STATEMENT_BLOCK:

BLOCKED AST:

BEGIN-BLOCK:
text="begin", type=BEGIN: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="begin_block", type=STATEMENT_BLOCK:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1


mlr -n put -v begin {;}
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="begin", type=BEGIN:
        text="begin_block", type=STATEMENT_BLOCK:

BLOCKED AST:

BEGIN-BLOCK:
text="begin", type=BEGIN: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="begin_block", type=STATEMENT_BLOCK:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1


mlr -n put -v begin {;;}
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="begin", type=BEGIN:
        text="begin_block", type=STATEMENT_BLOCK:

BLOCKED AST:

BEGIN-BLOCK:
text="begin", type=BEGIN: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="begin_block", type=STATEMENT_BLOCK:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1


mlr -n put -v begin {;;;}
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="begin", type=BEGIN:
        text="begin_block", type=STATEMENT_BLOCK:

BLOCKED AST:

BEGIN-BLOCK:
text="begin", type=BEGIN: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="begin_block", type=STATEMENT_BLOCK:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1


mlr -n put -v begin {@x=1}
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="begin", type=BEGIN:
        text="begin_block", type=STATEMENT_BLOCK:
            text="=", type=OOSVAR_ASSIGNMENT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="x", type=STRING_LITERAL.
                text="1", type=NUMERIC_LITERAL.

BLOCKED AST:

BEGIN-BLOCK:
text="begin", type=BEGIN: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="begin_block", type=STATEMENT_BLOCK:
        text="=", type=OOSVAR_ASSIGNMENT:
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="x", type=STRING_LITERAL.
            text="1", type=NUMERIC_LITERAL.

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1


mlr -n put -v begin {@x=1;}
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="begin", type=BEGIN:
        text="begin_block", type=STATEMENT_BLOCK:
            text="=", type=OOSVAR_ASSIGNMENT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="x", type=STRING_LITERAL.
                text="1", type=NUMERIC_LITERAL.

BLOCKED AST:

BEGIN-BLOCK:
text="begin", type=BEGIN: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="begin_block", type=STATEMENT_BLOCK:
        text="=", type=OOSVAR_ASSIGNMENT:
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="x", type=STRING_LITERAL.
            text="1", type=NUMERIC_LITERAL.

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1


mlr -n put -v begin {;@x=1}
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="begin", type=BEGIN:
        text="begin_block", type=STATEMENT_BLOCK:
            text="=", type=OOSVAR_ASSIGNMENT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="x", type=STRING_LITERAL.
                text="1", type=NUMERIC_LITERAL.

BLOCKED AST:

BEGIN-BLOCK:
text="begin", type=BEGIN: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="begin_block", type=STATEMENT_BLOCK:
        text="=", type=OOSVAR_ASSIGNMENT:
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="x", type=STRING_LITERAL.
            text="1", type=NUMERIC_LITERAL.

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1


mlr -n put -v begin {@x=1;@y=2}
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="begin", type=BEGIN:
        text="begin_block", type=STATEMENT_BLOCK:
            text="=", type=OOSVAR_ASSIGNMENT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="x", type=STRING_LITERAL.
                text="1", type=NUMERIC_LITERAL.
            text="=", type=OOSVAR_ASSIGNMENT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="y", type=STRING_LITERAL.
                text="2", type=NUMERIC_LITERAL.

BLOCKED AST:

BEGIN-BLOCK:
text="begin", type=BEGIN: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="begin_block", type=STATEMENT_BLOCK:
        text="=", type=OOSVAR_ASSIGNMENT:
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="x", type=STRING_LITERAL.
            text="1", type=NUMERIC_LITERAL.
        text="=", type=OOSVAR_ASSIGNMENT:
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="y", type=STRING_LITERAL.
            text="2", type=NUMERIC_LITERAL.

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1


mlr -n put -v begin {@x=1;;@y=2}
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="begin", type=BEGIN:
        text="begin_block", type=STATEMENT_BLOCK:
            text="=", type=OOSVAR_ASSIGNMENT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="x", type=STRING_LITERAL.
                text="1", type=NUMERIC_LITERAL.
            text="=", type=OOSVAR_ASSIGNMENT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="y", type=STRING_LITERAL.
                text="2", type=NUMERIC_LITERAL.

BLOCKED AST:

BEGIN-BLOCK:
text="begin", type=BEGIN: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="begin_block", type=STATEMENT_BLOCK:
        text="=", type=OOSVAR_ASSIGNMENT:
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="x", type=STRING_LITERAL.
            text="1", type=NUMERIC_LITERAL.
        text="=", type=OOSVAR_ASSIGNMENT:
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="y", type=STRING_LITERAL.
            text="2", type=NUMERIC_LITERAL.

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1


mlr -n put -v true {}
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="cond", type=CONDITIONAL_BLOCK:
        text="true", type=BOOLEAN_LITERAL.
        text="cond_block", type=STATEMENT_BLOCK:

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=2 max_var_depth=1
    text="cond", type=CONDITIONAL_BLOCK:
        text="true", type=BOOLEAN_LITERAL.
        text="cond_block", type=STATEMENT_BLOCK: subframe_var_count=0


mlr -n put -v true {;}
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="cond", type=CONDITIONAL_BLOCK:
        text="true", type=BOOLEAN_LITERAL.
        text="cond_block", type=STATEMENT_BLOCK:

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=2 max_var_depth=1
    text="cond", type=CONDITIONAL_BLOCK:
        text="true", type=BOOLEAN_LITERAL.
        text="cond_block", type=STATEMENT_BLOCK: subframe_var_count=0


mlr -n put -v true {;;}
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="cond", type=CONDITIONAL_BLOCK:
        text="true", type=BOOLEAN_LITERAL.
        text="cond_block", type=STATEMENT_BLOCK:

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=2 max_var_depth=1
    text="cond", type=CONDITIONAL_BLOCK:
        text="true", type=BOOLEAN_LITERAL.
        text="cond_block", type=STATEMENT_BLOCK: subframe_var_count=0


mlr -n put -v true {;;;}
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="cond", type=CONDITIONAL_BLOCK:
        text="true", type=BOOLEAN_LITERAL.
        text="cond_block", type=STATEMENT_BLOCK:

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=2 max_var_depth=1
    text="cond", type=CONDITIONAL_BLOCK:
        text="true", type=BOOLEAN_LITERAL.
        text="cond_block", type=STATEMENT_BLOCK: subframe_var_count=0


mlr -n put -v true {@x=1}
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="cond", type=CONDITIONAL_BLOCK:
        text="true", type=BOOLEAN_LITERAL.
        text="cond_block", type=STATEMENT_BLOCK:
            text="=", type=OOSVAR_ASSIGNMENT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="x", type=STRING_LITERAL.
                text="1", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=2 max_var_depth=1
    text="cond", type=CONDITIONAL_BLOCK:
        text="true", type=BOOLEAN_LITERAL.
        text="cond_block", type=STATEMENT_BLOCK: subframe_var_count=0
            text="=", type=OOSVAR_ASSIGNMENT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="x", type=STRING_LITERAL.
                text="1", type=NUMERIC_LITERAL.


mlr -n put -v true {@x=1;}
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="cond", type=CONDITIONAL_BLOCK:
        text="true", type=BOOLEAN_LITERAL.
        text="cond_block", type=STATEMENT_BLOCK:
            text="=", type=OOSVAR_ASSIGNMENT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="x", type=STRING_LITERAL.
                text="1", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=2 max_var_depth=1
    text="cond", type=CONDITIONAL_BLOCK:
        text="true", type=BOOLEAN_LITERAL.
        text="cond_block", type=STATEMENT_BLOCK: subframe_var_count=0
            text="=", type=OOSVAR_ASSIGNMENT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="x", type=STRING_LITERAL.
                text="1", type=NUMERIC_LITERAL.


mlr -n put -v true {;@x=1}
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="cond", type=CONDITIONAL_BLOCK:
        text="true", type=BOOLEAN_LITERAL.
        text="cond_block", type=STATEMENT_BLOCK:
            text="=", type=OOSVAR_ASSIGNMENT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="x", type=STRING_LITERAL.
                text="1", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=2 max_var_depth=1
    text="cond", type=CONDITIONAL_BLOCK:
        text="true", type=BOOLEAN_LITERAL.
        text="cond_block", type=STATEMENT_BLOCK: subframe_var_count=0
            text="=", type=OOSVAR_ASSIGNMENT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="x", type=STRING_LITERAL.
                text="1", type=NUMERIC_LITERAL.


mlr -n put -v true {@x=1;@y=2}
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="cond", type=CONDITIONAL_BLOCK:
        text="true", type=BOOLEAN_LITERAL.
        text="cond_block", type=STATEMENT_BLOCK:
            text="=", type=OOSVAR_ASSIGNMENT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="x", type=STRING_LITERAL.
                text="1", type=NUMERIC_LITERAL.
            text="=", type=OOSVAR_ASSIGNMENT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="y", type=STRING_LITERAL.
                text="2", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=2 max_var_depth=1
    text="cond", type=CONDITIONAL_BLOCK:
        text="true", type=BOOLEAN_LITERAL.
        text="cond_block", type=STATEMENT_BLOCK: subframe_var_count=0
            text="=", type=OOSVAR_ASSIGNMENT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="x", type=STRING_LITERAL.
                text="1", type=NUMERIC_LITERAL.
            text="=", type=OOSVAR_ASSIGNMENT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="y", type=STRING_LITERAL.
                text="2", type=NUMERIC_LITERAL.


mlr -n put -v true {@x=1;;@y=2}
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="cond", type=CONDITIONAL_BLOCK:
        text="true", type=BOOLEAN_LITERAL.
        text="cond_block", type=STATEMENT_BLOCK:
            text="=", type=OOSVAR_ASSIGNMENT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="x", type=STRING_LITERAL.
                text="1", type=NUMERIC_LITERAL.
            text="=", type=OOSVAR_ASSIGNMENT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="y", type=STRING_LITERAL.
                text="2", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=2 max_var_depth=1
    text="cond", type=CONDITIONAL_BLOCK:
        text="true", type=BOOLEAN_LITERAL.
        text="cond_block", type=STATEMENT_BLOCK: subframe_var_count=0
            text="=", type=OOSVAR_ASSIGNMENT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="x", type=STRING_LITERAL.
                text="1", type=NUMERIC_LITERAL.
            text="=", type=OOSVAR_ASSIGNMENT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="y", type=STRING_LITERAL.
                text="2", type=NUMERIC_LITERAL.


mlr -n put -v end {}
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="end", type=END:
        text="end_block", type=STATEMENT_BLOCK:

BLOCKED AST:

END-BLOCK:
text="end", type=END: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="end_block", type=STATEMENT_BLOCK:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1


mlr -n put -v end {;}
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="end", type=END:
        text="end_block", type=STATEMENT_BLOCK:

BLOCKED AST:

END-BLOCK:
text="end", type=END: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="end_block", type=STATEMENT_BLOCK:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1


mlr -n put -v end {;;}
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="end", type=END:
        text="end_block", type=STATEMENT_BLOCK:

BLOCKED AST:

END-BLOCK:
text="end", type=END: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="end_block", type=STATEMENT_BLOCK:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1


mlr -n put -v end {;;;}
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="end", type=END:
        text="end_block", type=STATEMENT_BLOCK:

BLOCKED AST:

END-BLOCK:
text="end", type=END: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="end_block", type=STATEMENT_BLOCK:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1


mlr -n put -v end {@x=1}
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="end", type=END:
        text="end_block", type=STATEMENT_BLOCK:
            text="=", type=OOSVAR_ASSIGNMENT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="x", type=STRING_LITERAL.
                text="1", type=NUMERIC_LITERAL.

BLOCKED AST:

END-BLOCK:
text="end", type=END: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="end_block", type=STATEMENT_BLOCK:
        text="=", type=OOSVAR_ASSIGNMENT:
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="x", type=STRING_LITERAL.
            text="1", type=NUMERIC_LITERAL.

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1


mlr -n put -v end {@x=1;}
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="end", type=END:
        text="end_block", type=STATEMENT_BLOCK:
            text="=", type=OOSVAR_ASSIGNMENT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="x", type=STRING_LITERAL.
                text="1", type=NUMERIC_LITERAL.

BLOCKED AST:

END-BLOCK:
text="end", type=END: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="end_block", type=STATEMENT_BLOCK:
        text="=", type=OOSVAR_ASSIGNMENT:
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="x", type=STRING_LITERAL.
            text="1", type=NUMERIC_LITERAL.

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1


mlr -n put -v end {;@x=1}
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="end", type=END:
        text="end_block", type=STATEMENT_BLOCK:
            text="=", type=OOSVAR_ASSIGNMENT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="x", type=STRING_LITERAL.
                text="1", type=NUMERIC_LITERAL.

BLOCKED AST:

END-BLOCK:
text="end", type=END: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="end_block", type=STATEMENT_BLOCK:
        text="=", type=OOSVAR_ASSIGNMENT:
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="x", type=STRING_LITERAL.
            text="1", type=NUMERIC_LITERAL.

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1


mlr -n put -v end {@x=1;@y=2}
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="end", type=END:
        text="end_block", type=STATEMENT_BLOCK:
            text="=", type=OOSVAR_ASSIGNMENT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="x", type=STRING_LITERAL.
                text="1", type=NUMERIC_LITERAL.
            text="=", type=OOSVAR_ASSIGNMENT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="y", type=STRING_LITERAL.
                text="2", type=NUMERIC_LITERAL.

BLOCKED AST:

END-BLOCK:
text="end", type=END: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="end_block", type=STATEMENT_BLOCK:
        text="=", type=OOSVAR_ASSIGNMENT:
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="x", type=STRING_LITERAL.
            text="1", type=NUMERIC_LITERAL.
        text="=", type=OOSVAR_ASSIGNMENT:
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="y", type=STRING_LITERAL.
            text="2", type=NUMERIC_LITERAL.

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1


mlr -n put -v end {@x=1;;@y=2}
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="end", type=END:
        text="end_block", type=STATEMENT_BLOCK:
            text="=", type=OOSVAR_ASSIGNMENT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="x", type=STRING_LITERAL.
                text="1", type=NUMERIC_LITERAL.
            text="=", type=OOSVAR_ASSIGNMENT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="y", type=STRING_LITERAL.
                text="2", type=NUMERIC_LITERAL.

BLOCKED AST:

END-BLOCK:
text="end", type=END: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="end_block", type=STATEMENT_BLOCK:
        text="=", type=OOSVAR_ASSIGNMENT:
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="x", type=STRING_LITERAL.
            text="1", type=NUMERIC_LITERAL.
        text="=", type=OOSVAR_ASSIGNMENT:
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="y", type=STRING_LITERAL.
            text="2", type=NUMERIC_LITERAL.

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1



================================================================
DSL CONTEXT-SPECIFIC VALIDATION


---------------------------------------------------------------- non-top-level begin/end
mlr put -v begin{begin{@x=1}}
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="begin", type=BEGIN:
        text="begin_block", type=STATEMENT_BLOCK:
            text="begin", type=BEGIN:
                text="begin_block", type=STATEMENT_BLOCK:
                    text="=", type=OOSVAR_ASSIGNMENT:
                        text="oosvar_keylist", type=OOSVAR_KEYLIST:
                            text="x", type=STRING_LITERAL.
                        text="1", type=NUMERIC_LITERAL.

BLOCKED AST:

BEGIN-BLOCK:
text="begin", type=BEGIN: subframe_var_count=1 max_subframe_depth=2 max_var_depth=1
    text="begin_block", type=STATEMENT_BLOCK:
        text="begin", type=BEGIN:
            text="begin_block", type=STATEMENT_BLOCK: subframe_var_count=0
                text="=", type=OOSVAR_ASSIGNMENT:
                    text="oosvar_keylist", type=OOSVAR_KEYLIST:
                        text="x", type=STRING_LITERAL.
                    text="1", type=NUMERIC_LITERAL.
mlr: begin statements are only valid at top level.

mlr put -v true{begin{@x=1}}
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="cond", type=CONDITIONAL_BLOCK:
        text="true", type=BOOLEAN_LITERAL.
        text="cond_block", type=STATEMENT_BLOCK:
            text="begin", type=BEGIN:
                text="begin_block", type=STATEMENT_BLOCK:
                    text="=", type=OOSVAR_ASSIGNMENT:
                        text="oosvar_keylist", type=OOSVAR_KEYLIST:
                            text="x", type=STRING_LITERAL.
                        text="1", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=3 max_var_depth=1
    text="cond", type=CONDITIONAL_BLOCK:
        text="true", type=BOOLEAN_LITERAL.
        text="cond_block", type=STATEMENT_BLOCK: subframe_var_count=0
            text="begin", type=BEGIN:
                text="begin_block", type=STATEMENT_BLOCK: subframe_var_count=0
                    text="=", type=OOSVAR_ASSIGNMENT:
                        text="oosvar_keylist", type=OOSVAR_KEYLIST:
                            text="x", type=STRING_LITERAL.
                        text="1", type=NUMERIC_LITERAL.
mlr: begin statements are only valid at top level.

mlr put -v end{end{@x=1}}
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="end", type=END:
        text="end_block", type=STATEMENT_BLOCK:
            text="end", type=END:
                text="end_block", type=STATEMENT_BLOCK:
                    text="=", type=OOSVAR_ASSIGNMENT:
                        text="oosvar_keylist", type=OOSVAR_KEYLIST:
                            text="x", type=STRING_LITERAL.
                        text="1", type=NUMERIC_LITERAL.

BLOCKED AST:

END-BLOCK:
text="end", type=END: subframe_var_count=1 max_subframe_depth=2 max_var_depth=1
    text="end_block", type=STATEMENT_BLOCK:
        text="end", type=END:
            text="end_block", type=STATEMENT_BLOCK: subframe_var_count=0
                text="=", type=OOSVAR_ASSIGNMENT:
                    text="oosvar_keylist", type=OOSVAR_KEYLIST:
                        text="x", type=STRING_LITERAL.
                    text="1", type=NUMERIC_LITERAL.
mlr: end statements are only valid at top level.

mlr put -v true{end{@x=1}}
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="cond", type=CONDITIONAL_BLOCK:
        text="true", type=BOOLEAN_LITERAL.
        text="cond_block", type=STATEMENT_BLOCK:
            text="end", type=END:
                text="end_block", type=STATEMENT_BLOCK:
                    text="=", type=OOSVAR_ASSIGNMENT:
                        text="oosvar_keylist", type=OOSVAR_KEYLIST:
                            text="x", type=STRING_LITERAL.
                        text="1", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=3 max_var_depth=1
    text="cond", type=CONDITIONAL_BLOCK:
        text="true", type=BOOLEAN_LITERAL.
        text="cond_block", type=STATEMENT_BLOCK: subframe_var_count=0
            text="end", type=END:
                text="end_block", type=STATEMENT_BLOCK: subframe_var_count=0
                    text="=", type=OOSVAR_ASSIGNMENT:
                        text="oosvar_keylist", type=OOSVAR_KEYLIST:
                            text="x", type=STRING_LITERAL.
                        text="1", type=NUMERIC_LITERAL.
mlr: end statements are only valid at top level.


---------------------------------------------------------------- srecs in begin/end
mlr put -v begin{$x=1}
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="begin", type=BEGIN:
        text="begin_block", type=STATEMENT_BLOCK:
            text="=", type=SREC_ASSIGNMENT:
                text="x", type=FIELD_NAME.
                text="1", type=NUMERIC_LITERAL.

BLOCKED AST:

BEGIN-BLOCK:
text="begin", type=BEGIN: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="begin_block", type=STATEMENT_BLOCK:
        text="=", type=SREC_ASSIGNMENT:
            text="x", type=FIELD_NAME.
            text="1", type=NUMERIC_LITERAL.
mlr: assignments to $-variables are not valid within begin or end blocks.

mlr put -v begin{@x=$y}
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="begin", type=BEGIN:
        text="begin_block", type=STATEMENT_BLOCK:
            text="=", type=OOSVAR_ASSIGNMENT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="x", type=STRING_LITERAL.
                text="y", type=FIELD_NAME.

BLOCKED AST:

BEGIN-BLOCK:
text="begin", type=BEGIN: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="begin_block", type=STATEMENT_BLOCK:
        text="=", type=OOSVAR_ASSIGNMENT:
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="x", type=STRING_LITERAL.
            text="y", type=FIELD_NAME.
mlr: statements involving $-variables are not valid within begin or end blocks.

mlr put -v end{$x=1}
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="end", type=END:
        text="end_block", type=STATEMENT_BLOCK:
            text="=", type=SREC_ASSIGNMENT:
                text="x", type=FIELD_NAME.
                text="1", type=NUMERIC_LITERAL.

BLOCKED AST:

END-BLOCK:
text="end", type=END: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="end_block", type=STATEMENT_BLOCK:
        text="=", type=SREC_ASSIGNMENT:
            text="x", type=FIELD_NAME.
            text="1", type=NUMERIC_LITERAL.
mlr: assignments to $-variables are not valid within begin or end blocks.

mlr put -v end{@x=$y}
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="end", type=END:
        text="end_block", type=STATEMENT_BLOCK:
            text="=", type=OOSVAR_ASSIGNMENT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="x", type=STRING_LITERAL.
                text="y", type=FIELD_NAME.

BLOCKED AST:

END-BLOCK:
text="end", type=END: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="end_block", type=STATEMENT_BLOCK:
        text="=", type=OOSVAR_ASSIGNMENT:
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="x", type=STRING_LITERAL.
            text="y", type=FIELD_NAME.
mlr: statements involving $-variables are not valid within begin or end blocks.

mlr put -v begin{@v=$*}
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="begin", type=BEGIN:
        text="begin_block", type=STATEMENT_BLOCK:
            text="=", type=OOSVAR_FROM_FULL_SREC_ASSIGNMENT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="v", type=STRING_LITERAL.
                text="$*", type=FULL_SREC.

BLOCKED AST:

BEGIN-BLOCK:
text="begin", type=BEGIN: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="begin_block", type=STATEMENT_BLOCK:
        text="=", type=OOSVAR_FROM_FULL_SREC_ASSIGNMENT:
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="v", type=STRING_LITERAL.
            text="$*", type=FULL_SREC.
mlr: assignments from $-variables are not valid within begin or end blocks.

mlr put -v end{$*=@v}
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="end", type=END:
        text="end_block", type=STATEMENT_BLOCK:
            text="=", type=FULL_SREC_ASSIGNMENT:
                text="$*", type=FULL_SREC.
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="v", type=STRING_LITERAL.

BLOCKED AST:

END-BLOCK:
text="end", type=END: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="end_block", type=STATEMENT_BLOCK:
        text="=", type=FULL_SREC_ASSIGNMENT:
            text="$*", type=FULL_SREC.
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="v", type=STRING_LITERAL.
mlr: assignments to $-variables are not valid within begin or end blocks.

mlr put -v begin{unset $x}
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="begin", type=BEGIN:
        text="begin_block", type=STATEMENT_BLOCK:
            text="unset", type=UNSET:
                text="x", type=FIELD_NAME.

BLOCKED AST:

BEGIN-BLOCK:
text="begin", type=BEGIN: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="begin_block", type=STATEMENT_BLOCK:
        text="unset", type=UNSET:
            text="x", type=FIELD_NAME.
mlr: unset of $-variables is not valid within begin or end blocks.

mlr put -v end{unset $x}
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="end", type=END:
        text="end_block", type=STATEMENT_BLOCK:
            text="unset", type=UNSET:
                text="x", type=FIELD_NAME.

BLOCKED AST:

END-BLOCK:
text="end", type=END: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="end_block", type=STATEMENT_BLOCK:
        text="unset", type=UNSET:
            text="x", type=FIELD_NAME.
mlr: unset of $-variables is not valid within begin or end blocks.

mlr put -v begin{unset $*}
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="begin", type=BEGIN:
        text="begin_block", type=STATEMENT_BLOCK:
            text="unset", type=UNSET:
                text="$*", type=FULL_SREC.

BLOCKED AST:

BEGIN-BLOCK:
text="begin", type=BEGIN: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="begin_block", type=STATEMENT_BLOCK:
        text="unset", type=UNSET:
            text="$*", type=FULL_SREC.
mlr: unset of $-variables is not valid within begin or end blocks.

mlr put -v end{unset $*}
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="end", type=END:
        text="end_block", type=STATEMENT_BLOCK:
            text="unset", type=UNSET:
                text="$*", type=FULL_SREC.

BLOCKED AST:

END-BLOCK:
text="end", type=END: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="end_block", type=STATEMENT_BLOCK:
        text="unset", type=UNSET:
            text="$*", type=FULL_SREC.
mlr: unset of $-variables is not valid within begin or end blocks.


---------------------------------------------------------------- break/continue outside loop
mlr put -v break
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="break", type=BREAK.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="break", type=BREAK.
mlr: break statements are only valid within for, while, or do-while.

mlr put -v continue
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="continue", type=CONTINUE.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="continue", type=CONTINUE.
mlr: break statements are only valid within for, while, or do-while.


---------------------------------------------------------------- oosvars etc. in mlr filter
mlr filter -v break
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="break", type=BREAK.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="break", type=BREAK.
mlr: filter expressions must end in a final boolean statement.

mlr filter -v continue
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="continue", type=CONTINUE.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="continue", type=CONTINUE.
mlr: filter expressions must end in a final boolean statement.


---------------------------------------------------------------- expanded filter
mlr --from ./reg_test/input/abixy filter 
  begin {
    @avoid = 3
  }
  NR != @avoid

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=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 filter -x 
  begin {
    @avoid = 3
  }
  NR != @avoid

a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776

mlr --from ./reg_test/input/abixy filter 
  func f(n) {
    return n - 1
  }
  f(NR) == 5

a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697

mlr --from ./reg_test/input/abixy filter 
  subr s(n) {
    print "NR is ".n
  }
  call s(NR);
  false

NR is 1
NR is 2
NR is 3
NR is 4
NR is 5
NR is 6
NR is 7
NR is 8
NR is 9
NR is 10

mlr --from ./reg_test/input/abixy filter 
  int a = 5;
  int b = 7;
  a <= NR && NR <= b

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

mlr --from ./reg_test/input/abixy filter filter false
mlr filter: expressions must not also contain the "filter" keyword.

mlr --from ./reg_test/input/abixy filter filter false; true
mlr filter: expressions must not also contain the "filter" keyword.


================================================================
DSL FUNCTIONAL TESTS

mlr filter $x>.3 ./reg_test/input/abixy
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=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=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864

mlr filter $x>.3; ./reg_test/input/abixy
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=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=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864

mlr filter $x>0.3 ./reg_test/input/abixy
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=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=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864

mlr filter $x>0.3 && $y>0.3 ./reg_test/input/abixy
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=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864

mlr filter $x>0.3 || $y>0.3 ./reg_test/input/abixy
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 filter NR>=4 && NR <= 7 ./reg_test/input/abixy
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

mlr filter -x $x>.3 ./reg_test/input/abixy
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059

mlr filter -x $x>0.3 ./reg_test/input/abixy
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059

mlr filter -x $x>0.3 && $y>0.3 ./reg_test/input/abixy
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=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059

mlr filter -x $x>0.3 || $y>0.3 ./reg_test/input/abixy

mlr filter -x NR>=4 && NR <= 7 ./reg_test/input/abixy
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=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 filter $nosuchfield>.3 ./reg_test/input/abixy

mlr put $x2 = $x**2 ./reg_test/input/abixy
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533,x2=0.120263
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797,x2=0.575595
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776,x2=0.041863
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463,x2=0.145465
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729,x2=0.328660
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697,x2=0.277862
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694,x2=0.374280
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006,x2=0.358267
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059,x2=0.000989
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864,x2=0.252633

mlr put $x2 = $x**2; ./reg_test/input/abixy
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533,x2=0.120263
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797,x2=0.575595
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776,x2=0.041863
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463,x2=0.145465
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729,x2=0.328660
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697,x2=0.277862
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694,x2=0.374280
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006,x2=0.358267
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059,x2=0.000989
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864,x2=0.252633

mlr put $z = -0.024*$x+0.13 ./reg_test/input/abixy
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533,z=0.121677
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797,z=0.111792
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776,z=0.125090
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463,z=0.120846
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729,z=0.116241
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697,z=0.117349
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694,z=0.115317
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006,z=0.115635
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059,z=0.129245
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864,z=0.117937

mlr put $c = $a . $b ./reg_test/input/abixy
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533,c=panpan
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797,c=ekspan
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776,c=wyewye
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463,c=ekswye
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729,c=wyepan
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697,c=zeepan
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694,c=ekszee
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006,c=zeewye
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059,c=hatwye
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864,c=panwye

mlr put $ii = $i + $i ./reg_test/input/abixy
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533,ii=2
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797,ii=4
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776,ii=6
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463,ii=8
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729,ii=10
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697,ii=12
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694,ii=14
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006,ii=16
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059,ii=18
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864,ii=20

mlr put $emptytest = $i + $nosuch ./reg_test/input/abixy
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533,emptytest=1
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797,emptytest=2
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776,emptytest=3
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463,emptytest=4
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729,emptytest=5
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697,emptytest=6
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694,emptytest=7
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006,emptytest=8
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059,emptytest=9
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864,emptytest=10

mlr --opprint put $nr=NR;$fnr=FNR;$nf=NF;$filenum=FILENUM ./reg_test/input/abixy ./reg_test/input/abixy
a   b   i  x                   y                   nr fnr nf filenum
pan pan 1  0.3467901443380824  0.7268028627434533  1  1   7  1
eks pan 2  0.7586799647899636  0.5221511083334797  2  2   7  1
wye wye 3  0.20460330576630303 0.33831852551664776 3  3   7  1
eks wye 4  0.38139939387114097 0.13418874328430463 4  4   7  1
wye pan 5  0.5732889198020006  0.8636244699032729  5  5   7  1
zee pan 6  0.5271261600918548  0.49322128674835697 6  6   7  1
eks zee 7  0.6117840605678454  0.1878849191181694  7  7   7  1
zee wye 8  0.5985540091064224  0.976181385699006   8  8   7  1
hat wye 9  0.03144187646093577 0.7495507603507059  9  9   7  1
pan wye 10 0.5026260055412137  0.9526183602969864  10 10  7  1
pan pan 1  0.3467901443380824  0.7268028627434533  11 1   7  2
eks pan 2  0.7586799647899636  0.5221511083334797  12 2   7  2
wye wye 3  0.20460330576630303 0.33831852551664776 13 3   7  2
eks wye 4  0.38139939387114097 0.13418874328430463 14 4   7  2
wye pan 5  0.5732889198020006  0.8636244699032729  15 5   7  2
zee pan 6  0.5271261600918548  0.49322128674835697 16 6   7  2
eks zee 7  0.6117840605678454  0.1878849191181694  17 7   7  2
zee wye 8  0.5985540091064224  0.976181385699006   18 8   7  2
hat wye 9  0.03144187646093577 0.7495507603507059  19 9   7  2
pan wye 10 0.5026260055412137  0.9526183602969864  20 10  7  2

mlr --opprint put $y=madd($x,10,37) then put $z=msub($x,10,37) ./reg_test/input/modarith.dat
x   y  z
-37 10 27
-36 11 28
-35 12 29
-34 13 30
-33 14 31
-32 15 32
-31 16 33
-30 17 34
-29 18 35
-28 19 36
-27 20 0
-26 21 1
-25 22 2
-24 23 3
-23 24 4
-22 25 5
-21 26 6
-20 27 7
-19 28 8
-18 29 9
-17 30 10
-16 31 11
-15 32 12
-14 33 13
-13 34 14
-12 35 15
-11 36 16
-10 0  17
-9  1  18
-8  2  19
-7  3  20
-6  4  21
-5  5  22
-4  6  23
-3  7  24
-2  8  25
-1  9  26
0   10 27
1   11 28
2   12 29
3   13 30
4   14 31
5   15 32
6   16 33
7   17 34
8   18 35
9   19 36
10  20 0
11  21 1
12  22 2
13  23 3
14  24 4
15  25 5
16  26 6
17  27 7
18  28 8
19  29 9
20  30 10
21  31 11
22  32 12
23  33 13
24  34 14
25  35 15
26  36 16
27  0  17
28  1  18
29  2  19
30  3  20
31  4  21
32  5  22
33  6  23
34  7  24
35  8  25
36  9  26
37  10 27
38  11 28
39  12 29
40  13 30
41  14 31
42  15 32
43  16 33
44  17 34
45  18 35
46  19 36
47  20 0
48  21 1
49  22 2
50  23 3
51  24 4
52  25 5
53  26 6
54  27 7
55  28 8
56  29 9
57  30 10
58  31 11
59  32 12
60  33 13
61  34 14
62  35 15
63  36 16
64  0  17
65  1  18
66  2  19
67  3  20
68  4  21
69  5  22
70  6  23
71  7  24
72  8  25
73  9  26

mlr --opprint put $y=mexp($x,35,37) then put $z=mmul($x,$y,37) ./reg_test/input/modarith.dat
x   y  z
-37 0  0
-36 1  1
-35 19 1
-34 25 1
-33 28 1
-32 15 1
-31 31 1
-30 16 1
-29 14 1
-28 33 1
-27 26 1
-26 27 1
-25 34 1
-24 20 1
-23 8  1
-22 5  1
-21 7  1
-20 24 1
-19 35 1
-18 2  1
-17 13 1
-16 30 1
-15 32 1
-14 29 1
-13 17 1
-12 3  1
-11 10 1
-10 11 1
-9  4  1
-8  23 1
-7  21 1
-6  6  1
-5  22 1
-4  9  1
-3  12 1
-2  18 1
-1  36 1
0   0  0
1   1  1
2   19 1
3   25 1
4   28 1
5   15 1
6   31 1
7   16 1
8   14 1
9   33 1
10  26 1
11  27 1
12  34 1
13  20 1
14  8  1
15  5  1
16  7  1
17  24 1
18  35 1
19  2  1
20  13 1
21  30 1
22  32 1
23  29 1
24  17 1
25  3  1
26  10 1
27  11 1
28  4  1
29  23 1
30  21 1
31  6  1
32  22 1
33  9  1
34  12 1
35  18 1
36  36 1
37  0  0
38  1  1
39  19 1
40  25 1
41  28 1
42  15 1
43  31 1
44  16 1
45  14 1
46  33 1
47  26 1
48  27 1
49  34 1
50  20 1
51  8  1
52  5  1
53  7  1
54  24 1
55  35 1
56  2  1
57  13 1
58  30 1
59  32 1
60  29 1
61  17 1
62  3  1
63  10 1
64  11 1
65  4  1
66  23 1
67  21 1
68  6  1
69  22 1
70  9  1
71  12 1
72  18 1
73  36 1

mlr put $z=min($x, $y) ./reg_test/input/minmax.dkvp
x=1,y=2,z=1
x=1,y=,z=1
x=,y=,z=
x=,y=2,z=2
x=3,y=2,z=2
x=3,y=,z=3
x=,y=,z=
x=,y=2,z=2

mlr put $z=max($x, $y) ./reg_test/input/minmax.dkvp
x=1,y=2,z=2
x=1,y=,z=1
x=,y=,z=
x=,y=2,z=2
x=3,y=2,z=3
x=3,y=,z=3
x=,y=,z=
x=,y=2,z=2

mlr put $o=min()
x=1,y=2,z=3,o=

mlr put $o=max()
x=1,y=2,z=3,o=

mlr put $o=min($x)
x=1,y=2,z=3,o=1

mlr put $o=max($x)
x=1,y=2,z=3,o=1

mlr put $o=min($x,$y)
x=1,y=2,z=3,o=1

mlr put $o=max($x,$y)
x=1,y=2,z=3,o=2

mlr put $o=min($x,$y,$z)
x=1,y=2,z=3,o=1

mlr put $o=max($x,$y,$z)
x=1,y=2,z=3,o=3

mlr put $u=min($x,$y);$v=max($x,$y)
x=1,y=b,u=1,v=b

mlr put $u=min($x,$y);$v=max($x,$y)
x=a,y=2,u=2,v=a

mlr put $u=min($x,$y);$v=max($x,$y)
x=a,y=b,u=a,v=b

mlr --icsvlite --oxtab put ${x+y} = ${name.x} + ${name.y}; ${x*y} = ${name.x} * ${name.y} ./reg_test/input/braced.csv
name.x 1
name.y 2
z      3
x+y    3
x*y    2

name.x 4
name.y 6
z      5
x+y    10
x*y    24

mlr --icsvlite --oxtab filter ${name.y} < ${z} ./reg_test/input/braced.csv
name.x 1
name.y 2
z      3

mlr --opprint put $z = $x < 0.5 ? 0 : 1 ./reg_test/input/abixy
a   b   i  x                   y                   z
pan pan 1  0.3467901443380824  0.7268028627434533  0
eks pan 2  0.7586799647899636  0.5221511083334797  1
wye wye 3  0.20460330576630303 0.33831852551664776 0
eks wye 4  0.38139939387114097 0.13418874328430463 0
wye pan 5  0.5732889198020006  0.8636244699032729  1
zee pan 6  0.5271261600918548  0.49322128674835697 1
eks zee 7  0.6117840605678454  0.1878849191181694  1
zee wye 8  0.5985540091064224  0.976181385699006   1
hat wye 9  0.03144187646093577 0.7495507603507059  0
pan wye 10 0.5026260055412137  0.9526183602969864  1

mlr --csvlite filter true  && true ./reg_test/input/b.csv
d,e,f
5,6,7

mlr --csvlite filter true  && false ./reg_test/input/b.csv

mlr --csvlite filter false && true ./reg_test/input/b.csv

mlr --csvlite filter false && false ./reg_test/input/b.csv

mlr --csvlite filter true  || true ./reg_test/input/b.csv
d,e,f
5,6,7

mlr --csvlite filter true  || false ./reg_test/input/b.csv
d,e,f
5,6,7

mlr --csvlite filter false || true ./reg_test/input/b.csv
d,e,f
5,6,7

mlr --csvlite filter false || false ./reg_test/input/b.csv

mlr --csvlite filter true  ^^ true ./reg_test/input/b.csv

mlr --csvlite filter true  ^^ false ./reg_test/input/b.csv
d,e,f
5,6,7

mlr --csvlite filter false ^^ true ./reg_test/input/b.csv
d,e,f
5,6,7

mlr --csvlite filter false ^^ false ./reg_test/input/b.csv

mlr put $x==2 && $a =~ "....." { $y=4 } ./reg_test/input/short-circuit.dkvp
x=1,a="hello"
x=2,a="there",y=4
x=3,a="world"

mlr put $x = ENV["X"]; $y = ENV[$name] ./reg_test/input/env-var.dkvp
name=X,x=97,y=97
name=Y,x=97,y=98
x=97,y=6

mlr put $x = ENV["X"]; $y = ENV[$name] ./reg_test/input/env-var.dkvp
name=X,x=,y=
name=Y,x=,y=
x=,y=6

mlr -n put begin{ENV["HOME"]="foobar"} end{print ENV["HOME"]}
foobar

mlr put $y = toupper($x)
x=hello,y=HELLO

mlr put $y = toupper($x)
x=HELLO,y=HELLO

mlr put $y = toupper($x)
x=,y=

mlr put $y = toupper($z)
x=hello

mlr put $y = tolower($x)
x=hello,y=hello

mlr put $y = tolower($x)
x=HELLO,y=hello

mlr put $y = tolower($x)
x=,y=

mlr put $y = tolower($z)
x=hello

mlr put $y = capitalize($x)
x=hello,y=Hello

mlr put $y = capitalize($x)
x=HELLO,y=HELLO

mlr put $y = capitalize($x)
x=,y=

mlr put $y = capitalize($z)
x=hello


---------------------------------------------------------------- LHS value on first record should result in ZYX for process creation
mlr --from ./reg_test/input/abixy put -q ENV["ZYX"]="CBA".NR; print | ENV["indir"]."/env-assign.sh" , "a is " . $a
[ZYX]=[CBA1] a is pan
[ZYX]=[CBA1] a is eks
[ZYX]=[CBA1] a is wye
[ZYX]=[CBA1] a is eks
[ZYX]=[CBA1] a is wye
[ZYX]=[CBA1] a is zee
[ZYX]=[CBA1] a is eks
[ZYX]=[CBA1] a is zee
[ZYX]=[CBA1] a is hat
[ZYX]=[CBA1] a is pan


================================================================
POSITIONAL INDEXING

mlr --opprint put $NEW = $[[3]] ./reg_test/input/abixy
a   b   i  x                   y                   NEW
pan pan 1  0.3467901443380824  0.7268028627434533  i
eks pan 2  0.7586799647899636  0.5221511083334797  i
wye wye 3  0.20460330576630303 0.33831852551664776 i
eks wye 4  0.38139939387114097 0.13418874328430463 i
wye pan 5  0.5732889198020006  0.8636244699032729  i
zee pan 6  0.5271261600918548  0.49322128674835697 i
eks zee 7  0.6117840605678454  0.1878849191181694  i
zee wye 8  0.5985540091064224  0.976181385699006   i
hat wye 9  0.03144187646093577 0.7495507603507059  i
pan wye 10 0.5026260055412137  0.9526183602969864  i

mlr --opprint put $NEW = $[[[3]]] ./reg_test/input/abixy
a   b   i  x                   y                   NEW
pan pan 1  0.3467901443380824  0.7268028627434533  1
eks pan 2  0.7586799647899636  0.5221511083334797  2
wye wye 3  0.20460330576630303 0.33831852551664776 3
eks wye 4  0.38139939387114097 0.13418874328430463 4
wye pan 5  0.5732889198020006  0.8636244699032729  5
zee pan 6  0.5271261600918548  0.49322128674835697 6
eks zee 7  0.6117840605678454  0.1878849191181694  7
zee wye 8  0.5985540091064224  0.976181385699006   8
hat wye 9  0.03144187646093577 0.7495507603507059  9
pan wye 10 0.5026260055412137  0.9526183602969864  10

mlr --opprint put $NEW = $[[11]] ./reg_test/input/abixy
a   b   i  x                   y
pan pan 1  0.3467901443380824  0.7268028627434533
eks pan 2  0.7586799647899636  0.5221511083334797
wye wye 3  0.20460330576630303 0.33831852551664776
eks wye 4  0.38139939387114097 0.13418874328430463
wye pan 5  0.5732889198020006  0.8636244699032729
zee pan 6  0.5271261600918548  0.49322128674835697
eks zee 7  0.6117840605678454  0.1878849191181694
zee wye 8  0.5985540091064224  0.976181385699006
hat wye 9  0.03144187646093577 0.7495507603507059
pan wye 10 0.5026260055412137  0.9526183602969864

mlr --opprint put $NEW = $[[[11]]] ./reg_test/input/abixy
a   b   i  x                   y
pan pan 1  0.3467901443380824  0.7268028627434533
eks pan 2  0.7586799647899636  0.5221511083334797
wye wye 3  0.20460330576630303 0.33831852551664776
eks wye 4  0.38139939387114097 0.13418874328430463
wye pan 5  0.5732889198020006  0.8636244699032729
zee pan 6  0.5271261600918548  0.49322128674835697
eks zee 7  0.6117840605678454  0.1878849191181694
zee wye 8  0.5985540091064224  0.976181385699006
hat wye 9  0.03144187646093577 0.7495507603507059
pan wye 10 0.5026260055412137  0.9526183602969864

mlr --opprint put $[[3]]   = "NEW" ./reg_test/input/abixy
a   b   NEW x                   y
pan pan 1   0.3467901443380824  0.7268028627434533
eks pan 2   0.7586799647899636  0.5221511083334797
wye wye 3   0.20460330576630303 0.33831852551664776
eks wye 4   0.38139939387114097 0.13418874328430463
wye pan 5   0.5732889198020006  0.8636244699032729
zee pan 6   0.5271261600918548  0.49322128674835697
eks zee 7   0.6117840605678454  0.1878849191181694
zee wye 8   0.5985540091064224  0.976181385699006
hat wye 9   0.03144187646093577 0.7495507603507059
pan wye 10  0.5026260055412137  0.9526183602969864

mlr --opprint put $[[[3]]] = "NEW" ./reg_test/input/abixy
a   b   i   x                   y
pan pan NEW 0.3467901443380824  0.7268028627434533
eks pan NEW 0.7586799647899636  0.5221511083334797
wye wye NEW 0.20460330576630303 0.33831852551664776
eks wye NEW 0.38139939387114097 0.13418874328430463
wye pan NEW 0.5732889198020006  0.8636244699032729
zee pan NEW 0.5271261600918548  0.49322128674835697
eks zee NEW 0.6117840605678454  0.1878849191181694
zee wye NEW 0.5985540091064224  0.976181385699006
hat wye NEW 0.03144187646093577 0.7495507603507059
pan wye NEW 0.5026260055412137  0.9526183602969864

mlr --opprint put $[[11]]   = "NEW" ./reg_test/input/abixy
a   b   i  x                   y
pan pan 1  0.3467901443380824  0.7268028627434533
eks pan 2  0.7586799647899636  0.5221511083334797
wye wye 3  0.20460330576630303 0.33831852551664776
eks wye 4  0.38139939387114097 0.13418874328430463
wye pan 5  0.5732889198020006  0.8636244699032729
zee pan 6  0.5271261600918548  0.49322128674835697
eks zee 7  0.6117840605678454  0.1878849191181694
zee wye 8  0.5985540091064224  0.976181385699006
hat wye 9  0.03144187646093577 0.7495507603507059
pan wye 10 0.5026260055412137  0.9526183602969864

mlr --opprint put $[[[11]]] = "NEW" ./reg_test/input/abixy
a   b   i  x                   y
pan pan 1  0.3467901443380824  0.7268028627434533
eks pan 2  0.7586799647899636  0.5221511083334797
wye wye 3  0.20460330576630303 0.33831852551664776
eks wye 4  0.38139939387114097 0.13418874328430463
wye pan 5  0.5732889198020006  0.8636244699032729
zee pan 6  0.5271261600918548  0.49322128674835697
eks zee 7  0.6117840605678454  0.1878849191181694
zee wye 8  0.5985540091064224  0.976181385699006
hat wye 9  0.03144187646093577 0.7495507603507059
pan wye 10 0.5026260055412137  0.9526183602969864

mlr --opprint put $[[1]] = $[[2]] ./reg_test/input/abixy
b   i  x                   y
pan 1  0.3467901443380824  0.7268028627434533
eks 2  0.7586799647899636  0.5221511083334797
wye 3  0.20460330576630303 0.33831852551664776
eks 4  0.38139939387114097 0.13418874328430463
wye 5  0.5732889198020006  0.8636244699032729
zee 6  0.5271261600918548  0.49322128674835697
eks 7  0.6117840605678454  0.1878849191181694
zee 8  0.5985540091064224  0.976181385699006
hat 9  0.03144187646093577 0.7495507603507059
pan 10 0.5026260055412137  0.9526183602969864

mlr --opprint put $a     = $[[2]]; unset $["a"] ./reg_test/input/abixy
b   i  x                   y                   a
pan 1  0.3467901443380824  0.7268028627434533  b
pan 2  0.7586799647899636  0.5221511083334797  b
wye 3  0.20460330576630303 0.33831852551664776 b
wye 4  0.38139939387114097 0.13418874328430463 b
pan 5  0.5732889198020006  0.8636244699032729  b
pan 6  0.5271261600918548  0.49322128674835697 b
zee 7  0.6117840605678454  0.1878849191181694  b
wye 8  0.5985540091064224  0.976181385699006   b
wye 9  0.03144187646093577 0.7495507603507059  b
wye 10 0.5026260055412137  0.9526183602969864  b

mlr --opprint put $[[1]] = $b;     unset $[[1]] ./reg_test/input/abixy
b   i  x                   y
pan 1  0.3467901443380824  0.7268028627434533
pan 2  0.7586799647899636  0.5221511083334797
wye 3  0.20460330576630303 0.33831852551664776
wye 4  0.38139939387114097 0.13418874328430463
pan 5  0.5732889198020006  0.8636244699032729
pan 6  0.5271261600918548  0.49322128674835697
zee 7  0.6117840605678454  0.1878849191181694
wye 8  0.5985540091064224  0.976181385699006
wye 9  0.03144187646093577 0.7495507603507059
wye 10 0.5026260055412137  0.9526183602969864

mlr --opprint put $[[1]] = $[[2]]; unset $["a"] ./reg_test/input/abixy
b   i  x                   y
pan 1  0.3467901443380824  0.7268028627434533
eks 2  0.7586799647899636  0.5221511083334797
wye 3  0.20460330576630303 0.33831852551664776
eks 4  0.38139939387114097 0.13418874328430463
wye 5  0.5732889198020006  0.8636244699032729
zee 6  0.5271261600918548  0.49322128674835697
eks 7  0.6117840605678454  0.1878849191181694
zee 8  0.5985540091064224  0.976181385699006
hat 9  0.03144187646093577 0.7495507603507059
pan 10 0.5026260055412137  0.9526183602969864

mlr --opprint put unset $c ./reg_test/input/abixy
a   b   i  x                   y
pan pan 1  0.3467901443380824  0.7268028627434533
eks pan 2  0.7586799647899636  0.5221511083334797
wye wye 3  0.20460330576630303 0.33831852551664776
eks wye 4  0.38139939387114097 0.13418874328430463
wye pan 5  0.5732889198020006  0.8636244699032729
zee pan 6  0.5271261600918548  0.49322128674835697
eks zee 7  0.6117840605678454  0.1878849191181694
zee wye 8  0.5985540091064224  0.976181385699006
hat wye 9  0.03144187646093577 0.7495507603507059
pan wye 10 0.5026260055412137  0.9526183602969864

mlr --opprint put unset $c; $c="new" ./reg_test/input/abixy
a   b   i  x                   y                   c
pan pan 1  0.3467901443380824  0.7268028627434533  new
eks pan 2  0.7586799647899636  0.5221511083334797  new
wye wye 3  0.20460330576630303 0.33831852551664776 new
eks wye 4  0.38139939387114097 0.13418874328430463 new
wye pan 5  0.5732889198020006  0.8636244699032729  new
zee pan 6  0.5271261600918548  0.49322128674835697 new
eks zee 7  0.6117840605678454  0.1878849191181694  new
zee wye 8  0.5985540091064224  0.976181385699006   new
hat wye 9  0.03144187646093577 0.7495507603507059  new
pan wye 10 0.5026260055412137  0.9526183602969864  new

mlr --opprint put $c=$a.$b; unset $c; $c="new" ./reg_test/input/abixy
a   b   i  x                   y                   c
pan pan 1  0.3467901443380824  0.7268028627434533  new
eks pan 2  0.7586799647899636  0.5221511083334797  new
wye wye 3  0.20460330576630303 0.33831852551664776 new
eks wye 4  0.38139939387114097 0.13418874328430463 new
wye pan 5  0.5732889198020006  0.8636244699032729  new
zee pan 6  0.5271261600918548  0.49322128674835697 new
eks zee 7  0.6117840605678454  0.1878849191181694  new
zee wye 8  0.5985540091064224  0.976181385699006   new
hat wye 9  0.03144187646093577 0.7495507603507059  new
pan wye 10 0.5026260055412137  0.9526183602969864  new

mlr --opprint put $c=$a.$b; unset $c ./reg_test/input/abixy
a   b   i  x                   y                   c
pan pan 1  0.3467901443380824  0.7268028627434533  panpan
eks pan 2  0.7586799647899636  0.5221511083334797  ekspan
wye wye 3  0.20460330576630303 0.33831852551664776 wyewye
eks wye 4  0.38139939387114097 0.13418874328430463 ekswye
wye pan 5  0.5732889198020006  0.8636244699032729  wyepan
zee pan 6  0.5271261600918548  0.49322128674835697 zeepan
eks zee 7  0.6117840605678454  0.1878849191181694  ekszee
zee wye 8  0.5985540091064224  0.976181385699006   zeewye
hat wye 9  0.03144187646093577 0.7495507603507059  hatwye
pan wye 10 0.5026260055412137  0.9526183602969864  panwye


================================================================
IS-PREDICATES

mlr --opprint put $f=is_absent($x) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - false
b 3 4 - false
b 5 - - false
b - 6 - false
b - - - false

mlr --opprint put $f=is_absent($y) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - false
b 3 4 - false
b 5 - - false
b - 6 - false
b - - - false

mlr --opprint put $f=is_absent($z) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - false
b 3 4 - false
b 5 - - false
b - 6 - false
b - - - false

mlr --opprint put $f=is_absent($nosuch) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - true
b 3 4 - true
b 5 - - true
b - 6 - true
b - - - true

mlr --opprint put $f=is_absent(@nosuch) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - true
b 3 4 - true
b 5 - - true
b - 6 - true
b - - - true

mlr --opprint put @somesuch=1;$f=is_absent(@somesuch) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - false
b 3 4 - false
b 5 - - false
b - 6 - false
b - - - false

mlr --opprint put $f=is_bool($x>1) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - true
b 3 4 - true
b 5 - - true
b - 6 - true
b - - - true

mlr --opprint put $f=is_bool($y>1) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - true
b 3 4 - true
b 5 - - true
b - 6 - true
b - - - true

mlr --opprint put $f=is_bool($z>1) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - true
b 3 4 - true
b 5 - - true
b - 6 - true
b - - - true

mlr --opprint put $f=is_bool($nosuch>1) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - false
b 3 4 - false
b 5 - - false
b - 6 - false
b - - - false

mlr --opprint put $f=is_bool(@nosuch>1) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - false
b 3 4 - false
b 5 - - false
b - 6 - false
b - - - false

mlr --opprint put @somesuch=1;$f=is_bool(@somesuch>1) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - true
b 3 4 - true
b 5 - - true
b - 6 - true
b - - - true

mlr --opprint put $f=is_boolean($x>1) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - true
b 3 4 - true
b 5 - - true
b - 6 - true
b - - - true

mlr --opprint put $f=is_boolean($y>1) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - true
b 3 4 - true
b 5 - - true
b - 6 - true
b - - - true

mlr --opprint put $f=is_boolean($z>1) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - true
b 3 4 - true
b 5 - - true
b - 6 - true
b - - - true

mlr --opprint put $f=is_boolean($nosuch>1) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - false
b 3 4 - false
b 5 - - false
b - 6 - false
b - - - false

mlr --opprint put $f=is_boolean(@nosuch>1) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - false
b 3 4 - false
b 5 - - false
b - 6 - false
b - - - false

mlr --opprint put @somesuch=1;$f=is_boolean(@somesuch>1) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - true
b 3 4 - true
b 5 - - true
b - 6 - true
b - - - true

mlr --opprint put $f=is_empty($x) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - false
b 3 4 - false
b 5 - - false
b - 6 - true
b - - - true

mlr --opprint put $f=is_empty($y) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - false
b 3 4 - false
b 5 - - true
b - 6 - false
b - - - true

mlr --opprint put $f=is_empty($z) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - true
b 3 4 - true
b 5 - - true
b - 6 - true
b - - - true

mlr --opprint put $f=is_empty($nosuch) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - false
b 3 4 - false
b 5 - - false
b - 6 - false
b - - - false

mlr --opprint put $f=is_empty(@nosuch) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - false
b 3 4 - false
b 5 - - false
b - 6 - false
b - - - false

mlr --opprint put $f=is_empty($*) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - false
b 3 4 - false
b 5 - - false
b - 6 - false
b - - - false

mlr --opprint put $f=is_empty({1:2}) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - false
b 3 4 - false
b 5 - - false
b - 6 - false
b - - - false

mlr --opprint put @somesuch=1;$f=is_empty(@somesuch) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - false
b 3 4 - false
b 5 - - false
b - 6 - false
b - - - false

mlr --opprint put $f=is_empty_map($x) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - false
b 3 4 - false
b 5 - - false
b - 6 - false
b - - - false

mlr --opprint put $f=is_empty_map($y) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - false
b 3 4 - false
b 5 - - false
b - 6 - false
b - - - false

mlr --opprint put $f=is_empty_map($z) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - false
b 3 4 - false
b 5 - - false
b - 6 - false
b - - - false

mlr --opprint put $f=is_empty_map($nosuch) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - false
b 3 4 - false
b 5 - - false
b - 6 - false
b - - - false

mlr --opprint put $f=is_empty_map(@nosuch) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - false
b 3 4 - false
b 5 - - false
b - 6 - false
b - - - false

mlr --opprint put $f=is_empty_map($*) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - false
b 3 4 - false
b 5 - - false
b - 6 - false
b - - - false

mlr --opprint put $f=is_empty_map({1:2}) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - false
b 3 4 - false
b 5 - - false
b - 6 - false
b - - - false

mlr --opprint put $f=is_empty_map({}) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - true
b 3 4 - true
b 5 - - true
b - 6 - true
b - - - true

mlr --opprint put @somesuch=1;$f=is_empty_map(@somesuch) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - false
b 3 4 - false
b 5 - - false
b - 6 - false
b - - - false

mlr --opprint put $f=is_float($x) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - false
b 3 4 - false
b 5 - - false
b - 6 - false
b - - - false

mlr --opprint put $f=is_float($y) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - false
b 3 4 - false
b 5 - - false
b - 6 - false
b - - - false

mlr --opprint put $f=is_float($z) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - false
b 3 4 - false
b 5 - - false
b - 6 - false
b - - - false

mlr --opprint put $f=is_float($nosuch) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - false
b 3 4 - false
b 5 - - false
b - 6 - false
b - - - false

mlr --opprint put $f=is_float(@nosuch) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - false
b 3 4 - false
b 5 - - false
b - 6 - false
b - - - false

mlr --opprint put $f=is_float($*) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - false
b 3 4 - false
b 5 - - false
b - 6 - false
b - - - false

mlr --opprint put $f=is_float({1:2}) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - false
b 3 4 - false
b 5 - - false
b - 6 - false
b - - - false

mlr --opprint put @somesuch=1;$f=is_float(@somesuch) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - false
b 3 4 - false
b 5 - - false
b - 6 - false
b - - - false

mlr --opprint put $f=is_int($x) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - true
b 3 4 - true
b 5 - - true
b - 6 - false
b - - - false

mlr --opprint put $f=is_int($y) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - true
b 3 4 - true
b 5 - - false
b - 6 - true
b - - - false

mlr --opprint put $f=is_int($z) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - false
b 3 4 - false
b 5 - - false
b - 6 - false
b - - - false

mlr --opprint put $f=is_int($nosuch) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - false
b 3 4 - false
b 5 - - false
b - 6 - false
b - - - false

mlr --opprint put $f=is_int(@nosuch) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - false
b 3 4 - false
b 5 - - false
b - 6 - false
b - - - false

mlr --opprint put $f=is_int($*) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - false
b 3 4 - false
b 5 - - false
b - 6 - false
b - - - false

mlr --opprint put $f=is_int({1:2}) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - false
b 3 4 - false
b 5 - - false
b - 6 - false
b - - - false

mlr --opprint put @somesuch=1;$f=is_int(@somesuch) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - true
b 3 4 - true
b 5 - - true
b - 6 - true
b - - - true

mlr --opprint put $f=is_map($x) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - false
b 3 4 - false
b 5 - - false
b - 6 - false
b - - - false

mlr --opprint put $f=is_map($y) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - false
b 3 4 - false
b 5 - - false
b - 6 - false
b - - - false

mlr --opprint put $f=is_map($z) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - false
b 3 4 - false
b 5 - - false
b - 6 - false
b - - - false

mlr --opprint put $f=is_map($nosuch) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - false
b 3 4 - false
b 5 - - false
b - 6 - false
b - - - false

mlr --opprint put $f=is_map(@nosuch) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - false
b 3 4 - false
b 5 - - false
b - 6 - false
b - - - false

mlr --opprint put $f=is_map($*) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - true
b 3 4 - true
b 5 - - true
b - 6 - true
b - - - true

mlr --opprint put $f=is_map({1:2}) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - true
b 3 4 - true
b 5 - - true
b - 6 - true
b - - - true

mlr --opprint put $f=is_map({}) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - true
b 3 4 - true
b 5 - - true
b - 6 - true
b - - - true

mlr --opprint put @somesuch=1;$f=is_map(@somesuch) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - false
b 3 4 - false
b 5 - - false
b - 6 - false
b - - - false

mlr --opprint put $f=is_nonempty_map($x) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - false
b 3 4 - false
b 5 - - false
b - 6 - false
b - - - false

mlr --opprint put $f=is_nonempty_map($y) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - false
b 3 4 - false
b 5 - - false
b - 6 - false
b - - - false

mlr --opprint put $f=is_nonempty_map($z) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - false
b 3 4 - false
b 5 - - false
b - 6 - false
b - - - false

mlr --opprint put $f=is_nonempty_map($nosuch) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - false
b 3 4 - false
b 5 - - false
b - 6 - false
b - - - false

mlr --opprint put $f=is_nonempty_map(@nosuch) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - false
b 3 4 - false
b 5 - - false
b - 6 - false
b - - - false

mlr --opprint put $f=is_nonempty_map($*) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - true
b 3 4 - true
b 5 - - true
b - 6 - true
b - - - true

mlr --opprint put $f=is_nonempty_map({1:2}) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - true
b 3 4 - true
b 5 - - true
b - 6 - true
b - - - true

mlr --opprint put $f=is_nonempty_map({}) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - false
b 3 4 - false
b 5 - - false
b - 6 - false
b - - - false

mlr --opprint put @somesuch=1;$f=is_nonempty_map(@somesuch) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - false
b 3 4 - false
b 5 - - false
b - 6 - false
b - - - false

mlr --opprint put $f=is_not_empty($x) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - true
b 3 4 - true
b 5 - - true
b - 6 - false
b - - - false

mlr --opprint put $f=is_not_empty($y) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - true
b 3 4 - true
b 5 - - false
b - 6 - true
b - - - false

mlr --opprint put $f=is_not_empty($z) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - false
b 3 4 - false
b 5 - - false
b - 6 - false
b - - - false

mlr --opprint put $f=is_not_empty($nosuch) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - true
b 3 4 - true
b 5 - - true
b - 6 - true
b - - - true

mlr --opprint put $f=is_not_empty(@nosuch) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - true
b 3 4 - true
b 5 - - true
b - 6 - true
b - - - true

mlr --opprint put $f=is_not_empty($*) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - true
b 3 4 - true
b 5 - - true
b - 6 - true
b - - - true

mlr --opprint put $f=is_not_empty({1:2}) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - true
b 3 4 - true
b 5 - - true
b - 6 - true
b - - - true

mlr --opprint put @somesuch=1;$f=is_not_empty(@somesuch) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - true
b 3 4 - true
b 5 - - true
b - 6 - true
b - - - true

mlr --opprint put $f=is_not_map($x) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - true
b 3 4 - true
b 5 - - true
b - 6 - true
b - - - true

mlr --opprint put $f=is_not_map($y) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - true
b 3 4 - true
b 5 - - true
b - 6 - true
b - - - true

mlr --opprint put $f=is_not_map($z) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - true
b 3 4 - true
b 5 - - true
b - 6 - true
b - - - true

mlr --opprint put $f=is_not_map($nosuch) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - true
b 3 4 - true
b 5 - - true
b - 6 - true
b - - - true

mlr --opprint put $f=is_not_map(@nosuch) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - true
b 3 4 - true
b 5 - - true
b - 6 - true
b - - - true

mlr --opprint put $f=is_not_map($*) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - false
b 3 4 - false
b 5 - - false
b - 6 - false
b - - - false

mlr --opprint put $f=is_not_map({1:2}) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - false
b 3 4 - false
b 5 - - false
b - 6 - false
b - - - false

mlr --opprint put $f=is_not_map({}) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - false
b 3 4 - false
b 5 - - false
b - 6 - false
b - - - false

mlr --opprint put @somesuch=1;$f=is_not_map(@somesuch) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - true
b 3 4 - true
b 5 - - true
b - 6 - true
b - - - true

mlr --opprint put $f=is_not_null($x) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - true
b 3 4 - true
b 5 - - true
b - 6 - false
b - - - false

mlr --opprint put $f=is_not_null($y) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - true
b 3 4 - true
b 5 - - false
b - 6 - true
b - - - false

mlr --opprint put $f=is_not_null($z) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - false
b 3 4 - false
b 5 - - false
b - 6 - false
b - - - false

mlr --opprint put $f=is_not_null($nosuch) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - false
b 3 4 - false
b 5 - - false
b - 6 - false
b - - - false

mlr --opprint put $f=is_not_null(@nosuch) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - false
b 3 4 - false
b 5 - - false
b - 6 - false
b - - - false

mlr --opprint put @somesuch=1;$f=is_not_null(@somesuch) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - true
b 3 4 - true
b 5 - - true
b - 6 - true
b - - - true

mlr --opprint put $f=is_null($x) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - false
b 3 4 - false
b 5 - - false
b - 6 - true
b - - - true

mlr --opprint put $f=is_null($y) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - false
b 3 4 - false
b 5 - - true
b - 6 - false
b - - - true

mlr --opprint put $f=is_null($z) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - true
b 3 4 - true
b 5 - - true
b - 6 - true
b - - - true

mlr --opprint put $f=is_null($nosuch) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - true
b 3 4 - true
b 5 - - true
b - 6 - true
b - - - true

mlr --opprint put $f=is_null(@nosuch) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - true
b 3 4 - true
b 5 - - true
b - 6 - true
b - - - true

mlr --opprint put @somesuch=1;$f=is_null(@somesuch) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - false
b 3 4 - false
b 5 - - false
b - 6 - false
b - - - false

mlr --opprint put $f=is_numeric($x) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - true
b 3 4 - true
b 5 - - true
b - 6 - false
b - - - false

mlr --opprint put $f=is_numeric($y) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - true
b 3 4 - true
b 5 - - false
b - 6 - true
b - - - false

mlr --opprint put $f=is_numeric($z) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - false
b 3 4 - false
b 5 - - false
b - 6 - false
b - - - false

mlr --opprint put $f=is_numeric($nosuch) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - false
b 3 4 - false
b 5 - - false
b - 6 - false
b - - - false

mlr --opprint put $f=is_numeric(@nosuch) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - false
b 3 4 - false
b 5 - - false
b - 6 - false
b - - - false

mlr --opprint put @somesuch=1;$f=is_numeric(@somesuch) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - true
b 3 4 - true
b 5 - - true
b - 6 - true
b - - - true

mlr --opprint put $f=is_present($x) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - true
b 3 4 - true
b 5 - - true
b - 6 - true
b - - - true

mlr --opprint put $f=is_present($y) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - true
b 3 4 - true
b 5 - - true
b - 6 - true
b - - - true

mlr --opprint put $f=is_present($z) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - true
b 3 4 - true
b 5 - - true
b - 6 - true
b - - - true

mlr --opprint put $f=is_present($nosuch) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - false
b 3 4 - false
b 5 - - false
b - 6 - false
b - - - false

mlr --opprint put $f=is_present(@nosuch) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - false
b 3 4 - false
b 5 - - false
b - 6 - false
b - - - false

mlr --opprint put @somesuch=1;$f=is_present(@somesuch) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - true
b 3 4 - true
b 5 - - true
b - 6 - true
b - - - true

mlr --opprint put $f=is_string($x) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - false
b 3 4 - false
b 5 - - false
b - 6 - true
b - - - true

mlr --opprint put $f=is_string($y) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - false
b 3 4 - false
b 5 - - true
b - 6 - false
b - - - true

mlr --opprint put $f=is_string($z) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - true
b 3 4 - true
b 5 - - true
b - 6 - true
b - - - true

mlr --opprint put $f=is_string($nosuch) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - false
b 3 4 - false
b 5 - - false
b - 6 - false
b - - - false

mlr --opprint put $f=is_string(@nosuch) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - false
b 3 4 - false
b 5 - - false
b - 6 - false
b - - - false

mlr --opprint put @somesuch=1;$f=is_string(@somesuch) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - false
b 3 4 - false
b 5 - - false
b - 6 - false
b - - - false


================================================================
ASSERTION PASS-THROUGHS

mlr --opprint put $f=asserting_absent($nosuch) ./reg_test/input/nullvals.dkvp
a x y z
b 1 2 -
b 3 4 -
b 5 - -
b - 6 -
b - - -

mlr --opprint put $f=asserting_absent(@nosuch) ./reg_test/input/nullvals.dkvp
a x y z
b 1 2 -
b 3 4 -
b 5 - -
b - 6 -
b - - -

mlr --opprint put $f=asserting_absent($x) ./reg_test/input/nullvals.dkvp
mlr: absent type-assertion failed at NR=1 FNR=1 FILENAME=./reg_test/input/nullvals.dkvp

mlr --opprint put $f=asserting_absent($y) ./reg_test/input/nullvals.dkvp
mlr: absent type-assertion failed at NR=1 FNR=1 FILENAME=./reg_test/input/nullvals.dkvp

mlr --opprint put $f=asserting_absent($z) ./reg_test/input/nullvals.dkvp
mlr: absent type-assertion failed at NR=1 FNR=1 FILENAME=./reg_test/input/nullvals.dkvp

mlr --opprint put @somesuch=1;$f=asserting_absent(@somesuch) ./reg_test/input/nullvals.dkvp
mlr: absent type-assertion failed at NR=1 FNR=1 FILENAME=./reg_test/input/nullvals.dkvp

mlr --opprint put foo=asserting_absent($*) ./reg_test/input/nullvals.dkvp
mlr: absent type-assertion failed at NR=1 FNR=1 FILENAME=./reg_test/input/nullvals.dkvp

mlr --opprint put foo=asserting_absent({1:2}) ./reg_test/input/nullvals.dkvp
mlr: absent type-assertion failed at NR=1 FNR=1 FILENAME=./reg_test/input/nullvals.dkvp

mlr --opprint put $f=asserting_empty($z) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - -
b 3 4 - -
b 5 - - -
b - 6 - -
b - - - -

mlr --opprint put $f=asserting_empty($x) ./reg_test/input/nullvals.dkvp
mlr: empty type-assertion failed at NR=1 FNR=1 FILENAME=./reg_test/input/nullvals.dkvp

mlr --opprint put $f=asserting_empty($y) ./reg_test/input/nullvals.dkvp
mlr: empty type-assertion failed at NR=1 FNR=1 FILENAME=./reg_test/input/nullvals.dkvp

mlr --opprint put $f=asserting_empty($nosuch) ./reg_test/input/nullvals.dkvp
mlr: empty type-assertion failed at NR=1 FNR=1 FILENAME=./reg_test/input/nullvals.dkvp

mlr --opprint put $f=asserting_empty(@nosuch) ./reg_test/input/nullvals.dkvp
mlr: empty type-assertion failed at NR=1 FNR=1 FILENAME=./reg_test/input/nullvals.dkvp

mlr --opprint put $f=asserting_empty({1:2}) ./reg_test/input/nullvals.dkvp
mlr: empty type-assertion failed at NR=1 FNR=1 FILENAME=./reg_test/input/nullvals.dkvp

mlr --opprint put @somesuch=1;$f=asserting_empty(@somesuch) ./reg_test/input/nullvals.dkvp
mlr: empty type-assertion failed at NR=1 FNR=1 FILENAME=./reg_test/input/nullvals.dkvp

mlr --opprint put foo=asserting_empty($*) ./reg_test/input/nullvals.dkvp
mlr: empty type-assertion failed at NR=1 FNR=1 FILENAME=./reg_test/input/nullvals.dkvp

mlr --opprint put foo=asserting_empty({1:2}) ./reg_test/input/nullvals.dkvp
mlr: empty type-assertion failed at NR=1 FNR=1 FILENAME=./reg_test/input/nullvals.dkvp

mlr --opprint put $f=asserting_empty_map({}) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - (error)
b 3 4 - (error)
b 5 - - (error)
b - 6 - (error)
b - - - (error)

mlr --opprint put $f=asserting_empty_map($*) ./reg_test/input/nullvals.dkvp
mlr: empty_map type-assertion failed at NR=1 FNR=1 FILENAME=./reg_test/input/nullvals.dkvp

mlr --opprint put $f=asserting_empty_map($x) ./reg_test/input/nullvals.dkvp
mlr: empty_map type-assertion failed at NR=1 FNR=1 FILENAME=./reg_test/input/nullvals.dkvp

mlr --opprint put $f=asserting_empty_map($y) ./reg_test/input/nullvals.dkvp
mlr: empty_map type-assertion failed at NR=1 FNR=1 FILENAME=./reg_test/input/nullvals.dkvp

mlr --opprint put $f=asserting_empty_map($z) ./reg_test/input/nullvals.dkvp
mlr: empty_map type-assertion failed at NR=1 FNR=1 FILENAME=./reg_test/input/nullvals.dkvp

mlr --opprint put $f=asserting_empty_map($nosuch) ./reg_test/input/nullvals.dkvp
mlr: empty_map type-assertion failed at NR=1 FNR=1 FILENAME=./reg_test/input/nullvals.dkvp

mlr --opprint put $f=asserting_empty_map(@nosuch) ./reg_test/input/nullvals.dkvp
mlr: empty_map type-assertion failed at NR=1 FNR=1 FILENAME=./reg_test/input/nullvals.dkvp

mlr --opprint put $f=asserting_empty_map({1:2}) ./reg_test/input/nullvals.dkvp
mlr: empty_map type-assertion failed at NR=1 FNR=1 FILENAME=./reg_test/input/nullvals.dkvp

mlr --opprint put @somesuch=1;$f=asserting_empty_map(@somesuch) ./reg_test/input/nullvals.dkvp
mlr: empty_map type-assertion failed at NR=1 FNR=1 FILENAME=./reg_test/input/nullvals.dkvp

mlr --opprint put $f=asserting_map($*) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - (error)
b 3 4 - (error)
b 5 - - (error)
b - 6 - (error)
b - - - (error)

mlr --opprint put $f=asserting_map({1:2}) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - (error)
b 3 4 - (error)
b 5 - - (error)
b - 6 - (error)
b - - - (error)

mlr --opprint put $f=asserting_map({}) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - (error)
b 3 4 - (error)
b 5 - - (error)
b - 6 - (error)
b - - - (error)

mlr --opprint put $f=asserting_map($x) ./reg_test/input/nullvals.dkvp
mlr: map type-assertion failed at NR=1 FNR=1 FILENAME=./reg_test/input/nullvals.dkvp

mlr --opprint put $f=asserting_map($y) ./reg_test/input/nullvals.dkvp
mlr: map type-assertion failed at NR=1 FNR=1 FILENAME=./reg_test/input/nullvals.dkvp

mlr --opprint put $f=asserting_map($z) ./reg_test/input/nullvals.dkvp
mlr: map type-assertion failed at NR=1 FNR=1 FILENAME=./reg_test/input/nullvals.dkvp

mlr --opprint put $f=asserting_map($nosuch) ./reg_test/input/nullvals.dkvp
mlr: map type-assertion failed at NR=1 FNR=1 FILENAME=./reg_test/input/nullvals.dkvp

mlr --opprint put $f=asserting_map(@nosuch) ./reg_test/input/nullvals.dkvp
mlr: map type-assertion failed at NR=1 FNR=1 FILENAME=./reg_test/input/nullvals.dkvp

mlr --opprint put @somesuch=1;$f=asserting_map(@somesuch) ./reg_test/input/nullvals.dkvp
mlr: map type-assertion failed at NR=1 FNR=1 FILENAME=./reg_test/input/nullvals.dkvp

mlr --opprint put $f=asserting_nonempty_map($*) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - (error)
b 3 4 - (error)
b 5 - - (error)
b - 6 - (error)
b - - - (error)

mlr --opprint put $f=asserting_nonempty_map({1:2}) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - (error)
b 3 4 - (error)
b 5 - - (error)
b - 6 - (error)
b - - - (error)

mlr --opprint put $f=asserting_nonempty_map($x) ./reg_test/input/nullvals.dkvp
mlr: nonempty_map type-assertion failed at NR=1 FNR=1 FILENAME=./reg_test/input/nullvals.dkvp

mlr --opprint put $f=asserting_nonempty_map($y) ./reg_test/input/nullvals.dkvp
mlr: nonempty_map type-assertion failed at NR=1 FNR=1 FILENAME=./reg_test/input/nullvals.dkvp

mlr --opprint put $f=asserting_nonempty_map($z) ./reg_test/input/nullvals.dkvp
mlr: nonempty_map type-assertion failed at NR=1 FNR=1 FILENAME=./reg_test/input/nullvals.dkvp

mlr --opprint put $f=asserting_nonempty_map($nosuch) ./reg_test/input/nullvals.dkvp
mlr: nonempty_map type-assertion failed at NR=1 FNR=1 FILENAME=./reg_test/input/nullvals.dkvp

mlr --opprint put $f=asserting_nonempty_map(@nosuch) ./reg_test/input/nullvals.dkvp
mlr: nonempty_map type-assertion failed at NR=1 FNR=1 FILENAME=./reg_test/input/nullvals.dkvp

mlr --opprint put $f=asserting_nonempty_map({}) ./reg_test/input/nullvals.dkvp
mlr: nonempty_map type-assertion failed at NR=1 FNR=1 FILENAME=./reg_test/input/nullvals.dkvp

mlr --opprint put @somesuch=1;$f=asserting_nonempty_map(@somesuch) ./reg_test/input/nullvals.dkvp
mlr: nonempty_map type-assertion failed at NR=1 FNR=1 FILENAME=./reg_test/input/nullvals.dkvp

mlr --opprint put $*=asserting_not_empty($*) ./reg_test/input/nullvals.dkvp
a x y z
b 1 2 -
b 3 4 -
b 5 - -
b - 6 -
b - - -

mlr --opprint put $f=asserting_not_empty($nosuch) ./reg_test/input/nullvals.dkvp
a x y z
b 1 2 -
b 3 4 -
b 5 - -
b - 6 -
b - - -

mlr --opprint put $f=asserting_not_empty(@nosuch) ./reg_test/input/nullvals.dkvp
a x y z
b 1 2 -
b 3 4 -
b 5 - -
b - 6 -
b - - -

mlr --opprint put $f=asserting_not_empty({1:2}) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - (error)
b 3 4 - (error)
b 5 - - (error)
b - 6 - (error)
b - - - (error)

mlr --opprint put $nosuch=asserting_not_empty($nosuch) ./reg_test/input/nullvals.dkvp
a x y z
b 1 2 -
b 3 4 -
b 5 - -
b - 6 -
b - - -

mlr --opprint put @somesuch=1;$f=asserting_not_empty(@somesuch) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - 1
b 3 4 - 1
b 5 - - 1
b - 6 - 1
b - - - 1

mlr --opprint put $*=asserting_not_empty($*) ./reg_test/input/nullvals.dkvp
a x y z
b 1 2 -
b 3 4 -
b 5 - -
b - 6 -
b - - -

mlr --opprint put $*=asserting_not_empty({1:2}) ./reg_test/input/nullvals.dkvp
1
2
2
2
2
2

mlr --opprint put $f=asserting_not_empty($x) ./reg_test/input/nullvals.dkvp
mlr: not_empty type-assertion failed at NR=4 FNR=4 FILENAME=./reg_test/input/nullvals.dkvp

mlr --opprint put $f=asserting_not_empty($y) ./reg_test/input/nullvals.dkvp
mlr: not_empty type-assertion failed at NR=3 FNR=3 FILENAME=./reg_test/input/nullvals.dkvp

mlr --opprint put $f=asserting_not_empty($z) ./reg_test/input/nullvals.dkvp
mlr: not_empty type-assertion failed at NR=1 FNR=1 FILENAME=./reg_test/input/nullvals.dkvp

mlr --opprint put $f=asserting_not_map($x) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - 1
b 3 4 - 3
b 5 - - 5
b - 6 - -
b - - - -

mlr --opprint put $f=asserting_not_map($y) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - 2
b 3 4 - 4
b 5 - - -
b - 6 - 6
b - - - -

mlr --opprint put $f=asserting_not_map($z) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - -
b 3 4 - -
b 5 - - -
b - 6 - -
b - - - -

mlr --opprint put $f=asserting_not_map($nosuch) ./reg_test/input/nullvals.dkvp
a x y z
b 1 2 -
b 3 4 -
b 5 - -
b - 6 -
b - - -

mlr --opprint put $f=asserting_not_map(@nosuch) ./reg_test/input/nullvals.dkvp
a x y z
b 1 2 -
b 3 4 -
b 5 - -
b - 6 -
b - - -

mlr --opprint put @somesuch=1;$f=asserting_not_map(@somesuch) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - 1
b 3 4 - 1
b 5 - - 1
b - 6 - 1
b - - - 1

mlr --opprint put $f=asserting_not_map($*) ./reg_test/input/nullvals.dkvp
mlr: not_map type-assertion failed at NR=1 FNR=1 FILENAME=./reg_test/input/nullvals.dkvp

mlr --opprint put $f=asserting_not_map({1:2}) ./reg_test/input/nullvals.dkvp
mlr: not_map type-assertion failed at NR=1 FNR=1 FILENAME=./reg_test/input/nullvals.dkvp

mlr --opprint put $f=asserting_not_map({}) ./reg_test/input/nullvals.dkvp
mlr: not_map type-assertion failed at NR=1 FNR=1 FILENAME=./reg_test/input/nullvals.dkvp

mlr --opprint put @somesuch=1;$f=asserting_not_null(@somesuch) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - 1
b 3 4 - 1
b 5 - - 1
b - 6 - 1
b - - - 1

mlr --opprint put $*=asserting_not_null($*) ./reg_test/input/nullvals.dkvp
a x y z
b 1 2 -
b 3 4 -
b 5 - -
b - 6 -
b - - -

mlr --opprint put $*=asserting_not_null({1:2}) ./reg_test/input/nullvals.dkvp
1
2
2
2
2
2

mlr --opprint put $f=asserting_not_null($x) ./reg_test/input/nullvals.dkvp
mlr: not_null type-assertion failed at NR=4 FNR=4 FILENAME=./reg_test/input/nullvals.dkvp

mlr --opprint put $f=asserting_not_null($y) ./reg_test/input/nullvals.dkvp
mlr: not_null type-assertion failed at NR=3 FNR=3 FILENAME=./reg_test/input/nullvals.dkvp

mlr --opprint put $f=asserting_not_null($z) ./reg_test/input/nullvals.dkvp
mlr: not_null type-assertion failed at NR=1 FNR=1 FILENAME=./reg_test/input/nullvals.dkvp

mlr --opprint put $f=asserting_not_null($nosuch) ./reg_test/input/nullvals.dkvp
mlr: not_null type-assertion failed at NR=1 FNR=1 FILENAME=./reg_test/input/nullvals.dkvp

mlr --opprint put $f=asserting_not_null(@nosuch) ./reg_test/input/nullvals.dkvp
mlr: not_null type-assertion failed at NR=1 FNR=1 FILENAME=./reg_test/input/nullvals.dkvp

mlr --opprint put $f=asserting_null($z) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - -
b 3 4 - -
b 5 - - -
b - 6 - -
b - - - -

mlr --opprint put $f=asserting_null($nosuch) ./reg_test/input/nullvals.dkvp
a x y z
b 1 2 -
b 3 4 -
b 5 - -
b - 6 -
b - - -

mlr --opprint put $f=asserting_null(@nosuch) ./reg_test/input/nullvals.dkvp
a x y z
b 1 2 -
b 3 4 -
b 5 - -
b - 6 -
b - - -

mlr --opprint put $f=asserting_null($x) ./reg_test/input/nullvals.dkvp
mlr: null type-assertion failed at NR=1 FNR=1 FILENAME=./reg_test/input/nullvals.dkvp

mlr --opprint put $f=asserting_null($y) ./reg_test/input/nullvals.dkvp
mlr: null type-assertion failed at NR=1 FNR=1 FILENAME=./reg_test/input/nullvals.dkvp

mlr --opprint put @somesuch=1;$f=asserting_null(@somesuch) ./reg_test/input/nullvals.dkvp
mlr: null type-assertion failed at NR=1 FNR=1 FILENAME=./reg_test/input/nullvals.dkvp

mlr --opprint put $*=asserting_null($*) ./reg_test/input/nullvals.dkvp
mlr: null type-assertion failed at NR=1 FNR=1 FILENAME=./reg_test/input/nullvals.dkvp

mlr --opprint put $*=asserting_null({1:2}) ./reg_test/input/nullvals.dkvp
mlr: null type-assertion failed at NR=1 FNR=1 FILENAME=./reg_test/input/nullvals.dkvp

mlr --opprint put $f=asserting_numeric($x) ./reg_test/input/nullvals.dkvp
mlr: numeric type-assertion failed at NR=4 FNR=4 FILENAME=./reg_test/input/nullvals.dkvp

mlr --opprint put $f=asserting_numeric($y) ./reg_test/input/nullvals.dkvp
mlr: numeric type-assertion failed at NR=3 FNR=3 FILENAME=./reg_test/input/nullvals.dkvp

mlr --opprint put $f=asserting_numeric($z) ./reg_test/input/nullvals.dkvp
mlr: numeric type-assertion failed at NR=1 FNR=1 FILENAME=./reg_test/input/nullvals.dkvp

mlr --opprint put $*=asserting_numeric($*) ./reg_test/input/nullvals.dkvp
mlr: numeric type-assertion failed at NR=1 FNR=1 FILENAME=./reg_test/input/nullvals.dkvp

mlr --opprint put $*=asserting_numeric({1:2}) ./reg_test/input/nullvals.dkvp
mlr: numeric type-assertion failed at NR=1 FNR=1 FILENAME=./reg_test/input/nullvals.dkvp

mlr --opprint put $f=asserting_numeric($nosuch) ./reg_test/input/nullvals.dkvp
mlr: numeric type-assertion failed at NR=1 FNR=1 FILENAME=./reg_test/input/nullvals.dkvp

mlr --opprint put $f=asserting_present($x) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - 1
b 3 4 - 3
b 5 - - 5
b - 6 - -
b - - - -

mlr --opprint put $f=asserting_present($y) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - 2
b 3 4 - 4
b 5 - - -
b - 6 - 6
b - - - -

mlr --opprint put $f=asserting_present($z) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - -
b 3 4 - -
b 5 - - -
b - 6 - -
b - - - -

mlr --opprint put @somesuch=1;$f=asserting_present(@somesuch) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - 1
b 3 4 - 1
b 5 - - 1
b - 6 - 1
b - - - 1

mlr --opprint put $*=asserting_present($*) ./reg_test/input/nullvals.dkvp
a x y z
b 1 2 -
b 3 4 -
b 5 - -
b - 6 -
b - - -

mlr --opprint put $*=asserting_present({1:2}) ./reg_test/input/nullvals.dkvp
1
2
2
2
2
2

mlr --opprint put $f=asserting_present($nosuch) ./reg_test/input/nullvals.dkvp
mlr: present type-assertion failed at NR=1 FNR=1 FILENAME=./reg_test/input/nullvals.dkvp

mlr --opprint put $f=asserting_present(@nosuch) ./reg_test/input/nullvals.dkvp
mlr: present type-assertion failed at NR=1 FNR=1 FILENAME=./reg_test/input/nullvals.dkvp

mlr --opprint put $f=asserting_string($z) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - -
b 3 4 - -
b 5 - - -
b - 6 - -
b - - - -

mlr --opprint put $*=asserting_string($*) ./reg_test/input/nullvals.dkvp
mlr: string type-assertion failed at NR=1 FNR=1 FILENAME=./reg_test/input/nullvals.dkvp

mlr --opprint put $*=asserting_string({1:2}) ./reg_test/input/nullvals.dkvp
mlr: string type-assertion failed at NR=1 FNR=1 FILENAME=./reg_test/input/nullvals.dkvp

mlr --opprint put $f=asserting_string($x) ./reg_test/input/nullvals.dkvp
mlr: string type-assertion failed at NR=1 FNR=1 FILENAME=./reg_test/input/nullvals.dkvp

mlr --opprint put $f=asserting_string($y) ./reg_test/input/nullvals.dkvp
mlr: string type-assertion failed at NR=1 FNR=1 FILENAME=./reg_test/input/nullvals.dkvp

mlr --opprint put $f=asserting_string($nosuch) ./reg_test/input/nullvals.dkvp
mlr: string type-assertion failed at NR=1 FNR=1 FILENAME=./reg_test/input/nullvals.dkvp


================================================================
DSL NULL/EMPTY HANDLING

mlr put $z = $s . $s ./reg_test/input/null-vs-empty.dkvp
x=1,y=2,s=hello,z=hellohello
x=1,y=,s=,z=
x=,y=,s=hurrah,z=hurrahhurrah

mlr put $z = $s == "" ./reg_test/input/null-vs-empty.dkvp
x=1,y=2,s=hello,z=false
x=1,y=,s=,z=true
x=,y=,s=hurrah,z=false

mlr put $z = $s == $s ./reg_test/input/null-vs-empty.dkvp
x=1,y=2,s=hello,z=true
x=1,y=,s=,z=true
x=,y=,s=hurrah,z=true

mlr put $z = is_empty($s) ./reg_test/input/null-vs-empty.dkvp
x=1,y=2,s=hello,z=false
x=1,y=,s=,z=true
x=,y=,s=hurrah,z=false

mlr put $z = $x + $y ./reg_test/input/null-vs-empty.dkvp
x=1,y=2,s=hello,z=3
x=1,y=,s=,z=
x=,y=,s=hurrah,z=

mlr put $z = $y + $y ./reg_test/input/null-vs-empty.dkvp
x=1,y=2,s=hello,z=4
x=1,y=,s=,z=
x=,y=,s=hurrah,z=

mlr put $z = $x + $nosuch ./reg_test/input/null-vs-empty.dkvp
x=1,y=2,s=hello,z=1
x=1,y=,s=,z=1
x=,y=,s=hurrah

mlr put $t = sub($s,       "ell", "X") ./reg_test/input/null-vs-empty.dkvp
x=1,y=2,s=hello,t=hXo
x=1,y=,s=,t=
x=,y=,s=hurrah,t=hurrah

mlr put $t = sub($s,       "ell", "") ./reg_test/input/null-vs-empty.dkvp
x=1,y=2,s=hello,t=ho
x=1,y=,s=,t=
x=,y=,s=hurrah,t=hurrah

mlr put $t = sub($nosuch,  "ell", "X") ./reg_test/input/null-vs-empty.dkvp
x=1,y=2,s=hello
x=1,y=,s=
x=,y=,s=hurrah

mlr put $t = gsub($s,      "l",   "X") ./reg_test/input/null-vs-empty.dkvp
x=1,y=2,s=hello,t=heXXo
x=1,y=,s=,t=
x=,y=,s=hurrah,t=hurrah

mlr put $t = gsub($s,      "l",   "") ./reg_test/input/null-vs-empty.dkvp
x=1,y=2,s=hello,t=heo
x=1,y=,s=,t=
x=,y=,s=hurrah,t=hurrah

mlr put $t = gsub($nosuch, "l",   "X") ./reg_test/input/null-vs-empty.dkvp
x=1,y=2,s=hello
x=1,y=,s=
x=,y=,s=hurrah


---------------------------------------------------------------- EMIT
mlr put -q @v=1; @nonesuch       {emit @v} ./reg_test/input/abixy

mlr put -q @v=1; @nonesuch==true {emit @v} ./reg_test/input/abixy

mlr put -q @v=1; $nonesuch       {emit @v} ./reg_test/input/abixy

mlr put -q @v=1; $nonesuch==true {emit @v} ./reg_test/input/abixy


---------------------------------------------------------------- PLUS
mlr --ofs tab put begin{};          $xy = $x + $y; $sy = @s + $y; $xt = $x + @t; $st = @s + @t ./reg_test/input/typeof.dkvp
x=1	y=2	xy=3	sy=2	xt=1
x=1	y=	xy=	xt=1
x=	y=2	xy=	sy=2
x=	y=	xy=
a=1	y=2	xy=2	sy=2
a=1	y=
a=	y=2	xy=2	sy=2
a=	y=
x=1	b=2	xy=1	xt=1
x=1	b=	xy=1	xt=1
x=	b=2
x=	b=

mlr --ofs tab put begin{@s=3};      $xy = $x + $y; $sy = @s + $y; $xt = $x + @t; $st = @s + @t ./reg_test/input/typeof.dkvp
x=1	y=2	xy=3	sy=5	xt=1	st=3
x=1	y=	xy=	sy=	xt=1	st=3
x=	y=2	xy=	sy=5	st=3
x=	y=	xy=	sy=	st=3
a=1	y=2	xy=2	sy=5	st=3
a=1	y=	sy=	st=3
a=	y=2	xy=2	sy=5	st=3
a=	y=	sy=	st=3
x=1	b=2	xy=1	sy=3	xt=1	st=3
x=1	b=	xy=1	sy=3	xt=1	st=3
x=	b=2	sy=3	st=3
x=	b=	sy=3	st=3

mlr --ofs tab put begin{@t=4};      $xy = $x + $y; $sy = @s + $y; $xt = $x + @t; $st = @s + @t ./reg_test/input/typeof.dkvp
x=1	y=2	xy=3	sy=2	xt=5	st=4
x=1	y=	xy=	xt=5	st=4
x=	y=2	xy=	sy=2	xt=	st=4
x=	y=	xy=	xt=	st=4
a=1	y=2	xy=2	sy=2	xt=4	st=4
a=1	y=	xt=4	st=4
a=	y=2	xy=2	sy=2	xt=4	st=4
a=	y=	xt=4	st=4
x=1	b=2	xy=1	xt=5	st=4
x=1	b=	xy=1	xt=5	st=4
x=	b=2	xt=	st=4
x=	b=	xt=	st=4

mlr --ofs tab put begin{@s=3;@t=4}; $xy = $x + $y; $sy = @s + $y; $xt = $x + @t; $st = @s + @t ./reg_test/input/typeof.dkvp
x=1	y=2	xy=3	sy=5	xt=5	st=7
x=1	y=	xy=	sy=	xt=5	st=7
x=	y=2	xy=	sy=5	xt=	st=7
x=	y=	xy=	sy=	xt=	st=7
a=1	y=2	xy=2	sy=5	xt=4	st=7
a=1	y=	sy=	xt=4	st=7
a=	y=2	xy=2	sy=5	xt=4	st=7
a=	y=	sy=	xt=4	st=7
x=1	b=2	xy=1	sy=3	xt=5	st=7
x=1	b=	xy=1	sy=3	xt=5	st=7
x=	b=2	sy=3	xt=	st=7
x=	b=	sy=3	xt=	st=7


---------------------------------------------------------------- MINUS
mlr --ofs tab put begin{};          $xy = $x - $y; $sy = @s - $y; $xt = $x - @t; $st = @s - @t ./reg_test/input/typeof.dkvp
x=1	y=2	xy=-1	sy=2	xt=1
x=1	y=	xy=	xt=1
x=	y=2	xy=	sy=2
x=	y=	xy=
a=1	y=2	xy=2	sy=2
a=1	y=
a=	y=2	xy=2	sy=2
a=	y=
x=1	b=2	xy=1	xt=1
x=1	b=	xy=1	xt=1
x=	b=2
x=	b=

mlr --ofs tab put begin{@s=3};      $xy = $x - $y; $sy = @s - $y; $xt = $x - @t; $st = @s - @t ./reg_test/input/typeof.dkvp
x=1	y=2	xy=-1	sy=1	xt=1	st=3
x=1	y=	xy=	sy=	xt=1	st=3
x=	y=2	xy=	sy=1	st=3
x=	y=	xy=	sy=	st=3
a=1	y=2	xy=2	sy=1	st=3
a=1	y=	sy=	st=3
a=	y=2	xy=2	sy=1	st=3
a=	y=	sy=	st=3
x=1	b=2	xy=1	sy=3	xt=1	st=3
x=1	b=	xy=1	sy=3	xt=1	st=3
x=	b=2	sy=3	st=3
x=	b=	sy=3	st=3

mlr --ofs tab put begin{@t=4};      $xy = $x - $y; $sy = @s - $y; $xt = $x - @t; $st = @s - @t ./reg_test/input/typeof.dkvp
x=1	y=2	xy=-1	sy=2	xt=-3	st=4
x=1	y=	xy=	xt=-3	st=4
x=	y=2	xy=	sy=2	xt=	st=4
x=	y=	xy=	xt=	st=4
a=1	y=2	xy=2	sy=2	xt=4	st=4
a=1	y=	xt=4	st=4
a=	y=2	xy=2	sy=2	xt=4	st=4
a=	y=	xt=4	st=4
x=1	b=2	xy=1	xt=-3	st=4
x=1	b=	xy=1	xt=-3	st=4
x=	b=2	xt=	st=4
x=	b=	xt=	st=4

mlr --ofs tab put begin{@s=3;@t=4}; $xy = $x - $y; $sy = @s - $y; $xt = $x - @t; $st = @s - @t ./reg_test/input/typeof.dkvp
x=1	y=2	xy=-1	sy=1	xt=-3	st=-1
x=1	y=	xy=	sy=	xt=-3	st=-1
x=	y=2	xy=	sy=1	xt=	st=-1
x=	y=	xy=	sy=	xt=	st=-1
a=1	y=2	xy=2	sy=1	xt=4	st=-1
a=1	y=	sy=	xt=4	st=-1
a=	y=2	xy=2	sy=1	xt=4	st=-1
a=	y=	sy=	xt=4	st=-1
x=1	b=2	xy=1	sy=3	xt=-3	st=-1
x=1	b=	xy=1	sy=3	xt=-3	st=-1
x=	b=2	sy=3	xt=	st=-1
x=	b=	sy=3	xt=	st=-1


---------------------------------------------------------------- TIMES
mlr --ofs tab put begin{};          $xy = $x * $y; $sy = @s * $y; $xt = $x * @t; $st = @s * @t ./reg_test/input/typeof.dkvp
x=1	y=2	xy=2	sy=2	xt=1
x=1	y=	xy=	xt=1
x=	y=2	xy=	sy=2
x=	y=	xy=
a=1	y=2	xy=2	sy=2
a=1	y=
a=	y=2	xy=2	sy=2
a=	y=
x=1	b=2	xy=1	xt=1
x=1	b=	xy=1	xt=1
x=	b=2
x=	b=

mlr --ofs tab put begin{@s=3};      $xy = $x * $y; $sy = @s * $y; $xt = $x * @t; $st = @s * @t ./reg_test/input/typeof.dkvp
x=1	y=2	xy=2	sy=6	xt=1	st=3
x=1	y=	xy=	sy=	xt=1	st=3
x=	y=2	xy=	sy=6	st=3
x=	y=	xy=	sy=	st=3
a=1	y=2	xy=2	sy=6	st=3
a=1	y=	sy=	st=3
a=	y=2	xy=2	sy=6	st=3
a=	y=	sy=	st=3
x=1	b=2	xy=1	sy=3	xt=1	st=3
x=1	b=	xy=1	sy=3	xt=1	st=3
x=	b=2	sy=3	st=3
x=	b=	sy=3	st=3

mlr --ofs tab put begin{@t=4};      $xy = $x * $y; $sy = @s * $y; $xt = $x * @t; $st = @s * @t ./reg_test/input/typeof.dkvp
x=1	y=2	xy=2	sy=2	xt=4	st=4
x=1	y=	xy=	xt=4	st=4
x=	y=2	xy=	sy=2	xt=	st=4
x=	y=	xy=	xt=	st=4
a=1	y=2	xy=2	sy=2	xt=4	st=4
a=1	y=	xt=4	st=4
a=	y=2	xy=2	sy=2	xt=4	st=4
a=	y=	xt=4	st=4
x=1	b=2	xy=1	xt=4	st=4
x=1	b=	xy=1	xt=4	st=4
x=	b=2	xt=	st=4
x=	b=	xt=	st=4

mlr --ofs tab put begin{@s=3;@t=4}; $xy = $x * $y; $sy = @s * $y; $xt = $x * @t; $st = @s * @t ./reg_test/input/typeof.dkvp
x=1	y=2	xy=2	sy=6	xt=4	st=12
x=1	y=	xy=	sy=	xt=4	st=12
x=	y=2	xy=	sy=6	xt=	st=12
x=	y=	xy=	sy=	xt=	st=12
a=1	y=2	xy=2	sy=6	xt=4	st=12
a=1	y=	sy=	xt=4	st=12
a=	y=2	xy=2	sy=6	xt=4	st=12
a=	y=	sy=	xt=4	st=12
x=1	b=2	xy=1	sy=3	xt=4	st=12
x=1	b=	xy=1	sy=3	xt=4	st=12
x=	b=2	sy=3	xt=	st=12
x=	b=	sy=3	xt=	st=12


---------------------------------------------------------------- DIVIDE
mlr --ofs tab put begin{};          $xy = $x / $y; $sy = @s / $y; $xt = $x / @t; $st = @s / @t ./reg_test/input/typeof.dkvp
x=1	y=2	xy=0.500000	sy=0	xt=1
x=1	y=	xy=	xt=1
x=	y=2	xy=	sy=0
x=	y=	xy=
a=1	y=2	xy=0	sy=0
a=1	y=
a=	y=2	xy=0	sy=0
a=	y=
x=1	b=2	xy=1	xt=1
x=1	b=	xy=1	xt=1
x=	b=2
x=	b=

mlr --ofs tab put begin{@s=3};      $xy = $x / $y; $sy = @s / $y; $xt = $x / @t; $st = @s / @t ./reg_test/input/typeof.dkvp
x=1	y=2	xy=0.500000	sy=1.500000	xt=1	st=3
x=1	y=	xy=	sy=	xt=1	st=3
x=	y=2	xy=	sy=1.500000	st=3
x=	y=	xy=	sy=	st=3
a=1	y=2	xy=0	sy=1.500000	st=3
a=1	y=	sy=	st=3
a=	y=2	xy=0	sy=1.500000	st=3
a=	y=	sy=	st=3
x=1	b=2	xy=1	sy=3	xt=1	st=3
x=1	b=	xy=1	sy=3	xt=1	st=3
x=	b=2	sy=3	st=3
x=	b=	sy=3	st=3

mlr --ofs tab put begin{@t=4};      $xy = $x / $y; $sy = @s / $y; $xt = $x / @t; $st = @s / @t ./reg_test/input/typeof.dkvp
x=1	y=2	xy=0.500000	sy=0	xt=0.250000	st=0
x=1	y=	xy=	xt=0.250000	st=0
x=	y=2	xy=	sy=0	xt=	st=0
x=	y=	xy=	xt=	st=0
a=1	y=2	xy=0	sy=0	xt=0	st=0
a=1	y=	xt=0	st=0
a=	y=2	xy=0	sy=0	xt=0	st=0
a=	y=	xt=0	st=0
x=1	b=2	xy=1	xt=0.250000	st=0
x=1	b=	xy=1	xt=0.250000	st=0
x=	b=2	xt=	st=0
x=	b=	xt=	st=0

mlr --ofs tab put begin{@s=3;@t=4}; $xy = $x / $y; $sy = @s / $y; $xt = $x / @t; $st = @s / @t ./reg_test/input/typeof.dkvp
x=1	y=2	xy=0.500000	sy=1.500000	xt=0.250000	st=0.750000
x=1	y=	xy=	sy=	xt=0.250000	st=0.750000
x=	y=2	xy=	sy=1.500000	xt=	st=0.750000
x=	y=	xy=	sy=	xt=	st=0.750000
a=1	y=2	xy=0	sy=1.500000	xt=0	st=0.750000
a=1	y=	sy=	xt=0	st=0.750000
a=	y=2	xy=0	sy=1.500000	xt=0	st=0.750000
a=	y=	sy=	xt=0	st=0.750000
x=1	b=2	xy=1	sy=3	xt=0.250000	st=0.750000
x=1	b=	xy=1	sy=3	xt=0.250000	st=0.750000
x=	b=2	sy=3	xt=	st=0.750000
x=	b=	sy=3	xt=	st=0.750000


---------------------------------------------------------------- INTEGER DIVIDE
mlr --ofs tab put begin{};          $xy = $x // $y; $sy = @s // $y; $xt = $x // @t; $st = @s // @t ./reg_test/input/typeof.dkvp
x=1	y=2	xy=0	sy=0	xt=1
x=1	y=	xy=	xt=1
x=	y=2	xy=	sy=0
x=	y=	xy=
a=1	y=2	xy=0	sy=0
a=1	y=
a=	y=2	xy=0	sy=0
a=	y=
x=1	b=2	xy=1	xt=1
x=1	b=	xy=1	xt=1
x=	b=2
x=	b=

mlr --ofs tab put begin{@s=3};      $xy = $x // $y; $sy = @s // $y; $xt = $x // @t; $st = @s // @t ./reg_test/input/typeof.dkvp
x=1	y=2	xy=0	sy=1	xt=1	st=3
x=1	y=	xy=	sy=	xt=1	st=3
x=	y=2	xy=	sy=1	st=3
x=	y=	xy=	sy=	st=3
a=1	y=2	xy=0	sy=1	st=3
a=1	y=	sy=	st=3
a=	y=2	xy=0	sy=1	st=3
a=	y=	sy=	st=3
x=1	b=2	xy=1	sy=3	xt=1	st=3
x=1	b=	xy=1	sy=3	xt=1	st=3
x=	b=2	sy=3	st=3
x=	b=	sy=3	st=3

mlr --ofs tab put begin{@t=4};      $xy = $x // $y; $sy = @s // $y; $xt = $x // @t; $st = @s // @t ./reg_test/input/typeof.dkvp
x=1	y=2	xy=0	sy=0	xt=0	st=0
x=1	y=	xy=	xt=0	st=0
x=	y=2	xy=	sy=0	xt=	st=0
x=	y=	xy=	xt=	st=0
a=1	y=2	xy=0	sy=0	xt=0	st=0
a=1	y=	xt=0	st=0
a=	y=2	xy=0	sy=0	xt=0	st=0
a=	y=	xt=0	st=0
x=1	b=2	xy=1	xt=0	st=0
x=1	b=	xy=1	xt=0	st=0
x=	b=2	xt=	st=0
x=	b=	xt=	st=0

mlr --ofs tab put begin{@s=3;@t=4}; $xy = $x // $y; $sy = @s // $y; $xt = $x // @t; $st = @s // @t ./reg_test/input/typeof.dkvp
x=1	y=2	xy=0	sy=1	xt=0	st=0
x=1	y=	xy=	sy=	xt=0	st=0
x=	y=2	xy=	sy=1	xt=	st=0
x=	y=	xy=	sy=	xt=	st=0
a=1	y=2	xy=0	sy=1	xt=0	st=0
a=1	y=	sy=	xt=0	st=0
a=	y=2	xy=0	sy=1	xt=0	st=0
a=	y=	sy=	xt=0	st=0
x=1	b=2	xy=1	sy=3	xt=0	st=0
x=1	b=	xy=1	sy=3	xt=0	st=0
x=	b=2	sy=3	xt=	st=0
x=	b=	sy=3	xt=	st=0


---------------------------------------------------------------- REMAINDER
mlr --ofs tab put begin{};          $xy = $x % $y; $sy = @s % $y; $xt = $x % @t; $st = @s % @t ./reg_test/input/typeof.dkvp
x=1	y=2	xy=1	sy=0	xt=1
x=1	y=	xy=	xt=1
x=	y=2	xy=	sy=0
x=	y=	xy=
a=1	y=2	xy=0	sy=0
a=1	y=
a=	y=2	xy=0	sy=0
a=	y=
x=1	b=2	xy=1	xt=1
x=1	b=	xy=1	xt=1
x=	b=2
x=	b=

mlr --ofs tab put begin{@s=3};      $xy = $x % $y; $sy = @s % $y; $xt = $x % @t; $st = @s % @t ./reg_test/input/typeof.dkvp
x=1	y=2	xy=1	sy=1	xt=1	st=3
x=1	y=	xy=	sy=	xt=1	st=3
x=	y=2	xy=	sy=1	st=3
x=	y=	xy=	sy=	st=3
a=1	y=2	xy=0	sy=1	st=3
a=1	y=	sy=	st=3
a=	y=2	xy=0	sy=1	st=3
a=	y=	sy=	st=3
x=1	b=2	xy=1	sy=3	xt=1	st=3
x=1	b=	xy=1	sy=3	xt=1	st=3
x=	b=2	sy=3	st=3
x=	b=	sy=3	st=3

mlr --ofs tab put begin{@t=4};      $xy = $x % $y; $sy = @s % $y; $xt = $x % @t; $st = @s % @t ./reg_test/input/typeof.dkvp
x=1	y=2	xy=1	sy=0	xt=1	st=0
x=1	y=	xy=	xt=1	st=0
x=	y=2	xy=	sy=0	xt=	st=0
x=	y=	xy=	xt=	st=0
a=1	y=2	xy=0	sy=0	xt=0	st=0
a=1	y=	xt=0	st=0
a=	y=2	xy=0	sy=0	xt=0	st=0
a=	y=	xt=0	st=0
x=1	b=2	xy=1	xt=1	st=0
x=1	b=	xy=1	xt=1	st=0
x=	b=2	xt=	st=0
x=	b=	xt=	st=0

mlr --ofs tab put begin{@s=3;@t=4}; $xy = $x % $y; $sy = @s % $y; $xt = $x % @t; $st = @s % @t ./reg_test/input/typeof.dkvp
x=1	y=2	xy=1	sy=1	xt=1	st=3
x=1	y=	xy=	sy=	xt=1	st=3
x=	y=2	xy=	sy=1	xt=	st=3
x=	y=	xy=	sy=	xt=	st=3
a=1	y=2	xy=0	sy=1	xt=0	st=3
a=1	y=	sy=	xt=0	st=3
a=	y=2	xy=0	sy=1	xt=0	st=3
a=	y=	sy=	xt=0	st=3
x=1	b=2	xy=1	sy=3	xt=1	st=3
x=1	b=	xy=1	sy=3	xt=1	st=3
x=	b=2	sy=3	xt=	st=3
x=	b=	sy=3	xt=	st=3


---------------------------------------------------------------- BITWISE AND
mlr --ofs tab put begin{};          $xy = $x & $y; $sy = @s & $y; $xt = $x & @t; $st = @s & @t ./reg_test/input/typeof.dkvp
x=1	y=2	xy=0	sy=2	xt=1
x=1	y=	xy=	xt=1
x=	y=2	xy=	sy=2
x=	y=	xy=
a=1	y=2	xy=2	sy=2
a=1	y=
a=	y=2	xy=2	sy=2
a=	y=
x=1	b=2	xy=1	xt=1
x=1	b=	xy=1	xt=1
x=	b=2
x=	b=

mlr --ofs tab put begin{@s=3};      $xy = $x & $y; $sy = @s & $y; $xt = $x & @t; $st = @s & @t ./reg_test/input/typeof.dkvp
x=1	y=2	xy=0	sy=2	xt=1	st=3
x=1	y=	xy=	sy=	xt=1	st=3
x=	y=2	xy=	sy=2	st=3
x=	y=	xy=	sy=	st=3
a=1	y=2	xy=2	sy=2	st=3
a=1	y=	sy=	st=3
a=	y=2	xy=2	sy=2	st=3
a=	y=	sy=	st=3
x=1	b=2	xy=1	sy=3	xt=1	st=3
x=1	b=	xy=1	sy=3	xt=1	st=3
x=	b=2	sy=3	st=3
x=	b=	sy=3	st=3

mlr --ofs tab put begin{@t=4};      $xy = $x & $y; $sy = @s & $y; $xt = $x & @t; $st = @s & @t ./reg_test/input/typeof.dkvp
x=1	y=2	xy=0	sy=2	xt=0	st=4
x=1	y=	xy=	xt=0	st=4
x=	y=2	xy=	sy=2	xt=	st=4
x=	y=	xy=	xt=	st=4
a=1	y=2	xy=2	sy=2	xt=4	st=4
a=1	y=	xt=4	st=4
a=	y=2	xy=2	sy=2	xt=4	st=4
a=	y=	xt=4	st=4
x=1	b=2	xy=1	xt=0	st=4
x=1	b=	xy=1	xt=0	st=4
x=	b=2	xt=	st=4
x=	b=	xt=	st=4

mlr --ofs tab put begin{@s=3;@t=4}; $xy = $x & $y; $sy = @s & $y; $xt = $x & @t; $st = @s & @t ./reg_test/input/typeof.dkvp
x=1	y=2	xy=0	sy=2	xt=0	st=0
x=1	y=	xy=	sy=	xt=0	st=0
x=	y=2	xy=	sy=2	xt=	st=0
x=	y=	xy=	sy=	xt=	st=0
a=1	y=2	xy=2	sy=2	xt=4	st=0
a=1	y=	sy=	xt=4	st=0
a=	y=2	xy=2	sy=2	xt=4	st=0
a=	y=	sy=	xt=4	st=0
x=1	b=2	xy=1	sy=3	xt=0	st=0
x=1	b=	xy=1	sy=3	xt=0	st=0
x=	b=2	sy=3	xt=	st=0
x=	b=	sy=3	xt=	st=0


---------------------------------------------------------------- BITWISE OR
mlr --ofs tab put begin{};          $xy = $x | $y; $sy = @s | $y; $xt = $x | @t; $st = @s | @t ./reg_test/input/typeof.dkvp
x=1	y=2	xy=3	sy=2	xt=1
x=1	y=	xy=	xt=1
x=	y=2	xy=	sy=2
x=	y=	xy=
a=1	y=2	xy=2	sy=2
a=1	y=
a=	y=2	xy=2	sy=2
a=	y=
x=1	b=2	xy=1	xt=1
x=1	b=	xy=1	xt=1
x=	b=2
x=	b=

mlr --ofs tab put begin{@s=3};      $xy = $x | $y; $sy = @s | $y; $xt = $x | @t; $st = @s | @t ./reg_test/input/typeof.dkvp
x=1	y=2	xy=3	sy=3	xt=1	st=3
x=1	y=	xy=	sy=	xt=1	st=3
x=	y=2	xy=	sy=3	st=3
x=	y=	xy=	sy=	st=3
a=1	y=2	xy=2	sy=3	st=3
a=1	y=	sy=	st=3
a=	y=2	xy=2	sy=3	st=3
a=	y=	sy=	st=3
x=1	b=2	xy=1	sy=3	xt=1	st=3
x=1	b=	xy=1	sy=3	xt=1	st=3
x=	b=2	sy=3	st=3
x=	b=	sy=3	st=3

mlr --ofs tab put begin{@t=4};      $xy = $x | $y; $sy = @s | $y; $xt = $x | @t; $st = @s | @t ./reg_test/input/typeof.dkvp
x=1	y=2	xy=3	sy=2	xt=5	st=4
x=1	y=	xy=	xt=5	st=4
x=	y=2	xy=	sy=2	xt=	st=4
x=	y=	xy=	xt=	st=4
a=1	y=2	xy=2	sy=2	xt=4	st=4
a=1	y=	xt=4	st=4
a=	y=2	xy=2	sy=2	xt=4	st=4
a=	y=	xt=4	st=4
x=1	b=2	xy=1	xt=5	st=4
x=1	b=	xy=1	xt=5	st=4
x=	b=2	xt=	st=4
x=	b=	xt=	st=4

mlr --ofs tab put begin{@s=3;@t=4}; $xy = $x | $y; $sy = @s | $y; $xt = $x | @t; $st = @s | @t ./reg_test/input/typeof.dkvp
x=1	y=2	xy=3	sy=3	xt=5	st=7
x=1	y=	xy=	sy=	xt=5	st=7
x=	y=2	xy=	sy=3	xt=	st=7
x=	y=	xy=	sy=	xt=	st=7
a=1	y=2	xy=2	sy=3	xt=4	st=7
a=1	y=	sy=	xt=4	st=7
a=	y=2	xy=2	sy=3	xt=4	st=7
a=	y=	sy=	xt=4	st=7
x=1	b=2	xy=1	sy=3	xt=5	st=7
x=1	b=	xy=1	sy=3	xt=5	st=7
x=	b=2	sy=3	xt=	st=7
x=	b=	sy=3	xt=	st=7


---------------------------------------------------------------- BITWISE XOR
mlr --ofs tab put begin{};          $xy = $x ^ $y; $sy = @s ^ $y; $xt = $x ^ @t; $st = @s ^ @t ./reg_test/input/typeof.dkvp
x=1	y=2	xy=3	sy=2	xt=1
x=1	y=	xy=	xt=1
x=	y=2	xy=	sy=2
x=	y=	xy=
a=1	y=2	xy=2	sy=2
a=1	y=
a=	y=2	xy=2	sy=2
a=	y=
x=1	b=2	xy=1	xt=1
x=1	b=	xy=1	xt=1
x=	b=2
x=	b=

mlr --ofs tab put begin{@s=3};      $xy = $x ^ $y; $sy = @s ^ $y; $xt = $x ^ @t; $st = @s ^ @t ./reg_test/input/typeof.dkvp
x=1	y=2	xy=3	sy=1	xt=1	st=3
x=1	y=	xy=	sy=	xt=1	st=3
x=	y=2	xy=	sy=1	st=3
x=	y=	xy=	sy=	st=3
a=1	y=2	xy=2	sy=1	st=3
a=1	y=	sy=	st=3
a=	y=2	xy=2	sy=1	st=3
a=	y=	sy=	st=3
x=1	b=2	xy=1	sy=3	xt=1	st=3
x=1	b=	xy=1	sy=3	xt=1	st=3
x=	b=2	sy=3	st=3
x=	b=	sy=3	st=3

mlr --ofs tab put begin{@t=4};      $xy = $x ^ $y; $sy = @s ^ $y; $xt = $x ^ @t; $st = @s ^ @t ./reg_test/input/typeof.dkvp
x=1	y=2	xy=3	sy=2	xt=5	st=4
x=1	y=	xy=	xt=5	st=4
x=	y=2	xy=	sy=2	xt=	st=4
x=	y=	xy=	xt=	st=4
a=1	y=2	xy=2	sy=2	xt=4	st=4
a=1	y=	xt=4	st=4
a=	y=2	xy=2	sy=2	xt=4	st=4
a=	y=	xt=4	st=4
x=1	b=2	xy=1	xt=5	st=4
x=1	b=	xy=1	xt=5	st=4
x=	b=2	xt=	st=4
x=	b=	xt=	st=4

mlr --ofs tab put begin{@s=3;@t=4}; $xy = $x ^ $y; $sy = @s ^ $y; $xt = $x ^ @t; $st = @s ^ @t ./reg_test/input/typeof.dkvp
x=1	y=2	xy=3	sy=1	xt=5	st=7
x=1	y=	xy=	sy=	xt=5	st=7
x=	y=2	xy=	sy=1	xt=	st=7
x=	y=	xy=	sy=	xt=	st=7
a=1	y=2	xy=2	sy=1	xt=4	st=7
a=1	y=	sy=	xt=4	st=7
a=	y=2	xy=2	sy=1	xt=4	st=7
a=	y=	sy=	xt=4	st=7
x=1	b=2	xy=1	sy=3	xt=5	st=7
x=1	b=	xy=1	sy=3	xt=5	st=7
x=	b=2	sy=3	xt=	st=7
x=	b=	sy=3	xt=	st=7


================================================================
DSL TYPE PREDICATES

mlr --from ./reg_test/input/abixy --opprint put  for (k, v in $*) { $[k."_type"]      = typeof(v)     } 
a   b   i  x                   y                   a_type b_type i_type x_type y_type
pan pan 1  0.3467901443380824  0.7268028627434533  string string int    float  float
eks pan 2  0.7586799647899636  0.5221511083334797  string string int    float  float
wye wye 3  0.20460330576630303 0.33831852551664776 string string int    float  float
eks wye 4  0.38139939387114097 0.13418874328430463 string string int    float  float
wye pan 5  0.5732889198020006  0.8636244699032729  string string int    float  float
zee pan 6  0.5271261600918548  0.49322128674835697 string string int    float  float
eks zee 7  0.6117840605678454  0.1878849191181694  string string int    float  float
zee wye 8  0.5985540091064224  0.976181385699006   string string int    float  float
hat wye 9  0.03144187646093577 0.7495507603507059  string string int    float  float
pan wye 10 0.5026260055412137  0.9526183602969864  string string int    float  float

mlr --from ./reg_test/input/abixy-het put -q for (k,v in $*) {if (is_float(v))    {@float[NR][k]   = v}}    end{ emit @float,   "NR", "k" }
NR=1,k=x,float=0.346790
NR=1,k=y,float=0.726803
NR=2,k=x,float=0.758680
NR=2,k=y,float=0.522151
NR=3,k=x,float=0.204603
NR=3,k=y,float=0.338319
NR=4,k=x,float=0.381399
NR=4,k=y,float=0.134189
NR=5,k=xxx,float=0.573289
NR=5,k=y,float=0.863624
NR=6,k=x,float=0.527126
NR=6,k=y,float=0.493221
NR=7,k=x,float=0.611784
NR=7,k=y,float=0.187885
NR=8,k=x,float=0.598554
NR=8,k=yyy,float=0.976181
NR=9,k=x,float=0.031442
NR=9,k=y,float=0.749551
NR=10,k=x,float=0.502626
NR=10,k=y,float=0.952618

mlr --from ./reg_test/input/abixy-het put -q for (k,v in $*) {if (is_int(v))      {@int[NR][k]     = v}}    end{ emit @int,     "NR", "k" }
NR=1,k=i,int=1
NR=2,k=i,int=2
NR=3,k=i,int=3
NR=4,k=i,int=4
NR=5,k=i,int=5
NR=6,k=i,int=6
NR=7,k=iii,int=7
NR=8,k=i,int=8
NR=9,k=i,int=9
NR=10,k=i,int=10

mlr --from ./reg_test/input/abixy-het put -q for (k,v in $*) {if (is_numeric(v))  {@numeric[NR][k] = v}}    end{ emit @numeric, "NR", "k" }
NR=1,k=i,numeric=1
NR=1,k=x,numeric=0.346790
NR=1,k=y,numeric=0.726803
NR=2,k=i,numeric=2
NR=2,k=x,numeric=0.758680
NR=2,k=y,numeric=0.522151
NR=3,k=i,numeric=3
NR=3,k=x,numeric=0.204603
NR=3,k=y,numeric=0.338319
NR=4,k=i,numeric=4
NR=4,k=x,numeric=0.381399
NR=4,k=y,numeric=0.134189
NR=5,k=i,numeric=5
NR=5,k=xxx,numeric=0.573289
NR=5,k=y,numeric=0.863624
NR=6,k=i,numeric=6
NR=6,k=x,numeric=0.527126
NR=6,k=y,numeric=0.493221
NR=7,k=iii,numeric=7
NR=7,k=x,numeric=0.611784
NR=7,k=y,numeric=0.187885
NR=8,k=i,numeric=8
NR=8,k=x,numeric=0.598554
NR=8,k=yyy,numeric=0.976181
NR=9,k=i,numeric=9
NR=9,k=x,numeric=0.031442
NR=9,k=y,numeric=0.749551
NR=10,k=i,numeric=10
NR=10,k=x,numeric=0.502626
NR=10,k=y,numeric=0.952618

mlr --from ./reg_test/input/abixy-het put -q for (k,v in $*) {if (is_string(v))   {@string[NR][k]  = v}}    end{ emit @string,  "NR", "k" }
NR=1,k=a,string=pan
NR=1,k=b,string=pan
NR=2,k=a,string=eks
NR=2,k=b,string=pan
NR=3,k=aaa,string=wye
NR=3,k=b,string=wye
NR=4,k=a,string=eks
NR=4,k=bbb,string=wye
NR=5,k=a,string=wye
NR=5,k=b,string=pan
NR=6,k=a,string=zee
NR=6,k=b,string=pan
NR=7,k=a,string=eks
NR=7,k=b,string=zee
NR=8,k=a,string=zee
NR=8,k=b,string=wye
NR=9,k=aaa,string=hat
NR=9,k=bbb,string=wye
NR=10,k=a,string=pan
NR=10,k=b,string=wye

mlr --from ./reg_test/input/abixy-het put -q for (k,v in $*) {if (is_bool(v))     {@bool[NR][k]    = v}}    end{ emit @bool,    "NR", "k" }

mlr --from ./reg_test/input/abixy-het put -q for (k,v in $*) {if (is_bool(NR==2)) {@bool[NR][k]    = "NR==2"}} end{ emit @bool,    "NR", "k" }
NR=1,k=a,bool=NR==2
NR=1,k=b,bool=NR==2
NR=1,k=i,bool=NR==2
NR=1,k=x,bool=NR==2
NR=1,k=y,bool=NR==2
NR=2,k=a,bool=NR==2
NR=2,k=b,bool=NR==2
NR=2,k=i,bool=NR==2
NR=2,k=x,bool=NR==2
NR=2,k=y,bool=NR==2
NR=3,k=aaa,bool=NR==2
NR=3,k=b,bool=NR==2
NR=3,k=i,bool=NR==2
NR=3,k=x,bool=NR==2
NR=3,k=y,bool=NR==2
NR=4,k=a,bool=NR==2
NR=4,k=bbb,bool=NR==2
NR=4,k=i,bool=NR==2
NR=4,k=x,bool=NR==2
NR=4,k=y,bool=NR==2
NR=5,k=a,bool=NR==2
NR=5,k=b,bool=NR==2
NR=5,k=i,bool=NR==2
NR=5,k=xxx,bool=NR==2
NR=5,k=y,bool=NR==2
NR=6,k=a,bool=NR==2
NR=6,k=b,bool=NR==2
NR=6,k=i,bool=NR==2
NR=6,k=x,bool=NR==2
NR=6,k=y,bool=NR==2
NR=7,k=a,bool=NR==2
NR=7,k=b,bool=NR==2
NR=7,k=iii,bool=NR==2
NR=7,k=x,bool=NR==2
NR=7,k=y,bool=NR==2
NR=8,k=a,bool=NR==2
NR=8,k=b,bool=NR==2
NR=8,k=i,bool=NR==2
NR=8,k=x,bool=NR==2
NR=8,k=yyy,bool=NR==2
NR=9,k=aaa,bool=NR==2
NR=9,k=bbb,bool=NR==2
NR=9,k=i,bool=NR==2
NR=9,k=x,bool=NR==2
NR=9,k=y,bool=NR==2
NR=10,k=a,bool=NR==2
NR=10,k=b,bool=NR==2
NR=10,k=i,bool=NR==2
NR=10,k=x,bool=NR==2
NR=10,k=y,bool=NR==2


================================================================
DSL TYPE-INFERENCE

mlr --xtab put $y     = $pi1 + $pi2 ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   151

mlr --xtab put -F $y     = $pi1 + $pi2 ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   151.000000

mlr --xtab put -S $y     = $pi1 . $pi2 ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   7576

mlr --xtab filter 999   != $pi1 + $pi2 ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76

mlr --xtab filter -F 999   != $pi1 + $pi2 ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76

mlr --xtab filter -S "999" != $pi1 . $pi2 ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76

mlr --oxtab put $s = $a; $t = $b; $u = 3; $v = 4.0; $ts=typeof($s); $tt=typeof($t); $tu=typeof($u); $tv=typeof($v);
a  1
b  2.0
s  1
t  2.000000
u  3
v  4.000000
ts int
tt float
tu int
tv float

mlr --oxtab put -F $s = $a; $t = $b; $u = 3; $v = 4.0; $ts=typeof($s); $tt=typeof($t); $tu=typeof($u); $tv=typeof($v);
a  1
b  2.0
s  1.000000
t  2.000000
u  3
v  4.000000
ts float
tt float
tu int
tv float

mlr --oxtab put -S $s = $a; $t = $b; $u = 3; $v = 4.0; $ts=typeof($s); $tt=typeof($t); $tu=typeof($u); $tv=typeof($v);
a  1
b  2.0
s  1
t  2.0
u  3
v  4.000000
ts string
tt string
tu int
tv float

mlr --xtab put $y=abs($pf1) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   71.200000

mlr --xtab put $y=abs($nf1) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   71.200000

mlr --xtab put $y=abs($zf) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   0.000000

mlr --xtab put $y=abs($pi1) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   75

mlr --xtab put $y=abs($ni1) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   75

mlr --xtab put $y=abs($zi) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   0

mlr --xtab put -F $y=abs($pf1) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   71.200000

mlr --xtab put -F $y=abs($nf1) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   71.200000

mlr --xtab put -F $y=abs($zf) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   0.000000

mlr --xtab put -F $y=abs($pi1) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   75.000000

mlr --xtab put -F $y=abs($ni1) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   75.000000

mlr --xtab put -F $y=abs($zi) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   0.000000

mlr --xtab put $y=ceil($pf1) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   72.000000

mlr --xtab put $y=ceil($nf1) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   -71.000000

mlr --xtab put $y=ceil($zf) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   0.000000

mlr --xtab put $y=ceil($pi1) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   75

mlr --xtab put $y=ceil($ni1) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   -75

mlr --xtab put $y=ceil($zi) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   0

mlr --xtab put -F $y=floor($pf1) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   71.000000

mlr --xtab put -F $y=floor($nf1) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   -72.000000

mlr --xtab put -F $y=floor($zf) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   0.000000

mlr --xtab put -F $y=floor($pi1) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   75.000000

mlr --xtab put -F $y=floor($ni1) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   -75.000000

mlr --xtab put -F $y=floor($zi) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   0.000000

mlr --xtab put $y=round($pf1) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   71.000000

mlr --xtab put $y=round($nf1) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   -71.000000

mlr --xtab put $y=round($zf) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   0.000000

mlr --xtab put $y=round($pi1) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   75

mlr --xtab put $y=round($ni1) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   -75

mlr --xtab put $y=round($zi) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   0

mlr --xtab put -F $y=round($pf1) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   71.000000

mlr --xtab put -F $y=round($nf1) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   -71.000000

mlr --xtab put -F $y=round($zf) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   0.000000

mlr --xtab put -F $y=round($pi1) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   75.000000

mlr --xtab put -F $y=round($ni1) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   -75.000000

mlr --xtab put -F $y=round($zi) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   0.000000

mlr --xtab put $y=sgn($pf1) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   1.000000

mlr --xtab put $y=sgn($nf1) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   -1.000000

mlr --xtab put $y=sgn($zf) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   0.000000

mlr --xtab put $y=sgn($pi1) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   1

mlr --xtab put $y=sgn($ni1) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   -1

mlr --xtab put $y=sgn($zi) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   0

mlr --xtab put -F $y=sgn($pf1) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   1.000000

mlr --xtab put -F $y=sgn($nf1) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   -1.000000

mlr --xtab put -F $y=sgn($zf) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   0.000000

mlr --xtab put -F $y=sgn($pi1) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   1.000000

mlr --xtab put -F $y=sgn($ni1) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   -1.000000

mlr --xtab put -F $y=sgn($zi) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   0.000000

mlr --xtab put $min=min($pf1,$pf2);$max=max($pf1,$pf2) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
min 71.200000
max 73.400000

mlr --xtab put $min=min($pf1,$pi2);$max=max($pf1,$pi2) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
min 71.200000
max 76.000000

mlr --xtab put $min=min($pi1,$pf2);$max=max($pi1,$pf2) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
min 73.400000
max 75.000000

mlr --xtab put $min=min($pi1,$pi2);$max=max($pi1,$pi2) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
min 75
max 76

mlr --xtab put -F $min=min($pf1,$pf2);$max=max($pf1,$pf2) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
min 71.200000
max 73.400000

mlr --xtab put -F $min=min($pf1,$pi2);$max=max($pf1,$pi2) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
min 71.200000
max 76.000000

mlr --xtab put -F $min=min($pi1,$pf2);$max=max($pi1,$pf2) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
min 73.400000
max 75.000000

mlr --xtab put -F $min=min($pi1,$pi2);$max=max($pi1,$pi2) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
min 75.000000
max 76.000000

mlr --xtab put $min=min($pf1,$pf2);$max=max($pf1,$pf2) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
min 71.200000
max 73.400000

mlr --xtab put $min=min($pf1,$pi2);$max=max($pf1,$pi2) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
min 71.200000
max 76.000000

mlr --xtab put $min=min($pi1,$pf2);$max=max($pi1,$pf2) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
min 73.400000
max 75.000000

mlr --xtab put $min=min($pi1,$pi2);$max=max($pi1,$pi2) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
min 75
max 76

mlr --xtab put -F $min=min($pf1,$pf2);$max=max($pf1,$pf2) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
min 71.200000
max 73.400000

mlr --xtab put -F $min=min($pf1,$pi2);$max=max($pf1,$pi2) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
min 71.200000
max 76.000000

mlr --xtab put -F $min=min($pi1,$pf2);$max=max($pi1,$pf2) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
min 73.400000
max 75.000000

mlr --xtab put -F $min=min($pi1,$pi2);$max=max($pi1,$pi2) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
min 75.000000
max 76.000000

mlr --xtab put $sum=$pf1+$pf2;$diff=$pf1-$pf2 ./reg_test/input/mixed-types.xtab
pf1  71.2
nf1  -71.2
zf   0.0
pf2  73.4
nf2  -73.4
pi1  75
ni1  -75
zi   0
pi2  76
ni2  -76
sum  144.600000
diff -2.200000

mlr --xtab put $sum=$pf1+$pi2;$diff=$pf1-$pi2 ./reg_test/input/mixed-types.xtab
pf1  71.2
nf1  -71.2
zf   0.0
pf2  73.4
nf2  -73.4
pi1  75
ni1  -75
zi   0
pi2  76
ni2  -76
sum  147.200000
diff -4.800000

mlr --xtab put $sum=$pi1+$pf2;$diff=$pi1-$pf2 ./reg_test/input/mixed-types.xtab
pf1  71.2
nf1  -71.2
zf   0.0
pf2  73.4
nf2  -73.4
pi1  75
ni1  -75
zi   0
pi2  76
ni2  -76
sum  148.400000
diff 1.600000

mlr --xtab put $sum=$pi1+$pi2;$diff=$pi1-$pi2 ./reg_test/input/mixed-types.xtab
pf1  71.2
nf1  -71.2
zf   0.0
pf2  73.4
nf2  -73.4
pi1  75
ni1  -75
zi   0
pi2  76
ni2  -76
sum  151
diff -1

mlr --xtab put -F $sum=$pf1+$pf2;$diff=$pf1-$pf2 ./reg_test/input/mixed-types.xtab
pf1  71.2
nf1  -71.2
zf   0.0
pf2  73.4
nf2  -73.4
pi1  75
ni1  -75
zi   0
pi2  76
ni2  -76
sum  144.600000
diff -2.200000

mlr --xtab put -F $sum=$pf1+$pi2;$diff=$pf1-$pi2 ./reg_test/input/mixed-types.xtab
pf1  71.2
nf1  -71.2
zf   0.0
pf2  73.4
nf2  -73.4
pi1  75
ni1  -75
zi   0
pi2  76
ni2  -76
sum  147.200000
diff -4.800000

mlr --xtab put -F $sum=$pi1+$pf2;$diff=$pi1-$pf2 ./reg_test/input/mixed-types.xtab
pf1  71.2
nf1  -71.2
zf   0.0
pf2  73.4
nf2  -73.4
pi1  75
ni1  -75
zi   0
pi2  76
ni2  -76
sum  148.400000
diff 1.600000

mlr --xtab put -F $sum=$pi1+$pi2;$diff=$pi1-$pi2 ./reg_test/input/mixed-types.xtab
pf1  71.2
nf1  -71.2
zf   0.0
pf2  73.4
nf2  -73.4
pi1  75
ni1  -75
zi   0
pi2  76
ni2  -76
sum  151.000000
diff -1.000000

mlr --xtab put $prod=$pf1*$pf2;$quot=$pf1/$pf2 ./reg_test/input/mixed-types.xtab
pf1  71.2
nf1  -71.2
zf   0.0
pf2  73.4
nf2  -73.4
pi1  75
ni1  -75
zi   0
pi2  76
ni2  -76
prod 5226.080000
quot 0.970027

mlr --xtab put $prod=$pf1*$pi2;$quot=$pf1/$pi2 ./reg_test/input/mixed-types.xtab
pf1  71.2
nf1  -71.2
zf   0.0
pf2  73.4
nf2  -73.4
pi1  75
ni1  -75
zi   0
pi2  76
ni2  -76
prod 5411.200000
quot 0.936842

mlr --xtab put $prod=$pi1*$pf2;$quot=$pi1/$pf2 ./reg_test/input/mixed-types.xtab
pf1  71.2
nf1  -71.2
zf   0.0
pf2  73.4
nf2  -73.4
pi1  75
ni1  -75
zi   0
pi2  76
ni2  -76
prod 5505.000000
quot 1.021798

mlr --xtab put $prod=$pi1*$pi2;$quot=$pi1/$pi2 ./reg_test/input/mixed-types.xtab
pf1  71.2
nf1  -71.2
zf   0.0
pf2  73.4
nf2  -73.4
pi1  75
ni1  -75
zi   0
pi2  76
ni2  -76
prod 5700
quot 0.986842

mlr --xtab put -F $prod=$pf1*$pf2;$quot=$pf1/$pf2 ./reg_test/input/mixed-types.xtab
pf1  71.2
nf1  -71.2
zf   0.0
pf2  73.4
nf2  -73.4
pi1  75
ni1  -75
zi   0
pi2  76
ni2  -76
prod 5226.080000
quot 0.970027

mlr --xtab put -F $prod=$pf1*$pi2;$quot=$pf1/$pi2 ./reg_test/input/mixed-types.xtab
pf1  71.2
nf1  -71.2
zf   0.0
pf2  73.4
nf2  -73.4
pi1  75
ni1  -75
zi   0
pi2  76
ni2  -76
prod 5411.200000
quot 0.936842

mlr --xtab put -F $prod=$pi1*$pf2;$quot=$pi1/$pf2 ./reg_test/input/mixed-types.xtab
pf1  71.2
nf1  -71.2
zf   0.0
pf2  73.4
nf2  -73.4
pi1  75
ni1  -75
zi   0
pi2  76
ni2  -76
prod 5505.000000
quot 1.021798

mlr --xtab put -F $prod=$pi1*$pi2;$quot=$pi1/$pi2 ./reg_test/input/mixed-types.xtab
pf1  71.2
nf1  -71.2
zf   0.0
pf2  73.4
nf2  -73.4
pi1  75
ni1  -75
zi   0
pi2  76
ni2  -76
prod 5700.000000
quot 0.986842

mlr --xtab put $iquot=$pf1//$pf2;$mod=$pf1%$pf2 ./reg_test/input/mixed-types.xtab
pf1   71.2
nf1   -71.2
zf    0.0
pf2   73.4
nf2   -73.4
pi1   75
ni1   -75
zi    0
pi2   76
ni2   -76
iquot 0.000000
mod   71.200000

mlr --xtab put $iquot=$pf1//$pi2;$mod=$pf1%$pi2 ./reg_test/input/mixed-types.xtab
pf1   71.2
nf1   -71.2
zf    0.0
pf2   73.4
nf2   -73.4
pi1   75
ni1   -75
zi    0
pi2   76
ni2   -76
iquot 0.000000
mod   71.200000

mlr --xtab put $iquot=$pi1//$pf2;$mod=$pi1%$pf2 ./reg_test/input/mixed-types.xtab
pf1   71.2
nf1   -71.2
zf    0.0
pf2   73.4
nf2   -73.4
pi1   75
ni1   -75
zi    0
pi2   76
ni2   -76
iquot 1.000000
mod   1.600000

mlr --xtab put $iquot=$pi1//$pi2;$mod=$pi1%$pi2 ./reg_test/input/mixed-types.xtab
pf1   71.2
nf1   -71.2
zf    0.0
pf2   73.4
nf2   -73.4
pi1   75
ni1   -75
zi    0
pi2   76
ni2   -76
iquot 0
mod   75

mlr --xtab put -F $iquot=$pf1//$pf2;$mod=$pf1%$pf2 ./reg_test/input/mixed-types.xtab
pf1   71.2
nf1   -71.2
zf    0.0
pf2   73.4
nf2   -73.4
pi1   75
ni1   -75
zi    0
pi2   76
ni2   -76
iquot 0.000000
mod   71.200000

mlr --xtab put -F $iquot=$pf1//$pi2;$mod=$pf1%$pi2 ./reg_test/input/mixed-types.xtab
pf1   71.2
nf1   -71.2
zf    0.0
pf2   73.4
nf2   -73.4
pi1   75
ni1   -75
zi    0
pi2   76
ni2   -76
iquot 0.000000
mod   71.200000

mlr --xtab put -F $iquot=$pi1//$pf2;$mod=$pi1%$pf2 ./reg_test/input/mixed-types.xtab
pf1   71.2
nf1   -71.2
zf    0.0
pf2   73.4
nf2   -73.4
pi1   75
ni1   -75
zi    0
pi2   76
ni2   -76
iquot 1.000000
mod   1.600000

mlr --xtab put -F $iquot=$pi1//$pi2;$mod=$pi1%$pi2 ./reg_test/input/mixed-types.xtab
pf1   71.2
nf1   -71.2
zf    0.0
pf2   73.4
nf2   -73.4
pi1   75
ni1   -75
zi    0
pi2   76
ni2   -76
iquot 0.000000
mod   75.000000

mlr --xtab put $a=roundm($pf1,10.0);$b=roundm($pf1,-10.0) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
a   70.000000
b   70.000000

mlr --xtab put $a=roundm($pf1,10)  ;$b=roundm($pf1,-10)   ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
a   70.000000
b   70.000000

mlr --xtab put $a=roundm($pi1,10.0);$b=roundm($pi1,-10.0) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
a   80.000000
b   80.000000

mlr --xtab put $a=roundm($pi1,10)  ;$b=roundm($pi1,-10)   ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
a   70
b   70

mlr --oxtab put $z=$x+$y; $a=3+4; $b="3"."4"; $c="3"+4
x 3
y 4
z 7
a 7
b 34
c (error)


================================================================
DSL SCIENTIFIC NOTATION IN FIELD VALUES

mlr --opprint put $y=$x+1 ./reg_test/input/scinot.dkvp
x       y
123     124
123.    124.000000
123.4   124.400000
.234    1.234000
1e2     101.000000
1e-2    1.010000
1.2e3   1201.000000
1.e3    1001.000000
1.2e-3  1.001200
1.e-3   1.001000
.2e3    201.000000
.2e-3   1.000200
1.e-3   1.001000
-123    -122
-123.   -122.000000
-123.4  -122.400000
-.234   0.766000
-1e2    -99.000000
-1e-2   0.990000
-1.2e3  -1199.000000
-1.e3   -999.000000
-1.2e-3 0.998800
-1.e-3  0.999000
-.2e3   -199.000000
-.2e-3  0.999800
-1.e-3  0.999000


================================================================
DSL SCIENTIFIC NOTATION IN EXPRESSION LITERALS

mlr --opprint put $y = 123     + $i ./reg_test/input/scinot1.dkvp
i y
1 124

mlr --opprint put $y = 123.    + $i ./reg_test/input/scinot1.dkvp
i y
1 124.000000

mlr --opprint put $y = 123.4   + $i ./reg_test/input/scinot1.dkvp
i y
1 124.400000

mlr --opprint put $y = .234    + $i ./reg_test/input/scinot1.dkvp
i y
1 1.234000

mlr --opprint put $y = 1e2     + $i ./reg_test/input/scinot1.dkvp
i y
1 101.000000

mlr --opprint put $y = 1e-2    + $i ./reg_test/input/scinot1.dkvp
i y
1 1.010000

mlr --opprint put $y = 1.2e3   + $i ./reg_test/input/scinot1.dkvp
i y
1 1201.000000

mlr --opprint put $y = 1.e3    + $i ./reg_test/input/scinot1.dkvp
i y
1 1001.000000

mlr --opprint put $y = 1.2e-3  + $i ./reg_test/input/scinot1.dkvp
i y
1 1.001200

mlr --opprint put $y = 1.e-3   + $i ./reg_test/input/scinot1.dkvp
i y
1 1.001000

mlr --opprint put $y = .2e3    + $i ./reg_test/input/scinot1.dkvp
i y
1 201.000000

mlr --opprint put $y = .2e-3   + $i ./reg_test/input/scinot1.dkvp
i y
1 1.000200

mlr --opprint put $y = 1.e-3   + $i ./reg_test/input/scinot1.dkvp
i y
1 1.001000

mlr --opprint put $y = -123    + $i ./reg_test/input/scinot1.dkvp
i y
1 -122

mlr --opprint put $y = -123.   + $i ./reg_test/input/scinot1.dkvp
i y
1 -122.000000

mlr --opprint put $y = -123.4  + $i ./reg_test/input/scinot1.dkvp
i y
1 -122.400000

mlr --opprint put $y = -.234   + $i ./reg_test/input/scinot1.dkvp
i y
1 0.766000

mlr --opprint put $y = -1e2    + $i ./reg_test/input/scinot1.dkvp
i y
1 -99.000000

mlr --opprint put $y = -1e-2   + $i ./reg_test/input/scinot1.dkvp
i y
1 0.990000

mlr --opprint put $y = -1.2e3  + $i ./reg_test/input/scinot1.dkvp
i y
1 -1199.000000

mlr --opprint put $y = -1.e3   + $i ./reg_test/input/scinot1.dkvp
i y
1 -999.000000

mlr --opprint put $y = -1.2e-3 + $i ./reg_test/input/scinot1.dkvp
i y
1 0.998800

mlr --opprint put $y = -1.e-3  + $i ./reg_test/input/scinot1.dkvp
i y
1 0.999000

mlr --opprint put $y = -.2e3   + $i ./reg_test/input/scinot1.dkvp
i y
1 -199.000000

mlr --opprint put $y = -.2e-3  + $i ./reg_test/input/scinot1.dkvp
i y
1 0.999800

mlr --opprint put $y = -1.e-3  + $i ./reg_test/input/scinot1.dkvp
i y
1 0.999000


================================================================
DSL FROM-FILE FEATURE

mlr put -f ./reg_test/input/put-example.dsl ./reg_test/input/abixy
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533,xy=0.252048,ab=panpan
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797,xy=0.396146,ab=ekspan
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776,xy=0.069221,ab=wyewye
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463,xy=0.051180,ab=ekswye
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729,xy=0.495106,ab=wyepan
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697,xy=0.259990,ab=zeepan
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694,xy=0.114945,ab=ekszee
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006,xy=0.584297,ab=zeewye
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059,xy=0.023567,ab=hatwye
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864,xy=0.478811,ab=panwye

mlr filter -f ./reg_test/input/filter-example.dsl ./reg_test/input/abixy
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
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 -f ./reg_test/input/put-example.dsl
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533,xy=0.252048,ab=panpan
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797,xy=0.396146,ab=ekspan
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776,xy=0.069221,ab=wyewye
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463,xy=0.051180,ab=ekswye
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729,xy=0.495106,ab=wyepan
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697,xy=0.259990,ab=zeepan
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694,xy=0.114945,ab=ekszee
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006,xy=0.584297,ab=zeewye
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059,xy=0.023567,ab=hatwye
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864,xy=0.478811,ab=panwye

mlr --from ./reg_test/input/abixy filter -f ./reg_test/input/filter-example.dsl
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
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 --from ./reg_test/input/abixy-het put -f ./reg_test/input/put-example.dsl
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533,xy=0.252048,ab=panpan
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797,xy=0.396146,ab=ekspan
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776,xy=0.069221,ab=wyewye
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463,xy=0.051180,ab=ekswye
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729,xy=0.495106,ab=wyepan
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697,xy=0.259990,ab=zeepan
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694,xy=0.114945,ab=ekszee
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006,xy=0.584297,ab=zeewye
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059,xy=0.023567,ab=hatwye
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864,xy=0.478811,ab=panwye
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533,xy=0.252048,ab=panpan
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797,xy=0.396146,ab=ekspan
aaa=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776,xy=0.069221,ab=wye
a=eks,bbb=wye,i=4,x=0.38139939387114097,y=0.13418874328430463,xy=0.051180,ab=eks
a=wye,b=pan,i=5,xxx=0.5732889198020006,y=0.8636244699032729,xy=0.863624,ab=wyepan
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697,xy=0.259990,ab=zeepan
a=eks,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694,xy=0.114945,ab=ekszee
a=zee,b=wye,i=8,x=0.5985540091064224,yyy=0.976181385699006,xy=0.598554,ab=zeewye
aaa=hat,bbb=wye,i=9,x=0.03144187646093577,y=0.7495507603507059,xy=0.023567
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864,xy=0.478811,ab=panwye

mlr --from ./reg_test/input/abixy --from ./reg_test/input/abixy-het filter -f ./reg_test/input/filter-example.dsl
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
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=0.7268028627434533
aaa=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
aaa=hat,bbb=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864


================================================================
DSL MULTI-PART SCRIPTS

mlr --opprint --from ./reg_test/input/abixy put -f ./reg_test/input/put-script-piece-1
a   b   i  x                   y
pan pan 1  0.3467901443380824  0.7268028627434533
eks pan 2  0.7586799647899636  0.5221511083334797
wye wye 3  0.20460330576630303 0.33831852551664776
eks wye 4  0.38139939387114097 0.13418874328430463
wye pan 5  0.5732889198020006  0.8636244699032729
zee pan 6  0.5271261600918548  0.49322128674835697
eks zee 7  0.6117840605678454  0.1878849191181694
zee wye 8  0.5985540091064224  0.976181385699006
hat wye 9  0.03144187646093577 0.7495507603507059
pan wye 10 0.5026260055412137  0.9526183602969864

mlr --opprint --from ./reg_test/input/abixy put -f ./reg_test/input/put-script-piece-1 -f ./reg_test/input/put-script-piece-2
a   b   i  x                   y
pan pan 1  0.3467901443380824  0.7268028627434533
eks pan 2  0.7586799647899636  0.5221511083334797
wye wye 3  0.20460330576630303 0.33831852551664776
eks wye 4  0.38139939387114097 0.13418874328430463
wye pan 5  0.5732889198020006  0.8636244699032729
zee pan 6  0.5271261600918548  0.49322128674835697
eks zee 7  0.6117840605678454  0.1878849191181694
zee wye 8  0.5985540091064224  0.976181385699006
hat wye 9  0.03144187646093577 0.7495507603507059
pan wye 10 0.5026260055412137  0.9526183602969864

mlr --opprint --from ./reg_test/input/abixy put -f ./reg_test/input/put-script-piece-1 -f ./reg_test/input/put-script-piece-2 -f ./reg_test/input/put-script-piece-3
a   b   i  x                   y                   o         W  DID
pan pan 1  0.3467901443380824  0.7268028627434533  2.073593  1  YES
eks pan 2  0.7586799647899636  0.5221511083334797  3.280831  2  YES
wye wye 3  0.20460330576630303 0.33831852551664776 3.542922  3  YES
eks wye 4  0.38139939387114097 0.13418874328430463 4.515588  4  YES
wye pan 5  0.5732889198020006  0.8636244699032729  6.436913  5  YES
zee pan 6  0.5271261600918548  0.49322128674835697 7.020347  6  YES
eks zee 7  0.6117840605678454  0.1878849191181694  7.799669  7  YES
zee wye 8  0.5985540091064224  0.976181385699006   9.574735  8  YES
hat wye 9  0.03144187646093577 0.7495507603507059  9.780993  9  YES
pan wye 10 0.5026260055412137  0.9526183602969864  11.455244 10 YES

mlr --opprint --from ./reg_test/input/abixy put -e $xy = $x**2 + $y**2
a   b   i  x                   y                   xy
pan pan 1  0.3467901443380824  0.7268028627434533  0.648506
eks pan 2  0.7586799647899636  0.5221511083334797  0.848237
wye wye 3  0.20460330576630303 0.33831852551664776 0.156322
eks wye 4  0.38139939387114097 0.13418874328430463 0.163472
wye pan 5  0.5732889198020006  0.8636244699032729  1.074507
zee pan 6  0.5271261600918548  0.49322128674835697 0.521129
eks zee 7  0.6117840605678454  0.1878849191181694  0.409580
zee wye 8  0.5985540091064224  0.976181385699006   1.311197
hat wye 9  0.03144187646093577 0.7495507603507059  0.562815
pan wye 10 0.5026260055412137  0.9526183602969864  1.160115

mlr --opprint --from ./reg_test/input/abixy filter -e NR == 7
a   b   i x                  y
eks zee 7 0.6117840605678454 0.1878849191181694

mlr --opprint --from ./reg_test/input/abixy put -e print "PRE"; -f ./reg_test/input/put-script-piece-1 -f ./reg_test/input/put-script-piece-2 -f ./reg_test/input/put-script-piece-3 -e print "POST"
PRE
POST
PRE
POST
PRE
POST
PRE
POST
PRE
POST
PRE
POST
PRE
POST
PRE
POST
PRE
POST
PRE
POST
a   b   i  x                   y                   o         W  DID
pan pan 1  0.3467901443380824  0.7268028627434533  2.073593  1  YES
eks pan 2  0.7586799647899636  0.5221511083334797  3.280831  2  YES
wye wye 3  0.20460330576630303 0.33831852551664776 3.542922  3  YES
eks wye 4  0.38139939387114097 0.13418874328430463 4.515588  4  YES
wye pan 5  0.5732889198020006  0.8636244699032729  6.436913  5  YES
zee pan 6  0.5271261600918548  0.49322128674835697 7.020347  6  YES
eks zee 7  0.6117840605678454  0.1878849191181694  7.799669  7  YES
zee wye 8  0.5985540091064224  0.976181385699006   9.574735  8  YES
hat wye 9  0.03144187646093577 0.7495507603507059  9.780993  9  YES
pan wye 10 0.5026260055412137  0.9526183602969864  11.455244 10 YES

mlr --opprint --from ./reg_test/input/abixy filter -f ./reg_test/input/filter-script-piece-1
a   b   i  x                  y
eks pan 2  0.7586799647899636 0.5221511083334797
wye pan 5  0.5732889198020006 0.8636244699032729
zee pan 6  0.5271261600918548 0.49322128674835697
eks zee 7  0.6117840605678454 0.1878849191181694
zee wye 8  0.5985540091064224 0.976181385699006
pan wye 10 0.5026260055412137 0.9526183602969864

mlr --opprint --from ./reg_test/input/abixy filter -f ./reg_test/input/filter-script-piece-1 -f ./reg_test/input/filter-script-piece-2
a   b   i x                  y
eks pan 2 0.7586799647899636 0.5221511083334797


================================================================
UTF-8 STRLEN

mlr --inidx --ifs comma --oxtab put $s1=strlen($1);$s2=strlen($2);$s3=strlen($3);$s4=strlen($4) ./reg_test/input/utf8-align.dkvp
1  191º=test
2  1912=test2
3  cois=çais
4  çois=cais
s1 9
s2 10
s3 9
s4 9

1  191º=test
2  1912=test2
3  ois=çais
4  çois=cais
s1 9
s2 10
s3 8
s4 9

1  191º=test
2  1912=test2
3  coise=çais
4  çois=cais
s1 9
s2 10
s3 10
s4 9


================================================================
TRUNCATE

mlr put $y=truncate($x, 0)
x=abcd,y=

mlr put $y=truncate($x, 1)
x=abcd,y=a

mlr put $y=truncate($x, 2)
x=abcd,y=ab

mlr put $y=truncate($x, 3)
x=abcd,y=abc

mlr put $y=truncate($x, 4)
x=abcd,y=abcd

mlr put $y=truncate($x, 5)
x=abcd,y=abcd

mlr put $y=truncate($x, 0)
x=abcdefgh,y=

mlr put $y=truncate($x, 1)
x=abcdefgh,y=a

mlr put $y=truncate($x, 2)
x=abcdefgh,y=ab

mlr put $y=truncate($x, 3)
x=abcdefgh,y=abc

mlr put $y=truncate($x, 4)
x=abcdefgh,y=abcd

mlr put $y=truncate($x, 5)
x=abcdefgh,y=abcde


================================================================
STATS1/STEP INT/FLOAT

mlr --opprint step -a rsum,delta,counter -f x,y,z ./reg_test/input/int-float.dkvp
x y    z    x_rsum x_delta x_counter y_rsum    y_delta  y_counter z_rsum    z_delta   z_counter
1 10.1 20   1      0       1         10.100000 0        1         20        0         1
2 10.2 30   3      1       2         20.300000 0.100000 2         50        10        2
3 10.3 40.8 6      1       3         30.600000 0.100000 3         90.800000 10.800000 3

mlr --opprint step -F -a rsum,delta,counter -f x,y,z ./reg_test/input/int-float.dkvp
x y    z    x_rsum   x_delta  x_counter y_rsum    y_delta  y_counter z_rsum    z_delta   z_counter
1 10.1 20   1.000000 0.000000 1.000000  10.100000 0.000000 1.000000  20.000000 0.000000  1.000000
2 10.2 30   3.000000 1.000000 2.000000  20.300000 0.100000 2.000000  50.000000 10.000000 2.000000
3 10.3 40.8 6.000000 1.000000 3.000000  30.600000 0.100000 3.000000  90.800000 10.800000 3.000000

mlr --oxtab stats1 -a min,max,sum,count -f x,y,z ./reg_test/input/int-float.dkvp
x_min   1
x_max   3
x_sum   6
x_count 3
y_min   10.100000
y_max   10.300000
y_sum   30.600000
y_count 3
z_min   20.000000
z_max   40.800000
z_sum   90.800000
z_count 3

mlr --oxtab stats1 -F -a min,max,sum,count -f x,y,z ./reg_test/input/int-float.dkvp
x_min   1
x_max   3
x_sum   6.000000
x_count 3.000000
y_min   10.100000
y_max   10.300000
y_sum   30.600000
y_count 3.000000
z_min   20.000000
z_max   40.800000
z_sum   90.800000
z_count 3.000000


================================================================
DSL PYTHONIC DIVISION

mlr --xtab put $quot=$pf1/10.0;$iquot=$pf1//10.0;$mod=$pf1%10.0 ./reg_test/input/mixed-types.xtab
pf1   71.2
nf1   -71.2
zf    0.0
pf2   73.4
nf2   -73.4
pi1   75
ni1   -75
zi    0
pi2   76
ni2   -76
quot  7.120000
iquot 7.000000
mod   1.200000

mlr --xtab put $quot=$pi1/10  ;$iquot=$pi1//10  ;$mod=$pi1%10   ./reg_test/input/mixed-types.xtab
pf1   71.2
nf1   -71.2
zf    0.0
pf2   73.4
nf2   -73.4
pi1   75
ni1   -75
zi    0
pi2   76
ni2   -76
quot  7.500000
iquot 7
mod   5

mlr --xtab put $quot=$nf1/10.0;$iquot=$nf1//10.0;$mod=$nf1%10.0 ./reg_test/input/mixed-types.xtab
pf1   71.2
nf1   -71.2
zf    0.0
pf2   73.4
nf2   -73.4
pi1   75
ni1   -75
zi    0
pi2   76
ni2   -76
quot  -7.120000
iquot -8.000000
mod   8.800000

mlr --xtab put $quot=$ni1/10  ;$iquot=$ni1//10  ;$mod=$ni1%10   ./reg_test/input/mixed-types.xtab
pf1   71.2
nf1   -71.2
zf    0.0
pf2   73.4
nf2   -73.4
pi1   75
ni1   -75
zi    0
pi2   76
ni2   -76
quot  -7.500000
iquot -8
mod   5

mlr --xtab put -F $quot=$pf1/10.0;$iquot=$pf1//10.0;$mod=$pf1%10.0 ./reg_test/input/mixed-types.xtab
pf1   71.2
nf1   -71.2
zf    0.0
pf2   73.4
nf2   -73.4
pi1   75
ni1   -75
zi    0
pi2   76
ni2   -76
quot  7.120000
iquot 7.000000
mod   1.200000

mlr --xtab put -F $quot=$pi1/10  ;$iquot=$pi1//10  ;$mod=$pi1%10   ./reg_test/input/mixed-types.xtab
pf1   71.2
nf1   -71.2
zf    0.0
pf2   73.4
nf2   -73.4
pi1   75
ni1   -75
zi    0
pi2   76
ni2   -76
quot  7.500000
iquot 7.000000
mod   5.000000

mlr --xtab put -F $quot=$nf1/10.0;$iquot=$nf1//10.0;$mod=$nf1%10.0 ./reg_test/input/mixed-types.xtab
pf1   71.2
nf1   -71.2
zf    0.0
pf2   73.4
nf2   -73.4
pi1   75
ni1   -75
zi    0
pi2   76
ni2   -76
quot  -7.120000
iquot -8.000000
mod   8.800000

mlr --xtab put -F $quot=$ni1/10  ;$iquot=$ni1//10  ;$mod=$ni1%10   ./reg_test/input/mixed-types.xtab
pf1   71.2
nf1   -71.2
zf    0.0
pf2   73.4
nf2   -73.4
pi1   75
ni1   -75
zi    0
pi2   76
ni2   -76
quot  -7.500000
iquot -8.000000
mod   5.000000

mlr --xtab put $quot=$pf1/-10.0;$iquot=$pf1//-10.0;$mod=$pf1%-10.0 ./reg_test/input/mixed-types.xtab
pf1   71.2
nf1   -71.2
zf    0.0
pf2   73.4
nf2   -73.4
pi1   75
ni1   -75
zi    0
pi2   76
ni2   -76
quot  -7.120000
iquot -8.000000
mod   -8.800000

mlr --xtab put $quot=$pi1/-10  ;$iquot=$pi1//-10  ;$mod=$pi1%-10   ./reg_test/input/mixed-types.xtab
pf1   71.2
nf1   -71.2
zf    0.0
pf2   73.4
nf2   -73.4
pi1   75
ni1   -75
zi    0
pi2   76
ni2   -76
quot  -7.500000
iquot -8
mod   -5

mlr --xtab put $quot=$nf1/-10.0;$iquot=$nf1//-10.0;$mod=$nf1%-10.0 ./reg_test/input/mixed-types.xtab
pf1   71.2
nf1   -71.2
zf    0.0
pf2   73.4
nf2   -73.4
pi1   75
ni1   -75
zi    0
pi2   76
ni2   -76
quot  7.120000
iquot 7.000000
mod   -1.200000

mlr --xtab put $quot=$ni1/-10  ;$iquot=$ni1//-10  ;$mod=$ni1%-10   ./reg_test/input/mixed-types.xtab
pf1   71.2
nf1   -71.2
zf    0.0
pf2   73.4
nf2   -73.4
pi1   75
ni1   -75
zi    0
pi2   76
ni2   -76
quot  7.500000
iquot 7
mod   -5

mlr --xtab put -F $quot=$pf1/-10.0;$iquot=$pf1//-10.0;$mod=$pf1%-10.0 ./reg_test/input/mixed-types.xtab
pf1   71.2
nf1   -71.2
zf    0.0
pf2   73.4
nf2   -73.4
pi1   75
ni1   -75
zi    0
pi2   76
ni2   -76
quot  -7.120000
iquot -8.000000
mod   -8.800000

mlr --xtab put -F $quot=$pi1/-10  ;$iquot=$pi1//-10  ;$mod=$pi1%-10   ./reg_test/input/mixed-types.xtab
pf1   71.2
nf1   -71.2
zf    0.0
pf2   73.4
nf2   -73.4
pi1   75
ni1   -75
zi    0
pi2   76
ni2   -76
quot  -7.500000
iquot -8.000000
mod   -5.000000

mlr --xtab put -F $quot=$nf1/-10.0;$iquot=$nf1//-10.0;$mod=$nf1%-10.0 ./reg_test/input/mixed-types.xtab
pf1   71.2
nf1   -71.2
zf    0.0
pf2   73.4
nf2   -73.4
pi1   75
ni1   -75
zi    0
pi2   76
ni2   -76
quot  7.120000
iquot 7.000000
mod   -1.200000

mlr --xtab put -F $quot=$ni1/-10  ;$iquot=$ni1//-10  ;$mod=$ni1%-10   ./reg_test/input/mixed-types.xtab
pf1   71.2
nf1   -71.2
zf    0.0
pf2   73.4
nf2   -73.4
pi1   75
ni1   -75
zi    0
pi2   76
ni2   -76
quot  7.500000
iquot 7.000000
mod   -5.000000


================================================================
DSL REGEX MATCHING

mlr filter -v $x =~ "bcd" ./reg_test/input/regex.dkvp
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=~", type=OPERATOR:
        text="x", type=FIELD_NAME.
        text="bcd", type=STRING_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=~", type=OPERATOR:
        text="x", type=FIELD_NAME.
        text="bcd", type=STRING_LITERAL.

x=abcd,y=ghi
x=abcde,y=ghi

mlr filter -v $x =~ "^bcd" ./reg_test/input/regex.dkvp
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=~", type=OPERATOR:
        text="x", type=FIELD_NAME.
        text="^bcd", type=STRING_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=~", type=OPERATOR:
        text="x", type=FIELD_NAME.
        text="^bcd", type=STRING_LITERAL.


mlr filter -v $x =~ "^abc" ./reg_test/input/regex.dkvp
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=~", type=OPERATOR:
        text="x", type=FIELD_NAME.
        text="^abc", type=STRING_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=~", type=OPERATOR:
        text="x", type=FIELD_NAME.
        text="^abc", type=STRING_LITERAL.

x=abc,y=def
x=abcd,y=ghi
x=abcde,y=ghi

mlr filter -v $x =~ "^abc$" ./reg_test/input/regex.dkvp
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=~", type=OPERATOR:
        text="x", type=FIELD_NAME.
        text="^abc$", type=STRING_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=~", type=OPERATOR:
        text="x", type=FIELD_NAME.
        text="^abc$", type=STRING_LITERAL.

x=abc,y=def

mlr filter -v $x =~ "^a.*d$" ./reg_test/input/regex.dkvp
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=~", type=OPERATOR:
        text="x", type=FIELD_NAME.
        text="^a.*d$", type=STRING_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=~", type=OPERATOR:
        text="x", type=FIELD_NAME.
        text="^a.*d$", type=STRING_LITERAL.

x=abcd,y=ghi

mlr filter -v $x =~ "^a.*"."d$" ./reg_test/input/regex.dkvp
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=~", type=OPERATOR:
        text="x", type=FIELD_NAME.
        text=".", type=OPERATOR:
            text="^a.*", type=STRING_LITERAL.
            text="d$", type=STRING_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=~", type=OPERATOR:
        text="x", type=FIELD_NAME.
        text=".", type=OPERATOR:
            text="^a.*", type=STRING_LITERAL.
            text="d$", type=STRING_LITERAL.

x=abcd,y=ghi

mlr filter -v $y =~ "\".." ./reg_test/input/regex.dkvp
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=~", type=OPERATOR:
        text="y", type=FIELD_NAME.
        text=""..", type=STRING_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=~", type=OPERATOR:
        text="y", type=FIELD_NAME.
        text=""..", type=STRING_LITERAL.

x=ABCDE,y="GHI"

mlr filter -v $x =~ "bcd"i ./reg_test/input/regex.dkvp
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=~", type=OPERATOR:
        text="x", type=FIELD_NAME.
        text="bcd", type=REGEXI.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=~", type=OPERATOR:
        text="x", type=FIELD_NAME.
        text="bcd", type=REGEXI.

x=abcd,y=ghi
x=ABCD,y=GHI
x=abcde,y=ghi
x=ABCDE,y=GHI
x=ABCDE,y="GHI"

mlr filter -v $x =~ "^bcd"i ./reg_test/input/regex.dkvp
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=~", type=OPERATOR:
        text="x", type=FIELD_NAME.
        text="^bcd", type=REGEXI.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=~", type=OPERATOR:
        text="x", type=FIELD_NAME.
        text="^bcd", type=REGEXI.


mlr filter -v $x =~ "^abc"i ./reg_test/input/regex.dkvp
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=~", type=OPERATOR:
        text="x", type=FIELD_NAME.
        text="^abc", type=REGEXI.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=~", type=OPERATOR:
        text="x", type=FIELD_NAME.
        text="^abc", type=REGEXI.

x=abc,y=def
x=ABC,y=DEF
x=abcd,y=ghi
x=ABCD,y=GHI
x=abcde,y=ghi
x=ABCDE,y=GHI
x=ABCDE,y="GHI"

mlr filter -v $x =~ "^abc$"i ./reg_test/input/regex.dkvp
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=~", type=OPERATOR:
        text="x", type=FIELD_NAME.
        text="^abc$", type=REGEXI.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=~", type=OPERATOR:
        text="x", type=FIELD_NAME.
        text="^abc$", type=REGEXI.

x=abc,y=def
x=ABC,y=DEF

mlr filter -v $x =~ "^a.*d$"i ./reg_test/input/regex.dkvp
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=~", type=OPERATOR:
        text="x", type=FIELD_NAME.
        text="^a.*d$", type=REGEXI.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=~", type=OPERATOR:
        text="x", type=FIELD_NAME.
        text="^a.*d$", type=REGEXI.

x=abcd,y=ghi
x=ABCD,y=GHI

mlr filter -v $x =~ "^a.*"."d$"i ./reg_test/input/regex.dkvp
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=~", type=OPERATOR:
        text="x", type=FIELD_NAME.
        text=".", type=OPERATOR:
            text="^a.*", type=STRING_LITERAL.
            text="d$", type=REGEXI.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=~", type=OPERATOR:
        text="x", type=FIELD_NAME.
        text=".", type=OPERATOR:
            text="^a.*", type=STRING_LITERAL.
            text="d$", type=REGEXI.

x=abcd,y=ghi

mlr --csv filter $text =~ "." ./reg_test/input/dot-match.csv
text
hi
a.b
bye

mlr --csv filter $text =~ "\." ./reg_test/input/dot-match.csv
text
a.b


================================================================
DSL TYPED OVERLAY

mlr put $y = string($x); $z=$y.$y ./reg_test/input/int-float.dkvp
x=1,y=1,z=11
x=2,y=2,z=22
x=3,y=3,z=33

mlr put $z=string($x).string($x) ./reg_test/input/int-float.dkvp
x=1,y=10.1,z=11
x=2,y=10.2,z=22
x=3,y=10.3,z=33

mlr put $y = string($x) then put $z=$y.$y ./reg_test/input/int-float.dkvp
x=1,y=1,z=11
x=2,y=2,z=22
x=3,y=3,z=33

mlr put $a="hello" then put $b=$a." world";$z=$x+$y;$c=$b;$a=sub($b,"hello","farewell") ./reg_test/input/int-float.dkvp
x=1,y=10.1,z=11.100000,a=farewell world,b=hello world,c=hello world
x=2,y=10.2,z=12.200000,a=farewell world,b=hello world,c=hello world
x=3,y=10.3,z=13.300000,a=farewell world,b=hello world,c=hello world


================================================================
DSL REGEX CAPTURES

mlr --opprint put $FIELD =~ "([A-Z]+)([0-9]+)";         $F1="\1"; $F2="\2"; $F3="\3" ./reg_test/input/capture.dkvp
FIELD             F1  F2  F3
ABC123            ABC 123 -
ABC..123          -   -   -
..ABC..123..      -   -   -
none of the above -   -   -

mlr --opprint put $FIELD =~ "([A-Z]+)[^0-9]*([0-9]+)";  $F1="\1"; $F2="\2"; $F3="\3" ./reg_test/input/capture.dkvp
FIELD             F1  F2  F3
ABC123            ABC 123 -
ABC..123          ABC 123 -
..ABC..123..      ABC 123 -
none of the above -   -   -

mlr --opprint put $FIELD =~ "([A-Z]+)([0-9]+)" then put $F1="\1"; $F2="\2"; $F3="\3" ./reg_test/input/capture.dkvp
FIELD             F1 F2 F3
ABC123            \1 \2 \3
ABC..123          \1 \2 \3
..ABC..123..      \1 \2 \3
none of the above \1 \2 \3

mlr --opprint put $FIELD =~ "([A-Z]+)[^0-9]*([0-9]+)" then put $F1="\1"; $F2="\2"; $F3="\3" ./reg_test/input/capture.dkvp
FIELD             F1 F2 F3
ABC123            \1 \2 \3
ABC..123          \1 \2 \3
..ABC..123..      \1 \2 \3
none of the above \1 \2 \3

mlr --opprint put        $FIELD =~ "....."; $F0=" ";$F1="\1";$F2="\2";$F3="\3";$F4="\4";$F5="\5";$F6="\6";$F7="\7";$F8="\8";$F9="\9" ./reg_test/input/capture-lengths.dkvp
FIELD        F0    F1 F2 F3 F4 F5 F6 F7 F8 F9
-            -     -  -  -  -  -  -  -  -  -
a            -     -  -  -  -  -  -  -  -  -
ab           -     -  -  -  -  -  -  -  -  -
abc          -     -  -  -  -  -  -  -  -  -
abcd         -     -  -  -  -  -  -  -  -  -
abcde        abcde -  -  -  -  -  -  -  -  -
abcdef       abcde -  -  -  -  -  -  -  -  -
abcdefg      abcde -  -  -  -  -  -  -  -  -
abcdefgh     abcde -  -  -  -  -  -  -  -  -
abcdefghi    abcde -  -  -  -  -  -  -  -  -
abcdefghij   abcde -  -  -  -  -  -  -  -  -
abcdefghijk  abcde -  -  -  -  -  -  -  -  -
abcdefghijkl abcde -  -  -  -  -  -  -  -  -

mlr --opprint put        $FIELD =~ "....." {$F0=" ";$F1="\1";$F2="\2";$F3="\3";$F4="\4";$F5="\5";$F6="\6";$F7="\7";$F8="\8";$F9="\9"} ./reg_test/input/capture-lengths.dkvp
FIELD
-
a
ab
abc
abcd

FIELD        F0    F1 F2 F3 F4 F5 F6 F7 F8 F9
abcde        abcde -  -  -  -  -  -  -  -  -
abcdef       abcde -  -  -  -  -  -  -  -  -
abcdefg      abcde -  -  -  -  -  -  -  -  -
abcdefgh     abcde -  -  -  -  -  -  -  -  -
abcdefghi    abcde -  -  -  -  -  -  -  -  -
abcdefghij   abcde -  -  -  -  -  -  -  -  -
abcdefghijk  abcde -  -  -  -  -  -  -  -  -
abcdefghijkl abcde -  -  -  -  -  -  -  -  -

mlr --opprint put filter $FIELD =~ "....."; $F0=" ";$F1="\1";$F2="\2";$F3="\3";$F4="\4";$F5="\5";$F6="\6";$F7="\7";$F8="\8";$F9="\9" ./reg_test/input/capture-lengths.dkvp
FIELD        F0    F1 F2 F3 F4 F5 F6 F7 F8 F9
abcde        abcde -  -  -  -  -  -  -  -  -
abcdef       abcde -  -  -  -  -  -  -  -  -
abcdefg      abcde -  -  -  -  -  -  -  -  -
abcdefgh     abcde -  -  -  -  -  -  -  -  -
abcdefghi    abcde -  -  -  -  -  -  -  -  -
abcdefghij   abcde -  -  -  -  -  -  -  -  -
abcdefghijk  abcde -  -  -  -  -  -  -  -  -
abcdefghijkl abcde -  -  -  -  -  -  -  -  -

mlr --opprint put $FIELD =~ "(.)";                            $F0=" ";$F1="\1";$F2="\2";$F3="\3";$F4="\4";$F5="\5";$F6="\6";$F7="\7";$F8="\8";$F9="\9" ./reg_test/input/capture-lengths.dkvp
FIELD        F0 F1 F2 F3 F4 F5 F6 F7 F8 F9
-            -  -  -  -  -  -  -  -  -  -
a            a  a  -  -  -  -  -  -  -  -
ab           a  a  -  -  -  -  -  -  -  -
abc          a  a  -  -  -  -  -  -  -  -
abcd         a  a  -  -  -  -  -  -  -  -
abcde        a  a  -  -  -  -  -  -  -  -
abcdef       a  a  -  -  -  -  -  -  -  -
abcdefg      a  a  -  -  -  -  -  -  -  -
abcdefgh     a  a  -  -  -  -  -  -  -  -
abcdefghi    a  a  -  -  -  -  -  -  -  -
abcdefghij   a  a  -  -  -  -  -  -  -  -
abcdefghijk  a  a  -  -  -  -  -  -  -  -
abcdefghijkl a  a  -  -  -  -  -  -  -  -

mlr --opprint put $FIELD =~ "(.)(.)";                         $F0=" ";$F1="\1";$F2="\2";$F3="\3";$F4="\4";$F5="\5";$F6="\6";$F7="\7";$F8="\8";$F9="\9" ./reg_test/input/capture-lengths.dkvp
FIELD        F0 F1 F2 F3 F4 F5 F6 F7 F8 F9
-            -  -  -  -  -  -  -  -  -  -
a            -  -  -  -  -  -  -  -  -  -
ab           ab a  b  -  -  -  -  -  -  -
abc          ab a  b  -  -  -  -  -  -  -
abcd         ab a  b  -  -  -  -  -  -  -
abcde        ab a  b  -  -  -  -  -  -  -
abcdef       ab a  b  -  -  -  -  -  -  -
abcdefg      ab a  b  -  -  -  -  -  -  -
abcdefgh     ab a  b  -  -  -  -  -  -  -
abcdefghi    ab a  b  -  -  -  -  -  -  -
abcdefghij   ab a  b  -  -  -  -  -  -  -
abcdefghijk  ab a  b  -  -  -  -  -  -  -
abcdefghijkl ab a  b  -  -  -  -  -  -  -

mlr --opprint put $FIELD =~ "(.)(.)(.)";                      $F0=" ";$F1="\1";$F2="\2";$F3="\3";$F4="\4";$F5="\5";$F6="\6";$F7="\7";$F8="\8";$F9="\9" ./reg_test/input/capture-lengths.dkvp
FIELD        F0  F1 F2 F3 F4 F5 F6 F7 F8 F9
-            -   -  -  -  -  -  -  -  -  -
a            -   -  -  -  -  -  -  -  -  -
ab           -   -  -  -  -  -  -  -  -  -
abc          abc a  b  c  -  -  -  -  -  -
abcd         abc a  b  c  -  -  -  -  -  -
abcde        abc a  b  c  -  -  -  -  -  -
abcdef       abc a  b  c  -  -  -  -  -  -
abcdefg      abc a  b  c  -  -  -  -  -  -
abcdefgh     abc a  b  c  -  -  -  -  -  -
abcdefghi    abc a  b  c  -  -  -  -  -  -
abcdefghij   abc a  b  c  -  -  -  -  -  -
abcdefghijk  abc a  b  c  -  -  -  -  -  -
abcdefghijkl abc a  b  c  -  -  -  -  -  -

mlr --opprint put $FIELD =~ "(.)(.)(.)(.)";                   $F0=" ";$F1="\1";$F2="\2";$F3="\3";$F4="\4";$F5="\5";$F6="\6";$F7="\7";$F8="\8";$F9="\9" ./reg_test/input/capture-lengths.dkvp
FIELD        F0   F1 F2 F3 F4 F5 F6 F7 F8 F9
-            -    -  -  -  -  -  -  -  -  -
a            -    -  -  -  -  -  -  -  -  -
ab           -    -  -  -  -  -  -  -  -  -
abc          -    -  -  -  -  -  -  -  -  -
abcd         abcd a  b  c  d  -  -  -  -  -
abcde        abcd a  b  c  d  -  -  -  -  -
abcdef       abcd a  b  c  d  -  -  -  -  -
abcdefg      abcd a  b  c  d  -  -  -  -  -
abcdefgh     abcd a  b  c  d  -  -  -  -  -
abcdefghi    abcd a  b  c  d  -  -  -  -  -
abcdefghij   abcd a  b  c  d  -  -  -  -  -
abcdefghijk  abcd a  b  c  d  -  -  -  -  -
abcdefghijkl abcd a  b  c  d  -  -  -  -  -

mlr --opprint put $FIELD =~ "(.)(.)(.)(.)(.)";                $F0=" ";$F1="\1";$F2="\2";$F3="\3";$F4="\4";$F5="\5";$F6="\6";$F7="\7";$F8="\8";$F9="\9" ./reg_test/input/capture-lengths.dkvp
FIELD        F0    F1 F2 F3 F4 F5 F6 F7 F8 F9
-            -     -  -  -  -  -  -  -  -  -
a            -     -  -  -  -  -  -  -  -  -
ab           -     -  -  -  -  -  -  -  -  -
abc          -     -  -  -  -  -  -  -  -  -
abcd         -     -  -  -  -  -  -  -  -  -
abcde        abcde a  b  c  d  e  -  -  -  -
abcdef       abcde a  b  c  d  e  -  -  -  -
abcdefg      abcde a  b  c  d  e  -  -  -  -
abcdefgh     abcde a  b  c  d  e  -  -  -  -
abcdefghi    abcde a  b  c  d  e  -  -  -  -
abcdefghij   abcde a  b  c  d  e  -  -  -  -
abcdefghijk  abcde a  b  c  d  e  -  -  -  -
abcdefghijkl abcde a  b  c  d  e  -  -  -  -

mlr --opprint put $FIELD =~ "(.)(.)(.)(.)(.)(.)";             $F0=" ";$F1="\1";$F2="\2";$F3="\3";$F4="\4";$F5="\5";$F6="\6";$F7="\7";$F8="\8";$F9="\9" ./reg_test/input/capture-lengths.dkvp
FIELD        F0     F1 F2 F3 F4 F5 F6 F7 F8 F9
-            -      -  -  -  -  -  -  -  -  -
a            -      -  -  -  -  -  -  -  -  -
ab           -      -  -  -  -  -  -  -  -  -
abc          -      -  -  -  -  -  -  -  -  -
abcd         -      -  -  -  -  -  -  -  -  -
abcde        -      -  -  -  -  -  -  -  -  -
abcdef       abcdef a  b  c  d  e  f  -  -  -
abcdefg      abcdef a  b  c  d  e  f  -  -  -
abcdefgh     abcdef a  b  c  d  e  f  -  -  -
abcdefghi    abcdef a  b  c  d  e  f  -  -  -
abcdefghij   abcdef a  b  c  d  e  f  -  -  -
abcdefghijk  abcdef a  b  c  d  e  f  -  -  -
abcdefghijkl abcdef a  b  c  d  e  f  -  -  -

mlr --opprint put $FIELD =~ "(.)(.)(.)(.)(.)(.)(.)";          $F0=" ";$F1="\1";$F2="\2";$F3="\3";$F4="\4";$F5="\5";$F6="\6";$F7="\7";$F8="\8";$F9="\9" ./reg_test/input/capture-lengths.dkvp
FIELD        F0      F1 F2 F3 F4 F5 F6 F7 F8 F9
-            -       -  -  -  -  -  -  -  -  -
a            -       -  -  -  -  -  -  -  -  -
ab           -       -  -  -  -  -  -  -  -  -
abc          -       -  -  -  -  -  -  -  -  -
abcd         -       -  -  -  -  -  -  -  -  -
abcde        -       -  -  -  -  -  -  -  -  -
abcdef       -       -  -  -  -  -  -  -  -  -
abcdefg      abcdefg a  b  c  d  e  f  g  -  -
abcdefgh     abcdefg a  b  c  d  e  f  g  -  -
abcdefghi    abcdefg a  b  c  d  e  f  g  -  -
abcdefghij   abcdefg a  b  c  d  e  f  g  -  -
abcdefghijk  abcdefg a  b  c  d  e  f  g  -  -
abcdefghijkl abcdefg a  b  c  d  e  f  g  -  -

mlr --opprint put $FIELD =~ "(.)(.)(.)(.)(.)(.)(.)(.)";       $F0=" ";$F1="\1";$F2="\2";$F3="\3";$F4="\4";$F5="\5";$F6="\6";$F7="\7";$F8="\8";$F9="\9" ./reg_test/input/capture-lengths.dkvp
FIELD        F0       F1 F2 F3 F4 F5 F6 F7 F8 F9
-            -        -  -  -  -  -  -  -  -  -
a            -        -  -  -  -  -  -  -  -  -
ab           -        -  -  -  -  -  -  -  -  -
abc          -        -  -  -  -  -  -  -  -  -
abcd         -        -  -  -  -  -  -  -  -  -
abcde        -        -  -  -  -  -  -  -  -  -
abcdef       -        -  -  -  -  -  -  -  -  -
abcdefg      -        -  -  -  -  -  -  -  -  -
abcdefgh     abcdefgh a  b  c  d  e  f  g  h  -
abcdefghi    abcdefgh a  b  c  d  e  f  g  h  -
abcdefghij   abcdefgh a  b  c  d  e  f  g  h  -
abcdefghijk  abcdefgh a  b  c  d  e  f  g  h  -
abcdefghijkl abcdefgh a  b  c  d  e  f  g  h  -

mlr --opprint put $FIELD =~ "(.)(.)(.)(.)(.)(.)(.)(.)(.)";    $F0=" ";$F1="\1";$F2="\2";$F3="\3";$F4="\4";$F5="\5";$F6="\6";$F7="\7";$F8="\8";$F9="\9" ./reg_test/input/capture-lengths.dkvp
FIELD        F0        F1 F2 F3 F4 F5 F6 F7 F8 F9
-            -         -  -  -  -  -  -  -  -  -
a            -         -  -  -  -  -  -  -  -  -
ab           -         -  -  -  -  -  -  -  -  -
abc          -         -  -  -  -  -  -  -  -  -
abcd         -         -  -  -  -  -  -  -  -  -
abcde        -         -  -  -  -  -  -  -  -  -
abcdef       -         -  -  -  -  -  -  -  -  -
abcdefg      -         -  -  -  -  -  -  -  -  -
abcdefgh     -         -  -  -  -  -  -  -  -  -
abcdefghi    abcdefghi a  b  c  d  e  f  g  h  i
abcdefghij   abcdefghi a  b  c  d  e  f  g  h  i
abcdefghijk  abcdefghi a  b  c  d  e  f  g  h  i
abcdefghijkl abcdefghi a  b  c  d  e  f  g  h  i

mlr --opprint put $FIELD =~ "(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)"; $F0=" ";$F1="\1";$F2="\2";$F3="\3";$F4="\4";$F5="\5";$F6="\6";$F7="\7";$F8="\8";$F9="\9" ./reg_test/input/capture-lengths.dkvp
FIELD        F0         F1 F2 F3 F4 F5 F6 F7 F8 F9
-            -          -  -  -  -  -  -  -  -  -
a            -          -  -  -  -  -  -  -  -  -
ab           -          -  -  -  -  -  -  -  -  -
abc          -          -  -  -  -  -  -  -  -  -
abcd         -          -  -  -  -  -  -  -  -  -
abcde        -          -  -  -  -  -  -  -  -  -
abcdef       -          -  -  -  -  -  -  -  -  -
abcdefg      -          -  -  -  -  -  -  -  -  -
abcdefgh     -          -  -  -  -  -  -  -  -  -
abcdefghi    -          -  -  -  -  -  -  -  -  -
abcdefghij   abcdefghij a  b  c  d  e  f  g  h  i
abcdefghijk  abcdefghij a  b  c  d  e  f  g  h  i
abcdefghijkl abcdefghij a  b  c  d  e  f  g  h  i

mlr --opprint put $FIELD =~ "(.)"                            {$F0=" ";$F1="\1";$F2="\2";$F3="\3";$F4="\4";$F5="\5";$F6="\6";$F7="\7";$F8="\8";$F9="\9"} ./reg_test/input/capture-lengths.dkvp
FIELD
-

FIELD        F0 F1 F2 F3 F4 F5 F6 F7 F8 F9
a            a  a  -  -  -  -  -  -  -  -
ab           a  a  -  -  -  -  -  -  -  -
abc          a  a  -  -  -  -  -  -  -  -
abcd         a  a  -  -  -  -  -  -  -  -
abcde        a  a  -  -  -  -  -  -  -  -
abcdef       a  a  -  -  -  -  -  -  -  -
abcdefg      a  a  -  -  -  -  -  -  -  -
abcdefgh     a  a  -  -  -  -  -  -  -  -
abcdefghi    a  a  -  -  -  -  -  -  -  -
abcdefghij   a  a  -  -  -  -  -  -  -  -
abcdefghijk  a  a  -  -  -  -  -  -  -  -
abcdefghijkl a  a  -  -  -  -  -  -  -  -

mlr --opprint put $FIELD =~ "(.)(.)"                         {$F0=" ";$F1="\1";$F2="\2";$F3="\3";$F4="\4";$F5="\5";$F6="\6";$F7="\7";$F8="\8";$F9="\9"} ./reg_test/input/capture-lengths.dkvp
FIELD
-
a

FIELD        F0 F1 F2 F3 F4 F5 F6 F7 F8 F9
ab           ab a  b  -  -  -  -  -  -  -
abc          ab a  b  -  -  -  -  -  -  -
abcd         ab a  b  -  -  -  -  -  -  -
abcde        ab a  b  -  -  -  -  -  -  -
abcdef       ab a  b  -  -  -  -  -  -  -
abcdefg      ab a  b  -  -  -  -  -  -  -
abcdefgh     ab a  b  -  -  -  -  -  -  -
abcdefghi    ab a  b  -  -  -  -  -  -  -
abcdefghij   ab a  b  -  -  -  -  -  -  -
abcdefghijk  ab a  b  -  -  -  -  -  -  -
abcdefghijkl ab a  b  -  -  -  -  -  -  -

mlr --opprint put $FIELD =~ "(.)(.)(.)"                      {$F0=" ";$F1="\1";$F2="\2";$F3="\3";$F4="\4";$F5="\5";$F6="\6";$F7="\7";$F8="\8";$F9="\9"} ./reg_test/input/capture-lengths.dkvp
FIELD
-
a
ab

FIELD        F0  F1 F2 F3 F4 F5 F6 F7 F8 F9
abc          abc a  b  c  -  -  -  -  -  -
abcd         abc a  b  c  -  -  -  -  -  -
abcde        abc a  b  c  -  -  -  -  -  -
abcdef       abc a  b  c  -  -  -  -  -  -
abcdefg      abc a  b  c  -  -  -  -  -  -
abcdefgh     abc a  b  c  -  -  -  -  -  -
abcdefghi    abc a  b  c  -  -  -  -  -  -
abcdefghij   abc a  b  c  -  -  -  -  -  -
abcdefghijk  abc a  b  c  -  -  -  -  -  -
abcdefghijkl abc a  b  c  -  -  -  -  -  -

mlr --opprint put $FIELD =~ "(.)(.)(.)(.)"                   {$F0=" ";$F1="\1";$F2="\2";$F3="\3";$F4="\4";$F5="\5";$F6="\6";$F7="\7";$F8="\8";$F9="\9"} ./reg_test/input/capture-lengths.dkvp
FIELD
-
a
ab
abc

FIELD        F0   F1 F2 F3 F4 F5 F6 F7 F8 F9
abcd         abcd a  b  c  d  -  -  -  -  -
abcde        abcd a  b  c  d  -  -  -  -  -
abcdef       abcd a  b  c  d  -  -  -  -  -
abcdefg      abcd a  b  c  d  -  -  -  -  -
abcdefgh     abcd a  b  c  d  -  -  -  -  -
abcdefghi    abcd a  b  c  d  -  -  -  -  -
abcdefghij   abcd a  b  c  d  -  -  -  -  -
abcdefghijk  abcd a  b  c  d  -  -  -  -  -
abcdefghijkl abcd a  b  c  d  -  -  -  -  -

mlr --opprint put $FIELD =~ "(.)(.)(.)(.)(.)"                {$F0=" ";$F1="\1";$F2="\2";$F3="\3";$F4="\4";$F5="\5";$F6="\6";$F7="\7";$F8="\8";$F9="\9"} ./reg_test/input/capture-lengths.dkvp
FIELD
-
a
ab
abc
abcd

FIELD        F0    F1 F2 F3 F4 F5 F6 F7 F8 F9
abcde        abcde a  b  c  d  e  -  -  -  -
abcdef       abcde a  b  c  d  e  -  -  -  -
abcdefg      abcde a  b  c  d  e  -  -  -  -
abcdefgh     abcde a  b  c  d  e  -  -  -  -
abcdefghi    abcde a  b  c  d  e  -  -  -  -
abcdefghij   abcde a  b  c  d  e  -  -  -  -
abcdefghijk  abcde a  b  c  d  e  -  -  -  -
abcdefghijkl abcde a  b  c  d  e  -  -  -  -

mlr --opprint put $FIELD =~ "(.)(.)(.)(.)(.)(.)"             {$F0=" ";$F1="\1";$F2="\2";$F3="\3";$F4="\4";$F5="\5";$F6="\6";$F7="\7";$F8="\8";$F9="\9"} ./reg_test/input/capture-lengths.dkvp
FIELD
-
a
ab
abc
abcd
abcde

FIELD        F0     F1 F2 F3 F4 F5 F6 F7 F8 F9
abcdef       abcdef a  b  c  d  e  f  -  -  -
abcdefg      abcdef a  b  c  d  e  f  -  -  -
abcdefgh     abcdef a  b  c  d  e  f  -  -  -
abcdefghi    abcdef a  b  c  d  e  f  -  -  -
abcdefghij   abcdef a  b  c  d  e  f  -  -  -
abcdefghijk  abcdef a  b  c  d  e  f  -  -  -
abcdefghijkl abcdef a  b  c  d  e  f  -  -  -

mlr --opprint put $FIELD =~ "(.)(.)(.)(.)(.)(.)(.)"          {$F0=" ";$F1="\1";$F2="\2";$F3="\3";$F4="\4";$F5="\5";$F6="\6";$F7="\7";$F8="\8";$F9="\9"} ./reg_test/input/capture-lengths.dkvp
FIELD
-
a
ab
abc
abcd
abcde
abcdef

FIELD        F0      F1 F2 F3 F4 F5 F6 F7 F8 F9
abcdefg      abcdefg a  b  c  d  e  f  g  -  -
abcdefgh     abcdefg a  b  c  d  e  f  g  -  -
abcdefghi    abcdefg a  b  c  d  e  f  g  -  -
abcdefghij   abcdefg a  b  c  d  e  f  g  -  -
abcdefghijk  abcdefg a  b  c  d  e  f  g  -  -
abcdefghijkl abcdefg a  b  c  d  e  f  g  -  -

mlr --opprint put $FIELD =~ "(.)(.)(.)(.)(.)(.)(.)(.)"       {$F0=" ";$F1="\1";$F2="\2";$F3="\3";$F4="\4";$F5="\5";$F6="\6";$F7="\7";$F8="\8";$F9="\9"} ./reg_test/input/capture-lengths.dkvp
FIELD
-
a
ab
abc
abcd
abcde
abcdef
abcdefg

FIELD        F0       F1 F2 F3 F4 F5 F6 F7 F8 F9
abcdefgh     abcdefgh a  b  c  d  e  f  g  h  -
abcdefghi    abcdefgh a  b  c  d  e  f  g  h  -
abcdefghij   abcdefgh a  b  c  d  e  f  g  h  -
abcdefghijk  abcdefgh a  b  c  d  e  f  g  h  -
abcdefghijkl abcdefgh a  b  c  d  e  f  g  h  -

mlr --opprint put $FIELD =~ "(.)(.)(.)(.)(.)(.)(.)(.)(.)"    {$F0=" ";$F1="\1";$F2="\2";$F3="\3";$F4="\4";$F5="\5";$F6="\6";$F7="\7";$F8="\8";$F9="\9"} ./reg_test/input/capture-lengths.dkvp
FIELD
-
a
ab
abc
abcd
abcde
abcdef
abcdefg
abcdefgh

FIELD        F0        F1 F2 F3 F4 F5 F6 F7 F8 F9
abcdefghi    abcdefghi a  b  c  d  e  f  g  h  i
abcdefghij   abcdefghi a  b  c  d  e  f  g  h  i
abcdefghijk  abcdefghi a  b  c  d  e  f  g  h  i
abcdefghijkl abcdefghi a  b  c  d  e  f  g  h  i

mlr --opprint put $FIELD =~ "(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)" {$F0=" ";$F1="\1";$F2="\2";$F3="\3";$F4="\4";$F5="\5";$F6="\6";$F7="\7";$F8="\8";$F9="\9"} ./reg_test/input/capture-lengths.dkvp
FIELD
-
a
ab
abc
abcd
abcde
abcdef
abcdefg
abcdefgh
abcdefghi

FIELD        F0         F1 F2 F3 F4 F5 F6 F7 F8 F9
abcdefghij   abcdefghij a  b  c  d  e  f  g  h  i
abcdefghijk  abcdefghij a  b  c  d  e  f  g  h  i
abcdefghijkl abcdefghij a  b  c  d  e  f  g  h  i

mlr --opprint put filter $FIELD =~ "(.)";                            $F0=" ";$F1="\1";$F2="\2";$F3="\3";$F4="\4";$F5="\5";$F6="\6";$F7="\7";$F8="\8";$F9="\9" ./reg_test/input/capture-lengths.dkvp
FIELD        F0 F1 F2 F3 F4 F5 F6 F7 F8 F9
a            a  a  -  -  -  -  -  -  -  -
ab           a  a  -  -  -  -  -  -  -  -
abc          a  a  -  -  -  -  -  -  -  -
abcd         a  a  -  -  -  -  -  -  -  -
abcde        a  a  -  -  -  -  -  -  -  -
abcdef       a  a  -  -  -  -  -  -  -  -
abcdefg      a  a  -  -  -  -  -  -  -  -
abcdefgh     a  a  -  -  -  -  -  -  -  -
abcdefghi    a  a  -  -  -  -  -  -  -  -
abcdefghij   a  a  -  -  -  -  -  -  -  -
abcdefghijk  a  a  -  -  -  -  -  -  -  -
abcdefghijkl a  a  -  -  -  -  -  -  -  -

mlr --opprint put filter $FIELD =~ "(.)(.)";                         $F0=" ";$F1="\1";$F2="\2";$F3="\3";$F4="\4";$F5="\5";$F6="\6";$F7="\7";$F8="\8";$F9="\9" ./reg_test/input/capture-lengths.dkvp
FIELD        F0 F1 F2 F3 F4 F5 F6 F7 F8 F9
ab           ab a  b  -  -  -  -  -  -  -
abc          ab a  b  -  -  -  -  -  -  -
abcd         ab a  b  -  -  -  -  -  -  -
abcde        ab a  b  -  -  -  -  -  -  -
abcdef       ab a  b  -  -  -  -  -  -  -
abcdefg      ab a  b  -  -  -  -  -  -  -
abcdefgh     ab a  b  -  -  -  -  -  -  -
abcdefghi    ab a  b  -  -  -  -  -  -  -
abcdefghij   ab a  b  -  -  -  -  -  -  -
abcdefghijk  ab a  b  -  -  -  -  -  -  -
abcdefghijkl ab a  b  -  -  -  -  -  -  -

mlr --opprint put filter $FIELD =~ "(.)(.)(.)";                      $F0=" ";$F1="\1";$F2="\2";$F3="\3";$F4="\4";$F5="\5";$F6="\6";$F7="\7";$F8="\8";$F9="\9" ./reg_test/input/capture-lengths.dkvp
FIELD        F0  F1 F2 F3 F4 F5 F6 F7 F8 F9
abc          abc a  b  c  -  -  -  -  -  -
abcd         abc a  b  c  -  -  -  -  -  -
abcde        abc a  b  c  -  -  -  -  -  -
abcdef       abc a  b  c  -  -  -  -  -  -
abcdefg      abc a  b  c  -  -  -  -  -  -
abcdefgh     abc a  b  c  -  -  -  -  -  -
abcdefghi    abc a  b  c  -  -  -  -  -  -
abcdefghij   abc a  b  c  -  -  -  -  -  -
abcdefghijk  abc a  b  c  -  -  -  -  -  -
abcdefghijkl abc a  b  c  -  -  -  -  -  -

mlr --opprint put filter $FIELD =~ "(.)(.)(.)(.)";                   $F0=" ";$F1="\1";$F2="\2";$F3="\3";$F4="\4";$F5="\5";$F6="\6";$F7="\7";$F8="\8";$F9="\9" ./reg_test/input/capture-lengths.dkvp
FIELD        F0   F1 F2 F3 F4 F5 F6 F7 F8 F9
abcd         abcd a  b  c  d  -  -  -  -  -
abcde        abcd a  b  c  d  -  -  -  -  -
abcdef       abcd a  b  c  d  -  -  -  -  -
abcdefg      abcd a  b  c  d  -  -  -  -  -
abcdefgh     abcd a  b  c  d  -  -  -  -  -
abcdefghi    abcd a  b  c  d  -  -  -  -  -
abcdefghij   abcd a  b  c  d  -  -  -  -  -
abcdefghijk  abcd a  b  c  d  -  -  -  -  -
abcdefghijkl abcd a  b  c  d  -  -  -  -  -

mlr --opprint put filter $FIELD =~ "(.)(.)(.)(.)(.)";                $F0=" ";$F1="\1";$F2="\2";$F3="\3";$F4="\4";$F5="\5";$F6="\6";$F7="\7";$F8="\8";$F9="\9" ./reg_test/input/capture-lengths.dkvp
FIELD        F0    F1 F2 F3 F4 F5 F6 F7 F8 F9
abcde        abcde a  b  c  d  e  -  -  -  -
abcdef       abcde a  b  c  d  e  -  -  -  -
abcdefg      abcde a  b  c  d  e  -  -  -  -
abcdefgh     abcde a  b  c  d  e  -  -  -  -
abcdefghi    abcde a  b  c  d  e  -  -  -  -
abcdefghij   abcde a  b  c  d  e  -  -  -  -
abcdefghijk  abcde a  b  c  d  e  -  -  -  -
abcdefghijkl abcde a  b  c  d  e  -  -  -  -

mlr --opprint put filter $FIELD =~ "(.)(.)(.)(.)(.)(.)";             $F0=" ";$F1="\1";$F2="\2";$F3="\3";$F4="\4";$F5="\5";$F6="\6";$F7="\7";$F8="\8";$F9="\9" ./reg_test/input/capture-lengths.dkvp
FIELD        F0     F1 F2 F3 F4 F5 F6 F7 F8 F9
abcdef       abcdef a  b  c  d  e  f  -  -  -
abcdefg      abcdef a  b  c  d  e  f  -  -  -
abcdefgh     abcdef a  b  c  d  e  f  -  -  -
abcdefghi    abcdef a  b  c  d  e  f  -  -  -
abcdefghij   abcdef a  b  c  d  e  f  -  -  -
abcdefghijk  abcdef a  b  c  d  e  f  -  -  -
abcdefghijkl abcdef a  b  c  d  e  f  -  -  -

mlr --opprint put filter $FIELD =~ "(.)(.)(.)(.)(.)(.)(.)";          $F0=" ";$F1="\1";$F2="\2";$F3="\3";$F4="\4";$F5="\5";$F6="\6";$F7="\7";$F8="\8";$F9="\9" ./reg_test/input/capture-lengths.dkvp
FIELD        F0      F1 F2 F3 F4 F5 F6 F7 F8 F9
abcdefg      abcdefg a  b  c  d  e  f  g  -  -
abcdefgh     abcdefg a  b  c  d  e  f  g  -  -
abcdefghi    abcdefg a  b  c  d  e  f  g  -  -
abcdefghij   abcdefg a  b  c  d  e  f  g  -  -
abcdefghijk  abcdefg a  b  c  d  e  f  g  -  -
abcdefghijkl abcdefg a  b  c  d  e  f  g  -  -

mlr --opprint put filter $FIELD =~ "(.)(.)(.)(.)(.)(.)(.)(.)";       $F0=" ";$F1="\1";$F2="\2";$F3="\3";$F4="\4";$F5="\5";$F6="\6";$F7="\7";$F8="\8";$F9="\9" ./reg_test/input/capture-lengths.dkvp
FIELD        F0       F1 F2 F3 F4 F5 F6 F7 F8 F9
abcdefgh     abcdefgh a  b  c  d  e  f  g  h  -
abcdefghi    abcdefgh a  b  c  d  e  f  g  h  -
abcdefghij   abcdefgh a  b  c  d  e  f  g  h  -
abcdefghijk  abcdefgh a  b  c  d  e  f  g  h  -
abcdefghijkl abcdefgh a  b  c  d  e  f  g  h  -

mlr --opprint put filter $FIELD =~ "(.)(.)(.)(.)(.)(.)(.)(.)(.)";    $F0=" ";$F1="\1";$F2="\2";$F3="\3";$F4="\4";$F5="\5";$F6="\6";$F7="\7";$F8="\8";$F9="\9" ./reg_test/input/capture-lengths.dkvp
FIELD        F0        F1 F2 F3 F4 F5 F6 F7 F8 F9
abcdefghi    abcdefghi a  b  c  d  e  f  g  h  i
abcdefghij   abcdefghi a  b  c  d  e  f  g  h  i
abcdefghijk  abcdefghi a  b  c  d  e  f  g  h  i
abcdefghijkl abcdefghi a  b  c  d  e  f  g  h  i

mlr --opprint put filter $FIELD =~ "(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)"; $F0=" ";$F1="\1";$F2="\2";$F3="\3";$F4="\4";$F5="\5";$F6="\6";$F7="\7";$F8="\8";$F9="\9" ./reg_test/input/capture-lengths.dkvp
FIELD        F0         F1 F2 F3 F4 F5 F6 F7 F8 F9
abcdefghij   abcdefghij a  b  c  d  e  f  g  h  i
abcdefghijk  abcdefghij a  b  c  d  e  f  g  h  i
abcdefghijkl abcdefghij a  b  c  d  e  f  g  h  i

mlr --inidx --odkvp put $1 =~ "ab(.)d(..)g"  { $c1 = "\1"; $c2 = "\2"}
1=abcdefg,c1=c,c2=ef

mlr --inidx --odkvp put $1 =~ "ab(.)?d(..)g" { $c1 = "\1"; $c2 = "\2"}
1=abcdefg,c1=c,c2=ef

mlr --inidx --odkvp put $1 =~ "ab(c)?d(..)g" { $c1 = "\1"; $c2 = "\2"}
1=abXdefg

mlr --inidx --odkvp put $1 =~ "ab(c)?d(..)g" { $c1 = "\1"; $c2 = "\2"}
1=abdefg,c1=,c2=ef


================================================================
DSL FILTER/PATTERN-ACTION

mlr --opprint put          $x > 0.5;  $z = "flag" ./reg_test/input/abixy
a   b   i  x                   y                   z
pan pan 1  0.3467901443380824  0.7268028627434533  flag
eks pan 2  0.7586799647899636  0.5221511083334797  flag
wye wye 3  0.20460330576630303 0.33831852551664776 flag
eks wye 4  0.38139939387114097 0.13418874328430463 flag
wye pan 5  0.5732889198020006  0.8636244699032729  flag
zee pan 6  0.5271261600918548  0.49322128674835697 flag
eks zee 7  0.6117840605678454  0.1878849191181694  flag
zee wye 8  0.5985540091064224  0.976181385699006   flag
hat wye 9  0.03144187646093577 0.7495507603507059  flag
pan wye 10 0.5026260055412137  0.9526183602969864  flag

mlr --opprint put        !($x > 0.5); $z = "flag" ./reg_test/input/abixy
a   b   i  x                   y                   z
pan pan 1  0.3467901443380824  0.7268028627434533  flag
eks pan 2  0.7586799647899636  0.5221511083334797  flag
wye wye 3  0.20460330576630303 0.33831852551664776 flag
eks wye 4  0.38139939387114097 0.13418874328430463 flag
wye pan 5  0.5732889198020006  0.8636244699032729  flag
zee pan 6  0.5271261600918548  0.49322128674835697 flag
eks zee 7  0.6117840605678454  0.1878849191181694  flag
zee wye 8  0.5985540091064224  0.976181385699006   flag
hat wye 9  0.03144187646093577 0.7495507603507059  flag
pan wye 10 0.5026260055412137  0.9526183602969864  flag

mlr --opprint put filter   $x > 0.5;  $z = "flag" ./reg_test/input/abixy
a   b   i  x                  y                   z
eks pan 2  0.7586799647899636 0.5221511083334797  flag
wye pan 5  0.5732889198020006 0.8636244699032729  flag
zee pan 6  0.5271261600918548 0.49322128674835697 flag
eks zee 7  0.6117840605678454 0.1878849191181694  flag
zee wye 8  0.5985540091064224 0.976181385699006   flag
pan wye 10 0.5026260055412137 0.9526183602969864  flag

mlr --opprint put          $x > 0.5  {$z = "flag"} ./reg_test/input/abixy
a   b   i x                  y
pan pan 1 0.3467901443380824 0.7268028627434533

a   b   i x                  y                  z
eks pan 2 0.7586799647899636 0.5221511083334797 flag

a   b   i x                   y
wye wye 3 0.20460330576630303 0.33831852551664776
eks wye 4 0.38139939387114097 0.13418874328430463

a   b   i x                  y                   z
wye pan 5 0.5732889198020006 0.8636244699032729  flag
zee pan 6 0.5271261600918548 0.49322128674835697 flag
eks zee 7 0.6117840605678454 0.1878849191181694  flag
zee wye 8 0.5985540091064224 0.976181385699006   flag

a   b   i x                   y
hat wye 9 0.03144187646093577 0.7495507603507059

a   b   i  x                  y                  z
pan wye 10 0.5026260055412137 0.9526183602969864 flag

mlr --opprint put filter !($x > 0.5); $z = "flag" ./reg_test/input/abixy
a   b   i x                   y                   z
pan pan 1 0.3467901443380824  0.7268028627434533  flag
wye wye 3 0.20460330576630303 0.33831852551664776 flag
eks wye 4 0.38139939387114097 0.13418874328430463 flag
hat wye 9 0.03144187646093577 0.7495507603507059  flag

mlr --opprint put        !($x > 0.5) {$z = "flag"} ./reg_test/input/abixy
a   b   i x                  y                  z
pan pan 1 0.3467901443380824 0.7268028627434533 flag

a   b   i x                  y
eks pan 2 0.7586799647899636 0.5221511083334797

a   b   i x                   y                   z
wye wye 3 0.20460330576630303 0.33831852551664776 flag
eks wye 4 0.38139939387114097 0.13418874328430463 flag

a   b   i x                  y
wye pan 5 0.5732889198020006 0.8636244699032729
zee pan 6 0.5271261600918548 0.49322128674835697
eks zee 7 0.6117840605678454 0.1878849191181694
zee wye 8 0.5985540091064224 0.976181385699006

a   b   i x                   y                  z
hat wye 9 0.03144187646093577 0.7495507603507059 flag

a   b   i  x                  y
pan wye 10 0.5026260055412137 0.9526183602969864


================================================================
DSL GMT DATE/TIME FUNCTIONS

mlr --csvlite put $gmt = sec2gmt($sec) ./reg_test/input/sec2gmt
n,sec,gmt
1,0,1970-01-01T00:00:00Z
2,1,1970-01-01T00:00:01Z
3,10,1970-01-01T00:00:10Z
4,100,1970-01-01T00:01:40Z
5,1000,1970-01-01T00:16:40Z
6,10000,1970-01-01T02:46:40Z
7,100000,1970-01-02T03:46:40Z
8,1000000,1970-01-12T13:46:40Z
9,10000000,1970-04-26T17:46:40Z
10,100000000,1973-03-03T09:46:40Z
11,1000000000,2001-09-09T01:46:40Z
12,1432036180,2015-05-19T11:49:40Z
13,1500000000,2017-07-14T02:40:00Z
14,2000000000,2033-05-18T03:33:20Z
15,2000000000.,2033-05-18T03:33:20Z
16,2000000000.0,2033-05-18T03:33:20Z
17,2000000000.00,2033-05-18T03:33:20Z
18,2000000000.123400,2033-05-18T03:33:20Z
19,2000000000.123456,2033-05-18T03:33:20Z
20,2000000000.999,2033-05-18T03:33:20Z
21,2000000000.999999,2033-05-18T03:33:20Z
22,2000000000.999999999,2033-05-18T03:33:21Z
23,,
24,x,x
25,123x,123x

mlr --csvlite put $gmt = sec2gmt($sec,1) ./reg_test/input/sec2gmt
n,sec,gmt
1,0,1970-01-01T00:00:00.0Z
2,1,1970-01-01T00:00:01.0Z
3,10,1970-01-01T00:00:10.0Z
4,100,1970-01-01T00:01:40.0Z
5,1000,1970-01-01T00:16:40.0Z
6,10000,1970-01-01T02:46:40.0Z
7,100000,1970-01-02T03:46:40.0Z
8,1000000,1970-01-12T13:46:40.0Z
9,10000000,1970-04-26T17:46:40.0Z
10,100000000,1973-03-03T09:46:40.0Z
11,1000000000,2001-09-09T01:46:40.0Z
12,1432036180,2015-05-19T11:49:40.0Z
13,1500000000,2017-07-14T02:40:00.0Z
14,2000000000,2033-05-18T03:33:20.0Z
15,2000000000.,2033-05-18T03:33:20.0Z
16,2000000000.0,2033-05-18T03:33:20.0Z
17,2000000000.00,2033-05-18T03:33:20.0Z
18,2000000000.123400,2033-05-18T03:33:20.1Z
19,2000000000.123456,2033-05-18T03:33:20.1Z
20,2000000000.999,2033-05-18T03:33:20.9Z
21,2000000000.999999,2033-05-18T03:33:20.9Z
22,2000000000.999999999,2033-05-18T03:33:21.0Z
23,,
24,x,x
25,123x,123x

mlr --csvlite put $gmt = sec2gmt($sec,3) ./reg_test/input/sec2gmt
n,sec,gmt
1,0,1970-01-01T00:00:00.000Z
2,1,1970-01-01T00:00:01.000Z
3,10,1970-01-01T00:00:10.000Z
4,100,1970-01-01T00:01:40.000Z
5,1000,1970-01-01T00:16:40.000Z
6,10000,1970-01-01T02:46:40.000Z
7,100000,1970-01-02T03:46:40.000Z
8,1000000,1970-01-12T13:46:40.000Z
9,10000000,1970-04-26T17:46:40.000Z
10,100000000,1973-03-03T09:46:40.000Z
11,1000000000,2001-09-09T01:46:40.000Z
12,1432036180,2015-05-19T11:49:40.000Z
13,1500000000,2017-07-14T02:40:00.000Z
14,2000000000,2033-05-18T03:33:20.000Z
15,2000000000.,2033-05-18T03:33:20.000Z
16,2000000000.0,2033-05-18T03:33:20.000Z
17,2000000000.00,2033-05-18T03:33:20.000Z
18,2000000000.123400,2033-05-18T03:33:20.123Z
19,2000000000.123456,2033-05-18T03:33:20.123Z
20,2000000000.999,2033-05-18T03:33:20.999Z
21,2000000000.999999,2033-05-18T03:33:20.999Z
22,2000000000.999999999,2033-05-18T03:33:21.000Z
23,,
24,x,x
25,123x,123x

mlr --csvlite put $gmt = sec2gmt($sec,6) ./reg_test/input/sec2gmt
n,sec,gmt
1,0,1970-01-01T00:00:00.000000Z
2,1,1970-01-01T00:00:01.000000Z
3,10,1970-01-01T00:00:10.000000Z
4,100,1970-01-01T00:01:40.000000Z
5,1000,1970-01-01T00:16:40.000000Z
6,10000,1970-01-01T02:46:40.000000Z
7,100000,1970-01-02T03:46:40.000000Z
8,1000000,1970-01-12T13:46:40.000000Z
9,10000000,1970-04-26T17:46:40.000000Z
10,100000000,1973-03-03T09:46:40.000000Z
11,1000000000,2001-09-09T01:46:40.000000Z
12,1432036180,2015-05-19T11:49:40.000000Z
13,1500000000,2017-07-14T02:40:00.000000Z
14,2000000000,2033-05-18T03:33:20.000000Z
15,2000000000.,2033-05-18T03:33:20.000000Z
16,2000000000.0,2033-05-18T03:33:20.000000Z
17,2000000000.00,2033-05-18T03:33:20.000000Z
18,2000000000.123400,2033-05-18T03:33:20.123400Z
19,2000000000.123456,2033-05-18T03:33:20.123456Z
20,2000000000.999,2033-05-18T03:33:20.999000Z
21,2000000000.999999,2033-05-18T03:33:20.999999Z
22,2000000000.999999999,2033-05-18T03:33:21.000000Z
23,,
24,x,x
25,123x,123x

mlr --csvlite put $sec = gmt2sec($gmt) ./reg_test/input/gmt2sec
gmt,sec
1970-01-01T00:00:00Z,0.000000
1970-01-01T00:00:00.Z,0.000000
1970-01-01T00:00:01Z,1.000000
1970-01-01T00:00:01.0Z,1.000000
1970-01-01T00:00:10Z,10.000000
1970-01-01T00:00:10.00Z,10.000000
1970-01-01T00:01:40Z,100.000000
1970-01-01T00:01:40.1Z,100.100000
1970-01-01T00:16:40Z,1000.000000
1970-01-01T00:16:40.12Z,1000.120000
1970-01-01T02:46:40Z,10000.000000
1970-01-01T02:46:40.123Z,10000.123000
1970-01-02T03:46:40Z,100000.000000
1970-01-02T03:46:40.1234Z,100000.123400
1970-01-12T13:46:40Z,1000000.000000
1970-01-12T13:46:40.12345Z,1000000.123450
1970-04-26T17:46:40Z,10000000.000000
1970-04-26T17:46:40.123456Z,10000000.123456
1973-03-03T09:46:40Z,100000000.000000
1973-03-03T09:46:40.1234567Z,100000000.123457
2001-09-09T01:46:40Z,1000000000.000000
2001-09-09T01:46:40.12345678Z,1000000000.123457
2015-05-19T11:49:40Z,1432036180.000000
2015-05-19T11:49:40.123456789Z,1432036180.123457
2017-07-14T02:40:00Z,1500000000.000000
2017-07-14T02:40:00.999Z,1500000000.999000
2033-05-18T03:33:20Z,2000000000.000000
2033-05-18T03:33:20.999999Z,2000000000.999999

mlr --csvlite put $gmtdate = sec2gmtdate($sec) ./reg_test/input/sec2gmt
n,sec,gmtdate
1,0,1970-01-01
2,1,1970-01-01
3,10,1970-01-01
4,100,1970-01-01
5,1000,1970-01-01
6,10000,1970-01-01
7,100000,1970-01-02
8,1000000,1970-01-12
9,10000000,1970-04-26
10,100000000,1973-03-03
11,1000000000,2001-09-09
12,1432036180,2015-05-19
13,1500000000,2017-07-14
14,2000000000,2033-05-18
15,2000000000.,2033-05-18
16,2000000000.0,2033-05-18
17,2000000000.00,2033-05-18
18,2000000000.123400,2033-05-18
19,2000000000.123456,2033-05-18
20,2000000000.999,2033-05-18
21,2000000000.999999,2033-05-18
22,2000000000.999999999,2033-05-18
23,,
24,x,x
25,123x,123x

mlr --icsv --opprint put $gmt = strftime($sec, "%Y-%m-%dT%H:%M:%SZ") ./reg_test/input/sec2gmt
n  sec                  gmt
1  0                    1970-01-01T00:00:00Z
2  1                    1970-01-01T00:00:01Z
3  10                   1970-01-01T00:00:10Z
4  100                  1970-01-01T00:01:40Z
5  1000                 1970-01-01T00:16:40Z
6  10000                1970-01-01T02:46:40Z
7  100000               1970-01-02T03:46:40Z
8  1000000              1970-01-12T13:46:40Z
9  10000000             1970-04-26T17:46:40Z
10 100000000            1973-03-03T09:46:40Z
11 1000000000           2001-09-09T01:46:40Z
12 1432036180           2015-05-19T11:49:40Z
13 1500000000           2017-07-14T02:40:00Z
14 2000000000           2033-05-18T03:33:20Z
15 2000000000.          2033-05-18T03:33:20Z
16 2000000000.0         2033-05-18T03:33:20Z
17 2000000000.00        2033-05-18T03:33:20Z
18 2000000000.123400    2033-05-18T03:33:20Z
19 2000000000.123456    2033-05-18T03:33:20Z
20 2000000000.999       2033-05-18T03:33:20Z
21 2000000000.999999    2033-05-18T03:33:20Z
22 2000000000.999999999 2033-05-18T03:33:21Z
23 -                    -
24 x                    (error)
25 123x                 (error)

mlr --icsv --opprint put $gmt = strftime($sec, "%Y-%m-%dT%H:%M:%1SZ") ./reg_test/input/sec2gmt
n  sec                  gmt
1  0                    1970-01-01T00:00:00.0Z
2  1                    1970-01-01T00:00:01.0Z
3  10                   1970-01-01T00:00:10.0Z
4  100                  1970-01-01T00:01:40.0Z
5  1000                 1970-01-01T00:16:40.0Z
6  10000                1970-01-01T02:46:40.0Z
7  100000               1970-01-02T03:46:40.0Z
8  1000000              1970-01-12T13:46:40.0Z
9  10000000             1970-04-26T17:46:40.0Z
10 100000000            1973-03-03T09:46:40.0Z
11 1000000000           2001-09-09T01:46:40.0Z
12 1432036180           2015-05-19T11:49:40.0Z
13 1500000000           2017-07-14T02:40:00.0Z
14 2000000000           2033-05-18T03:33:20.0Z
15 2000000000.          2033-05-18T03:33:20.0Z
16 2000000000.0         2033-05-18T03:33:20.0Z
17 2000000000.00        2033-05-18T03:33:20.0Z
18 2000000000.123400    2033-05-18T03:33:20.1Z
19 2000000000.123456    2033-05-18T03:33:20.1Z
20 2000000000.999       2033-05-18T03:33:20.9Z
21 2000000000.999999    2033-05-18T03:33:20.9Z
22 2000000000.999999999 2033-05-18T03:33:21.0Z
23 -                    -
24 x                    (error)
25 123x                 (error)

mlr --icsv --opprint put $gmt = strftime($sec, "%Y-%m-%dT%H:%M:%3SZ") ./reg_test/input/sec2gmt
n  sec                  gmt
1  0                    1970-01-01T00:00:00.000Z
2  1                    1970-01-01T00:00:01.000Z
3  10                   1970-01-01T00:00:10.000Z
4  100                  1970-01-01T00:01:40.000Z
5  1000                 1970-01-01T00:16:40.000Z
6  10000                1970-01-01T02:46:40.000Z
7  100000               1970-01-02T03:46:40.000Z
8  1000000              1970-01-12T13:46:40.000Z
9  10000000             1970-04-26T17:46:40.000Z
10 100000000            1973-03-03T09:46:40.000Z
11 1000000000           2001-09-09T01:46:40.000Z
12 1432036180           2015-05-19T11:49:40.000Z
13 1500000000           2017-07-14T02:40:00.000Z
14 2000000000           2033-05-18T03:33:20.000Z
15 2000000000.          2033-05-18T03:33:20.000Z
16 2000000000.0         2033-05-18T03:33:20.000Z
17 2000000000.00        2033-05-18T03:33:20.000Z
18 2000000000.123400    2033-05-18T03:33:20.123Z
19 2000000000.123456    2033-05-18T03:33:20.123Z
20 2000000000.999       2033-05-18T03:33:20.999Z
21 2000000000.999999    2033-05-18T03:33:20.999Z
22 2000000000.999999999 2033-05-18T03:33:21.000Z
23 -                    -
24 x                    (error)
25 123x                 (error)

mlr --icsv --opprint put $gmt = strftime($sec, "%Y-%m-%dT%H:%M:%6SZ") ./reg_test/input/sec2gmt
n  sec                  gmt
1  0                    1970-01-01T00:00:00.000000Z
2  1                    1970-01-01T00:00:01.000000Z
3  10                   1970-01-01T00:00:10.000000Z
4  100                  1970-01-01T00:01:40.000000Z
5  1000                 1970-01-01T00:16:40.000000Z
6  10000                1970-01-01T02:46:40.000000Z
7  100000               1970-01-02T03:46:40.000000Z
8  1000000              1970-01-12T13:46:40.000000Z
9  10000000             1970-04-26T17:46:40.000000Z
10 100000000            1973-03-03T09:46:40.000000Z
11 1000000000           2001-09-09T01:46:40.000000Z
12 1432036180           2015-05-19T11:49:40.000000Z
13 1500000000           2017-07-14T02:40:00.000000Z
14 2000000000           2033-05-18T03:33:20.000000Z
15 2000000000.          2033-05-18T03:33:20.000000Z
16 2000000000.0         2033-05-18T03:33:20.000000Z
17 2000000000.00        2033-05-18T03:33:20.000000Z
18 2000000000.123400    2033-05-18T03:33:20.123400Z
19 2000000000.123456    2033-05-18T03:33:20.123456Z
20 2000000000.999       2033-05-18T03:33:20.999000Z
21 2000000000.999999    2033-05-18T03:33:20.999999Z
22 2000000000.999999999 2033-05-18T03:33:21.000000Z
23 -                    -
24 x                    (error)
25 123x                 (error)

mlr --icsv --opprint put $sec = strptime($gmt, "%Y-%m-%dT%H:%M:%SZ") ./reg_test/input/gmt2sec
gmt                            sec
1970-01-01T00:00:00Z           0.000000
1970-01-01T00:00:00.Z          0.000000
1970-01-01T00:00:01Z           1.000000
1970-01-01T00:00:01.0Z         1.000000
1970-01-01T00:00:10Z           10.000000
1970-01-01T00:00:10.00Z        10.000000
1970-01-01T00:01:40Z           100.000000
1970-01-01T00:01:40.1Z         100.100000
1970-01-01T00:16:40Z           1000.000000
1970-01-01T00:16:40.12Z        1000.120000
1970-01-01T02:46:40Z           10000.000000
1970-01-01T02:46:40.123Z       10000.123000
1970-01-02T03:46:40Z           100000.000000
1970-01-02T03:46:40.1234Z      100000.123400
1970-01-12T13:46:40Z           1000000.000000
1970-01-12T13:46:40.12345Z     1000000.123450
1970-04-26T17:46:40Z           10000000.000000
1970-04-26T17:46:40.123456Z    10000000.123456
1973-03-03T09:46:40Z           100000000.000000
1973-03-03T09:46:40.1234567Z   100000000.123457
2001-09-09T01:46:40Z           1000000000.000000
2001-09-09T01:46:40.12345678Z  1000000000.123457
2015-05-19T11:49:40Z           1432036180.000000
2015-05-19T11:49:40.123456789Z 1432036180.123457
2017-07-14T02:40:00Z           1500000000.000000
2017-07-14T02:40:00.999Z       1500000000.999000
2033-05-18T03:33:20Z           2000000000.000000
2033-05-18T03:33:20.999999Z    2000000000.999999

mlr --csvlite sec2gmt sec ./reg_test/input/sec2gmt
n,sec
1,1970-01-01T00:00:00Z
2,1970-01-01T00:00:01Z
3,1970-01-01T00:00:10Z
4,1970-01-01T00:01:40Z
5,1970-01-01T00:16:40Z
6,1970-01-01T02:46:40Z
7,1970-01-02T03:46:40Z
8,1970-01-12T13:46:40Z
9,1970-04-26T17:46:40Z
10,1973-03-03T09:46:40Z
11,2001-09-09T01:46:40Z
12,2015-05-19T11:49:40Z
13,2017-07-14T02:40:00Z
14,2033-05-18T03:33:20Z
15,2033-05-18T03:33:20Z
16,2033-05-18T03:33:20Z
17,2033-05-18T03:33:20Z
18,2033-05-18T03:33:20Z
19,2033-05-18T03:33:20Z
20,2033-05-18T03:33:20Z
21,2033-05-18T03:33:20Z
22,2033-05-18T03:33:21Z
23,
24,x
25,123x

mlr --opprint put $hms=sec2hms($sec);   $resec=hms2sec($hms);   $diff=$resec-$sec ./reg_test/input/sec2xhms
sec     hms        resec   diff
0       00:00:00   0       0
1       00:00:01   1       0
59      00:00:59   59      0
60      00:01:00   60      0
61      00:01:01   61      0
3599    00:59:59   3599    0
3600    01:00:00   3600    0
3601    01:00:01   3601    0
86399   23:59:59   86399   0
86400   24:00:00   86400   0
86401   24:00:01   86401   0
863999  239:59:59  863999  0
864000  240:00:00  864000  0
864001  240:00:01  864001  0
-1      -00:00:01  -1      0
-59     -00:00:59  -59     0
-60     -00:01:00  -60     0
-61     -00:01:01  -61     0
-3599   -00:59:59  -3599   0
-3600   -01:00:00  -3600   0
-3601   -01:00:01  -3601   0
-86399  -23:59:59  -86399  0
-86400  -24:00:00  -86400  0
-86401  -24:00:01  -86401  0
-863999 -239:59:59 -863999 0
-864000 -240:00:00 -864000 0
-864001 -240:00:01 -864001 0

mlr --opprint put $hms=fsec2hms($sec);  $resec=hms2fsec($hms);  $diff=$resec-$sec ./reg_test/input/fsec2xhms
sec        hms               resec          diff
0.25       0:00:00.250000    0.250000       0.000000
1.25       0:00:01.250000    1.250000       0.000000
59.25      0:00:59.250000    59.250000      0.000000
60.25      0:01:00.250000    60.250000      0.000000
61.25      0:01:01.250000    61.250000      0.000000
3599.25    0:59:59.250000    3599.250000    0.000000
3600.25    1:00:00.250000    3600.250000    0.000000
3601.25    1:00:01.250000    3601.250000    0.000000
86399.25   23:59:59.250000   86399.250000   0.000000
86400.25   24:00:00.250000   86400.250000   0.000000
86401.25   24:00:01.250000   86401.250000   0.000000
863999.25  239:59:59.250000  863999.250000  0.000000
864000.25  240:00:00.250000  864000.250000  0.000000
864001.25  240:00:01.250000  864001.250000  0.000000
-0.25      -00:00:00.250000  -0.250000      0.000000
-1.25      -00:00:01.250000  -1.250000      0.000000
-59.25     -00:00:59.250000  -59.250000     0.000000
-60.25     -00:01:00.250000  -60.250000     0.000000
-61.25     -00:01:01.250000  -61.250000     0.000000
-3599.25   -00:59:59.250000  -3599.250000   0.000000
-3600.25   -01:00:00.250000  -3600.250000   0.000000
-3601.25   -01:00:01.250000  -3601.250000   0.000000
-86399.25  -23:59:59.250000  -86399.250000  0.000000
-86400.25  -24:00:00.250000  -86400.250000  0.000000
-86401.25  -24:00:01.250000  -86401.250000  0.000000
-863999.25 -239:59:59.250000 -863999.250000 0.000000
-864000.25 -240:00:00.250000 -864000.250000 0.000000
-864001.25 -240:00:01.250000 -864001.250000 0.000000

mlr --opprint put $hms=sec2dhms($sec);  $resec=dhms2sec($hms);  $diff=$resec-$sec ./reg_test/input/sec2xhms
sec     hms           resec   diff
0       0s            0       0
1       1s            1       0
59      59s           59      0
60      1m00s         60      0
61      1m01s         61      0
3599    59m59s        3599    0
3600    1h00m00s      3600    0
3601    1h00m01s      3601    0
86399   23h59m59s     86399   0
86400   1d00h00m00s   86400   0
86401   1d00h00m01s   86401   0
863999  9d23h59m59s   863999  0
864000  10d00h00m00s  864000  0
864001  10d00h00m01s  864001  0
-1      -1s           -1      0
-59     -59s          -59     0
-60     -1m00s        -60     0
-61     -1m01s        -61     0
-3599   -59m59s       -3599   0
-3600   -1h00m00s     -3600   0
-3601   -1h00m01s     -3601   0
-86399  -23h59m59s    -86399  0
-86400  -1d00h00m00s  -86400  0
-86401  -1d00h00m01s  -86401  0
-863999 -9d23h59m59s  -863999 0
-864000 -10d00h00m00s -864000 0
-864001 -10d00h00m01s -864001 0

mlr --opprint put $hms=fsec2dhms($sec); $resec=dhms2fsec($hms); $diff=$resec-$sec ./reg_test/input/fsec2xhms
sec        hms                  resec          diff
0.25       0.250000s            0.250000       0.000000
1.25       1.250000s            1.250000       0.000000
59.25      59.250000s           59.250000      0.000000
60.25      1m00.250000s         60.250000      0.000000
61.25      1m01.250000s         61.250000      0.000000
3599.25    59m59.250000s        3599.250000    0.000000
3600.25    1h00m00.250000s      3600.250000    0.000000
3601.25    1h00m01.250000s      3601.250000    0.000000
86399.25   23h59m59.250000s     86399.250000   0.000000
86400.25   1d00h00m00.250000s   86400.250000   0.000000
86401.25   1d00h00m01.250000s   86401.250000   0.000000
863999.25  9d23h59m59.250000s   863999.250000  0.000000
864000.25  10d00h00m00.250000s  864000.250000  0.000000
864001.25  10d00h00m01.250000s  864001.250000  0.000000
-0.25      -0.250000s           -0.250000      0.000000
-1.25      -1.250000s           -1.250000      0.000000
-59.25     -59.250000s          -59.250000     0.000000
-60.25     -1m00.250000s        -60.250000     0.000000
-61.25     -1m01.250000s        -61.250000     0.000000
-3599.25   -59m59.250000s       -3599.250000   0.000000
-3600.25   -1h00m00.250000s     -3600.250000   0.000000
-3601.25   -1h00m01.250000s     -3601.250000   0.000000
-86399.25  -23h59m59.250000s    -86399.250000  0.000000
-86400.25  -1d00h00m00.250000s  -86400.250000  0.000000
-86401.25  -1d00h00m01.250000s  -86401.250000  0.000000
-863999.25 -9d23h59m59.250000s  -863999.250000 0.000000
-864000.25 -10d00h00m00.250000s -864000.250000 0.000000
-864001.25 -10d00h00m01.250000s -864001.250000 0.000000

mlr --csvlite sec2gmt sec ./reg_test/input/sec2gmt
n,sec
1,1970-01-01T00:00:00Z
2,1970-01-01T00:00:01Z
3,1970-01-01T00:00:10Z
4,1970-01-01T00:01:40Z
5,1970-01-01T00:16:40Z
6,1970-01-01T02:46:40Z
7,1970-01-02T03:46:40Z
8,1970-01-12T13:46:40Z
9,1970-04-26T17:46:40Z
10,1973-03-03T09:46:40Z
11,2001-09-09T01:46:40Z
12,2015-05-19T11:49:40Z
13,2017-07-14T02:40:00Z
14,2033-05-18T03:33:20Z
15,2033-05-18T03:33:20Z
16,2033-05-18T03:33:20Z
17,2033-05-18T03:33:20Z
18,2033-05-18T03:33:20Z
19,2033-05-18T03:33:20Z
20,2033-05-18T03:33:20Z
21,2033-05-18T03:33:20Z
22,2033-05-18T03:33:21Z
23,
24,x
25,123x

mlr --csvlite sec2gmtdate sec ./reg_test/input/sec2gmt
n,sec
1,1970-01-01
2,1970-01-01
3,1970-01-01
4,1970-01-01
5,1970-01-01
6,1970-01-01
7,1970-01-02
8,1970-01-12
9,1970-04-26
10,1973-03-03
11,2001-09-09
12,2015-05-19
13,2017-07-14
14,2033-05-18
15,2033-05-18
16,2033-05-18
17,2033-05-18
18,2033-05-18
19,2033-05-18
20,2033-05-18
21,2033-05-18
22,2033-05-18
23,
24,x
25,123x


================================================================
DSL LOCAL DATE/TIME FUNCTIONS

mlr --opprint put $b=localtime2sec($a); $c=sec2localtime($b); $d=sec2localdate($b)
a                   b                 c                   d
2017-02-18 23:00:00 1487469600.000000 2017-02-18 23:00:00 2017-02-18
2017-02-18 23:59:59 1487473199.000000 2017-02-18 23:59:59 2017-02-18
2017-02-19 00:00:00 1487473200.000000 2017-02-19 00:00:00 2017-02-19
2017-02-19 00:30:00 1487475000.000000 2017-02-19 00:30:00 2017-02-19
2017-02-19 01:00:00 1487476800.000000 2017-02-19 01:00:00 2017-02-19
2017-10-14 23:00:00 1508032800.000000 2017-10-14 23:00:00 2017-10-14
2017-10-14 23:59:59 1508036399.000000 2017-10-14 23:59:59 2017-10-14
2017-10-15 00:00:00 1508036400.000000 2017-10-15 01:00:00 2017-10-15
2017-10-15 00:30:00 1508038200.000000 2017-10-15 01:30:00 2017-10-15
2017-10-15 01:00:00 1508040000.000000 2017-10-15 02:00:00 2017-10-15

mlr --opprint put $b=localtime2sec($a); $c=sec2localtime($b); $d=sec2localdate($b)
a                   b                 c                   d
2017-02-14 00:00:00 1487041200.000000 2017-02-14 01:00:00 2017-02-14
2017-02-15 00:00:00 1487127600.000000 2017-02-15 01:00:00 2017-02-15
2017-02-16 00:00:00 1487214000.000000 2017-02-16 01:00:00 2017-02-16
2017-02-17 00:00:00 1487300400.000000 2017-02-17 01:00:00 2017-02-17
2017-02-18 00:00:00 1487386800.000000 2017-02-18 01:00:00 2017-02-18
2017-02-19 00:00:00 1487473200.000000 2017-02-19 00:00:00 2017-02-19
2017-02-20 00:00:00 1487559600.000000 2017-02-20 00:00:00 2017-02-20
2017-10-12 00:00:00 1507777200.000000 2017-10-12 00:00:00 2017-10-12
2017-10-13 00:00:00 1507863600.000000 2017-10-13 00:00:00 2017-10-13
2017-10-14 00:00:00 1507950000.000000 2017-10-14 00:00:00 2017-10-14
2017-10-15 00:00:00 1508036400.000000 2017-10-15 01:00:00 2017-10-15
2017-10-16 00:00:00 1508122800.000000 2017-10-16 01:00:00 2017-10-16
2017-10-17 00:00:00 1508209200.000000 2017-10-17 01:00:00 2017-10-17
2017-10-18 00:00:00 1508295600.000000 2017-10-18 01:00:00 2017-10-18
2017-10-19 00:00:00 1508382000.000000 2017-10-19 01:00:00 2017-10-19

mlr --opprint put $b=strptime_local($a, "%Y-%m-%d %H:%M:%S"); $c=strftime_local($b, "%Y-%m-%d %H:%M:%S")
a                   b                 c
2017-02-18 23:00:00 1487469600.000000 2017-02-18 23:00:00
2017-02-18 23:59:59 1487473199.000000 2017-02-18 23:59:59
2017-02-19 00:00:00 1487473200.000000 2017-02-19 00:00:00
2017-02-19 00:30:00 1487475000.000000 2017-02-19 00:30:00
2017-02-19 01:00:00 1487476800.000000 2017-02-19 01:00:00
2017-10-14 23:00:00 1508032800.000000 2017-10-14 23:00:00
2017-10-14 23:59:59 1508036399.000000 2017-10-14 23:59:59
2017-10-15 00:00:00 1508036400.000000 2017-10-15 01:00:00
2017-10-15 00:30:00 1508038200.000000 2017-10-15 01:30:00
2017-10-15 01:00:00 1508040000.000000 2017-10-15 02:00:00

mlr --opprint put $b=strptime_local($a, "%Y-%m-%d %H:%M:%S"); $c=strftime_local($b, "%Y-%m-%d %H:%M:%S")
a                   b                 c
2017-02-18 23:00:00 1487469600.000000 2017-02-18 23:00:00
2017-02-18 23:59:59 1487473199.000000 2017-02-18 23:59:59
2017-02-19 00:00:00 1487473200.000000 2017-02-19 00:00:00
2017-02-19 00:30:00 1487475000.000000 2017-02-19 00:30:00
2017-02-19 01:00:00 1487476800.000000 2017-02-19 01:00:00
2017-10-14 23:00:00 1508032800.000000 2017-10-14 23:00:00
2017-10-14 23:59:59 1508036399.000000 2017-10-14 23:59:59
2017-10-15 00:00:00 1508036400.000000 2017-10-15 01:00:00
2017-10-15 00:30:00 1508038200.000000 2017-10-15 01:30:00
2017-10-15 01:00:00 1508040000.000000 2017-10-15 02:00:00


================================================================
DSL SUB/GSUB/REGEX_EXTRACT

mlr --opprint put $y = sub($x, "e.*l",        "") ./reg_test/input/sub.dat
x     y
hello ho
HELLO HELLO
world world
WORLD WORLD

mlr --opprint put $y = sub($x, "e.*l"i,       "") ./reg_test/input/sub.dat
x     y
hello ho
HELLO HO
world world
WORLD WORLD

mlr --opprint put $y = sub($x, "e.*"."l",     "") ./reg_test/input/sub.dat
x     y
hello ho
HELLO HELLO
world world
WORLD WORLD

mlr --opprint put $y = sub($x, "e.*l",        "y123y") ./reg_test/input/sub.dat
x     y
hello hy123yo
HELLO HELLO
world world
WORLD WORLD

mlr --opprint put $y = sub($x, "e.*l"i,       "y123y") ./reg_test/input/sub.dat
x     y
hello hy123yo
HELLO Hy123yO
world world
WORLD WORLD

mlr --opprint put $y = sub($x, "e.*"."l",     "y123y") ./reg_test/input/sub.dat
x     y
hello hy123yo
HELLO HELLO
world world
WORLD WORLD

mlr --opprint put $y = sub($x, "([hg])e.*l(.)", "y\1y123\2y") ./reg_test/input/sub.dat
x     y
hello yhy123oy
HELLO HELLO
world world
WORLD WORLD

mlr --opprint put $y = sub($x, "([hg])e.*l.",   "y\1y123\2y") ./reg_test/input/sub.dat
x     y
hello yhy123y
HELLO HELLO
world world
WORLD WORLD

mlr --opprint put $y = sub($x, "([hg])e.*l(.)", "y\1y123.y") ./reg_test/input/sub.dat
x     y
hello yhy123.y
HELLO HELLO
world world
WORLD WORLD

mlr --opprint put $y = sub($x,  "a",    "aa") ./reg_test/input/gsub.dat
x          y
lmnop      lmnop
abcdefg    aabcdefg
ababbabbba aababbabbba
LMNOP      LMNOP
ABCDEFG    ABCDEFG
ABABBABBBA ABABBABBBA

mlr --opprint put $y = gsub($x, "a",    "aa") ./reg_test/input/gsub.dat
x          y
lmnop      lmnop
abcdefg    aabcdefg
ababbabbba aabaabbaabbbaa
LMNOP      LMNOP
ABCDEFG    ABCDEFG
ABABBABBBA ABABBABBBA

mlr --opprint put $y = gsub($x, "A",    "Aa") ./reg_test/input/gsub.dat
x          y
lmnop      lmnop
abcdefg    abcdefg
ababbabbba ababbabbba
LMNOP      LMNOP
ABCDEFG    AaBCDEFG
ABABBABBBA AaBAaBBAaBBBAa

mlr --opprint put $y = gsub($x, "a"i,   "Aa") ./reg_test/input/gsub.dat
x          y
lmnop      lmnop
abcdefg    Aabcdefg
ababbabbba AabAabbAabbbAa
LMNOP      LMNOP
ABCDEFG    AaBCDEFG
ABABBABBBA AaBAaBBAaBBBAa

mlr --opprint put $y = gsub($x, "A"i,   "Aa") ./reg_test/input/gsub.dat
x          y
lmnop      lmnop
abcdefg    Aabcdefg
ababbabbba AabAabbAabbbAa
LMNOP      LMNOP
ABCDEFG    AaBCDEFG
ABABBABBBA AaBAaBBAaBBBAa

mlr --opprint put $y = gsub($x, "a(.)", "aa\1\1\1") ./reg_test/input/gsub.dat
x          y
lmnop      lmnop
abcdefg    aabbbcdefg
ababbabbba aabbbaabbbbaabbbbba
LMNOP      LMNOP
ABCDEFG    ABCDEFG
ABABBABBBA ABABBABBBA

mlr --opprint put $y = sub($x,  "a",    "") ./reg_test/input/gsub.dat
x          y
lmnop      lmnop
abcdefg    bcdefg
ababbabbba babbabbba
LMNOP      LMNOP
ABCDEFG    ABCDEFG
ABABBABBBA ABABBABBBA

mlr --opprint put $y = gsub($x, "a",    "") ./reg_test/input/gsub.dat
x          y
lmnop      lmnop
abcdefg    bcdefg
ababbabbba bbbbbb
LMNOP      LMNOP
ABCDEFG    ABCDEFG
ABABBABBBA ABABBABBBA

mlr --opprint put $y = gsub($x, "A",    "") ./reg_test/input/gsub.dat
x          y
lmnop      lmnop
abcdefg    abcdefg
ababbabbba ababbabbba
LMNOP      LMNOP
ABCDEFG    BCDEFG
ABABBABBBA BBBBBB

mlr --opprint put $y = gsub($x, "a"i,   "") ./reg_test/input/gsub.dat
x          y
lmnop      lmnop
abcdefg    bcdefg
ababbabbba bbbbbb
LMNOP      LMNOP
ABCDEFG    BCDEFG
ABABBABBBA BBBBBB

mlr --opprint put $y = gsub($x, "A"i,   "") ./reg_test/input/gsub.dat
x          y
lmnop      lmnop
abcdefg    bcdefg
ababbabbba bbbbbb
LMNOP      LMNOP
ABCDEFG    BCDEFG
ABABBABBBA BBBBBB

mlr --oxtab cat ./reg_test/input/subtab.dkvp
x afoob

x a\tb

x a\\tb

x a	b

z 

x 

mlr --oxtab put -f ./reg_test/input/subtab1.mlr ./reg_test/input/subtab.dkvp
x afoob
y afoob

x a\tb
y a\tb

x a\\tb
y a\\tb

x a	b
y aTABb

z 

x 
y 

mlr --oxtab put -f ./reg_test/input/subtab2.mlr ./reg_test/input/subtab.dkvp
x afoob
y afoob

x a\tb
y aTABb

x a\\tb
y a\TABb

x a	b
y a	b

z 

x 
y 

mlr --oxtab put -f ./reg_test/input/subtab3.mlr ./reg_test/input/subtab.dkvp
x afoob
y afoob

x a\tb
y a\tb

x a\\tb
y a\\tb

x a	b
y a	b

z 

x 
y 

mlr --oxtab put -f ./reg_test/input/subtab4.mlr ./reg_test/input/subtab.dkvp
x afoob
y afoob

x a\tb
y a	b

x a\\tb
y a\	b

x a	b
y a	b

z 

x 
y 

mlr --opprint put $y = ssub($x, "HE",       "") ./reg_test/input/sub.dat
x     y
hello hello
HELLO LLO
world world
WORLD WORLD

mlr --opprint put $y = ssub($x, "HE",       "HE") ./reg_test/input/sub.dat
x     y
hello hello
HELLO HELLO
world world
WORLD WORLD

mlr --opprint put $y = ssub($x, "HE",       "12345") ./reg_test/input/sub.dat
x     y
hello hello
HELLO 12345LLO
world world
WORLD WORLD

mlr --opprint put $y = ssub($x, "LL",       "1") ./reg_test/input/sub.dat
x     y
hello hello
HELLO HE1O
world world
WORLD WORLD

mlr --opprint put $y = ssub($x, "LL",       "12") ./reg_test/input/sub.dat
x     y
hello hello
HELLO HE12O
world world
WORLD WORLD

mlr --opprint put $y = ssub($x, "LL",       "12345") ./reg_test/input/sub.dat
x     y
hello hello
HELLO HE12345O
world world
WORLD WORLD

mlr --opprint put $y = ssub($x, "LLO",      "") ./reg_test/input/sub.dat
x     y
hello hello
HELLO HE
world world
WORLD WORLD

mlr --opprint put $y = ssub($x, "LLO",      "12") ./reg_test/input/sub.dat
x     y
hello hello
HELLO HE12
world world
WORLD WORLD

mlr --opprint put $y = ssub($x, "LLO",      "123") ./reg_test/input/sub.dat
x     y
hello hello
HELLO HE123
world world
WORLD WORLD

mlr --opprint put $y = ssub($x, "LLO",      "123456") ./reg_test/input/sub.dat
x     y
hello hello
HELLO HE123456
world world
WORLD WORLD

mlr --opprint put $y = ssub($x, "HELLO",    "") ./reg_test/input/sub.dat
x     y
hello hello
HELLO -
world world
WORLD WORLD

mlr --opprint put $y = ssub($x, "HELLO",    "1234") ./reg_test/input/sub.dat
x     y
hello hello
HELLO 1234
world world
WORLD WORLD

mlr --opprint put $y = ssub($x, "HELLO",    "12345") ./reg_test/input/sub.dat
x     y
hello hello
HELLO 12345
world world
WORLD WORLD

mlr --opprint put $y = ssub($x, "HELLO",    "1234678") ./reg_test/input/sub.dat
x     y
hello hello
HELLO 1234678
world world
WORLD WORLD

mlr --opprint put $y = ssub($x, "nonesuch", "") ./reg_test/input/sub.dat
x     y
hello hello
HELLO HELLO
world world
WORLD WORLD

mlr --opprint put $y = ssub($x, "nonesuch", "1234") ./reg_test/input/sub.dat
x     y
hello hello
HELLO HELLO
world world
WORLD WORLD

mlr --opprint put $y = ssub($x, "nonesuch", "1234567890") ./reg_test/input/sub.dat
x     y
hello hello
HELLO HELLO
world world
WORLD WORLD

mlr --oxtab put $y = regextract($x, "[A-Z]+") ./reg_test/input/sub.dat
x hello

x HELLO
y HELLO

x world

x WORLD
y WORLD

mlr --oxtab put $y = regextract($x, "[A-Z]*") ./reg_test/input/sub.dat
x hello
y 

x HELLO
y HELLO

x world
y 

x WORLD
y WORLD

mlr --oxtab put $y = regextract($x, "[a-z]+") ./reg_test/input/sub.dat
x hello
y hello

x HELLO

x world
y world

x WORLD

mlr --oxtab put $y = regextract($x, "[a-z]*") ./reg_test/input/sub.dat
x hello
y hello

x HELLO
y 

x world
y world

x WORLD
y 

mlr --oxtab put $y = regextract($x, "[0-9]+") ./reg_test/input/sub.dat
x hello

x HELLO

x world

x WORLD

mlr --oxtab put $y = regextract($x, "[0-9]*") ./reg_test/input/sub.dat
x hello
y 

x HELLO
y 

x world
y 

x WORLD
y 

mlr --oxtab put $y = regextract($x, "[ef]+") ./reg_test/input/sub.dat
x hello
y e

x HELLO

x world

x WORLD

mlr --oxtab put $y = regextract($x, "[ef]*") ./reg_test/input/sub.dat
x hello
y 

x HELLO
y 

x world
y 

x WORLD
y 

mlr --oxtab put $y = regextract($x, "[hi]+") ./reg_test/input/sub.dat
x hello
y h

x HELLO

x world

x WORLD

mlr --oxtab put $y = regextract($x, "[hi]*") ./reg_test/input/sub.dat
x hello
y h

x HELLO
y 

x world
y 

x WORLD
y 

mlr --oxtab put $y = regextract($x, "[op]+") ./reg_test/input/sub.dat
x hello
y o

x HELLO

x world
y o

x WORLD

mlr --oxtab put $y = regextract($x, "[op]*") ./reg_test/input/sub.dat
x hello
y 

x HELLO
y 

x world
y 

x WORLD
y 

mlr --oxtab put $y = regextract_or_else($x, "[A-Z]+", "DEFAULT") ./reg_test/input/sub.dat
x hello
y DEFAULT

x HELLO
y HELLO

x world
y DEFAULT

x WORLD
y WORLD

mlr --oxtab put $y = regextract_or_else($x, "[A-Z]*", "DEFAULT") ./reg_test/input/sub.dat
x hello
y 

x HELLO
y HELLO

x world
y 

x WORLD
y WORLD

mlr --oxtab put $y = regextract_or_else($x, "[a-z]+", "DEFAULT") ./reg_test/input/sub.dat
x hello
y hello

x HELLO
y DEFAULT

x world
y world

x WORLD
y DEFAULT

mlr --oxtab put $y = regextract_or_else($x, "[a-z]*", "DEFAULT") ./reg_test/input/sub.dat
x hello
y hello

x HELLO
y 

x world
y world

x WORLD
y 

mlr --oxtab put $y = regextract_or_else($x, "[0-9]+", "DEFAULT") ./reg_test/input/sub.dat
x hello
y DEFAULT

x HELLO
y DEFAULT

x world
y DEFAULT

x WORLD
y DEFAULT

mlr --oxtab put $y = regextract_or_else($x, "[0-9]*", "DEFAULT") ./reg_test/input/sub.dat
x hello
y 

x HELLO
y 

x world
y 

x WORLD
y 

mlr --oxtab put $y = regextract_or_else($x, "[ef]+", "DEFAULT") ./reg_test/input/sub.dat
x hello
y e

x HELLO
y DEFAULT

x world
y DEFAULT

x WORLD
y DEFAULT

mlr --oxtab put $y = regextract_or_else($x, "[ef]*", "DEFAULT") ./reg_test/input/sub.dat
x hello
y 

x HELLO
y 

x world
y 

x WORLD
y 

mlr --oxtab put $y = regextract_or_else($x, "[hi]+", "DEFAULT") ./reg_test/input/sub.dat
x hello
y h

x HELLO
y DEFAULT

x world
y DEFAULT

x WORLD
y DEFAULT

mlr --oxtab put $y = regextract_or_else($x, "[hi]*", "DEFAULT") ./reg_test/input/sub.dat
x hello
y h

x HELLO
y 

x world
y 

x WORLD
y 

mlr --oxtab put $y = regextract_or_else($x, "[op]+", "DEFAULT") ./reg_test/input/sub.dat
x hello
y o

x HELLO
y DEFAULT

x world
y o

x WORLD
y DEFAULT

mlr --oxtab put $y = regextract_or_else($x, "[op]*", "DEFAULT") ./reg_test/input/sub.dat
x hello
y 

x HELLO
y 

x world
y 

x WORLD
y 

mlr --nidx put $1 = sub($1, "ab(.)d(..)g",  "ab<<\1>>d<<\2>>g")
ab<<c>>d<<ef>>g

mlr --nidx put $1 = sub($1, "ab(c)?d(..)g", "ab<<\1>>d<<\2>>g")
ab<<c>>d<<ef>>g

mlr --nidx put $1 = sub($1, "ab(c)?d(..)g", "ab<<\1>>d<<\2>>g")
abXdefg

mlr --nidx put $1 = sub($1, "ab(c)?d(..)g", "ab<<\1>>d<<\2>>g")
ab<<>>d<<ef>>g


================================================================
DSL SUBSTR

mlr put -q 
  int n = strlen($x);
  print "input= <<".$x.">>";
  for (i = -n-2; i <= n+2; i += 1) {
    for (j = -n-2; j <= n+2; j += 1) {
      print "i: ".fmtnum(i,"%3lld")
        ."   j:".fmtnum(j,"%3lld")
        ."   substr(".$x.",".fmtnum(i,"%3lld").",".fmtnum(j,"%3lld")."): <<"
        .substr($x, i, j) .">>";
    }
    print;
}

input= <<>>
i:  -2   j: -2   substr(, -2, -2): <<>>
i:  -2   j: -1   substr(, -2, -1): <<>>
i:  -2   j:  0   substr(, -2,  0): <<>>
i:  -2   j:  1   substr(, -2,  1): <<>>
i:  -2   j:  2   substr(, -2,  2): <<>>

i:  -1   j: -2   substr(, -1, -2): <<>>
i:  -1   j: -1   substr(, -1, -1): <<>>
i:  -1   j:  0   substr(, -1,  0): <<>>
i:  -1   j:  1   substr(, -1,  1): <<>>
i:  -1   j:  2   substr(, -1,  2): <<>>

i:   0   j: -2   substr(,  0, -2): <<>>
i:   0   j: -1   substr(,  0, -1): <<>>
i:   0   j:  0   substr(,  0,  0): <<>>
i:   0   j:  1   substr(,  0,  1): <<>>
i:   0   j:  2   substr(,  0,  2): <<>>

i:   1   j: -2   substr(,  1, -2): <<>>
i:   1   j: -1   substr(,  1, -1): <<>>
i:   1   j:  0   substr(,  1,  0): <<>>
i:   1   j:  1   substr(,  1,  1): <<>>
i:   1   j:  2   substr(,  1,  2): <<>>

i:   2   j: -2   substr(,  2, -2): <<>>
i:   2   j: -1   substr(,  2, -1): <<>>
i:   2   j:  0   substr(,  2,  0): <<>>
i:   2   j:  1   substr(,  2,  1): <<>>
i:   2   j:  2   substr(,  2,  2): <<>>

input= <<o>>
i:  -3   j: -3   substr(o, -3, -3): <<>>
i:  -3   j: -2   substr(o, -3, -2): <<>>
i:  -3   j: -1   substr(o, -3, -1): <<>>
i:  -3   j:  0   substr(o, -3,  0): <<>>
i:  -3   j:  1   substr(o, -3,  1): <<>>
i:  -3   j:  2   substr(o, -3,  2): <<>>
i:  -3   j:  3   substr(o, -3,  3): <<>>

i:  -2   j: -3   substr(o, -2, -3): <<>>
i:  -2   j: -2   substr(o, -2, -2): <<>>
i:  -2   j: -1   substr(o, -2, -1): <<>>
i:  -2   j:  0   substr(o, -2,  0): <<>>
i:  -2   j:  1   substr(o, -2,  1): <<>>
i:  -2   j:  2   substr(o, -2,  2): <<>>
i:  -2   j:  3   substr(o, -2,  3): <<>>

i:  -1   j: -3   substr(o, -1, -3): <<>>
i:  -1   j: -2   substr(o, -1, -2): <<>>
i:  -1   j: -1   substr(o, -1, -1): <<o>>
i:  -1   j:  0   substr(o, -1,  0): <<o>>
i:  -1   j:  1   substr(o, -1,  1): <<>>
i:  -1   j:  2   substr(o, -1,  2): <<>>
i:  -1   j:  3   substr(o, -1,  3): <<>>

i:   0   j: -3   substr(o,  0, -3): <<>>
i:   0   j: -2   substr(o,  0, -2): <<>>
i:   0   j: -1   substr(o,  0, -1): <<o>>
i:   0   j:  0   substr(o,  0,  0): <<o>>
i:   0   j:  1   substr(o,  0,  1): <<>>
i:   0   j:  2   substr(o,  0,  2): <<>>
i:   0   j:  3   substr(o,  0,  3): <<>>

i:   1   j: -3   substr(o,  1, -3): <<>>
i:   1   j: -2   substr(o,  1, -2): <<>>
i:   1   j: -1   substr(o,  1, -1): <<>>
i:   1   j:  0   substr(o,  1,  0): <<>>
i:   1   j:  1   substr(o,  1,  1): <<>>
i:   1   j:  2   substr(o,  1,  2): <<>>
i:   1   j:  3   substr(o,  1,  3): <<>>

i:   2   j: -3   substr(o,  2, -3): <<>>
i:   2   j: -2   substr(o,  2, -2): <<>>
i:   2   j: -1   substr(o,  2, -1): <<>>
i:   2   j:  0   substr(o,  2,  0): <<>>
i:   2   j:  1   substr(o,  2,  1): <<>>
i:   2   j:  2   substr(o,  2,  2): <<>>
i:   2   j:  3   substr(o,  2,  3): <<>>

i:   3   j: -3   substr(o,  3, -3): <<>>
i:   3   j: -2   substr(o,  3, -2): <<>>
i:   3   j: -1   substr(o,  3, -1): <<>>
i:   3   j:  0   substr(o,  3,  0): <<>>
i:   3   j:  1   substr(o,  3,  1): <<>>
i:   3   j:  2   substr(o,  3,  2): <<>>
i:   3   j:  3   substr(o,  3,  3): <<>>

input= <<o1>>
i:  -4   j: -4   substr(o1, -4, -4): <<>>
i:  -4   j: -3   substr(o1, -4, -3): <<>>
i:  -4   j: -2   substr(o1, -4, -2): <<>>
i:  -4   j: -1   substr(o1, -4, -1): <<>>
i:  -4   j:  0   substr(o1, -4,  0): <<>>
i:  -4   j:  1   substr(o1, -4,  1): <<>>
i:  -4   j:  2   substr(o1, -4,  2): <<>>
i:  -4   j:  3   substr(o1, -4,  3): <<>>
i:  -4   j:  4   substr(o1, -4,  4): <<>>

i:  -3   j: -4   substr(o1, -3, -4): <<>>
i:  -3   j: -3   substr(o1, -3, -3): <<>>
i:  -3   j: -2   substr(o1, -3, -2): <<>>
i:  -3   j: -1   substr(o1, -3, -1): <<>>
i:  -3   j:  0   substr(o1, -3,  0): <<>>
i:  -3   j:  1   substr(o1, -3,  1): <<>>
i:  -3   j:  2   substr(o1, -3,  2): <<>>
i:  -3   j:  3   substr(o1, -3,  3): <<>>
i:  -3   j:  4   substr(o1, -3,  4): <<>>

i:  -2   j: -4   substr(o1, -2, -4): <<>>
i:  -2   j: -3   substr(o1, -2, -3): <<>>
i:  -2   j: -2   substr(o1, -2, -2): <<o>>
i:  -2   j: -1   substr(o1, -2, -1): <<o1>>
i:  -2   j:  0   substr(o1, -2,  0): <<o>>
i:  -2   j:  1   substr(o1, -2,  1): <<o1>>
i:  -2   j:  2   substr(o1, -2,  2): <<>>
i:  -2   j:  3   substr(o1, -2,  3): <<>>
i:  -2   j:  4   substr(o1, -2,  4): <<>>

i:  -1   j: -4   substr(o1, -1, -4): <<>>
i:  -1   j: -3   substr(o1, -1, -3): <<>>
i:  -1   j: -2   substr(o1, -1, -2): <<>>
i:  -1   j: -1   substr(o1, -1, -1): <<1>>
i:  -1   j:  0   substr(o1, -1,  0): <<>>
i:  -1   j:  1   substr(o1, -1,  1): <<1>>
i:  -1   j:  2   substr(o1, -1,  2): <<>>
i:  -1   j:  3   substr(o1, -1,  3): <<>>
i:  -1   j:  4   substr(o1, -1,  4): <<>>

i:   0   j: -4   substr(o1,  0, -4): <<>>
i:   0   j: -3   substr(o1,  0, -3): <<>>
i:   0   j: -2   substr(o1,  0, -2): <<o>>
i:   0   j: -1   substr(o1,  0, -1): <<o1>>
i:   0   j:  0   substr(o1,  0,  0): <<o>>
i:   0   j:  1   substr(o1,  0,  1): <<o1>>
i:   0   j:  2   substr(o1,  0,  2): <<>>
i:   0   j:  3   substr(o1,  0,  3): <<>>
i:   0   j:  4   substr(o1,  0,  4): <<>>

i:   1   j: -4   substr(o1,  1, -4): <<>>
i:   1   j: -3   substr(o1,  1, -3): <<>>
i:   1   j: -2   substr(o1,  1, -2): <<>>
i:   1   j: -1   substr(o1,  1, -1): <<1>>
i:   1   j:  0   substr(o1,  1,  0): <<>>
i:   1   j:  1   substr(o1,  1,  1): <<1>>
i:   1   j:  2   substr(o1,  1,  2): <<>>
i:   1   j:  3   substr(o1,  1,  3): <<>>
i:   1   j:  4   substr(o1,  1,  4): <<>>

i:   2   j: -4   substr(o1,  2, -4): <<>>
i:   2   j: -3   substr(o1,  2, -3): <<>>
i:   2   j: -2   substr(o1,  2, -2): <<>>
i:   2   j: -1   substr(o1,  2, -1): <<>>
i:   2   j:  0   substr(o1,  2,  0): <<>>
i:   2   j:  1   substr(o1,  2,  1): <<>>
i:   2   j:  2   substr(o1,  2,  2): <<>>
i:   2   j:  3   substr(o1,  2,  3): <<>>
i:   2   j:  4   substr(o1,  2,  4): <<>>

i:   3   j: -4   substr(o1,  3, -4): <<>>
i:   3   j: -3   substr(o1,  3, -3): <<>>
i:   3   j: -2   substr(o1,  3, -2): <<>>
i:   3   j: -1   substr(o1,  3, -1): <<>>
i:   3   j:  0   substr(o1,  3,  0): <<>>
i:   3   j:  1   substr(o1,  3,  1): <<>>
i:   3   j:  2   substr(o1,  3,  2): <<>>
i:   3   j:  3   substr(o1,  3,  3): <<>>
i:   3   j:  4   substr(o1,  3,  4): <<>>

i:   4   j: -4   substr(o1,  4, -4): <<>>
i:   4   j: -3   substr(o1,  4, -3): <<>>
i:   4   j: -2   substr(o1,  4, -2): <<>>
i:   4   j: -1   substr(o1,  4, -1): <<>>
i:   4   j:  0   substr(o1,  4,  0): <<>>
i:   4   j:  1   substr(o1,  4,  1): <<>>
i:   4   j:  2   substr(o1,  4,  2): <<>>
i:   4   j:  3   substr(o1,  4,  3): <<>>
i:   4   j:  4   substr(o1,  4,  4): <<>>

input= <<o123456789>>
i: -12   j:-12   substr(o123456789,-12,-12): <<>>
i: -12   j:-11   substr(o123456789,-12,-11): <<>>
i: -12   j:-10   substr(o123456789,-12,-10): <<>>
i: -12   j: -9   substr(o123456789,-12, -9): <<>>
i: -12   j: -8   substr(o123456789,-12, -8): <<>>
i: -12   j: -7   substr(o123456789,-12, -7): <<>>
i: -12   j: -6   substr(o123456789,-12, -6): <<>>
i: -12   j: -5   substr(o123456789,-12, -5): <<>>
i: -12   j: -4   substr(o123456789,-12, -4): <<>>
i: -12   j: -3   substr(o123456789,-12, -3): <<>>
i: -12   j: -2   substr(o123456789,-12, -2): <<>>
i: -12   j: -1   substr(o123456789,-12, -1): <<>>
i: -12   j:  0   substr(o123456789,-12,  0): <<>>
i: -12   j:  1   substr(o123456789,-12,  1): <<>>
i: -12   j:  2   substr(o123456789,-12,  2): <<>>
i: -12   j:  3   substr(o123456789,-12,  3): <<>>
i: -12   j:  4   substr(o123456789,-12,  4): <<>>
i: -12   j:  5   substr(o123456789,-12,  5): <<>>
i: -12   j:  6   substr(o123456789,-12,  6): <<>>
i: -12   j:  7   substr(o123456789,-12,  7): <<>>
i: -12   j:  8   substr(o123456789,-12,  8): <<>>
i: -12   j:  9   substr(o123456789,-12,  9): <<>>
i: -12   j: 10   substr(o123456789,-12, 10): <<>>
i: -12   j: 11   substr(o123456789,-12, 11): <<>>
i: -12   j: 12   substr(o123456789,-12, 12): <<>>

i: -11   j:-12   substr(o123456789,-11,-12): <<>>
i: -11   j:-11   substr(o123456789,-11,-11): <<>>
i: -11   j:-10   substr(o123456789,-11,-10): <<>>
i: -11   j: -9   substr(o123456789,-11, -9): <<>>
i: -11   j: -8   substr(o123456789,-11, -8): <<>>
i: -11   j: -7   substr(o123456789,-11, -7): <<>>
i: -11   j: -6   substr(o123456789,-11, -6): <<>>
i: -11   j: -5   substr(o123456789,-11, -5): <<>>
i: -11   j: -4   substr(o123456789,-11, -4): <<>>
i: -11   j: -3   substr(o123456789,-11, -3): <<>>
i: -11   j: -2   substr(o123456789,-11, -2): <<>>
i: -11   j: -1   substr(o123456789,-11, -1): <<>>
i: -11   j:  0   substr(o123456789,-11,  0): <<>>
i: -11   j:  1   substr(o123456789,-11,  1): <<>>
i: -11   j:  2   substr(o123456789,-11,  2): <<>>
i: -11   j:  3   substr(o123456789,-11,  3): <<>>
i: -11   j:  4   substr(o123456789,-11,  4): <<>>
i: -11   j:  5   substr(o123456789,-11,  5): <<>>
i: -11   j:  6   substr(o123456789,-11,  6): <<>>
i: -11   j:  7   substr(o123456789,-11,  7): <<>>
i: -11   j:  8   substr(o123456789,-11,  8): <<>>
i: -11   j:  9   substr(o123456789,-11,  9): <<>>
i: -11   j: 10   substr(o123456789,-11, 10): <<>>
i: -11   j: 11   substr(o123456789,-11, 11): <<>>
i: -11   j: 12   substr(o123456789,-11, 12): <<>>

i: -10   j:-12   substr(o123456789,-10,-12): <<>>
i: -10   j:-11   substr(o123456789,-10,-11): <<>>
i: -10   j:-10   substr(o123456789,-10,-10): <<o>>
i: -10   j: -9   substr(o123456789,-10, -9): <<o1>>
i: -10   j: -8   substr(o123456789,-10, -8): <<o12>>
i: -10   j: -7   substr(o123456789,-10, -7): <<o123>>
i: -10   j: -6   substr(o123456789,-10, -6): <<o1234>>
i: -10   j: -5   substr(o123456789,-10, -5): <<o12345>>
i: -10   j: -4   substr(o123456789,-10, -4): <<o123456>>
i: -10   j: -3   substr(o123456789,-10, -3): <<o1234567>>
i: -10   j: -2   substr(o123456789,-10, -2): <<o12345678>>
i: -10   j: -1   substr(o123456789,-10, -1): <<o123456789>>
i: -10   j:  0   substr(o123456789,-10,  0): <<o>>
i: -10   j:  1   substr(o123456789,-10,  1): <<o1>>
i: -10   j:  2   substr(o123456789,-10,  2): <<o12>>
i: -10   j:  3   substr(o123456789,-10,  3): <<o123>>
i: -10   j:  4   substr(o123456789,-10,  4): <<o1234>>
i: -10   j:  5   substr(o123456789,-10,  5): <<o12345>>
i: -10   j:  6   substr(o123456789,-10,  6): <<o123456>>
i: -10   j:  7   substr(o123456789,-10,  7): <<o1234567>>
i: -10   j:  8   substr(o123456789,-10,  8): <<o12345678>>
i: -10   j:  9   substr(o123456789,-10,  9): <<o123456789>>
i: -10   j: 10   substr(o123456789,-10, 10): <<>>
i: -10   j: 11   substr(o123456789,-10, 11): <<>>
i: -10   j: 12   substr(o123456789,-10, 12): <<>>

i:  -9   j:-12   substr(o123456789, -9,-12): <<>>
i:  -9   j:-11   substr(o123456789, -9,-11): <<>>
i:  -9   j:-10   substr(o123456789, -9,-10): <<>>
i:  -9   j: -9   substr(o123456789, -9, -9): <<1>>
i:  -9   j: -8   substr(o123456789, -9, -8): <<12>>
i:  -9   j: -7   substr(o123456789, -9, -7): <<123>>
i:  -9   j: -6   substr(o123456789, -9, -6): <<1234>>
i:  -9   j: -5   substr(o123456789, -9, -5): <<12345>>
i:  -9   j: -4   substr(o123456789, -9, -4): <<123456>>
i:  -9   j: -3   substr(o123456789, -9, -3): <<1234567>>
i:  -9   j: -2   substr(o123456789, -9, -2): <<12345678>>
i:  -9   j: -1   substr(o123456789, -9, -1): <<123456789>>
i:  -9   j:  0   substr(o123456789, -9,  0): <<>>
i:  -9   j:  1   substr(o123456789, -9,  1): <<1>>
i:  -9   j:  2   substr(o123456789, -9,  2): <<12>>
i:  -9   j:  3   substr(o123456789, -9,  3): <<123>>
i:  -9   j:  4   substr(o123456789, -9,  4): <<1234>>
i:  -9   j:  5   substr(o123456789, -9,  5): <<12345>>
i:  -9   j:  6   substr(o123456789, -9,  6): <<123456>>
i:  -9   j:  7   substr(o123456789, -9,  7): <<1234567>>
i:  -9   j:  8   substr(o123456789, -9,  8): <<12345678>>
i:  -9   j:  9   substr(o123456789, -9,  9): <<123456789>>
i:  -9   j: 10   substr(o123456789, -9, 10): <<>>
i:  -9   j: 11   substr(o123456789, -9, 11): <<>>
i:  -9   j: 12   substr(o123456789, -9, 12): <<>>

i:  -8   j:-12   substr(o123456789, -8,-12): <<>>
i:  -8   j:-11   substr(o123456789, -8,-11): <<>>
i:  -8   j:-10   substr(o123456789, -8,-10): <<>>
i:  -8   j: -9   substr(o123456789, -8, -9): <<>>
i:  -8   j: -8   substr(o123456789, -8, -8): <<2>>
i:  -8   j: -7   substr(o123456789, -8, -7): <<23>>
i:  -8   j: -6   substr(o123456789, -8, -6): <<234>>
i:  -8   j: -5   substr(o123456789, -8, -5): <<2345>>
i:  -8   j: -4   substr(o123456789, -8, -4): <<23456>>
i:  -8   j: -3   substr(o123456789, -8, -3): <<234567>>
i:  -8   j: -2   substr(o123456789, -8, -2): <<2345678>>
i:  -8   j: -1   substr(o123456789, -8, -1): <<23456789>>
i:  -8   j:  0   substr(o123456789, -8,  0): <<>>
i:  -8   j:  1   substr(o123456789, -8,  1): <<>>
i:  -8   j:  2   substr(o123456789, -8,  2): <<2>>
i:  -8   j:  3   substr(o123456789, -8,  3): <<23>>
i:  -8   j:  4   substr(o123456789, -8,  4): <<234>>
i:  -8   j:  5   substr(o123456789, -8,  5): <<2345>>
i:  -8   j:  6   substr(o123456789, -8,  6): <<23456>>
i:  -8   j:  7   substr(o123456789, -8,  7): <<234567>>
i:  -8   j:  8   substr(o123456789, -8,  8): <<2345678>>
i:  -8   j:  9   substr(o123456789, -8,  9): <<23456789>>
i:  -8   j: 10   substr(o123456789, -8, 10): <<>>
i:  -8   j: 11   substr(o123456789, -8, 11): <<>>
i:  -8   j: 12   substr(o123456789, -8, 12): <<>>

i:  -7   j:-12   substr(o123456789, -7,-12): <<>>
i:  -7   j:-11   substr(o123456789, -7,-11): <<>>
i:  -7   j:-10   substr(o123456789, -7,-10): <<>>
i:  -7   j: -9   substr(o123456789, -7, -9): <<>>
i:  -7   j: -8   substr(o123456789, -7, -8): <<>>
i:  -7   j: -7   substr(o123456789, -7, -7): <<3>>
i:  -7   j: -6   substr(o123456789, -7, -6): <<34>>
i:  -7   j: -5   substr(o123456789, -7, -5): <<345>>
i:  -7   j: -4   substr(o123456789, -7, -4): <<3456>>
i:  -7   j: -3   substr(o123456789, -7, -3): <<34567>>
i:  -7   j: -2   substr(o123456789, -7, -2): <<345678>>
i:  -7   j: -1   substr(o123456789, -7, -1): <<3456789>>
i:  -7   j:  0   substr(o123456789, -7,  0): <<>>
i:  -7   j:  1   substr(o123456789, -7,  1): <<>>
i:  -7   j:  2   substr(o123456789, -7,  2): <<>>
i:  -7   j:  3   substr(o123456789, -7,  3): <<3>>
i:  -7   j:  4   substr(o123456789, -7,  4): <<34>>
i:  -7   j:  5   substr(o123456789, -7,  5): <<345>>
i:  -7   j:  6   substr(o123456789, -7,  6): <<3456>>
i:  -7   j:  7   substr(o123456789, -7,  7): <<34567>>
i:  -7   j:  8   substr(o123456789, -7,  8): <<345678>>
i:  -7   j:  9   substr(o123456789, -7,  9): <<3456789>>
i:  -7   j: 10   substr(o123456789, -7, 10): <<>>
i:  -7   j: 11   substr(o123456789, -7, 11): <<>>
i:  -7   j: 12   substr(o123456789, -7, 12): <<>>

i:  -6   j:-12   substr(o123456789, -6,-12): <<>>
i:  -6   j:-11   substr(o123456789, -6,-11): <<>>
i:  -6   j:-10   substr(o123456789, -6,-10): <<>>
i:  -6   j: -9   substr(o123456789, -6, -9): <<>>
i:  -6   j: -8   substr(o123456789, -6, -8): <<>>
i:  -6   j: -7   substr(o123456789, -6, -7): <<>>
i:  -6   j: -6   substr(o123456789, -6, -6): <<4>>
i:  -6   j: -5   substr(o123456789, -6, -5): <<45>>
i:  -6   j: -4   substr(o123456789, -6, -4): <<456>>
i:  -6   j: -3   substr(o123456789, -6, -3): <<4567>>
i:  -6   j: -2   substr(o123456789, -6, -2): <<45678>>
i:  -6   j: -1   substr(o123456789, -6, -1): <<456789>>
i:  -6   j:  0   substr(o123456789, -6,  0): <<>>
i:  -6   j:  1   substr(o123456789, -6,  1): <<>>
i:  -6   j:  2   substr(o123456789, -6,  2): <<>>
i:  -6   j:  3   substr(o123456789, -6,  3): <<>>
i:  -6   j:  4   substr(o123456789, -6,  4): <<4>>
i:  -6   j:  5   substr(o123456789, -6,  5): <<45>>
i:  -6   j:  6   substr(o123456789, -6,  6): <<456>>
i:  -6   j:  7   substr(o123456789, -6,  7): <<4567>>
i:  -6   j:  8   substr(o123456789, -6,  8): <<45678>>
i:  -6   j:  9   substr(o123456789, -6,  9): <<456789>>
i:  -6   j: 10   substr(o123456789, -6, 10): <<>>
i:  -6   j: 11   substr(o123456789, -6, 11): <<>>
i:  -6   j: 12   substr(o123456789, -6, 12): <<>>

i:  -5   j:-12   substr(o123456789, -5,-12): <<>>
i:  -5   j:-11   substr(o123456789, -5,-11): <<>>
i:  -5   j:-10   substr(o123456789, -5,-10): <<>>
i:  -5   j: -9   substr(o123456789, -5, -9): <<>>
i:  -5   j: -8   substr(o123456789, -5, -8): <<>>
i:  -5   j: -7   substr(o123456789, -5, -7): <<>>
i:  -5   j: -6   substr(o123456789, -5, -6): <<>>
i:  -5   j: -5   substr(o123456789, -5, -5): <<5>>
i:  -5   j: -4   substr(o123456789, -5, -4): <<56>>
i:  -5   j: -3   substr(o123456789, -5, -3): <<567>>
i:  -5   j: -2   substr(o123456789, -5, -2): <<5678>>
i:  -5   j: -1   substr(o123456789, -5, -1): <<56789>>
i:  -5   j:  0   substr(o123456789, -5,  0): <<>>
i:  -5   j:  1   substr(o123456789, -5,  1): <<>>
i:  -5   j:  2   substr(o123456789, -5,  2): <<>>
i:  -5   j:  3   substr(o123456789, -5,  3): <<>>
i:  -5   j:  4   substr(o123456789, -5,  4): <<>>
i:  -5   j:  5   substr(o123456789, -5,  5): <<5>>
i:  -5   j:  6   substr(o123456789, -5,  6): <<56>>
i:  -5   j:  7   substr(o123456789, -5,  7): <<567>>
i:  -5   j:  8   substr(o123456789, -5,  8): <<5678>>
i:  -5   j:  9   substr(o123456789, -5,  9): <<56789>>
i:  -5   j: 10   substr(o123456789, -5, 10): <<>>
i:  -5   j: 11   substr(o123456789, -5, 11): <<>>
i:  -5   j: 12   substr(o123456789, -5, 12): <<>>

i:  -4   j:-12   substr(o123456789, -4,-12): <<>>
i:  -4   j:-11   substr(o123456789, -4,-11): <<>>
i:  -4   j:-10   substr(o123456789, -4,-10): <<>>
i:  -4   j: -9   substr(o123456789, -4, -9): <<>>
i:  -4   j: -8   substr(o123456789, -4, -8): <<>>
i:  -4   j: -7   substr(o123456789, -4, -7): <<>>
i:  -4   j: -6   substr(o123456789, -4, -6): <<>>
i:  -4   j: -5   substr(o123456789, -4, -5): <<>>
i:  -4   j: -4   substr(o123456789, -4, -4): <<6>>
i:  -4   j: -3   substr(o123456789, -4, -3): <<67>>
i:  -4   j: -2   substr(o123456789, -4, -2): <<678>>
i:  -4   j: -1   substr(o123456789, -4, -1): <<6789>>
i:  -4   j:  0   substr(o123456789, -4,  0): <<>>
i:  -4   j:  1   substr(o123456789, -4,  1): <<>>
i:  -4   j:  2   substr(o123456789, -4,  2): <<>>
i:  -4   j:  3   substr(o123456789, -4,  3): <<>>
i:  -4   j:  4   substr(o123456789, -4,  4): <<>>
i:  -4   j:  5   substr(o123456789, -4,  5): <<>>
i:  -4   j:  6   substr(o123456789, -4,  6): <<6>>
i:  -4   j:  7   substr(o123456789, -4,  7): <<67>>
i:  -4   j:  8   substr(o123456789, -4,  8): <<678>>
i:  -4   j:  9   substr(o123456789, -4,  9): <<6789>>
i:  -4   j: 10   substr(o123456789, -4, 10): <<>>
i:  -4   j: 11   substr(o123456789, -4, 11): <<>>
i:  -4   j: 12   substr(o123456789, -4, 12): <<>>

i:  -3   j:-12   substr(o123456789, -3,-12): <<>>
i:  -3   j:-11   substr(o123456789, -3,-11): <<>>
i:  -3   j:-10   substr(o123456789, -3,-10): <<>>
i:  -3   j: -9   substr(o123456789, -3, -9): <<>>
i:  -3   j: -8   substr(o123456789, -3, -8): <<>>
i:  -3   j: -7   substr(o123456789, -3, -7): <<>>
i:  -3   j: -6   substr(o123456789, -3, -6): <<>>
i:  -3   j: -5   substr(o123456789, -3, -5): <<>>
i:  -3   j: -4   substr(o123456789, -3, -4): <<>>
i:  -3   j: -3   substr(o123456789, -3, -3): <<7>>
i:  -3   j: -2   substr(o123456789, -3, -2): <<78>>
i:  -3   j: -1   substr(o123456789, -3, -1): <<789>>
i:  -3   j:  0   substr(o123456789, -3,  0): <<>>
i:  -3   j:  1   substr(o123456789, -3,  1): <<>>
i:  -3   j:  2   substr(o123456789, -3,  2): <<>>
i:  -3   j:  3   substr(o123456789, -3,  3): <<>>
i:  -3   j:  4   substr(o123456789, -3,  4): <<>>
i:  -3   j:  5   substr(o123456789, -3,  5): <<>>
i:  -3   j:  6   substr(o123456789, -3,  6): <<>>
i:  -3   j:  7   substr(o123456789, -3,  7): <<7>>
i:  -3   j:  8   substr(o123456789, -3,  8): <<78>>
i:  -3   j:  9   substr(o123456789, -3,  9): <<789>>
i:  -3   j: 10   substr(o123456789, -3, 10): <<>>
i:  -3   j: 11   substr(o123456789, -3, 11): <<>>
i:  -3   j: 12   substr(o123456789, -3, 12): <<>>

i:  -2   j:-12   substr(o123456789, -2,-12): <<>>
i:  -2   j:-11   substr(o123456789, -2,-11): <<>>
i:  -2   j:-10   substr(o123456789, -2,-10): <<>>
i:  -2   j: -9   substr(o123456789, -2, -9): <<>>
i:  -2   j: -8   substr(o123456789, -2, -8): <<>>
i:  -2   j: -7   substr(o123456789, -2, -7): <<>>
i:  -2   j: -6   substr(o123456789, -2, -6): <<>>
i:  -2   j: -5   substr(o123456789, -2, -5): <<>>
i:  -2   j: -4   substr(o123456789, -2, -4): <<>>
i:  -2   j: -3   substr(o123456789, -2, -3): <<>>
i:  -2   j: -2   substr(o123456789, -2, -2): <<8>>
i:  -2   j: -1   substr(o123456789, -2, -1): <<89>>
i:  -2   j:  0   substr(o123456789, -2,  0): <<>>
i:  -2   j:  1   substr(o123456789, -2,  1): <<>>
i:  -2   j:  2   substr(o123456789, -2,  2): <<>>
i:  -2   j:  3   substr(o123456789, -2,  3): <<>>
i:  -2   j:  4   substr(o123456789, -2,  4): <<>>
i:  -2   j:  5   substr(o123456789, -2,  5): <<>>
i:  -2   j:  6   substr(o123456789, -2,  6): <<>>
i:  -2   j:  7   substr(o123456789, -2,  7): <<>>
i:  -2   j:  8   substr(o123456789, -2,  8): <<8>>
i:  -2   j:  9   substr(o123456789, -2,  9): <<89>>
i:  -2   j: 10   substr(o123456789, -2, 10): <<>>
i:  -2   j: 11   substr(o123456789, -2, 11): <<>>
i:  -2   j: 12   substr(o123456789, -2, 12): <<>>

i:  -1   j:-12   substr(o123456789, -1,-12): <<>>
i:  -1   j:-11   substr(o123456789, -1,-11): <<>>
i:  -1   j:-10   substr(o123456789, -1,-10): <<>>
i:  -1   j: -9   substr(o123456789, -1, -9): <<>>
i:  -1   j: -8   substr(o123456789, -1, -8): <<>>
i:  -1   j: -7   substr(o123456789, -1, -7): <<>>
i:  -1   j: -6   substr(o123456789, -1, -6): <<>>
i:  -1   j: -5   substr(o123456789, -1, -5): <<>>
i:  -1   j: -4   substr(o123456789, -1, -4): <<>>
i:  -1   j: -3   substr(o123456789, -1, -3): <<>>
i:  -1   j: -2   substr(o123456789, -1, -2): <<>>
i:  -1   j: -1   substr(o123456789, -1, -1): <<9>>
i:  -1   j:  0   substr(o123456789, -1,  0): <<>>
i:  -1   j:  1   substr(o123456789, -1,  1): <<>>
i:  -1   j:  2   substr(o123456789, -1,  2): <<>>
i:  -1   j:  3   substr(o123456789, -1,  3): <<>>
i:  -1   j:  4   substr(o123456789, -1,  4): <<>>
i:  -1   j:  5   substr(o123456789, -1,  5): <<>>
i:  -1   j:  6   substr(o123456789, -1,  6): <<>>
i:  -1   j:  7   substr(o123456789, -1,  7): <<>>
i:  -1   j:  8   substr(o123456789, -1,  8): <<>>
i:  -1   j:  9   substr(o123456789, -1,  9): <<9>>
i:  -1   j: 10   substr(o123456789, -1, 10): <<>>
i:  -1   j: 11   substr(o123456789, -1, 11): <<>>
i:  -1   j: 12   substr(o123456789, -1, 12): <<>>

i:   0   j:-12   substr(o123456789,  0,-12): <<>>
i:   0   j:-11   substr(o123456789,  0,-11): <<>>
i:   0   j:-10   substr(o123456789,  0,-10): <<o>>
i:   0   j: -9   substr(o123456789,  0, -9): <<o1>>
i:   0   j: -8   substr(o123456789,  0, -8): <<o12>>
i:   0   j: -7   substr(o123456789,  0, -7): <<o123>>
i:   0   j: -6   substr(o123456789,  0, -6): <<o1234>>
i:   0   j: -5   substr(o123456789,  0, -5): <<o12345>>
i:   0   j: -4   substr(o123456789,  0, -4): <<o123456>>
i:   0   j: -3   substr(o123456789,  0, -3): <<o1234567>>
i:   0   j: -2   substr(o123456789,  0, -2): <<o12345678>>
i:   0   j: -1   substr(o123456789,  0, -1): <<o123456789>>
i:   0   j:  0   substr(o123456789,  0,  0): <<o>>
i:   0   j:  1   substr(o123456789,  0,  1): <<o1>>
i:   0   j:  2   substr(o123456789,  0,  2): <<o12>>
i:   0   j:  3   substr(o123456789,  0,  3): <<o123>>
i:   0   j:  4   substr(o123456789,  0,  4): <<o1234>>
i:   0   j:  5   substr(o123456789,  0,  5): <<o12345>>
i:   0   j:  6   substr(o123456789,  0,  6): <<o123456>>
i:   0   j:  7   substr(o123456789,  0,  7): <<o1234567>>
i:   0   j:  8   substr(o123456789,  0,  8): <<o12345678>>
i:   0   j:  9   substr(o123456789,  0,  9): <<o123456789>>
i:   0   j: 10   substr(o123456789,  0, 10): <<>>
i:   0   j: 11   substr(o123456789,  0, 11): <<>>
i:   0   j: 12   substr(o123456789,  0, 12): <<>>

i:   1   j:-12   substr(o123456789,  1,-12): <<>>
i:   1   j:-11   substr(o123456789,  1,-11): <<>>
i:   1   j:-10   substr(o123456789,  1,-10): <<>>
i:   1   j: -9   substr(o123456789,  1, -9): <<1>>
i:   1   j: -8   substr(o123456789,  1, -8): <<12>>
i:   1   j: -7   substr(o123456789,  1, -7): <<123>>
i:   1   j: -6   substr(o123456789,  1, -6): <<1234>>
i:   1   j: -5   substr(o123456789,  1, -5): <<12345>>
i:   1   j: -4   substr(o123456789,  1, -4): <<123456>>
i:   1   j: -3   substr(o123456789,  1, -3): <<1234567>>
i:   1   j: -2   substr(o123456789,  1, -2): <<12345678>>
i:   1   j: -1   substr(o123456789,  1, -1): <<123456789>>
i:   1   j:  0   substr(o123456789,  1,  0): <<>>
i:   1   j:  1   substr(o123456789,  1,  1): <<1>>
i:   1   j:  2   substr(o123456789,  1,  2): <<12>>
i:   1   j:  3   substr(o123456789,  1,  3): <<123>>
i:   1   j:  4   substr(o123456789,  1,  4): <<1234>>
i:   1   j:  5   substr(o123456789,  1,  5): <<12345>>
i:   1   j:  6   substr(o123456789,  1,  6): <<123456>>
i:   1   j:  7   substr(o123456789,  1,  7): <<1234567>>
i:   1   j:  8   substr(o123456789,  1,  8): <<12345678>>
i:   1   j:  9   substr(o123456789,  1,  9): <<123456789>>
i:   1   j: 10   substr(o123456789,  1, 10): <<>>
i:   1   j: 11   substr(o123456789,  1, 11): <<>>
i:   1   j: 12   substr(o123456789,  1, 12): <<>>

i:   2   j:-12   substr(o123456789,  2,-12): <<>>
i:   2   j:-11   substr(o123456789,  2,-11): <<>>
i:   2   j:-10   substr(o123456789,  2,-10): <<>>
i:   2   j: -9   substr(o123456789,  2, -9): <<>>
i:   2   j: -8   substr(o123456789,  2, -8): <<2>>
i:   2   j: -7   substr(o123456789,  2, -7): <<23>>
i:   2   j: -6   substr(o123456789,  2, -6): <<234>>
i:   2   j: -5   substr(o123456789,  2, -5): <<2345>>
i:   2   j: -4   substr(o123456789,  2, -4): <<23456>>
i:   2   j: -3   substr(o123456789,  2, -3): <<234567>>
i:   2   j: -2   substr(o123456789,  2, -2): <<2345678>>
i:   2   j: -1   substr(o123456789,  2, -1): <<23456789>>
i:   2   j:  0   substr(o123456789,  2,  0): <<>>
i:   2   j:  1   substr(o123456789,  2,  1): <<>>
i:   2   j:  2   substr(o123456789,  2,  2): <<2>>
i:   2   j:  3   substr(o123456789,  2,  3): <<23>>
i:   2   j:  4   substr(o123456789,  2,  4): <<234>>
i:   2   j:  5   substr(o123456789,  2,  5): <<2345>>
i:   2   j:  6   substr(o123456789,  2,  6): <<23456>>
i:   2   j:  7   substr(o123456789,  2,  7): <<234567>>
i:   2   j:  8   substr(o123456789,  2,  8): <<2345678>>
i:   2   j:  9   substr(o123456789,  2,  9): <<23456789>>
i:   2   j: 10   substr(o123456789,  2, 10): <<>>
i:   2   j: 11   substr(o123456789,  2, 11): <<>>
i:   2   j: 12   substr(o123456789,  2, 12): <<>>

i:   3   j:-12   substr(o123456789,  3,-12): <<>>
i:   3   j:-11   substr(o123456789,  3,-11): <<>>
i:   3   j:-10   substr(o123456789,  3,-10): <<>>
i:   3   j: -9   substr(o123456789,  3, -9): <<>>
i:   3   j: -8   substr(o123456789,  3, -8): <<>>
i:   3   j: -7   substr(o123456789,  3, -7): <<3>>
i:   3   j: -6   substr(o123456789,  3, -6): <<34>>
i:   3   j: -5   substr(o123456789,  3, -5): <<345>>
i:   3   j: -4   substr(o123456789,  3, -4): <<3456>>
i:   3   j: -3   substr(o123456789,  3, -3): <<34567>>
i:   3   j: -2   substr(o123456789,  3, -2): <<345678>>
i:   3   j: -1   substr(o123456789,  3, -1): <<3456789>>
i:   3   j:  0   substr(o123456789,  3,  0): <<>>
i:   3   j:  1   substr(o123456789,  3,  1): <<>>
i:   3   j:  2   substr(o123456789,  3,  2): <<>>
i:   3   j:  3   substr(o123456789,  3,  3): <<3>>
i:   3   j:  4   substr(o123456789,  3,  4): <<34>>
i:   3   j:  5   substr(o123456789,  3,  5): <<345>>
i:   3   j:  6   substr(o123456789,  3,  6): <<3456>>
i:   3   j:  7   substr(o123456789,  3,  7): <<34567>>
i:   3   j:  8   substr(o123456789,  3,  8): <<345678>>
i:   3   j:  9   substr(o123456789,  3,  9): <<3456789>>
i:   3   j: 10   substr(o123456789,  3, 10): <<>>
i:   3   j: 11   substr(o123456789,  3, 11): <<>>
i:   3   j: 12   substr(o123456789,  3, 12): <<>>

i:   4   j:-12   substr(o123456789,  4,-12): <<>>
i:   4   j:-11   substr(o123456789,  4,-11): <<>>
i:   4   j:-10   substr(o123456789,  4,-10): <<>>
i:   4   j: -9   substr(o123456789,  4, -9): <<>>
i:   4   j: -8   substr(o123456789,  4, -8): <<>>
i:   4   j: -7   substr(o123456789,  4, -7): <<>>
i:   4   j: -6   substr(o123456789,  4, -6): <<4>>
i:   4   j: -5   substr(o123456789,  4, -5): <<45>>
i:   4   j: -4   substr(o123456789,  4, -4): <<456>>
i:   4   j: -3   substr(o123456789,  4, -3): <<4567>>
i:   4   j: -2   substr(o123456789,  4, -2): <<45678>>
i:   4   j: -1   substr(o123456789,  4, -1): <<456789>>
i:   4   j:  0   substr(o123456789,  4,  0): <<>>
i:   4   j:  1   substr(o123456789,  4,  1): <<>>
i:   4   j:  2   substr(o123456789,  4,  2): <<>>
i:   4   j:  3   substr(o123456789,  4,  3): <<>>
i:   4   j:  4   substr(o123456789,  4,  4): <<4>>
i:   4   j:  5   substr(o123456789,  4,  5): <<45>>
i:   4   j:  6   substr(o123456789,  4,  6): <<456>>
i:   4   j:  7   substr(o123456789,  4,  7): <<4567>>
i:   4   j:  8   substr(o123456789,  4,  8): <<45678>>
i:   4   j:  9   substr(o123456789,  4,  9): <<456789>>
i:   4   j: 10   substr(o123456789,  4, 10): <<>>
i:   4   j: 11   substr(o123456789,  4, 11): <<>>
i:   4   j: 12   substr(o123456789,  4, 12): <<>>

i:   5   j:-12   substr(o123456789,  5,-12): <<>>
i:   5   j:-11   substr(o123456789,  5,-11): <<>>
i:   5   j:-10   substr(o123456789,  5,-10): <<>>
i:   5   j: -9   substr(o123456789,  5, -9): <<>>
i:   5   j: -8   substr(o123456789,  5, -8): <<>>
i:   5   j: -7   substr(o123456789,  5, -7): <<>>
i:   5   j: -6   substr(o123456789,  5, -6): <<>>
i:   5   j: -5   substr(o123456789,  5, -5): <<5>>
i:   5   j: -4   substr(o123456789,  5, -4): <<56>>
i:   5   j: -3   substr(o123456789,  5, -3): <<567>>
i:   5   j: -2   substr(o123456789,  5, -2): <<5678>>
i:   5   j: -1   substr(o123456789,  5, -1): <<56789>>
i:   5   j:  0   substr(o123456789,  5,  0): <<>>
i:   5   j:  1   substr(o123456789,  5,  1): <<>>
i:   5   j:  2   substr(o123456789,  5,  2): <<>>
i:   5   j:  3   substr(o123456789,  5,  3): <<>>
i:   5   j:  4   substr(o123456789,  5,  4): <<>>
i:   5   j:  5   substr(o123456789,  5,  5): <<5>>
i:   5   j:  6   substr(o123456789,  5,  6): <<56>>
i:   5   j:  7   substr(o123456789,  5,  7): <<567>>
i:   5   j:  8   substr(o123456789,  5,  8): <<5678>>
i:   5   j:  9   substr(o123456789,  5,  9): <<56789>>
i:   5   j: 10   substr(o123456789,  5, 10): <<>>
i:   5   j: 11   substr(o123456789,  5, 11): <<>>
i:   5   j: 12   substr(o123456789,  5, 12): <<>>

i:   6   j:-12   substr(o123456789,  6,-12): <<>>
i:   6   j:-11   substr(o123456789,  6,-11): <<>>
i:   6   j:-10   substr(o123456789,  6,-10): <<>>
i:   6   j: -9   substr(o123456789,  6, -9): <<>>
i:   6   j: -8   substr(o123456789,  6, -8): <<>>
i:   6   j: -7   substr(o123456789,  6, -7): <<>>
i:   6   j: -6   substr(o123456789,  6, -6): <<>>
i:   6   j: -5   substr(o123456789,  6, -5): <<>>
i:   6   j: -4   substr(o123456789,  6, -4): <<6>>
i:   6   j: -3   substr(o123456789,  6, -3): <<67>>
i:   6   j: -2   substr(o123456789,  6, -2): <<678>>
i:   6   j: -1   substr(o123456789,  6, -1): <<6789>>
i:   6   j:  0   substr(o123456789,  6,  0): <<>>
i:   6   j:  1   substr(o123456789,  6,  1): <<>>
i:   6   j:  2   substr(o123456789,  6,  2): <<>>
i:   6   j:  3   substr(o123456789,  6,  3): <<>>
i:   6   j:  4   substr(o123456789,  6,  4): <<>>
i:   6   j:  5   substr(o123456789,  6,  5): <<>>
i:   6   j:  6   substr(o123456789,  6,  6): <<6>>
i:   6   j:  7   substr(o123456789,  6,  7): <<67>>
i:   6   j:  8   substr(o123456789,  6,  8): <<678>>
i:   6   j:  9   substr(o123456789,  6,  9): <<6789>>
i:   6   j: 10   substr(o123456789,  6, 10): <<>>
i:   6   j: 11   substr(o123456789,  6, 11): <<>>
i:   6   j: 12   substr(o123456789,  6, 12): <<>>

i:   7   j:-12   substr(o123456789,  7,-12): <<>>
i:   7   j:-11   substr(o123456789,  7,-11): <<>>
i:   7   j:-10   substr(o123456789,  7,-10): <<>>
i:   7   j: -9   substr(o123456789,  7, -9): <<>>
i:   7   j: -8   substr(o123456789,  7, -8): <<>>
i:   7   j: -7   substr(o123456789,  7, -7): <<>>
i:   7   j: -6   substr(o123456789,  7, -6): <<>>
i:   7   j: -5   substr(o123456789,  7, -5): <<>>
i:   7   j: -4   substr(o123456789,  7, -4): <<>>
i:   7   j: -3   substr(o123456789,  7, -3): <<7>>
i:   7   j: -2   substr(o123456789,  7, -2): <<78>>
i:   7   j: -1   substr(o123456789,  7, -1): <<789>>
i:   7   j:  0   substr(o123456789,  7,  0): <<>>
i:   7   j:  1   substr(o123456789,  7,  1): <<>>
i:   7   j:  2   substr(o123456789,  7,  2): <<>>
i:   7   j:  3   substr(o123456789,  7,  3): <<>>
i:   7   j:  4   substr(o123456789,  7,  4): <<>>
i:   7   j:  5   substr(o123456789,  7,  5): <<>>
i:   7   j:  6   substr(o123456789,  7,  6): <<>>
i:   7   j:  7   substr(o123456789,  7,  7): <<7>>
i:   7   j:  8   substr(o123456789,  7,  8): <<78>>
i:   7   j:  9   substr(o123456789,  7,  9): <<789>>
i:   7   j: 10   substr(o123456789,  7, 10): <<>>
i:   7   j: 11   substr(o123456789,  7, 11): <<>>
i:   7   j: 12   substr(o123456789,  7, 12): <<>>

i:   8   j:-12   substr(o123456789,  8,-12): <<>>
i:   8   j:-11   substr(o123456789,  8,-11): <<>>
i:   8   j:-10   substr(o123456789,  8,-10): <<>>
i:   8   j: -9   substr(o123456789,  8, -9): <<>>
i:   8   j: -8   substr(o123456789,  8, -8): <<>>
i:   8   j: -7   substr(o123456789,  8, -7): <<>>
i:   8   j: -6   substr(o123456789,  8, -6): <<>>
i:   8   j: -5   substr(o123456789,  8, -5): <<>>
i:   8   j: -4   substr(o123456789,  8, -4): <<>>
i:   8   j: -3   substr(o123456789,  8, -3): <<>>
i:   8   j: -2   substr(o123456789,  8, -2): <<8>>
i:   8   j: -1   substr(o123456789,  8, -1): <<89>>
i:   8   j:  0   substr(o123456789,  8,  0): <<>>
i:   8   j:  1   substr(o123456789,  8,  1): <<>>
i:   8   j:  2   substr(o123456789,  8,  2): <<>>
i:   8   j:  3   substr(o123456789,  8,  3): <<>>
i:   8   j:  4   substr(o123456789,  8,  4): <<>>
i:   8   j:  5   substr(o123456789,  8,  5): <<>>
i:   8   j:  6   substr(o123456789,  8,  6): <<>>
i:   8   j:  7   substr(o123456789,  8,  7): <<>>
i:   8   j:  8   substr(o123456789,  8,  8): <<8>>
i:   8   j:  9   substr(o123456789,  8,  9): <<89>>
i:   8   j: 10   substr(o123456789,  8, 10): <<>>
i:   8   j: 11   substr(o123456789,  8, 11): <<>>
i:   8   j: 12   substr(o123456789,  8, 12): <<>>

i:   9   j:-12   substr(o123456789,  9,-12): <<>>
i:   9   j:-11   substr(o123456789,  9,-11): <<>>
i:   9   j:-10   substr(o123456789,  9,-10): <<>>
i:   9   j: -9   substr(o123456789,  9, -9): <<>>
i:   9   j: -8   substr(o123456789,  9, -8): <<>>
i:   9   j: -7   substr(o123456789,  9, -7): <<>>
i:   9   j: -6   substr(o123456789,  9, -6): <<>>
i:   9   j: -5   substr(o123456789,  9, -5): <<>>
i:   9   j: -4   substr(o123456789,  9, -4): <<>>
i:   9   j: -3   substr(o123456789,  9, -3): <<>>
i:   9   j: -2   substr(o123456789,  9, -2): <<>>
i:   9   j: -1   substr(o123456789,  9, -1): <<9>>
i:   9   j:  0   substr(o123456789,  9,  0): <<>>
i:   9   j:  1   substr(o123456789,  9,  1): <<>>
i:   9   j:  2   substr(o123456789,  9,  2): <<>>
i:   9   j:  3   substr(o123456789,  9,  3): <<>>
i:   9   j:  4   substr(o123456789,  9,  4): <<>>
i:   9   j:  5   substr(o123456789,  9,  5): <<>>
i:   9   j:  6   substr(o123456789,  9,  6): <<>>
i:   9   j:  7   substr(o123456789,  9,  7): <<>>
i:   9   j:  8   substr(o123456789,  9,  8): <<>>
i:   9   j:  9   substr(o123456789,  9,  9): <<9>>
i:   9   j: 10   substr(o123456789,  9, 10): <<>>
i:   9   j: 11   substr(o123456789,  9, 11): <<>>
i:   9   j: 12   substr(o123456789,  9, 12): <<>>

i:  10   j:-12   substr(o123456789, 10,-12): <<>>
i:  10   j:-11   substr(o123456789, 10,-11): <<>>
i:  10   j:-10   substr(o123456789, 10,-10): <<>>
i:  10   j: -9   substr(o123456789, 10, -9): <<>>
i:  10   j: -8   substr(o123456789, 10, -8): <<>>
i:  10   j: -7   substr(o123456789, 10, -7): <<>>
i:  10   j: -6   substr(o123456789, 10, -6): <<>>
i:  10   j: -5   substr(o123456789, 10, -5): <<>>
i:  10   j: -4   substr(o123456789, 10, -4): <<>>
i:  10   j: -3   substr(o123456789, 10, -3): <<>>
i:  10   j: -2   substr(o123456789, 10, -2): <<>>
i:  10   j: -1   substr(o123456789, 10, -1): <<>>
i:  10   j:  0   substr(o123456789, 10,  0): <<>>
i:  10   j:  1   substr(o123456789, 10,  1): <<>>
i:  10   j:  2   substr(o123456789, 10,  2): <<>>
i:  10   j:  3   substr(o123456789, 10,  3): <<>>
i:  10   j:  4   substr(o123456789, 10,  4): <<>>
i:  10   j:  5   substr(o123456789, 10,  5): <<>>
i:  10   j:  6   substr(o123456789, 10,  6): <<>>
i:  10   j:  7   substr(o123456789, 10,  7): <<>>
i:  10   j:  8   substr(o123456789, 10,  8): <<>>
i:  10   j:  9   substr(o123456789, 10,  9): <<>>
i:  10   j: 10   substr(o123456789, 10, 10): <<>>
i:  10   j: 11   substr(o123456789, 10, 11): <<>>
i:  10   j: 12   substr(o123456789, 10, 12): <<>>

i:  11   j:-12   substr(o123456789, 11,-12): <<>>
i:  11   j:-11   substr(o123456789, 11,-11): <<>>
i:  11   j:-10   substr(o123456789, 11,-10): <<>>
i:  11   j: -9   substr(o123456789, 11, -9): <<>>
i:  11   j: -8   substr(o123456789, 11, -8): <<>>
i:  11   j: -7   substr(o123456789, 11, -7): <<>>
i:  11   j: -6   substr(o123456789, 11, -6): <<>>
i:  11   j: -5   substr(o123456789, 11, -5): <<>>
i:  11   j: -4   substr(o123456789, 11, -4): <<>>
i:  11   j: -3   substr(o123456789, 11, -3): <<>>
i:  11   j: -2   substr(o123456789, 11, -2): <<>>
i:  11   j: -1   substr(o123456789, 11, -1): <<>>
i:  11   j:  0   substr(o123456789, 11,  0): <<>>
i:  11   j:  1   substr(o123456789, 11,  1): <<>>
i:  11   j:  2   substr(o123456789, 11,  2): <<>>
i:  11   j:  3   substr(o123456789, 11,  3): <<>>
i:  11   j:  4   substr(o123456789, 11,  4): <<>>
i:  11   j:  5   substr(o123456789, 11,  5): <<>>
i:  11   j:  6   substr(o123456789, 11,  6): <<>>
i:  11   j:  7   substr(o123456789, 11,  7): <<>>
i:  11   j:  8   substr(o123456789, 11,  8): <<>>
i:  11   j:  9   substr(o123456789, 11,  9): <<>>
i:  11   j: 10   substr(o123456789, 11, 10): <<>>
i:  11   j: 11   substr(o123456789, 11, 11): <<>>
i:  11   j: 12   substr(o123456789, 11, 12): <<>>

i:  12   j:-12   substr(o123456789, 12,-12): <<>>
i:  12   j:-11   substr(o123456789, 12,-11): <<>>
i:  12   j:-10   substr(o123456789, 12,-10): <<>>
i:  12   j: -9   substr(o123456789, 12, -9): <<>>
i:  12   j: -8   substr(o123456789, 12, -8): <<>>
i:  12   j: -7   substr(o123456789, 12, -7): <<>>
i:  12   j: -6   substr(o123456789, 12, -6): <<>>
i:  12   j: -5   substr(o123456789, 12, -5): <<>>
i:  12   j: -4   substr(o123456789, 12, -4): <<>>
i:  12   j: -3   substr(o123456789, 12, -3): <<>>
i:  12   j: -2   substr(o123456789, 12, -2): <<>>
i:  12   j: -1   substr(o123456789, 12, -1): <<>>
i:  12   j:  0   substr(o123456789, 12,  0): <<>>
i:  12   j:  1   substr(o123456789, 12,  1): <<>>
i:  12   j:  2   substr(o123456789, 12,  2): <<>>
i:  12   j:  3   substr(o123456789, 12,  3): <<>>
i:  12   j:  4   substr(o123456789, 12,  4): <<>>
i:  12   j:  5   substr(o123456789, 12,  5): <<>>
i:  12   j:  6   substr(o123456789, 12,  6): <<>>
i:  12   j:  7   substr(o123456789, 12,  7): <<>>
i:  12   j:  8   substr(o123456789, 12,  8): <<>>
i:  12   j:  9   substr(o123456789, 12,  9): <<>>
i:  12   j: 10   substr(o123456789, 12, 10): <<>>
i:  12   j: 11   substr(o123456789, 12, 11): <<>>
i:  12   j: 12   substr(o123456789, 12, 12): <<>>



================================================================
DSL SYSTEM

mlr put $counter = system("echo X".NR."Y") ./reg_test/input/abixy
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533,counter=X1Y
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797,counter=X2Y
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776,counter=X3Y
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463,counter=X4Y
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729,counter=X5Y
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697,counter=X6Y
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694,counter=X7Y
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006,counter=X8Y
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059,counter=X9Y
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864,counter=X10Y


================================================================
DSL OOSVARS

mlr --opprint put -v begin{@ox=0}; $d=$x-@ox; @ox=$x ./reg_test/input/abixy
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="begin", type=BEGIN:
        text="begin_block", type=STATEMENT_BLOCK:
            text="=", type=OOSVAR_ASSIGNMENT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="ox", type=STRING_LITERAL.
                text="0", type=NUMERIC_LITERAL.
    text="=", type=SREC_ASSIGNMENT:
        text="d", type=FIELD_NAME.
        text="-", type=OPERATOR:
            text="x", type=FIELD_NAME.
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="ox", type=STRING_LITERAL.
    text="=", type=OOSVAR_ASSIGNMENT:
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="ox", type=STRING_LITERAL.
        text="x", type=FIELD_NAME.

BLOCKED AST:

BEGIN-BLOCK:
text="begin", type=BEGIN: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="begin_block", type=STATEMENT_BLOCK:
        text="=", type=OOSVAR_ASSIGNMENT:
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="ox", type=STRING_LITERAL.
            text="0", type=NUMERIC_LITERAL.

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="d", type=FIELD_NAME.
        text="-", type=OPERATOR:
            text="x", type=FIELD_NAME.
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="ox", type=STRING_LITERAL.
    text="=", type=OOSVAR_ASSIGNMENT:
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="ox", type=STRING_LITERAL.
        text="x", type=FIELD_NAME.

a   b   i  x                   y                   d
pan pan 1  0.3467901443380824  0.7268028627434533  0.346790
eks pan 2  0.7586799647899636  0.5221511083334797  0.411890
wye wye 3  0.20460330576630303 0.33831852551664776 -0.554077
eks wye 4  0.38139939387114097 0.13418874328430463 0.176796
wye pan 5  0.5732889198020006  0.8636244699032729  0.191890
zee pan 6  0.5271261600918548  0.49322128674835697 -0.046163
eks zee 7  0.6117840605678454  0.1878849191181694  0.084658
zee wye 8  0.5985540091064224  0.976181385699006   -0.013230
hat wye 9  0.03144187646093577 0.7495507603507059  -0.567112
pan wye 10 0.5026260055412137  0.9526183602969864  0.471184

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
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="begin", type=BEGIN:
        text="begin_block", type=STATEMENT_BLOCK:
            text="=", type=OOSVAR_ASSIGNMENT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="ox", type=STRING_LITERAL.
                text="no", type=STRING_LITERAL.
    text="=", type=SREC_ASSIGNMENT:
        text="d", type=FIELD_NAME.
        text="? :", type=OPERATOR:
            text="==", type=OPERATOR:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="ox", type=STRING_LITERAL.
                text="no", type=STRING_LITERAL.
            text="1.0", type=NUMERIC_LITERAL.
            text="/", type=OPERATOR:
                text="x", type=FIELD_NAME.
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="ox", type=STRING_LITERAL.
    text="=", type=OOSVAR_ASSIGNMENT:
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="ox", type=STRING_LITERAL.
        text="x", type=FIELD_NAME.

BLOCKED AST:

BEGIN-BLOCK:
text="begin", type=BEGIN: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="begin_block", type=STATEMENT_BLOCK:
        text="=", type=OOSVAR_ASSIGNMENT:
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="ox", type=STRING_LITERAL.
            text="no", type=STRING_LITERAL.

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="d", type=FIELD_NAME.
        text="? :", type=OPERATOR:
            text="==", type=OPERATOR:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="ox", type=STRING_LITERAL.
                text="no", type=STRING_LITERAL.
            text="1.0", type=NUMERIC_LITERAL.
            text="/", type=OPERATOR:
                text="x", type=FIELD_NAME.
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="ox", type=STRING_LITERAL.
    text="=", type=OOSVAR_ASSIGNMENT:
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="ox", type=STRING_LITERAL.
        text="x", type=FIELD_NAME.

a   b   i  x                   y                   d         x_ratio
pan pan 1  0.3467901443380824  0.7268028627434533  1.000000  1.000000
eks pan 2  0.7586799647899636  0.5221511083334797  2.187721  2.187721
wye wye 3  0.20460330576630303 0.33831852551664776 0.269683  0.269683
eks wye 4  0.38139939387114097 0.13418874328430463 1.864092  1.864092
wye pan 5  0.5732889198020006  0.8636244699032729  1.503120  1.503120
zee pan 6  0.5271261600918548  0.49322128674835697 0.919477  0.919477
eks zee 7  0.6117840605678454  0.1878849191181694  1.160603  1.160603
zee wye 8  0.5985540091064224  0.976181385699006   0.978375  0.978375
hat wye 9  0.03144187646093577 0.7495507603507059  0.052530  0.052530
pan wye 10 0.5026260055412137  0.9526183602969864  15.985878 15.985878

mlr --opprint put -v $d=$x/@ox; @ox=$x then step -a ratio -f x ./reg_test/input/abixy
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="d", type=FIELD_NAME.
        text="/", type=OPERATOR:
            text="x", type=FIELD_NAME.
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="ox", type=STRING_LITERAL.
    text="=", type=OOSVAR_ASSIGNMENT:
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="ox", type=STRING_LITERAL.
        text="x", type=FIELD_NAME.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="d", type=FIELD_NAME.
        text="/", type=OPERATOR:
            text="x", type=FIELD_NAME.
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="ox", type=STRING_LITERAL.
    text="=", type=OOSVAR_ASSIGNMENT:
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="ox", type=STRING_LITERAL.
        text="x", type=FIELD_NAME.

a   b   i  x                   y                   d         x_ratio
pan pan 1  0.3467901443380824  0.7268028627434533  0.346790  1.000000
eks pan 2  0.7586799647899636  0.5221511083334797  2.187721  2.187721
wye wye 3  0.20460330576630303 0.33831852551664776 0.269683  0.269683
eks wye 4  0.38139939387114097 0.13418874328430463 1.864092  1.864092
wye pan 5  0.5732889198020006  0.8636244699032729  1.503120  1.503120
zee pan 6  0.5271261600918548  0.49322128674835697 0.919477  0.919477
eks zee 7  0.6117840605678454  0.1878849191181694  1.160603  1.160603
zee wye 8  0.5985540091064224  0.976181385699006   0.978375  0.978375
hat wye 9  0.03144187646093577 0.7495507603507059  0.052530  0.052530
pan wye 10 0.5026260055412137  0.9526183602969864  15.985878 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
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="begin", type=BEGIN:
        text="begin_block", type=STATEMENT_BLOCK:
            text="=", type=OOSVAR_ASSIGNMENT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="ox", type=STRING_LITERAL.
                text="no", type=STRING_LITERAL.
    text="=", type=SREC_ASSIGNMENT:
        text="d", type=FIELD_NAME.
        text="? :", type=OPERATOR:
            text="==", type=OPERATOR:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="ox", type=STRING_LITERAL.
                text="no", type=STRING_LITERAL.
            text="1.0", type=NUMERIC_LITERAL.
            text="/", type=OPERATOR:
                text="x", type=FIELD_NAME.
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="ox", type=STRING_LITERAL.
    text="=", type=OOSVAR_ASSIGNMENT:
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="ox", type=STRING_LITERAL.
        text="x", type=FIELD_NAME.

BLOCKED AST:

BEGIN-BLOCK:
text="begin", type=BEGIN: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="begin_block", type=STATEMENT_BLOCK:
        text="=", type=OOSVAR_ASSIGNMENT:
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="ox", type=STRING_LITERAL.
            text="no", type=STRING_LITERAL.

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="d", type=FIELD_NAME.
        text="? :", type=OPERATOR:
            text="==", type=OPERATOR:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="ox", type=STRING_LITERAL.
                text="no", type=STRING_LITERAL.
            text="1.0", type=NUMERIC_LITERAL.
            text="/", type=OPERATOR:
                text="x", type=FIELD_NAME.
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="ox", type=STRING_LITERAL.
    text="=", type=OOSVAR_ASSIGNMENT:
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="ox", type=STRING_LITERAL.
        text="x", type=FIELD_NAME.

a   b   i  x                   y                   d         x_ratio
pan pan 1  0.3467901443380824  0.7268028627434533  1.000000  1.000000
eks pan 2  0.7586799647899636  0.5221511083334797  2.187721  2.187721
wye wye 3  0.20460330576630303 0.33831852551664776 0.269683  0.269683
eks wye 4  0.38139939387114097 0.13418874328430463 1.864092  1.864092
wye pan 5  0.5732889198020006  0.8636244699032729  1.503120  1.503120
zee pan 6  0.5271261600918548  0.49322128674835697 0.919477  0.919477
eks zee 7  0.6117840605678454  0.1878849191181694  1.160603  1.160603
zee wye 8  0.5985540091064224  0.976181385699006   0.978375  0.978375
hat wye 9  0.03144187646093577 0.7495507603507059  0.052530  0.052530
pan wye 10 0.5026260055412137  0.9526183602969864  15.985878 15.985878

mlr --opprint put -v begin{@rsum = 0}; @rsum = @rsum + $x; $rsum = @rsum ./reg_test/input/abixy
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="begin", type=BEGIN:
        text="begin_block", type=STATEMENT_BLOCK:
            text="=", type=OOSVAR_ASSIGNMENT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="rsum", type=STRING_LITERAL.
                text="0", type=NUMERIC_LITERAL.
    text="=", type=OOSVAR_ASSIGNMENT:
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="rsum", type=STRING_LITERAL.
        text="+", type=OPERATOR:
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="rsum", type=STRING_LITERAL.
            text="x", type=FIELD_NAME.
    text="=", type=SREC_ASSIGNMENT:
        text="rsum", type=FIELD_NAME.
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="rsum", type=STRING_LITERAL.

BLOCKED AST:

BEGIN-BLOCK:
text="begin", type=BEGIN: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="begin_block", type=STATEMENT_BLOCK:
        text="=", type=OOSVAR_ASSIGNMENT:
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="rsum", type=STRING_LITERAL.
            text="0", type=NUMERIC_LITERAL.

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=OOSVAR_ASSIGNMENT:
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="rsum", type=STRING_LITERAL.
        text="+", type=OPERATOR:
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="rsum", type=STRING_LITERAL.
            text="x", type=FIELD_NAME.
    text="=", type=SREC_ASSIGNMENT:
        text="rsum", type=FIELD_NAME.
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="rsum", type=STRING_LITERAL.

a   b   i  x                   y                   rsum
pan pan 1  0.3467901443380824  0.7268028627434533  0.346790
eks pan 2  0.7586799647899636  0.5221511083334797  1.105470
wye wye 3  0.20460330576630303 0.33831852551664776 1.310073
eks wye 4  0.38139939387114097 0.13418874328430463 1.691473
wye pan 5  0.5732889198020006  0.8636244699032729  2.264762
zee pan 6  0.5271261600918548  0.49322128674835697 2.791888
eks zee 7  0.6117840605678454  0.1878849191181694  3.403672
zee wye 8  0.5985540091064224  0.976181385699006   4.002226
hat wye 9  0.03144187646093577 0.7495507603507059  4.033668
pan wye 10 0.5026260055412137  0.9526183602969864  4.536294

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
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="begin", type=BEGIN:
        text="begin_block", type=STATEMENT_BLOCK:
            text="=", type=OOSVAR_ASSIGNMENT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="a", type=STRING_LITERAL.
                text="0", type=NUMERIC_LITERAL.
            text="=", type=OOSVAR_ASSIGNMENT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="b", type=STRING_LITERAL.
                text="0", type=NUMERIC_LITERAL.
            text="=", type=OOSVAR_ASSIGNMENT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="c", type=STRING_LITERAL.
                text="0", type=NUMERIC_LITERAL.
    text="=", type=SREC_ASSIGNMENT:
        text="za", type=FIELD_NAME.
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="a", type=STRING_LITERAL.
    text="=", type=SREC_ASSIGNMENT:
        text="zb", type=FIELD_NAME.
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="b", type=STRING_LITERAL.
    text="=", type=SREC_ASSIGNMENT:
        text="zc", type=FIELD_NAME.
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="c", type=STRING_LITERAL.
    text="=", type=SREC_ASSIGNMENT:
        text="d", type=FIELD_NAME.
        text="+", type=OPERATOR:
            text="+", type=OPERATOR:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="a", type=STRING_LITERAL.
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="b", type=STRING_LITERAL.
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="c", type=STRING_LITERAL.
    text="=", type=OOSVAR_ASSIGNMENT:
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="a", type=STRING_LITERAL.
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="b", type=STRING_LITERAL.
    text="=", type=OOSVAR_ASSIGNMENT:
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="b", type=STRING_LITERAL.
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="c", type=STRING_LITERAL.
    text="=", type=OOSVAR_ASSIGNMENT:
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="c", type=STRING_LITERAL.
        text="i", type=FIELD_NAME.

BLOCKED AST:

BEGIN-BLOCK:
text="begin", type=BEGIN: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="begin_block", type=STATEMENT_BLOCK:
        text="=", type=OOSVAR_ASSIGNMENT:
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="a", type=STRING_LITERAL.
            text="0", type=NUMERIC_LITERAL.
        text="=", type=OOSVAR_ASSIGNMENT:
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="b", type=STRING_LITERAL.
            text="0", type=NUMERIC_LITERAL.
        text="=", type=OOSVAR_ASSIGNMENT:
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="c", type=STRING_LITERAL.
            text="0", type=NUMERIC_LITERAL.

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="za", type=FIELD_NAME.
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="a", type=STRING_LITERAL.
    text="=", type=SREC_ASSIGNMENT:
        text="zb", type=FIELD_NAME.
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="b", type=STRING_LITERAL.
    text="=", type=SREC_ASSIGNMENT:
        text="zc", type=FIELD_NAME.
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="c", type=STRING_LITERAL.
    text="=", type=SREC_ASSIGNMENT:
        text="d", type=FIELD_NAME.
        text="+", type=OPERATOR:
            text="+", type=OPERATOR:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="a", type=STRING_LITERAL.
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="b", type=STRING_LITERAL.
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="c", type=STRING_LITERAL.
    text="=", type=OOSVAR_ASSIGNMENT:
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="a", type=STRING_LITERAL.
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="b", type=STRING_LITERAL.
    text="=", type=OOSVAR_ASSIGNMENT:
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="b", type=STRING_LITERAL.
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="c", type=STRING_LITERAL.
    text="=", type=OOSVAR_ASSIGNMENT:
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="c", type=STRING_LITERAL.
        text="i", type=FIELD_NAME.

a   b   i  x                   y                   za zb zc d
pan pan 1  0.3467901443380824  0.7268028627434533  0  0  0  0
eks pan 2  0.7586799647899636  0.5221511083334797  0  0  1  1
wye wye 3  0.20460330576630303 0.33831852551664776 0  1  2  3
eks wye 4  0.38139939387114097 0.13418874328430463 1  2  3  6
wye pan 5  0.5732889198020006  0.8636244699032729  2  3  4  9
zee pan 6  0.5271261600918548  0.49322128674835697 3  4  5  12
eks zee 7  0.6117840605678454  0.1878849191181694  4  5  6  15
zee wye 8  0.5985540091064224  0.976181385699006   5  6  7  18
hat wye 9  0.03144187646093577 0.7495507603507059  6  7  8  21
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
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="begin", type=BEGIN:
        text="begin_block", type=STATEMENT_BLOCK:
            text="=", type=OOSVAR_ASSIGNMENT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="a", type=STRING_LITERAL.
                text="0", type=NUMERIC_LITERAL.
            text="=", type=OOSVAR_ASSIGNMENT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="b", type=STRING_LITERAL.
                text="0", type=NUMERIC_LITERAL.
            text="=", type=OOSVAR_ASSIGNMENT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="c", type=STRING_LITERAL.
                text="0", type=NUMERIC_LITERAL.
    text="=", type=SREC_ASSIGNMENT:
        text="za", type=FIELD_NAME.
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="a", type=STRING_LITERAL.
    text="=", type=SREC_ASSIGNMENT:
        text="zb", type=FIELD_NAME.
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="b", type=STRING_LITERAL.
    text="=", type=SREC_ASSIGNMENT:
        text="zc", type=FIELD_NAME.
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="c", type=STRING_LITERAL.
    text="=", type=SREC_ASSIGNMENT:
        text="d", type=FIELD_NAME.
        text="+", type=OPERATOR:
            text="+", type=OPERATOR:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="a", type=STRING_LITERAL.
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="b", type=STRING_LITERAL.
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="c", type=STRING_LITERAL.
    text="=", type=OOSVAR_ASSIGNMENT:
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="a", type=STRING_LITERAL.
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="b", type=STRING_LITERAL.
    text="=", type=OOSVAR_ASSIGNMENT:
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="b", type=STRING_LITERAL.
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="c", type=STRING_LITERAL.
    text="=", type=OOSVAR_ASSIGNMENT:
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="c", type=STRING_LITERAL.
        text="i", type=FIELD_NAME.

BLOCKED AST:

BEGIN-BLOCK:
text="begin", type=BEGIN: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="begin_block", type=STATEMENT_BLOCK:
        text="=", type=OOSVAR_ASSIGNMENT:
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="a", type=STRING_LITERAL.
            text="0", type=NUMERIC_LITERAL.
        text="=", type=OOSVAR_ASSIGNMENT:
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="b", type=STRING_LITERAL.
            text="0", type=NUMERIC_LITERAL.
        text="=", type=OOSVAR_ASSIGNMENT:
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="c", type=STRING_LITERAL.
            text="0", type=NUMERIC_LITERAL.

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="za", type=FIELD_NAME.
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="a", type=STRING_LITERAL.
    text="=", type=SREC_ASSIGNMENT:
        text="zb", type=FIELD_NAME.
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="b", type=STRING_LITERAL.
    text="=", type=SREC_ASSIGNMENT:
        text="zc", type=FIELD_NAME.
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="c", type=STRING_LITERAL.
    text="=", type=SREC_ASSIGNMENT:
        text="d", type=FIELD_NAME.
        text="+", type=OPERATOR:
            text="+", type=OPERATOR:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="a", type=STRING_LITERAL.
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="b", type=STRING_LITERAL.
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="c", type=STRING_LITERAL.
    text="=", type=OOSVAR_ASSIGNMENT:
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="a", type=STRING_LITERAL.
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="b", type=STRING_LITERAL.
    text="=", type=OOSVAR_ASSIGNMENT:
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="b", type=STRING_LITERAL.
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="c", type=STRING_LITERAL.
    text="=", type=OOSVAR_ASSIGNMENT:
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="c", type=STRING_LITERAL.
        text="i", type=FIELD_NAME.

a   b   i  x                   y                   za zb zc d
pan pan 1  0.3467901443380824  0.7268028627434533  0  0  0  0
eks pan 2  0.7586799647899636  0.5221511083334797  0  0  1  1
wye wye 3  0.20460330576630303 0.33831852551664776 0  1  2  3
eks wye 4  0.38139939387114097 0.13418874328430463 1  2  3  6
wye pan 5  0.5732889198020006  0.8636244699032729  2  3  4  9
zee pan 6  0.5271261600918548  0.49322128674835697 3  4  5  12
eks zee 7  0.6117840605678454  0.1878849191181694  4  5  6  15
zee wye 8  0.5985540091064224  0.976181385699006   5  6  7  18
hat wye 9  0.03144187646093577 0.7495507603507059  6  7  8  21
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
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="begin", type=BEGIN:
        text="begin_block", type=STATEMENT_BLOCK:
            text="=", type=OOSVAR_ASSIGNMENT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="ox", type=STRING_LITERAL.
                text="0", type=NUMERIC_LITERAL.
    text="=", type=SREC_ASSIGNMENT:
        text="d", type=FIELD_NAME.
        text="-", type=OPERATOR:
            text="x", type=FIELD_NAME.
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="ox", type=STRING_LITERAL.
    text="=", type=OOSVAR_ASSIGNMENT:
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="ox", type=STRING_LITERAL.
        text="x", type=FIELD_NAME.

BLOCKED AST:

BEGIN-BLOCK:
text="begin", type=BEGIN: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="begin_block", type=STATEMENT_BLOCK:
        text="=", type=OOSVAR_ASSIGNMENT:
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="ox", type=STRING_LITERAL.
            text="0", type=NUMERIC_LITERAL.

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="d", type=FIELD_NAME.
        text="-", type=OPERATOR:
            text="x", type=FIELD_NAME.
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="ox", type=STRING_LITERAL.
    text="=", type=OOSVAR_ASSIGNMENT:
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="ox", type=STRING_LITERAL.
        text="x", type=FIELD_NAME.

a   b   i  x                   y                   d
pan pan 1  0.3467901443380824  0.7268028627434533  0.346790
eks pan 2  0.7586799647899636  0.5221511083334797  0.411890
wye wye 3  0.20460330576630303 0.33831852551664776 -0.554077
eks wye 4  0.38139939387114097 0.13418874328430463 0.176796
wye pan 5  0.5732889198020006  0.8636244699032729  0.191890
zee pan 6  0.5271261600918548  0.49322128674835697 -0.046163
eks zee 7  0.6117840605678454  0.1878849191181694  0.084658
zee wye 8  0.5985540091064224  0.976181385699006   -0.013230
hat wye 9  0.03144187646093577 0.7495507603507059  -0.567112
pan wye 10 0.5026260055412137  0.9526183602969864  0.471184

mlr put -v @a=$a; @b=$b; @c=$x; end {emitf @a; emitf @b; emitf @c} ./reg_test/input/abixy
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=OOSVAR_ASSIGNMENT:
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="a", type=STRING_LITERAL.
        text="a", type=FIELD_NAME.
    text="=", type=OOSVAR_ASSIGNMENT:
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="b", type=STRING_LITERAL.
        text="b", type=FIELD_NAME.
    text="=", type=OOSVAR_ASSIGNMENT:
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="c", type=STRING_LITERAL.
        text="x", type=FIELD_NAME.
    text="end", type=END:
        text="end_block", type=STATEMENT_BLOCK:
            text="emitf", type=EMITF:
                text="emitf", type=EMITF:
                    text="oosvar_keylist", type=OOSVAR_KEYLIST:
                        text="a", type=STRING_LITERAL.
                text="stream", type=STREAM:
            text="emitf", type=EMITF:
                text="emitf", type=EMITF:
                    text="oosvar_keylist", type=OOSVAR_KEYLIST:
                        text="b", type=STRING_LITERAL.
                text="stream", type=STREAM:
            text="emitf", type=EMITF:
                text="emitf", type=EMITF:
                    text="oosvar_keylist", type=OOSVAR_KEYLIST:
                        text="c", type=STRING_LITERAL.
                text="stream", type=STREAM:

BLOCKED AST:

END-BLOCK:
text="end", type=END: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="end_block", type=STATEMENT_BLOCK:
        text="emitf", type=EMITF:
            text="emitf", type=EMITF:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="a", type=STRING_LITERAL.
            text="stream", type=STREAM:
        text="emitf", type=EMITF:
            text="emitf", type=EMITF:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="b", type=STRING_LITERAL.
            text="stream", type=STREAM:
        text="emitf", type=EMITF:
            text="emitf", type=EMITF:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="c", type=STRING_LITERAL.
            text="stream", type=STREAM:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=OOSVAR_ASSIGNMENT:
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="a", type=STRING_LITERAL.
        text="a", type=FIELD_NAME.
    text="=", type=OOSVAR_ASSIGNMENT:
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="b", type=STRING_LITERAL.
        text="b", type=FIELD_NAME.
    text="=", type=OOSVAR_ASSIGNMENT:
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="c", type=STRING_LITERAL.
        text="x", type=FIELD_NAME.

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=wye
c=0.502626

mlr put -v @a=$a; @b=$b; @c=$x; end{emitf @a, @b, @c} ./reg_test/input/abixy
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=OOSVAR_ASSIGNMENT:
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="a", type=STRING_LITERAL.
        text="a", type=FIELD_NAME.
    text="=", type=OOSVAR_ASSIGNMENT:
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="b", type=STRING_LITERAL.
        text="b", type=FIELD_NAME.
    text="=", type=OOSVAR_ASSIGNMENT:
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="c", type=STRING_LITERAL.
        text="x", type=FIELD_NAME.
    text="end", type=END:
        text="end_block", type=STATEMENT_BLOCK:
            text="emitf", type=EMITF:
                text="emitf", type=EMITF:
                    text="oosvar_keylist", type=OOSVAR_KEYLIST:
                        text="a", type=STRING_LITERAL.
                    text="oosvar_keylist", type=OOSVAR_KEYLIST:
                        text="b", type=STRING_LITERAL.
                    text="oosvar_keylist", type=OOSVAR_KEYLIST:
                        text="c", type=STRING_LITERAL.
                text="stream", type=STREAM:

BLOCKED AST:

END-BLOCK:
text="end", type=END: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="end_block", type=STATEMENT_BLOCK:
        text="emitf", type=EMITF:
            text="emitf", type=EMITF:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="a", type=STRING_LITERAL.
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="b", type=STRING_LITERAL.
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="c", type=STRING_LITERAL.
            text="stream", type=STREAM:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=OOSVAR_ASSIGNMENT:
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="a", type=STRING_LITERAL.
        text="a", type=FIELD_NAME.
    text="=", type=OOSVAR_ASSIGNMENT:
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="b", type=STRING_LITERAL.
        text="b", type=FIELD_NAME.
    text="=", type=OOSVAR_ASSIGNMENT:
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="c", type=STRING_LITERAL.
        text="x", type=FIELD_NAME.

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=wye,c=0.502626

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
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="begin", type=BEGIN:
        text="begin_block", type=STATEMENT_BLOCK:
            text="=", type=OOSVAR_ASSIGNMENT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="count", type=STRING_LITERAL.
                text="0", type=NUMERIC_LITERAL.
            text="=", type=OOSVAR_ASSIGNMENT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="sum", type=STRING_LITERAL.
                text="0.0", type=NUMERIC_LITERAL.
    text="=", type=OOSVAR_ASSIGNMENT:
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="count", type=STRING_LITERAL.
        text="+", type=OPERATOR:
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="count", type=STRING_LITERAL.
            text="1", type=NUMERIC_LITERAL.
    text="=", type=OOSVAR_ASSIGNMENT:
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="sum", type=STRING_LITERAL.
        text="+", type=OPERATOR:
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="sum", type=STRING_LITERAL.
            text="x", type=FIELD_NAME.
    text="end", type=END:
        text="end_block", type=STATEMENT_BLOCK:
            text="=", type=OOSVAR_ASSIGNMENT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="mean", type=STRING_LITERAL.
                text="/", type=OPERATOR:
                    text="oosvar_keylist", type=OOSVAR_KEYLIST:
                        text="sum", type=STRING_LITERAL.
                    text="oosvar_keylist", type=OOSVAR_KEYLIST:
                        text="count", type=STRING_LITERAL.
            text="emitf", type=EMITF:
                text="emitf", type=EMITF:
                    text="oosvar_keylist", type=OOSVAR_KEYLIST:
                        text="mean", type=STRING_LITERAL.
                text="stream", type=STREAM:

BLOCKED AST:

BEGIN-BLOCK:
text="begin", type=BEGIN: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="begin_block", type=STATEMENT_BLOCK:
        text="=", type=OOSVAR_ASSIGNMENT:
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="count", type=STRING_LITERAL.
            text="0", type=NUMERIC_LITERAL.
        text="=", type=OOSVAR_ASSIGNMENT:
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="sum", type=STRING_LITERAL.
            text="0.0", type=NUMERIC_LITERAL.

END-BLOCK:
text="end", type=END: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="end_block", type=STATEMENT_BLOCK:
        text="=", type=OOSVAR_ASSIGNMENT:
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="mean", type=STRING_LITERAL.
            text="/", type=OPERATOR:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="sum", type=STRING_LITERAL.
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="count", type=STRING_LITERAL.
        text="emitf", type=EMITF:
            text="emitf", type=EMITF:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="mean", type=STRING_LITERAL.
            text="stream", type=STREAM:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=OOSVAR_ASSIGNMENT:
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="count", type=STRING_LITERAL.
        text="+", type=OPERATOR:
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="count", type=STRING_LITERAL.
            text="1", type=NUMERIC_LITERAL.
    text="=", type=OOSVAR_ASSIGNMENT:
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="sum", type=STRING_LITERAL.
        text="+", type=OPERATOR:
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="sum", type=STRING_LITERAL.
            text="x", type=FIELD_NAME.

a   b   i  x                   y
pan pan 1  0.3467901443380824  0.7268028627434533
eks pan 2  0.7586799647899636  0.5221511083334797
wye wye 3  0.20460330576630303 0.33831852551664776
eks wye 4  0.38139939387114097 0.13418874328430463
wye pan 5  0.5732889198020006  0.8636244699032729
zee pan 6  0.5271261600918548  0.49322128674835697
eks zee 7  0.6117840605678454  0.1878849191181694
zee wye 8  0.5985540091064224  0.976181385699006
hat wye 9  0.03144187646093577 0.7495507603507059
pan wye 10 0.5026260055412137  0.9526183602969864

mean
0.453629

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
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="end", type=END:
        text="end_block", type=STATEMENT_BLOCK:
            text="=", type=OOSVAR_ASSIGNMENT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="mean", type=STRING_LITERAL.
                text="/", type=OPERATOR:
                    text="oosvar_keylist", type=OOSVAR_KEYLIST:
                        text="sum", type=STRING_LITERAL.
                    text="oosvar_keylist", type=OOSVAR_KEYLIST:
                        text="count", type=STRING_LITERAL.
            text="emitf", type=EMITF:
                text="emitf", type=EMITF:
                    text="oosvar_keylist", type=OOSVAR_KEYLIST:
                        text="mean", type=STRING_LITERAL.
                text="stream", type=STREAM:
    text="begin", type=BEGIN:
        text="begin_block", type=STATEMENT_BLOCK:
            text="=", type=OOSVAR_ASSIGNMENT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="count", type=STRING_LITERAL.
                text="0", type=NUMERIC_LITERAL.
            text="=", type=OOSVAR_ASSIGNMENT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="sum", type=STRING_LITERAL.
                text="0.0", type=NUMERIC_LITERAL.
    text="=", type=OOSVAR_ASSIGNMENT:
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="count", type=STRING_LITERAL.
        text="+", type=OPERATOR:
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="count", type=STRING_LITERAL.
            text="1", type=NUMERIC_LITERAL.
    text="=", type=OOSVAR_ASSIGNMENT:
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="sum", type=STRING_LITERAL.
        text="+", type=OPERATOR:
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="sum", type=STRING_LITERAL.
            text="x", type=FIELD_NAME.

BLOCKED AST:

BEGIN-BLOCK:
text="begin", type=BEGIN: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="begin_block", type=STATEMENT_BLOCK:
        text="=", type=OOSVAR_ASSIGNMENT:
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="count", type=STRING_LITERAL.
            text="0", type=NUMERIC_LITERAL.
        text="=", type=OOSVAR_ASSIGNMENT:
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="sum", type=STRING_LITERAL.
            text="0.0", type=NUMERIC_LITERAL.

END-BLOCK:
text="end", type=END: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="end_block", type=STATEMENT_BLOCK:
        text="=", type=OOSVAR_ASSIGNMENT:
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="mean", type=STRING_LITERAL.
            text="/", type=OPERATOR:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="sum", type=STRING_LITERAL.
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="count", type=STRING_LITERAL.
        text="emitf", type=EMITF:
            text="emitf", type=EMITF:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="mean", type=STRING_LITERAL.
            text="stream", type=STREAM:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=OOSVAR_ASSIGNMENT:
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="count", type=STRING_LITERAL.
        text="+", type=OPERATOR:
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="count", type=STRING_LITERAL.
            text="1", type=NUMERIC_LITERAL.
    text="=", type=OOSVAR_ASSIGNMENT:
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="sum", type=STRING_LITERAL.
        text="+", type=OPERATOR:
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="sum", type=STRING_LITERAL.
            text="x", type=FIELD_NAME.

a   b   i  x                   y
pan pan 1  0.3467901443380824  0.7268028627434533
eks pan 2  0.7586799647899636  0.5221511083334797
wye wye 3  0.20460330576630303 0.33831852551664776
eks wye 4  0.38139939387114097 0.13418874328430463
wye pan 5  0.5732889198020006  0.8636244699032729
zee pan 6  0.5271261600918548  0.49322128674835697
eks zee 7  0.6117840605678454  0.1878849191181694
zee wye 8  0.5985540091064224  0.976181385699006
hat wye 9  0.03144187646093577 0.7495507603507059
pan wye 10 0.5026260055412137  0.9526183602969864

mean
0.453629

mlr put -v begin{ @a = @b[1] }; $c = @d; @e[$i][2+$j][3] = $4; end{@f[@g[5][@h]] = 6} /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="begin", type=BEGIN:
        text="begin_block", type=STATEMENT_BLOCK:
            text="=", type=OOSVAR_ASSIGNMENT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="a", type=STRING_LITERAL.
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="b", type=STRING_LITERAL.
                    text="1", type=NUMERIC_LITERAL.
    text="=", type=SREC_ASSIGNMENT:
        text="c", type=FIELD_NAME.
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="d", type=STRING_LITERAL.
    text="=", type=OOSVAR_ASSIGNMENT:
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="e", type=STRING_LITERAL.
            text="i", type=FIELD_NAME.
            text="+", type=OPERATOR:
                text="2", type=NUMERIC_LITERAL.
                text="j", type=FIELD_NAME.
            text="3", type=NUMERIC_LITERAL.
        text="4", type=FIELD_NAME.
    text="end", type=END:
        text="end_block", type=STATEMENT_BLOCK:
            text="=", type=OOSVAR_ASSIGNMENT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="f", type=STRING_LITERAL.
                    text="oosvar_keylist", type=OOSVAR_KEYLIST:
                        text="g", type=STRING_LITERAL.
                        text="5", type=NUMERIC_LITERAL.
                        text="oosvar_keylist", type=OOSVAR_KEYLIST:
                            text="h", type=STRING_LITERAL.
                text="6", type=NUMERIC_LITERAL.

BLOCKED AST:

BEGIN-BLOCK:
text="begin", type=BEGIN: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="begin_block", type=STATEMENT_BLOCK:
        text="=", type=OOSVAR_ASSIGNMENT:
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="a", type=STRING_LITERAL.
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="b", type=STRING_LITERAL.
                text="1", type=NUMERIC_LITERAL.

END-BLOCK:
text="end", type=END: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="end_block", type=STATEMENT_BLOCK:
        text="=", type=OOSVAR_ASSIGNMENT:
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="f", type=STRING_LITERAL.
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="g", type=STRING_LITERAL.
                    text="5", type=NUMERIC_LITERAL.
                    text="oosvar_keylist", type=OOSVAR_KEYLIST:
                        text="h", type=STRING_LITERAL.
            text="6", type=NUMERIC_LITERAL.

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="c", type=FIELD_NAME.
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="d", type=STRING_LITERAL.
    text="=", type=OOSVAR_ASSIGNMENT:
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="e", type=STRING_LITERAL.
            text="i", type=FIELD_NAME.
            text="+", type=OPERATOR:
                text="2", type=NUMERIC_LITERAL.
                text="j", type=FIELD_NAME.
            text="3", type=NUMERIC_LITERAL.
        text="4", type=FIELD_NAME.


mlr put @y[$a]=$y; end{dump} ./reg_test/input/abixy
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
{
  "y": {
    "pan": 0.952618,
    "eks": 0.187885,
    "wye": 0.863624,
    "zee": 0.976181,
    "hat": 0.749551
  }
}

mlr stats1 -a sum -f y -g a ./reg_test/input/abixy
a=pan,y_sum=1.679421
a=eks,y_sum=0.844225
a=wye,y_sum=1.201943
a=zee,y_sum=1.469403
a=hat,y_sum=0.749551

mlr put @y_sum[$a] = $y; end{dump} ./reg_test/input/abixy
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
{
  "y_sum": {
    "pan": 0.952618,
    "eks": 0.187885,
    "wye": 0.863624,
    "zee": 0.976181,
    "hat": 0.749551
  }
}

mlr put -q @s=$x; @t[$a]=$x; @u[$a][$b]=$x; end{dump; unset @s      ; dump} ./reg_test/input/unset1.dkvp
{
  "s": 9,
  "t": {
    "1": 9
  },
  "u": {
    "1": {
      "2": 9
    }
  }
}
{
  "t": {
    "1": 9
  },
  "u": {
    "1": {
      "2": 9
    }
  }
}

mlr put -q @s=$x; @t[$a]=$x; @u[$a][$b]=$x; end{dump; unset @t      ; dump} ./reg_test/input/unset1.dkvp
{
  "s": 9,
  "t": {
    "1": 9
  },
  "u": {
    "1": {
      "2": 9
    }
  }
}
{
  "s": 9,
  "u": {
    "1": {
      "2": 9
    }
  }
}

mlr put -q @s=$x; @t[$a]=$x; @u[$a][$b]=$x; end{dump; unset @t[1]   ; dump} ./reg_test/input/unset1.dkvp
{
  "s": 9,
  "t": {
    "1": 9
  },
  "u": {
    "1": {
      "2": 9
    }
  }
}
{
  "s": 9,
  "t": {
  },
  "u": {
    "1": {
      "2": 9
    }
  }
}

mlr put -q @s=$x; @t[$a]=$x; @u[$a][$b]=$x; end{dump; unset @u      ; dump} ./reg_test/input/unset1.dkvp
{
  "s": 9,
  "t": {
    "1": 9
  },
  "u": {
    "1": {
      "2": 9
    }
  }
}
{
  "s": 9,
  "t": {
    "1": 9
  }
}

mlr put -q @s=$x; @t[$a]=$x; @u[$a][$b]=$x; end{dump; unset @u[1]   ; dump} ./reg_test/input/unset1.dkvp
{
  "s": 9,
  "t": {
    "1": 9
  },
  "u": {
    "1": {
      "2": 9
    }
  }
}
{
  "s": 9,
  "t": {
    "1": 9
  },
  "u": {
  }
}

mlr put -q @s=$x; @t[$a]=$x; @u[$a][$b]=$x; end{dump; unset @u[1][2]; dump} ./reg_test/input/unset1.dkvp
{
  "s": 9,
  "t": {
    "1": 9
  },
  "u": {
    "1": {
      "2": 9
    }
  }
}
{
  "s": 9,
  "t": {
    "1": 9
  },
  "u": {
    "1": {
    }
  }
}

mlr put -q @s=$x; @t[$a]=$x; @u[$a][$b]=$x; end{dump; unset @s      ; dump} ./reg_test/input/unset4.dkvp
{
  "s": 9,
  "t": {
    "1": 9,
    "4": 9
  },
  "u": {
    "1": {
      "2": 9,
      "3": 9
    },
    "4": {
      "5": 9,
      "6": 9
    }
  }
}
{
  "t": {
    "1": 9,
    "4": 9
  },
  "u": {
    "1": {
      "2": 9,
      "3": 9
    },
    "4": {
      "5": 9,
      "6": 9
    }
  }
}

mlr put -q @s=$x; @t[$a]=$x; @u[$a][$b]=$x; end{dump; unset @t      ; dump} ./reg_test/input/unset4.dkvp
{
  "s": 9,
  "t": {
    "1": 9,
    "4": 9
  },
  "u": {
    "1": {
      "2": 9,
      "3": 9
    },
    "4": {
      "5": 9,
      "6": 9
    }
  }
}
{
  "s": 9,
  "u": {
    "1": {
      "2": 9,
      "3": 9
    },
    "4": {
      "5": 9,
      "6": 9
    }
  }
}

mlr put -q @s=$x; @t[$a]=$x; @u[$a][$b]=$x; end{dump; unset @t[1]   ; dump} ./reg_test/input/unset4.dkvp
{
  "s": 9,
  "t": {
    "1": 9,
    "4": 9
  },
  "u": {
    "1": {
      "2": 9,
      "3": 9
    },
    "4": {
      "5": 9,
      "6": 9
    }
  }
}
{
  "s": 9,
  "t": {
    "4": 9
  },
  "u": {
    "1": {
      "2": 9,
      "3": 9
    },
    "4": {
      "5": 9,
      "6": 9
    }
  }
}

mlr put -q @s=$x; @t[$a]=$x; @u[$a][$b]=$x; end{dump; unset @u      ; dump} ./reg_test/input/unset4.dkvp
{
  "s": 9,
  "t": {
    "1": 9,
    "4": 9
  },
  "u": {
    "1": {
      "2": 9,
      "3": 9
    },
    "4": {
      "5": 9,
      "6": 9
    }
  }
}
{
  "s": 9,
  "t": {
    "1": 9,
    "4": 9
  }
}

mlr put -q @s=$x; @t[$a]=$x; @u[$a][$b]=$x; end{dump; unset @u[1]   ; dump} ./reg_test/input/unset4.dkvp
{
  "s": 9,
  "t": {
    "1": 9,
    "4": 9
  },
  "u": {
    "1": {
      "2": 9,
      "3": 9
    },
    "4": {
      "5": 9,
      "6": 9
    }
  }
}
{
  "s": 9,
  "t": {
    "1": 9,
    "4": 9
  },
  "u": {
    "4": {
      "5": 9,
      "6": 9
    }
  }
}

mlr put -q @s=$x; @t[$a]=$x; @u[$a][$b]=$x; end{dump; unset @u[1][2]; dump} ./reg_test/input/unset4.dkvp
{
  "s": 9,
  "t": {
    "1": 9,
    "4": 9
  },
  "u": {
    "1": {
      "2": 9,
      "3": 9
    },
    "4": {
      "5": 9,
      "6": 9
    }
  }
}
{
  "s": 9,
  "t": {
    "1": 9,
    "4": 9
  },
  "u": {
    "1": {
      "3": 9
    },
    "4": {
      "5": 9,
      "6": 9
    }
  }
}

mlr put -q @s=$x; @t[$a]=$x; @u[$a][$b]=$x; end{dump; unset all;      dump} ./reg_test/input/unset4.dkvp
{
  "s": 9,
  "t": {
    "1": 9,
    "4": 9
  },
  "u": {
    "1": {
      "2": 9,
      "3": 9
    },
    "4": {
      "5": 9,
      "6": 9
    }
  }
}
{
}

mlr put -q @s=$x; @t[$a]=$x; @u[$a][$b]=$x; end{dump; unset @*;       dump} ./reg_test/input/unset4.dkvp
{
  "s": 9,
  "t": {
    "1": 9,
    "4": 9
  },
  "u": {
    "1": {
      "2": 9,
      "3": 9
    },
    "4": {
      "5": 9,
      "6": 9
    }
  }
}
{
}

mlr put unset $x ./reg_test/input/unset4.dkvp
a=1,b=2
a=1,b=3
a=4,b=5
a=4,b=6

mlr put unset $*; $aaa = 999 ./reg_test/input/unset4.dkvp
aaa=999
aaa=999
aaa=999
aaa=999

mlr --from ./reg_test/input/abixy put x = 1; print "OX=".x; unset x; print "NX=".x
OX=1
NX=
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
OX=1
NX=
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
OX=1
NX=
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
OX=1
NX=
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
OX=1
NX=
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
OX=1
NX=
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
OX=1
NX=
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
OX=1
NX=
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
OX=1
NX=
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
OX=1
NX=
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864

mlr put -q @{variable.name} += $x; end{emit @{variable.name}} ./reg_test/input/abixy
variable.name=4.536294

mlr put -q @{variable.name}[$a] += $x; end{emit @{variable.name},"a"} ./reg_test/input/abixy
a=pan,variable.name=0.849416
a=eks,variable.name=1.751863
a=wye,variable.name=0.777892
a=zee,variable.name=1.125680
a=hat,variable.name=0.031442

mlr put for (k,v in $*) { if (k == "i") {unset $[k]}} ./reg_test/input/abixy
a=pan,b=pan,x=0.3467901443380824,y=0.7268028627434533
a=eks,b=pan,x=0.7586799647899636,y=0.5221511083334797
a=wye,b=wye,x=0.20460330576630303,y=0.33831852551664776
a=eks,b=wye,x=0.38139939387114097,y=0.13418874328430463
a=wye,b=pan,x=0.5732889198020006,y=0.8636244699032729
a=zee,b=pan,x=0.5271261600918548,y=0.49322128674835697
a=eks,b=zee,x=0.6117840605678454,y=0.1878849191181694
a=zee,b=wye,x=0.5985540091064224,y=0.976181385699006
a=hat,b=wye,x=0.03144187646093577,y=0.7495507603507059
a=pan,b=wye,x=0.5026260055412137,y=0.9526183602969864

mlr --opprint --from ./reg_test/input/abixy put -q 
  @output[NR] = $*;
  end {
    for ((nr, k), v in @output) {
      if (nr == 4 || k == "i") {
        unset @output[nr][k]
      }
    }
    emitp @output, "NR", "k"
  }

NR k output
1  a pan
1  b pan
1  x 0.3467901443380824
1  y 0.7268028627434533
2  a eks
2  b pan
2  x 0.7586799647899636
2  y 0.5221511083334797
3  a wye
3  b wye
3  x 0.20460330576630303
3  y 0.33831852551664776
5  a wye
5  b pan
5  x 0.5732889198020006
5  y 0.8636244699032729
6  a zee
6  b pan
6  x 0.5271261600918548
6  y 0.49322128674835697
7  a eks
7  b zee
7  x 0.6117840605678454
7  y 0.1878849191181694
8  a zee
8  b wye
8  x 0.5985540091064224
8  y 0.976181385699006
9  a hat
9  b wye
9  x 0.03144187646093577
9  y 0.7495507603507059
10 a pan
10 b wye
10 x 0.5026260055412137
10 y 0.9526183602969864


================================================================
DSL PATTERN-ACTION BLOCKS

mlr put -v begin{@a=1}; $e=2; $f==$g||$h==$i {};               $x=6; end{@z=9} /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="begin", type=BEGIN:
        text="begin_block", type=STATEMENT_BLOCK:
            text="=", type=OOSVAR_ASSIGNMENT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="a", type=STRING_LITERAL.
                text="1", type=NUMERIC_LITERAL.
    text="=", type=SREC_ASSIGNMENT:
        text="e", type=FIELD_NAME.
        text="2", type=NUMERIC_LITERAL.
    text="cond", type=CONDITIONAL_BLOCK:
        text="||", type=OPERATOR:
            text="==", type=OPERATOR:
                text="f", type=FIELD_NAME.
                text="g", type=FIELD_NAME.
            text="==", type=OPERATOR:
                text="h", type=FIELD_NAME.
                text="i", type=FIELD_NAME.
        text="cond_block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="6", type=NUMERIC_LITERAL.
    text="end", type=END:
        text="end_block", type=STATEMENT_BLOCK:
            text="=", type=OOSVAR_ASSIGNMENT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="z", type=STRING_LITERAL.
                text="9", type=NUMERIC_LITERAL.

BLOCKED AST:

BEGIN-BLOCK:
text="begin", type=BEGIN: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="begin_block", type=STATEMENT_BLOCK:
        text="=", type=OOSVAR_ASSIGNMENT:
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="a", type=STRING_LITERAL.
            text="1", type=NUMERIC_LITERAL.

END-BLOCK:
text="end", type=END: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="end_block", type=STATEMENT_BLOCK:
        text="=", type=OOSVAR_ASSIGNMENT:
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="z", type=STRING_LITERAL.
            text="9", type=NUMERIC_LITERAL.

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=2 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="e", type=FIELD_NAME.
        text="2", type=NUMERIC_LITERAL.
    text="cond", type=CONDITIONAL_BLOCK:
        text="||", type=OPERATOR:
            text="==", type=OPERATOR:
                text="f", type=FIELD_NAME.
                text="g", type=FIELD_NAME.
            text="==", type=OPERATOR:
                text="h", type=FIELD_NAME.
                text="i", type=FIELD_NAME.
        text="cond_block", type=STATEMENT_BLOCK: subframe_var_count=0
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="6", type=NUMERIC_LITERAL.


mlr put -v begin{@a=1}; $e=2; $f==$g||$h==$i {$s=1};           $x=6; end{@z=9} /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="begin", type=BEGIN:
        text="begin_block", type=STATEMENT_BLOCK:
            text="=", type=OOSVAR_ASSIGNMENT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="a", type=STRING_LITERAL.
                text="1", type=NUMERIC_LITERAL.
    text="=", type=SREC_ASSIGNMENT:
        text="e", type=FIELD_NAME.
        text="2", type=NUMERIC_LITERAL.
    text="cond", type=CONDITIONAL_BLOCK:
        text="||", type=OPERATOR:
            text="==", type=OPERATOR:
                text="f", type=FIELD_NAME.
                text="g", type=FIELD_NAME.
            text="==", type=OPERATOR:
                text="h", type=FIELD_NAME.
                text="i", type=FIELD_NAME.
        text="cond_block", type=STATEMENT_BLOCK:
            text="=", type=SREC_ASSIGNMENT:
                text="s", type=FIELD_NAME.
                text="1", type=NUMERIC_LITERAL.
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="6", type=NUMERIC_LITERAL.
    text="end", type=END:
        text="end_block", type=STATEMENT_BLOCK:
            text="=", type=OOSVAR_ASSIGNMENT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="z", type=STRING_LITERAL.
                text="9", type=NUMERIC_LITERAL.

BLOCKED AST:

BEGIN-BLOCK:
text="begin", type=BEGIN: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="begin_block", type=STATEMENT_BLOCK:
        text="=", type=OOSVAR_ASSIGNMENT:
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="a", type=STRING_LITERAL.
            text="1", type=NUMERIC_LITERAL.

END-BLOCK:
text="end", type=END: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="end_block", type=STATEMENT_BLOCK:
        text="=", type=OOSVAR_ASSIGNMENT:
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="z", type=STRING_LITERAL.
            text="9", type=NUMERIC_LITERAL.

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=2 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="e", type=FIELD_NAME.
        text="2", type=NUMERIC_LITERAL.
    text="cond", type=CONDITIONAL_BLOCK:
        text="||", type=OPERATOR:
            text="==", type=OPERATOR:
                text="f", type=FIELD_NAME.
                text="g", type=FIELD_NAME.
            text="==", type=OPERATOR:
                text="h", type=FIELD_NAME.
                text="i", type=FIELD_NAME.
        text="cond_block", type=STATEMENT_BLOCK: subframe_var_count=0
            text="=", type=SREC_ASSIGNMENT:
                text="s", type=FIELD_NAME.
                text="1", type=NUMERIC_LITERAL.
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="6", type=NUMERIC_LITERAL.


mlr put -v begin{@a=1}; $e=2; $f==$g||$h==$i {$s=1;$t=2};      $x=6; end{@z=9} /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="begin", type=BEGIN:
        text="begin_block", type=STATEMENT_BLOCK:
            text="=", type=OOSVAR_ASSIGNMENT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="a", type=STRING_LITERAL.
                text="1", type=NUMERIC_LITERAL.
    text="=", type=SREC_ASSIGNMENT:
        text="e", type=FIELD_NAME.
        text="2", type=NUMERIC_LITERAL.
    text="cond", type=CONDITIONAL_BLOCK:
        text="||", type=OPERATOR:
            text="==", type=OPERATOR:
                text="f", type=FIELD_NAME.
                text="g", type=FIELD_NAME.
            text="==", type=OPERATOR:
                text="h", type=FIELD_NAME.
                text="i", type=FIELD_NAME.
        text="cond_block", type=STATEMENT_BLOCK:
            text="=", type=SREC_ASSIGNMENT:
                text="s", type=FIELD_NAME.
                text="1", type=NUMERIC_LITERAL.
            text="=", type=SREC_ASSIGNMENT:
                text="t", type=FIELD_NAME.
                text="2", type=NUMERIC_LITERAL.
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="6", type=NUMERIC_LITERAL.
    text="end", type=END:
        text="end_block", type=STATEMENT_BLOCK:
            text="=", type=OOSVAR_ASSIGNMENT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="z", type=STRING_LITERAL.
                text="9", type=NUMERIC_LITERAL.

BLOCKED AST:

BEGIN-BLOCK:
text="begin", type=BEGIN: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="begin_block", type=STATEMENT_BLOCK:
        text="=", type=OOSVAR_ASSIGNMENT:
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="a", type=STRING_LITERAL.
            text="1", type=NUMERIC_LITERAL.

END-BLOCK:
text="end", type=END: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="end_block", type=STATEMENT_BLOCK:
        text="=", type=OOSVAR_ASSIGNMENT:
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="z", type=STRING_LITERAL.
            text="9", type=NUMERIC_LITERAL.

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=2 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="e", type=FIELD_NAME.
        text="2", type=NUMERIC_LITERAL.
    text="cond", type=CONDITIONAL_BLOCK:
        text="||", type=OPERATOR:
            text="==", type=OPERATOR:
                text="f", type=FIELD_NAME.
                text="g", type=FIELD_NAME.
            text="==", type=OPERATOR:
                text="h", type=FIELD_NAME.
                text="i", type=FIELD_NAME.
        text="cond_block", type=STATEMENT_BLOCK: subframe_var_count=0
            text="=", type=SREC_ASSIGNMENT:
                text="s", type=FIELD_NAME.
                text="1", type=NUMERIC_LITERAL.
            text="=", type=SREC_ASSIGNMENT:
                text="t", type=FIELD_NAME.
                text="2", type=NUMERIC_LITERAL.
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="6", type=NUMERIC_LITERAL.


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
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="begin", type=BEGIN:
        text="begin_block", type=STATEMENT_BLOCK:
            text="=", type=OOSVAR_ASSIGNMENT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="a", type=STRING_LITERAL.
                text="1", type=NUMERIC_LITERAL.
    text="=", type=SREC_ASSIGNMENT:
        text="e", type=FIELD_NAME.
        text="2", type=NUMERIC_LITERAL.
    text="cond", type=CONDITIONAL_BLOCK:
        text="||", type=OPERATOR:
            text="==", type=OPERATOR:
                text="f", type=FIELD_NAME.
                text="g", type=FIELD_NAME.
            text="==", type=OPERATOR:
                text="h", type=FIELD_NAME.
                text="i", type=FIELD_NAME.
        text="cond_block", type=STATEMENT_BLOCK:
            text="=", type=SREC_ASSIGNMENT:
                text="s", type=FIELD_NAME.
                text="1", type=NUMERIC_LITERAL.
            text="=", type=SREC_ASSIGNMENT:
                text="t", type=FIELD_NAME.
                text="2", type=NUMERIC_LITERAL.
            text="=", type=SREC_ASSIGNMENT:
                text="u", type=FIELD_NAME.
                text="3", type=NUMERIC_LITERAL.
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="6", type=NUMERIC_LITERAL.
    text="end", type=END:
        text="end_block", type=STATEMENT_BLOCK:
            text="=", type=OOSVAR_ASSIGNMENT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="z", type=STRING_LITERAL.
                text="9", type=NUMERIC_LITERAL.

BLOCKED AST:

BEGIN-BLOCK:
text="begin", type=BEGIN: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="begin_block", type=STATEMENT_BLOCK:
        text="=", type=OOSVAR_ASSIGNMENT:
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="a", type=STRING_LITERAL.
            text="1", type=NUMERIC_LITERAL.

END-BLOCK:
text="end", type=END: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="end_block", type=STATEMENT_BLOCK:
        text="=", type=OOSVAR_ASSIGNMENT:
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="z", type=STRING_LITERAL.
            text="9", type=NUMERIC_LITERAL.

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=2 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="e", type=FIELD_NAME.
        text="2", type=NUMERIC_LITERAL.
    text="cond", type=CONDITIONAL_BLOCK:
        text="||", type=OPERATOR:
            text="==", type=OPERATOR:
                text="f", type=FIELD_NAME.
                text="g", type=FIELD_NAME.
            text="==", type=OPERATOR:
                text="h", type=FIELD_NAME.
                text="i", type=FIELD_NAME.
        text="cond_block", type=STATEMENT_BLOCK: subframe_var_count=0
            text="=", type=SREC_ASSIGNMENT:
                text="s", type=FIELD_NAME.
                text="1", type=NUMERIC_LITERAL.
            text="=", type=SREC_ASSIGNMENT:
                text="t", type=FIELD_NAME.
                text="2", type=NUMERIC_LITERAL.
            text="=", type=SREC_ASSIGNMENT:
                text="u", type=FIELD_NAME.
                text="3", type=NUMERIC_LITERAL.
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="6", type=NUMERIC_LITERAL.


mlr put -v begin{@a=1}; $e=2; $f==$g||$h==$i {$s=1;@t["u".$5]=2;emitf @v,@w;dump}; $x=6; end{@z=9} /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="begin", type=BEGIN:
        text="begin_block", type=STATEMENT_BLOCK:
            text="=", type=OOSVAR_ASSIGNMENT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="a", type=STRING_LITERAL.
                text="1", type=NUMERIC_LITERAL.
    text="=", type=SREC_ASSIGNMENT:
        text="e", type=FIELD_NAME.
        text="2", type=NUMERIC_LITERAL.
    text="cond", type=CONDITIONAL_BLOCK:
        text="||", type=OPERATOR:
            text="==", type=OPERATOR:
                text="f", type=FIELD_NAME.
                text="g", type=FIELD_NAME.
            text="==", type=OPERATOR:
                text="h", type=FIELD_NAME.
                text="i", type=FIELD_NAME.
        text="cond_block", type=STATEMENT_BLOCK:
            text="=", type=SREC_ASSIGNMENT:
                text="s", type=FIELD_NAME.
                text="1", type=NUMERIC_LITERAL.
            text="=", type=OOSVAR_ASSIGNMENT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="t", type=STRING_LITERAL.
                    text=".", type=OPERATOR:
                        text="u", type=STRING_LITERAL.
                        text="5", type=FIELD_NAME.
                text="2", type=NUMERIC_LITERAL.
            text="emitf", type=EMITF:
                text="emitf", type=EMITF:
                    text="oosvar_keylist", type=OOSVAR_KEYLIST:
                        text="v", type=STRING_LITERAL.
                    text="oosvar_keylist", type=OOSVAR_KEYLIST:
                        text="w", type=STRING_LITERAL.
                text="stream", type=STREAM:
            text="dump", type=DUMP:
                text=">", type=FILE_WRITE:
                    text="stdout", type=STDOUT:
                text="all", type=FULL_OOSVAR.
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="6", type=NUMERIC_LITERAL.
    text="end", type=END:
        text="end_block", type=STATEMENT_BLOCK:
            text="=", type=OOSVAR_ASSIGNMENT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="z", type=STRING_LITERAL.
                text="9", type=NUMERIC_LITERAL.

BLOCKED AST:

BEGIN-BLOCK:
text="begin", type=BEGIN: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="begin_block", type=STATEMENT_BLOCK:
        text="=", type=OOSVAR_ASSIGNMENT:
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="a", type=STRING_LITERAL.
            text="1", type=NUMERIC_LITERAL.

END-BLOCK:
text="end", type=END: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="end_block", type=STATEMENT_BLOCK:
        text="=", type=OOSVAR_ASSIGNMENT:
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="z", type=STRING_LITERAL.
            text="9", type=NUMERIC_LITERAL.

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=2 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="e", type=FIELD_NAME.
        text="2", type=NUMERIC_LITERAL.
    text="cond", type=CONDITIONAL_BLOCK:
        text="||", type=OPERATOR:
            text="==", type=OPERATOR:
                text="f", type=FIELD_NAME.
                text="g", type=FIELD_NAME.
            text="==", type=OPERATOR:
                text="h", type=FIELD_NAME.
                text="i", type=FIELD_NAME.
        text="cond_block", type=STATEMENT_BLOCK: subframe_var_count=0
            text="=", type=SREC_ASSIGNMENT:
                text="s", type=FIELD_NAME.
                text="1", type=NUMERIC_LITERAL.
            text="=", type=OOSVAR_ASSIGNMENT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="t", type=STRING_LITERAL.
                    text=".", type=OPERATOR:
                        text="u", type=STRING_LITERAL.
                        text="5", type=FIELD_NAME.
                text="2", type=NUMERIC_LITERAL.
            text="emitf", type=EMITF:
                text="emitf", type=EMITF:
                    text="oosvar_keylist", type=OOSVAR_KEYLIST:
                        text="v", type=STRING_LITERAL.
                    text="oosvar_keylist", type=OOSVAR_KEYLIST:
                        text="w", type=STRING_LITERAL.
                text="stream", type=STREAM:
            text="dump", type=DUMP:
                text=">", type=FILE_WRITE:
                    text="stdout", type=STDOUT:
                text="all", type=FULL_OOSVAR.
    text="=", type=SREC_ASSIGNMENT:
        text="x", type=FIELD_NAME.
        text="6", type=NUMERIC_LITERAL.


mlr put -v begin{true{@x=1}}; true{@x=2}; end{true{@x=3}} /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="begin", type=BEGIN:
        text="begin_block", type=STATEMENT_BLOCK:
            text="cond", type=CONDITIONAL_BLOCK:
                text="true", type=BOOLEAN_LITERAL.
                text="cond_block", type=STATEMENT_BLOCK:
                    text="=", type=OOSVAR_ASSIGNMENT:
                        text="oosvar_keylist", type=OOSVAR_KEYLIST:
                            text="x", type=STRING_LITERAL.
                        text="1", type=NUMERIC_LITERAL.
    text="cond", type=CONDITIONAL_BLOCK:
        text="true", type=BOOLEAN_LITERAL.
        text="cond_block", type=STATEMENT_BLOCK:
            text="=", type=OOSVAR_ASSIGNMENT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="x", type=STRING_LITERAL.
                text="2", type=NUMERIC_LITERAL.
    text="end", type=END:
        text="end_block", type=STATEMENT_BLOCK:
            text="cond", type=CONDITIONAL_BLOCK:
                text="true", type=BOOLEAN_LITERAL.
                text="cond_block", type=STATEMENT_BLOCK:
                    text="=", type=OOSVAR_ASSIGNMENT:
                        text="oosvar_keylist", type=OOSVAR_KEYLIST:
                            text="x", type=STRING_LITERAL.
                        text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

BEGIN-BLOCK:
text="begin", type=BEGIN: subframe_var_count=1 max_subframe_depth=2 max_var_depth=1
    text="begin_block", type=STATEMENT_BLOCK:
        text="cond", type=CONDITIONAL_BLOCK:
            text="true", type=BOOLEAN_LITERAL.
            text="cond_block", type=STATEMENT_BLOCK: subframe_var_count=0
                text="=", type=OOSVAR_ASSIGNMENT:
                    text="oosvar_keylist", type=OOSVAR_KEYLIST:
                        text="x", type=STRING_LITERAL.
                    text="1", type=NUMERIC_LITERAL.

END-BLOCK:
text="end", type=END: subframe_var_count=1 max_subframe_depth=2 max_var_depth=1
    text="end_block", type=STATEMENT_BLOCK:
        text="cond", type=CONDITIONAL_BLOCK:
            text="true", type=BOOLEAN_LITERAL.
            text="cond_block", type=STATEMENT_BLOCK: subframe_var_count=0
                text="=", type=OOSVAR_ASSIGNMENT:
                    text="oosvar_keylist", type=OOSVAR_KEYLIST:
                        text="x", type=STRING_LITERAL.
                    text="3", type=NUMERIC_LITERAL.

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=2 max_var_depth=1
    text="cond", type=CONDITIONAL_BLOCK:
        text="true", type=BOOLEAN_LITERAL.
        text="cond_block", type=STATEMENT_BLOCK: subframe_var_count=0
            text="=", type=OOSVAR_ASSIGNMENT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="x", type=STRING_LITERAL.
                text="2", type=NUMERIC_LITERAL.



================================================================
DSL STACK-ALLOCATION

mlr --from ./reg_test/input/abixy put -v -a -f ./reg_test/input/test-dsl-stack-allocation.mlr
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="f", type=FUNC_DEF:
        text="f", type=NON_SIGIL_NAME:
            text="a", type=UNTYPED_PARAMETER_DEFINITION.
            text="b", type=UNTYPED_PARAMETER_DEFINITION.
            text="c", type=UNTYPED_PARAMETER_DEFINITION.
        text="func_block", type=STATEMENT_BLOCK:
            text="=", type=OOSVAR_ASSIGNMENT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="v", type=STRING_LITERAL.
                    text="NR", type=CONTEXT_VARIABLE.
                text="*", type=OPERATOR:
                    text="NR", type=CONTEXT_VARIABLE.
                    text="1000", type=NUMERIC_LITERAL.
            text="cond", type=CONDITIONAL_BLOCK:
                text="true", type=BOOLEAN_LITERAL.
                text="cond_block", type=STATEMENT_BLOCK:
                    text="var", type=UNTYPED_LOCAL_DEFINITION:
                        text="val", type=NONINDEXED_LOCAL_VARIABLE.
                        text="nonesuch", type=NONINDEXED_LOCAL_VARIABLE.
                    text="while", type=WHILE:
                        text="==", type=OPERATOR:
                            text="1", type=NUMERIC_LITERAL.
                            text="1", type=NUMERIC_LITERAL.
                        text="while_block", type=STATEMENT_BLOCK:
                            text="if_head", type=IF_HEAD:
                                text="if", type=IF_ITEM:
                                    text="==", type=OPERATOR:
                                        text="NR", type=CONTEXT_VARIABLE.
                                        text="1", type=NUMERIC_LITERAL.
                                    text="if_block", type=STATEMENT_BLOCK:
                                        text="for", type=FOR_SREC:
                                            text="variables", type=FOR_VARIABLES:
                                                text="k", type=UNTYPED_LOCAL_DEFINITION.
                                                text="v", type=UNTYPED_LOCAL_DEFINITION.
                                            text="for_full_srec_block", type=STATEMENT_BLOCK:
                                                text="=", type=NONINDEXED_LOCAL_ASSIGNMENT:
                                                    text="val", type=NONINDEXED_LOCAL_VARIABLE.
                                                    text=".", type=OPERATOR:
                                                        text=".", type=OPERATOR:
                                                            text=".", type=OPERATOR:
                                                                text=".", type=OPERATOR:
                                                                    text=".", type=OPERATOR:
                                                                        text=".", type=OPERATOR:
                                                                            text="v", type=NONINDEXED_LOCAL_VARIABLE.
                                                                            text=":", type=STRING_LITERAL.
                                                                        text="a", type=NONINDEXED_LOCAL_VARIABLE.
                                                                    text=":", type=STRING_LITERAL.
                                                                text="b", type=NONINDEXED_LOCAL_VARIABLE.
                                                            text=":", type=STRING_LITERAL.
                                                        text="c", type=NONINDEXED_LOCAL_VARIABLE.
                                                text="print", type=PRINT:
                                                    text=".", type=OPERATOR:
                                                        text="f:1:val:", type=STRING_LITERAL.
                                                        text="val", type=NONINDEXED_LOCAL_VARIABLE.
                                                    text=">", type=FILE_WRITE:
                                                        text="stdout", type=STDOUT:
                                text="elif", type=IF_ITEM:
                                    text="==", type=OPERATOR:
                                        text="NR", type=CONTEXT_VARIABLE.
                                        text="2", type=NUMERIC_LITERAL.
                                    text="elif_block", type=STATEMENT_BLOCK:
                                        text="for", type=FOR_OOSVAR_KEY_ONLY:
                                            text="k", type=UNTYPED_LOCAL_DEFINITION.
                                            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                                                text="v", type=STRING_LITERAL.
                                            text="for_loop_oosvar_block", type=STATEMENT_BLOCK:
                                                text="print", type=PRINT:
                                                    text=".", type=OPERATOR:
                                                        text="f:2:k:", type=STRING_LITERAL.
                                                        text="k", type=NONINDEXED_LOCAL_VARIABLE.
                                                    text=">", type=FILE_WRITE:
                                                        text="stdout", type=STDOUT:
                                text="elif", type=IF_ITEM:
                                    text="==", type=OPERATOR:
                                        text="NR", type=CONTEXT_VARIABLE.
                                        text="3", type=NUMERIC_LITERAL.
                                    text="elif_block", type=STATEMENT_BLOCK:
                                        text="for", type=FOR_OOSVAR:
                                            text="key_and_value_variables", type=FOR_VARIABLES:
                                                text="key_variables", type=FOR_VARIABLES:
                                                    text="k", type=UNTYPED_LOCAL_DEFINITION.
                                                text="v", type=UNTYPED_LOCAL_DEFINITION.
                                            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                                                text="v", type=STRING_LITERAL.
                                            text="for_loop_oosvar_block", type=STATEMENT_BLOCK:
                                                text="print", type=PRINT:
                                                    text=".", type=OPERATOR:
                                                        text=".", type=OPERATOR:
                                                            text=".", type=OPERATOR:
                                                                text="f:3:k:", type=STRING_LITERAL.
                                                                text="k", type=NONINDEXED_LOCAL_VARIABLE.
                                                            text="v:", type=STRING_LITERAL.
                                                        text="v", type=NONINDEXED_LOCAL_VARIABLE.
                                                    text=">", type=FILE_WRITE:
                                                        text="stdout", type=STDOUT:
                                text="elif", type=IF_ITEM:
                                    text="==", type=OPERATOR:
                                        text="NR", type=CONTEXT_VARIABLE.
                                        text="4", type=NUMERIC_LITERAL.
                                    text="elif_block", type=STATEMENT_BLOCK:
                                        text="var", type=UNTYPED_LOCAL_DEFINITION:
                                            text="sum", type=NONINDEXED_LOCAL_VARIABLE.
                                            text="0", type=NUMERIC_LITERAL.
                                        text="for", type=TRIPLE_FOR:
                                            text="triple_for_start_statements", type=STATEMENT_LIST:
                                                text="var", type=UNTYPED_LOCAL_DEFINITION:
                                                    text="i", type=NONINDEXED_LOCAL_VARIABLE.
                                                    text="1", type=NUMERIC_LITERAL.
                                            text="triple_for_continuation_statements", type=STATEMENT_LIST:
                                                text="<=", type=OPERATOR:
                                                    text="i", type=NONINDEXED_LOCAL_VARIABLE.
                                                    text="10", type=NUMERIC_LITERAL.
                                            text="triple_for_update_statements", type=STATEMENT_LIST:
                                                text="=", type=NONINDEXED_LOCAL_ASSIGNMENT:
                                                    text="i", type=NONINDEXED_LOCAL_VARIABLE.
                                                    text="+", type=OPERATOR:
                                                        text="i", type=NONINDEXED_LOCAL_VARIABLE.
                                                        text="1", type=NUMERIC_LITERAL.
                                            text="triple_for_block", type=STATEMENT_BLOCK:
                                                text="for", type=TRIPLE_FOR:
                                                    text="triple_for_start_statements", type=STATEMENT_LIST:
                                                        text="var", type=UNTYPED_LOCAL_DEFINITION:
                                                            text="j", type=NONINDEXED_LOCAL_VARIABLE.
                                                            text="1", type=NUMERIC_LITERAL.
                                                    text="triple_for_continuation_statements", type=STATEMENT_LIST:
                                                        text="<=", type=OPERATOR:
                                                            text="j", type=NONINDEXED_LOCAL_VARIABLE.
                                                            text="10", type=NUMERIC_LITERAL.
                                                    text="triple_for_update_statements", type=STATEMENT_LIST:
                                                        text="=", type=NONINDEXED_LOCAL_ASSIGNMENT:
                                                            text="j", type=NONINDEXED_LOCAL_VARIABLE.
                                                            text="+", type=OPERATOR:
                                                                text="j", type=NONINDEXED_LOCAL_VARIABLE.
                                                                text="1", type=NUMERIC_LITERAL.
                                                    text="triple_for_block", type=STATEMENT_BLOCK:
                                                        text="=", type=NONINDEXED_LOCAL_ASSIGNMENT:
                                                            text="sum", type=NONINDEXED_LOCAL_VARIABLE.
                                                            text="+", type=OPERATOR:
                                                                text="sum", type=NONINDEXED_LOCAL_VARIABLE.
                                                                text="*", type=OPERATOR:
                                                                    text="i", type=NONINDEXED_LOCAL_VARIABLE.
                                                                    text="j", type=NONINDEXED_LOCAL_VARIABLE.
                                        text="=", type=NONINDEXED_LOCAL_ASSIGNMENT:
                                            text="val", type=NONINDEXED_LOCAL_VARIABLE.
                                            text="sum", type=NONINDEXED_LOCAL_VARIABLE.
                                        text="print", type=PRINT:
                                            text=".", type=OPERATOR:
                                                text="f:val:", type=STRING_LITERAL.
                                                text="val", type=NONINDEXED_LOCAL_VARIABLE.
                                            text=">", type=FILE_WRITE:
                                                text="stdout", type=STDOUT:
                            text="break", type=BREAK.
    text="s", type=SUBR_DEF:
        text="s", type=NON_SIGIL_NAME:
            text="a", type=UNTYPED_PARAMETER_DEFINITION.
            text="b", type=UNTYPED_PARAMETER_DEFINITION.
            text="c", type=UNTYPED_PARAMETER_DEFINITION.
        text="subr_block", type=STATEMENT_BLOCK:
            text="=", type=OOSVAR_ASSIGNMENT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="v", type=STRING_LITERAL.
                    text="NR", type=CONTEXT_VARIABLE.
                text="*", type=OPERATOR:
                    text="NR", type=CONTEXT_VARIABLE.
                    text="2000", type=NUMERIC_LITERAL.
            text="cond", type=CONDITIONAL_BLOCK:
                text="true", type=BOOLEAN_LITERAL.
                text="cond_block", type=STATEMENT_BLOCK:
                    text="var", type=UNTYPED_LOCAL_DEFINITION:
                        text="val", type=NONINDEXED_LOCAL_VARIABLE.
                        text="nonesuch", type=NONINDEXED_LOCAL_VARIABLE.
                    text="while", type=WHILE:
                        text="==", type=OPERATOR:
                            text="1", type=NUMERIC_LITERAL.
                            text="1", type=NUMERIC_LITERAL.
                        text="while_block", type=STATEMENT_BLOCK:
                            text="if_head", type=IF_HEAD:
                                text="if", type=IF_ITEM:
                                    text="==", type=OPERATOR:
                                        text="NR", type=CONTEXT_VARIABLE.
                                        text="1", type=NUMERIC_LITERAL.
                                    text="if_block", type=STATEMENT_BLOCK:
                                        text="for", type=FOR_SREC:
                                            text="variables", type=FOR_VARIABLES:
                                                text="k", type=UNTYPED_LOCAL_DEFINITION.
                                                text="v", type=UNTYPED_LOCAL_DEFINITION.
                                            text="for_full_srec_block", type=STATEMENT_BLOCK:
                                                text="=", type=NONINDEXED_LOCAL_ASSIGNMENT:
                                                    text="val", type=NONINDEXED_LOCAL_VARIABLE.
                                                    text=".", type=OPERATOR:
                                                        text=".", type=OPERATOR:
                                                            text=".", type=OPERATOR:
                                                                text=".", type=OPERATOR:
                                                                    text=".", type=OPERATOR:
                                                                        text=".", type=OPERATOR:
                                                                            text="v", type=NONINDEXED_LOCAL_VARIABLE.
                                                                            text=":", type=STRING_LITERAL.
                                                                        text="a", type=NONINDEXED_LOCAL_VARIABLE.
                                                                    text=":", type=STRING_LITERAL.
                                                                text="b", type=NONINDEXED_LOCAL_VARIABLE.
                                                            text=":", type=STRING_LITERAL.
                                                        text="c", type=NONINDEXED_LOCAL_VARIABLE.
                                                text="print", type=PRINT:
                                                    text=".", type=OPERATOR:
                                                        text="s:1:val:", type=STRING_LITERAL.
                                                        text="val", type=NONINDEXED_LOCAL_VARIABLE.
                                                    text=">", type=FILE_WRITE:
                                                        text="stdout", type=STDOUT:
                                text="elif", type=IF_ITEM:
                                    text="==", type=OPERATOR:
                                        text="NR", type=CONTEXT_VARIABLE.
                                        text="2", type=NUMERIC_LITERAL.
                                    text="elif_block", type=STATEMENT_BLOCK:
                                        text="for", type=FOR_OOSVAR_KEY_ONLY:
                                            text="k", type=UNTYPED_LOCAL_DEFINITION.
                                            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                                                text="v", type=STRING_LITERAL.
                                            text="for_loop_oosvar_block", type=STATEMENT_BLOCK:
                                                text="print", type=PRINT:
                                                    text=".", type=OPERATOR:
                                                        text="s:2:k:", type=STRING_LITERAL.
                                                        text="k", type=NONINDEXED_LOCAL_VARIABLE.
                                                    text=">", type=FILE_WRITE:
                                                        text="stdout", type=STDOUT:
                                text="elif", type=IF_ITEM:
                                    text="==", type=OPERATOR:
                                        text="NR", type=CONTEXT_VARIABLE.
                                        text="3", type=NUMERIC_LITERAL.
                                    text="elif_block", type=STATEMENT_BLOCK:
                                        text="for", type=FOR_OOSVAR:
                                            text="key_and_value_variables", type=FOR_VARIABLES:
                                                text="key_variables", type=FOR_VARIABLES:
                                                    text="k", type=UNTYPED_LOCAL_DEFINITION.
                                                text="v", type=UNTYPED_LOCAL_DEFINITION.
                                            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                                                text="v", type=STRING_LITERAL.
                                            text="for_loop_oosvar_block", type=STATEMENT_BLOCK:
                                                text="print", type=PRINT:
                                                    text=".", type=OPERATOR:
                                                        text=".", type=OPERATOR:
                                                            text=".", type=OPERATOR:
                                                                text="s:3:k:", type=STRING_LITERAL.
                                                                text="k", type=NONINDEXED_LOCAL_VARIABLE.
                                                            text="v:", type=STRING_LITERAL.
                                                        text="v", type=NONINDEXED_LOCAL_VARIABLE.
                                                    text=">", type=FILE_WRITE:
                                                        text="stdout", type=STDOUT:
                                text="elif", type=IF_ITEM:
                                    text="==", type=OPERATOR:
                                        text="NR", type=CONTEXT_VARIABLE.
                                        text="4", type=NUMERIC_LITERAL.
                                    text="elif_block", type=STATEMENT_BLOCK:
                                        text="var", type=UNTYPED_LOCAL_DEFINITION:
                                            text="sum", type=NONINDEXED_LOCAL_VARIABLE.
                                            text="0", type=NUMERIC_LITERAL.
                                        text="for", type=TRIPLE_FOR:
                                            text="triple_for_start_statements", type=STATEMENT_LIST:
                                                text="var", type=UNTYPED_LOCAL_DEFINITION:
                                                    text="i", type=NONINDEXED_LOCAL_VARIABLE.
                                                    text="1", type=NUMERIC_LITERAL.
                                            text="triple_for_continuation_statements", type=STATEMENT_LIST:
                                                text="<=", type=OPERATOR:
                                                    text="i", type=NONINDEXED_LOCAL_VARIABLE.
                                                    text="10", type=NUMERIC_LITERAL.
                                            text="triple_for_update_statements", type=STATEMENT_LIST:
                                                text="=", type=NONINDEXED_LOCAL_ASSIGNMENT:
                                                    text="i", type=NONINDEXED_LOCAL_VARIABLE.
                                                    text="+", type=OPERATOR:
                                                        text="i", type=NONINDEXED_LOCAL_VARIABLE.
                                                        text="1", type=NUMERIC_LITERAL.
                                            text="triple_for_block", type=STATEMENT_BLOCK:
                                                text="for", type=TRIPLE_FOR:
                                                    text="triple_for_start_statements", type=STATEMENT_LIST:
                                                        text="var", type=UNTYPED_LOCAL_DEFINITION:
                                                            text="j", type=NONINDEXED_LOCAL_VARIABLE.
                                                            text="1", type=NUMERIC_LITERAL.
                                                    text="triple_for_continuation_statements", type=STATEMENT_LIST:
                                                        text="<=", type=OPERATOR:
                                                            text="j", type=NONINDEXED_LOCAL_VARIABLE.
                                                            text="10", type=NUMERIC_LITERAL.
                                                    text="triple_for_update_statements", type=STATEMENT_LIST:
                                                        text="=", type=NONINDEXED_LOCAL_ASSIGNMENT:
                                                            text="j", type=NONINDEXED_LOCAL_VARIABLE.
                                                            text="+", type=OPERATOR:
                                                                text="j", type=NONINDEXED_LOCAL_VARIABLE.
                                                                text="1", type=NUMERIC_LITERAL.
                                                    text="triple_for_block", type=STATEMENT_BLOCK:
                                                        text="=", type=NONINDEXED_LOCAL_ASSIGNMENT:
                                                            text="sum", type=NONINDEXED_LOCAL_VARIABLE.
                                                            text="+", type=OPERATOR:
                                                                text="sum", type=NONINDEXED_LOCAL_VARIABLE.
                                                                text="*", type=OPERATOR:
                                                                    text="i", type=NONINDEXED_LOCAL_VARIABLE.
                                                                    text="j", type=NONINDEXED_LOCAL_VARIABLE.
                                        text="=", type=NONINDEXED_LOCAL_ASSIGNMENT:
                                            text="val", type=NONINDEXED_LOCAL_VARIABLE.
                                            text="sum", type=NONINDEXED_LOCAL_VARIABLE.
                                        text="print", type=PRINT:
                                            text=".", type=OPERATOR:
                                                text="s:val:", type=STRING_LITERAL.
                                                text="val", type=NONINDEXED_LOCAL_VARIABLE.
                                            text=">", type=FILE_WRITE:
                                                text="stdout", type=STDOUT:
                            text="break", type=BREAK.
    text="begin", type=BEGIN:
        text="begin_block", type=STATEMENT_BLOCK:
            text="print", type=PRINT:
                text="BEGIN", type=STRING_LITERAL.
                text=">", type=FILE_WRITE:
                    text="stdout", type=STDOUT:
            text="=", type=OOSVAR_ASSIGNMENT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="v", type=STRING_LITERAL.
                    text="0", type=NUMERIC_LITERAL.
                text="456", type=NUMERIC_LITERAL.
            text="cond", type=CONDITIONAL_BLOCK:
                text="true", type=BOOLEAN_LITERAL.
                text="cond_block", type=STATEMENT_BLOCK:
                    text="var", type=UNTYPED_LOCAL_DEFINITION:
                        text="val", type=NONINDEXED_LOCAL_VARIABLE.
                        text="nonesuch", type=NONINDEXED_LOCAL_VARIABLE.
                    text="for", type=TRIPLE_FOR:
                        text="triple_for_start_statements", type=STATEMENT_LIST:
                            text="var", type=UNTYPED_LOCAL_DEFINITION:
                                text="idx", type=NONINDEXED_LOCAL_VARIABLE.
                                text="1", type=NUMERIC_LITERAL.
                        text="triple_for_continuation_statements", type=STATEMENT_LIST:
                            text="<=", type=OPERATOR:
                                text="idx", type=NONINDEXED_LOCAL_VARIABLE.
                                text="4", type=NUMERIC_LITERAL.
                        text="triple_for_update_statements", type=STATEMENT_LIST:
                            text="=", type=NONINDEXED_LOCAL_ASSIGNMENT:
                                text="idx", type=NONINDEXED_LOCAL_VARIABLE.
                                text="+", type=OPERATOR:
                                    text="idx", type=NONINDEXED_LOCAL_VARIABLE.
                                    text="1", type=NUMERIC_LITERAL.
                        text="triple_for_block", type=STATEMENT_BLOCK:
                            text="if_head", type=IF_HEAD:
                                text="if", type=IF_ITEM:
                                    text="==", type=OPERATOR:
                                        text="idx", type=NONINDEXED_LOCAL_VARIABLE.
                                        text="2", type=NUMERIC_LITERAL.
                                    text="if_block", type=STATEMENT_BLOCK:
                                        text="for", type=FOR_OOSVAR_KEY_ONLY:
                                            text="k", type=UNTYPED_LOCAL_DEFINITION.
                                            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                                                text="v", type=STRING_LITERAL.
                                            text="for_loop_oosvar_block", type=STATEMENT_BLOCK:
                                                text="print", type=PRINT:
                                                    text=".", type=OPERATOR:
                                                        text="b:2:k:", type=STRING_LITERAL.
                                                        text="k", type=NONINDEXED_LOCAL_VARIABLE.
                                                    text=">", type=FILE_WRITE:
                                                        text="stdout", type=STDOUT:
                                text="elif", type=IF_ITEM:
                                    text="==", type=OPERATOR:
                                        text="idx", type=NONINDEXED_LOCAL_VARIABLE.
                                        text="3", type=NUMERIC_LITERAL.
                                    text="elif_block", type=STATEMENT_BLOCK:
                                        text="for", type=FOR_OOSVAR:
                                            text="key_and_value_variables", type=FOR_VARIABLES:
                                                text="key_variables", type=FOR_VARIABLES:
                                                    text="k", type=UNTYPED_LOCAL_DEFINITION.
                                                text="v", type=UNTYPED_LOCAL_DEFINITION.
                                            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                                                text="v", type=STRING_LITERAL.
                                            text="for_loop_oosvar_block", type=STATEMENT_BLOCK:
                                                text="print", type=PRINT:
                                                    text=".", type=OPERATOR:
                                                        text=".", type=OPERATOR:
                                                            text=".", type=OPERATOR:
                                                                text="b:3:k:", type=STRING_LITERAL.
                                                                text="k", type=NONINDEXED_LOCAL_VARIABLE.
                                                            text="v:", type=STRING_LITERAL.
                                                        text="v", type=NONINDEXED_LOCAL_VARIABLE.
                                                    text=">", type=FILE_WRITE:
                                                        text="stdout", type=STDOUT:
                                text="elif", type=IF_ITEM:
                                    text="==", type=OPERATOR:
                                        text="idx", type=NONINDEXED_LOCAL_VARIABLE.
                                        text="4", type=NUMERIC_LITERAL.
                                    text="elif_block", type=STATEMENT_BLOCK:
                                        text="var", type=UNTYPED_LOCAL_DEFINITION:
                                            text="sum", type=NONINDEXED_LOCAL_VARIABLE.
                                            text="0", type=NUMERIC_LITERAL.
                                        text="for", type=TRIPLE_FOR:
                                            text="triple_for_start_statements", type=STATEMENT_LIST:
                                                text="var", type=UNTYPED_LOCAL_DEFINITION:
                                                    text="i", type=NONINDEXED_LOCAL_VARIABLE.
                                                    text="1", type=NUMERIC_LITERAL.
                                            text="triple_for_continuation_statements", type=STATEMENT_LIST:
                                                text="<=", type=OPERATOR:
                                                    text="i", type=NONINDEXED_LOCAL_VARIABLE.
                                                    text="10", type=NUMERIC_LITERAL.
                                            text="triple_for_update_statements", type=STATEMENT_LIST:
                                                text="=", type=NONINDEXED_LOCAL_ASSIGNMENT:
                                                    text="i", type=NONINDEXED_LOCAL_VARIABLE.
                                                    text="+", type=OPERATOR:
                                                        text="i", type=NONINDEXED_LOCAL_VARIABLE.
                                                        text="1", type=NUMERIC_LITERAL.
                                            text="triple_for_block", type=STATEMENT_BLOCK:
                                                text="for", type=TRIPLE_FOR:
                                                    text="triple_for_start_statements", type=STATEMENT_LIST:
                                                        text="var", type=UNTYPED_LOCAL_DEFINITION:
                                                            text="j", type=NONINDEXED_LOCAL_VARIABLE.
                                                            text="1", type=NUMERIC_LITERAL.
                                                    text="triple_for_continuation_statements", type=STATEMENT_LIST:
                                                        text="<=", type=OPERATOR:
                                                            text="j", type=NONINDEXED_LOCAL_VARIABLE.
                                                            text="10", type=NUMERIC_LITERAL.
                                                    text="triple_for_update_statements", type=STATEMENT_LIST:
                                                        text="=", type=NONINDEXED_LOCAL_ASSIGNMENT:
                                                            text="j", type=NONINDEXED_LOCAL_VARIABLE.
                                                            text="+", type=OPERATOR:
                                                                text="j", type=NONINDEXED_LOCAL_VARIABLE.
                                                                text="1", type=NUMERIC_LITERAL.
                                                    text="triple_for_block", type=STATEMENT_BLOCK:
                                                        text="=", type=NONINDEXED_LOCAL_ASSIGNMENT:
                                                            text="sum", type=NONINDEXED_LOCAL_VARIABLE.
                                                            text="+", type=OPERATOR:
                                                                text="sum", type=NONINDEXED_LOCAL_VARIABLE.
                                                                text="*", type=OPERATOR:
                                                                    text="i", type=NONINDEXED_LOCAL_VARIABLE.
                                                                    text="j", type=NONINDEXED_LOCAL_VARIABLE.
                                        text="=", type=NONINDEXED_LOCAL_ASSIGNMENT:
                                            text="val", type=NONINDEXED_LOCAL_VARIABLE.
                                            text="sum", type=NONINDEXED_LOCAL_VARIABLE.
                                        text="print", type=PRINT:
                                            text=".", type=OPERATOR:
                                                text="b:val:", type=STRING_LITERAL.
                                                text="val", type=NONINDEXED_LOCAL_VARIABLE.
                                            text=">", type=FILE_WRITE:
                                                text="stdout", type=STDOUT:
    text="print", type=PRINT:
        text="MAIN", type=STRING_LITERAL.
        text=">", type=FILE_WRITE:
            text="stdout", type=STDOUT:
    text="=", type=OOSVAR_ASSIGNMENT:
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="v", type=STRING_LITERAL.
            text="NR", type=CONTEXT_VARIABLE.
        text="*", type=OPERATOR:
            text="NR", type=CONTEXT_VARIABLE.
            text="4000", type=NUMERIC_LITERAL.
    text="cond", type=CONDITIONAL_BLOCK:
        text="true", type=BOOLEAN_LITERAL.
        text="cond_block", type=STATEMENT_BLOCK:
            text="var", type=UNTYPED_LOCAL_DEFINITION:
                text="val", type=NONINDEXED_LOCAL_VARIABLE.
                text="nonesuch", type=NONINDEXED_LOCAL_VARIABLE.
            text="while", type=WHILE:
                text="==", type=OPERATOR:
                    text="1", type=NUMERIC_LITERAL.
                    text="1", type=NUMERIC_LITERAL.
                text="while_block", type=STATEMENT_BLOCK:
                    text="if_head", type=IF_HEAD:
                        text="if", type=IF_ITEM:
                            text="==", type=OPERATOR:
                                text="NR", type=CONTEXT_VARIABLE.
                                text="1", type=NUMERIC_LITERAL.
                            text="if_block", type=STATEMENT_BLOCK:
                                text="for", type=FOR_SREC:
                                    text="variables", type=FOR_VARIABLES:
                                        text="k", type=UNTYPED_LOCAL_DEFINITION.
                                        text="v", type=UNTYPED_LOCAL_DEFINITION.
                                    text="for_full_srec_block", type=STATEMENT_BLOCK:
                                        text="=", type=NONINDEXED_LOCAL_ASSIGNMENT:
                                            text="val", type=NONINDEXED_LOCAL_VARIABLE.
                                            text="v", type=NONINDEXED_LOCAL_VARIABLE.
                                        text="print", type=PRINT:
                                            text=".", type=OPERATOR:
                                                text="m:1:val:", type=STRING_LITERAL.
                                                text="val", type=NONINDEXED_LOCAL_VARIABLE.
                                            text=">", type=FILE_WRITE:
                                                text="stdout", type=STDOUT:
                        text="elif", type=IF_ITEM:
                            text="==", type=OPERATOR:
                                text="NR", type=CONTEXT_VARIABLE.
                                text="2", type=NUMERIC_LITERAL.
                            text="elif_block", type=STATEMENT_BLOCK:
                                text="for", type=FOR_OOSVAR_KEY_ONLY:
                                    text="k", type=UNTYPED_LOCAL_DEFINITION.
                                    text="oosvar_keylist", type=OOSVAR_KEYLIST:
                                        text="v", type=STRING_LITERAL.
                                    text="for_loop_oosvar_block", type=STATEMENT_BLOCK:
                                        text="print", type=PRINT:
                                            text=".", type=OPERATOR:
                                                text="m:2:k:", type=STRING_LITERAL.
                                                text="k", type=NONINDEXED_LOCAL_VARIABLE.
                                            text=">", type=FILE_WRITE:
                                                text="stdout", type=STDOUT:
                        text="elif", type=IF_ITEM:
                            text="==", type=OPERATOR:
                                text="NR", type=CONTEXT_VARIABLE.
                                text="3", type=NUMERIC_LITERAL.
                            text="elif_block", type=STATEMENT_BLOCK:
                                text="for", type=FOR_OOSVAR:
                                    text="key_and_value_variables", type=FOR_VARIABLES:
                                        text="key_variables", type=FOR_VARIABLES:
                                            text="k", type=UNTYPED_LOCAL_DEFINITION.
                                        text="v", type=UNTYPED_LOCAL_DEFINITION.
                                    text="oosvar_keylist", type=OOSVAR_KEYLIST:
                                        text="v", type=STRING_LITERAL.
                                    text="for_loop_oosvar_block", type=STATEMENT_BLOCK:
                                        text="print", type=PRINT:
                                            text=".", type=OPERATOR:
                                                text=".", type=OPERATOR:
                                                    text=".", type=OPERATOR:
                                                        text="m:3:k:", type=STRING_LITERAL.
                                                        text="k", type=NONINDEXED_LOCAL_VARIABLE.
                                                    text="v:", type=STRING_LITERAL.
                                                text="v", type=NONINDEXED_LOCAL_VARIABLE.
                                            text=">", type=FILE_WRITE:
                                                text="stdout", type=STDOUT:
                        text="elif", type=IF_ITEM:
                            text="==", type=OPERATOR:
                                text="NR", type=CONTEXT_VARIABLE.
                                text="4", type=NUMERIC_LITERAL.
                            text="elif_block", type=STATEMENT_BLOCK:
                                text="var", type=UNTYPED_LOCAL_DEFINITION:
                                    text="sum", type=NONINDEXED_LOCAL_VARIABLE.
                                    text="0", type=NUMERIC_LITERAL.
                                text="for", type=TRIPLE_FOR:
                                    text="triple_for_start_statements", type=STATEMENT_LIST:
                                        text="var", type=UNTYPED_LOCAL_DEFINITION:
                                            text="i", type=NONINDEXED_LOCAL_VARIABLE.
                                            text="1", type=NUMERIC_LITERAL.
                                    text="triple_for_continuation_statements", type=STATEMENT_LIST:
                                        text="<=", type=OPERATOR:
                                            text="i", type=NONINDEXED_LOCAL_VARIABLE.
                                            text="10", type=NUMERIC_LITERAL.
                                    text="triple_for_update_statements", type=STATEMENT_LIST:
                                        text="=", type=NONINDEXED_LOCAL_ASSIGNMENT:
                                            text="i", type=NONINDEXED_LOCAL_VARIABLE.
                                            text="+", type=OPERATOR:
                                                text="i", type=NONINDEXED_LOCAL_VARIABLE.
                                                text="1", type=NUMERIC_LITERAL.
                                    text="triple_for_block", type=STATEMENT_BLOCK:
                                        text="for", type=TRIPLE_FOR:
                                            text="triple_for_start_statements", type=STATEMENT_LIST:
                                                text="var", type=UNTYPED_LOCAL_DEFINITION:
                                                    text="j", type=NONINDEXED_LOCAL_VARIABLE.
                                                    text="1", type=NUMERIC_LITERAL.
                                            text="triple_for_continuation_statements", type=STATEMENT_LIST:
                                                text="<=", type=OPERATOR:
                                                    text="j", type=NONINDEXED_LOCAL_VARIABLE.
                                                    text="10", type=NUMERIC_LITERAL.
                                            text="triple_for_update_statements", type=STATEMENT_LIST:
                                                text="=", type=NONINDEXED_LOCAL_ASSIGNMENT:
                                                    text="j", type=NONINDEXED_LOCAL_VARIABLE.
                                                    text="+", type=OPERATOR:
                                                        text="j", type=NONINDEXED_LOCAL_VARIABLE.
                                                        text="1", type=NUMERIC_LITERAL.
                                            text="triple_for_block", type=STATEMENT_BLOCK:
                                                text="=", type=NONINDEXED_LOCAL_ASSIGNMENT:
                                                    text="sum", type=NONINDEXED_LOCAL_VARIABLE.
                                                    text="+", type=OPERATOR:
                                                        text="sum", type=NONINDEXED_LOCAL_VARIABLE.
                                                        text="*", type=OPERATOR:
                                                            text="i", type=NONINDEXED_LOCAL_VARIABLE.
                                                            text="j", type=NONINDEXED_LOCAL_VARIABLE.
                                text="=", type=NONINDEXED_LOCAL_ASSIGNMENT:
                                    text="val", type=NONINDEXED_LOCAL_VARIABLE.
                                    text="sum", type=NONINDEXED_LOCAL_VARIABLE.
                                text="print", type=PRINT:
                                    text=".", type=OPERATOR:
                                        text="m:val:", type=STRING_LITERAL.
                                        text="val", type=NONINDEXED_LOCAL_VARIABLE.
                                    text=">", type=FILE_WRITE:
                                        text="stdout", type=STDOUT:
                    text="break", type=BREAK.
    text="=", type=SREC_ASSIGNMENT:
        text="o", type=FIELD_NAME.
        text="f", type=FUNCTION_CALLSITE:
            text="NR", type=CONTEXT_VARIABLE.
            text="a", type=FIELD_NAME.
            text="y", type=FIELD_NAME.
    text="subr_call", type=SUBR_CALLSITE:
        text="s", type=FUNCTION_CALLSITE:
            text="b", type=FIELD_NAME.
            text="NR", type=CONTEXT_VARIABLE.
            text="**", type=OPERATOR:
                text="i", type=FIELD_NAME.
                text="2", type=NUMERIC_LITERAL.
    text="end", type=END:
        text="end_block", type=STATEMENT_BLOCK:
            text="print", type=PRINT:
                text="END", type=STRING_LITERAL.
                text=">", type=FILE_WRITE:
                    text="stdout", type=STDOUT:
            text="=", type=OOSVAR_ASSIGNMENT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="v", type=STRING_LITERAL.
                    text="100", type=NUMERIC_LITERAL.
                text="789", type=NUMERIC_LITERAL.
            text="cond", type=CONDITIONAL_BLOCK:
                text="true", type=BOOLEAN_LITERAL.
                text="cond_block", type=STATEMENT_BLOCK:
                    text="var", type=UNTYPED_LOCAL_DEFINITION:
                        text="val", type=NONINDEXED_LOCAL_VARIABLE.
                        text="nonesuch", type=NONINDEXED_LOCAL_VARIABLE.
                    text="for", type=TRIPLE_FOR:
                        text="triple_for_start_statements", type=STATEMENT_LIST:
                            text="var", type=UNTYPED_LOCAL_DEFINITION:
                                text="idx", type=NONINDEXED_LOCAL_VARIABLE.
                                text="1", type=NUMERIC_LITERAL.
                        text="triple_for_continuation_statements", type=STATEMENT_LIST:
                            text="<=", type=OPERATOR:
                                text="idx", type=NONINDEXED_LOCAL_VARIABLE.
                                text="4", type=NUMERIC_LITERAL.
                        text="triple_for_update_statements", type=STATEMENT_LIST:
                            text="=", type=NONINDEXED_LOCAL_ASSIGNMENT:
                                text="idx", type=NONINDEXED_LOCAL_VARIABLE.
                                text="+", type=OPERATOR:
                                    text="idx", type=NONINDEXED_LOCAL_VARIABLE.
                                    text="1", type=NUMERIC_LITERAL.
                        text="triple_for_block", type=STATEMENT_BLOCK:
                            text="if_head", type=IF_HEAD:
                                text="if", type=IF_ITEM:
                                    text="==", type=OPERATOR:
                                        text="idx", type=NONINDEXED_LOCAL_VARIABLE.
                                        text="2", type=NUMERIC_LITERAL.
                                    text="if_block", type=STATEMENT_BLOCK:
                                        text="for", type=FOR_OOSVAR_KEY_ONLY:
                                            text="k", type=UNTYPED_LOCAL_DEFINITION.
                                            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                                                text="v", type=STRING_LITERAL.
                                            text="for_loop_oosvar_block", type=STATEMENT_BLOCK:
                                                text="print", type=PRINT:
                                                    text=".", type=OPERATOR:
                                                        text="e:2:k:", type=STRING_LITERAL.
                                                        text="k", type=NONINDEXED_LOCAL_VARIABLE.
                                                    text=">", type=FILE_WRITE:
                                                        text="stdout", type=STDOUT:
                                text="elif", type=IF_ITEM:
                                    text="==", type=OPERATOR:
                                        text="idx", type=NONINDEXED_LOCAL_VARIABLE.
                                        text="3", type=NUMERIC_LITERAL.
                                    text="elif_block", type=STATEMENT_BLOCK:
                                        text="for", type=FOR_OOSVAR:
                                            text="key_and_value_variables", type=FOR_VARIABLES:
                                                text="key_variables", type=FOR_VARIABLES:
                                                    text="k", type=UNTYPED_LOCAL_DEFINITION.
                                                text="v", type=UNTYPED_LOCAL_DEFINITION.
                                            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                                                text="v", type=STRING_LITERAL.
                                            text="for_loop_oosvar_block", type=STATEMENT_BLOCK:
                                                text="print", type=PRINT:
                                                    text=".", type=OPERATOR:
                                                        text=".", type=OPERATOR:
                                                            text=".", type=OPERATOR:
                                                                text="e:3:k:", type=STRING_LITERAL.
                                                                text="k", type=NONINDEXED_LOCAL_VARIABLE.
                                                            text="v:", type=STRING_LITERAL.
                                                        text="v", type=NONINDEXED_LOCAL_VARIABLE.
                                                    text=">", type=FILE_WRITE:
                                                        text="stdout", type=STDOUT:
                                text="elif", type=IF_ITEM:
                                    text="==", type=OPERATOR:
                                        text="idx", type=NONINDEXED_LOCAL_VARIABLE.
                                        text="4", type=NUMERIC_LITERAL.
                                    text="elif_block", type=STATEMENT_BLOCK:
                                        text="var", type=UNTYPED_LOCAL_DEFINITION:
                                            text="sum", type=NONINDEXED_LOCAL_VARIABLE.
                                            text="0", type=NUMERIC_LITERAL.
                                        text="for", type=TRIPLE_FOR:
                                            text="triple_for_start_statements", type=STATEMENT_LIST:
                                                text="var", type=UNTYPED_LOCAL_DEFINITION:
                                                    text="i", type=NONINDEXED_LOCAL_VARIABLE.
                                                    text="1", type=NUMERIC_LITERAL.
                                            text="triple_for_continuation_statements", type=STATEMENT_LIST:
                                                text="<=", type=OPERATOR:
                                                    text="i", type=NONINDEXED_LOCAL_VARIABLE.
                                                    text="10", type=NUMERIC_LITERAL.
                                            text="triple_for_update_statements", type=STATEMENT_LIST:
                                                text="=", type=NONINDEXED_LOCAL_ASSIGNMENT:
                                                    text="i", type=NONINDEXED_LOCAL_VARIABLE.
                                                    text="+", type=OPERATOR:
                                                        text="i", type=NONINDEXED_LOCAL_VARIABLE.
                                                        text="1", type=NUMERIC_LITERAL.
                                            text="triple_for_block", type=STATEMENT_BLOCK:
                                                text="for", type=TRIPLE_FOR:
                                                    text="triple_for_start_statements", type=STATEMENT_LIST:
                                                        text="var", type=UNTYPED_LOCAL_DEFINITION:
                                                            text="j", type=NONINDEXED_LOCAL_VARIABLE.
                                                            text="1", type=NUMERIC_LITERAL.
                                                    text="triple_for_continuation_statements", type=STATEMENT_LIST:
                                                        text="<=", type=OPERATOR:
                                                            text="j", type=NONINDEXED_LOCAL_VARIABLE.
                                                            text="10", type=NUMERIC_LITERAL.
                                                    text="triple_for_update_statements", type=STATEMENT_LIST:
                                                        text="=", type=NONINDEXED_LOCAL_ASSIGNMENT:
                                                            text="j", type=NONINDEXED_LOCAL_VARIABLE.
                                                            text="+", type=OPERATOR:
                                                                text="j", type=NONINDEXED_LOCAL_VARIABLE.
                                                                text="1", type=NUMERIC_LITERAL.
                                                    text="triple_for_block", type=STATEMENT_BLOCK:
                                                        text="=", type=NONINDEXED_LOCAL_ASSIGNMENT:
                                                            text="sum", type=NONINDEXED_LOCAL_VARIABLE.
                                                            text="+", type=OPERATOR:
                                                                text="sum", type=NONINDEXED_LOCAL_VARIABLE.
                                                                text="*", type=OPERATOR:
                                                                    text="i", type=NONINDEXED_LOCAL_VARIABLE.
                                                                    text="j", type=NONINDEXED_LOCAL_VARIABLE.
                                        text="=", type=NONINDEXED_LOCAL_ASSIGNMENT:
                                            text="val", type=NONINDEXED_LOCAL_VARIABLE.
                                            text="sum", type=NONINDEXED_LOCAL_VARIABLE.
                                        text="print", type=PRINT:
                                            text=".", type=OPERATOR:
                                                text="e:val:", type=STRING_LITERAL.
                                                text="val", type=NONINDEXED_LOCAL_VARIABLE.
                                            text=">", type=FILE_WRITE:
                                                text="stdout", type=STDOUT:

ALLOCATING RELATIVE (PASS-1) LOCALS FOR DEFINITION BLOCK [f]
    ADD FOR ABSENT s @ 0u0
    ADD PARAMETER a @ 1s0
    ADD PARAMETER b @ 2s0
    ADD PARAMETER c @ 3s0
    PUSH SUBFRAME cond_block
        READ nonesuch ABSENT @ 0s0
        ADD DEFINE val @ 0s1
        PUSH SUBFRAME while_block
            PUSH SUBFRAME if_block
                PUSH SUBFRAME for
                    ADD FOR-BIND k @ 0s4
                    ADD FOR-BIND v @ 1s4
                    READ v PRESENT @ 1s4
                    READ a PRESENT @ 1s0
                    READ b PRESENT @ 2s0
                    READ c PRESENT @ 3s0
                    REUSE WRITE val @ 0s1
                    READ val PRESENT @ 0s1
                POP SUBFRAME for subframe_var_count=2
            POP SUBFRAME if subframe_var_count=0
            PUSH SUBFRAME elif_block
                PUSH SUBFRAME for
                    ADD FOR-BIND k @ 0s4
                    READ k PRESENT @ 0s4
                POP SUBFRAME for subframe_var_count=1
            POP SUBFRAME elif subframe_var_count=0
            PUSH SUBFRAME elif_block
                PUSH SUBFRAME for
                    ADD FOR-BIND k @ 0s4
                    ADD FOR-BIND v @ 1s4
                    READ k PRESENT @ 0s4
                    READ v PRESENT @ 1s4
                POP SUBFRAME for subframe_var_count=2
            POP SUBFRAME elif subframe_var_count=0
            PUSH SUBFRAME elif_block
                ADD DEFINE sum @ 0s3
                PUSH SUBFRAME for
                    ADD DEFINE i @ 0s4
                    READ i PRESENT @ 0s4
                    READ i PRESENT @ 0s4
                    REUSE WRITE i @ 0s4
                    PUSH SUBFRAME for
                        ADD DEFINE j @ 0s5
                        READ j PRESENT @ 0s5
                        READ j PRESENT @ 0s5
                        REUSE WRITE j @ 0s5
                        READ sum PRESENT @ 0s3
                        READ i PRESENT @ 0s4
                        READ j PRESENT @ 0s5
                        REUSE WRITE sum @ 0s3
                    POP SUBFRAME for subframe_var_count=1
                POP SUBFRAME for subframe_var_count=1
                READ sum PRESENT @ 0s3
                REUSE WRITE val @ 0s1
                READ val PRESENT @ 0s1
            POP SUBFRAME elif subframe_var_count=1
        POP SUBFRAME while subframe_var_count=0
    POP SUBFRAME cond subframe_var_count=1
BLOCK f subframe_var_count=4 max_subframe_depth=6

ALLOCATING RELATIVE (PASS-1) LOCALS FOR DEFINITION BLOCK [s]
    ADD FOR ABSENT s @ 0u0
    ADD PARAMETER a @ 1s0
    ADD PARAMETER b @ 2s0
    ADD PARAMETER c @ 3s0
    PUSH SUBFRAME cond_block
        READ nonesuch ABSENT @ 0s0
        ADD DEFINE val @ 0s1
        PUSH SUBFRAME while_block
            PUSH SUBFRAME if_block
                PUSH SUBFRAME for
                    ADD FOR-BIND k @ 0s4
                    ADD FOR-BIND v @ 1s4
                    READ v PRESENT @ 1s4
                    READ a PRESENT @ 1s0
                    READ b PRESENT @ 2s0
                    READ c PRESENT @ 3s0
                    REUSE WRITE val @ 0s1
                    READ val PRESENT @ 0s1
                POP SUBFRAME for subframe_var_count=2
            POP SUBFRAME if subframe_var_count=0
            PUSH SUBFRAME elif_block
                PUSH SUBFRAME for
                    ADD FOR-BIND k @ 0s4
                    READ k PRESENT @ 0s4
                POP SUBFRAME for subframe_var_count=1
            POP SUBFRAME elif subframe_var_count=0
            PUSH SUBFRAME elif_block
                PUSH SUBFRAME for
                    ADD FOR-BIND k @ 0s4
                    ADD FOR-BIND v @ 1s4
                    READ k PRESENT @ 0s4
                    READ v PRESENT @ 1s4
                POP SUBFRAME for subframe_var_count=2
            POP SUBFRAME elif subframe_var_count=0
            PUSH SUBFRAME elif_block
                ADD DEFINE sum @ 0s3
                PUSH SUBFRAME for
                    ADD DEFINE i @ 0s4
                    READ i PRESENT @ 0s4
                    READ i PRESENT @ 0s4
                    REUSE WRITE i @ 0s4
                    PUSH SUBFRAME for
                        ADD DEFINE j @ 0s5
                        READ j PRESENT @ 0s5
                        READ j PRESENT @ 0s5
                        REUSE WRITE j @ 0s5
                        READ sum PRESENT @ 0s3
                        READ i PRESENT @ 0s4
                        READ j PRESENT @ 0s5
                        REUSE WRITE sum @ 0s3
                    POP SUBFRAME for subframe_var_count=1
                POP SUBFRAME for subframe_var_count=1
                READ sum PRESENT @ 0s3
                REUSE WRITE val @ 0s1
                READ val PRESENT @ 0s1
            POP SUBFRAME elif subframe_var_count=1
        POP SUBFRAME while subframe_var_count=0
    POP SUBFRAME cond subframe_var_count=1
BLOCK s subframe_var_count=4 max_subframe_depth=6

ALLOCATING RELATIVE (PASS-1) LOCALS FOR begin BLOCK
    ADD FOR ABSENT s @ 0u0
    PUSH SUBFRAME cond_block
        READ nonesuch ABSENT @ 0s0
        ADD DEFINE val @ 0s1
        PUSH SUBFRAME for
            ADD DEFINE idx @ 0s2
            READ idx PRESENT @ 0s2
            READ idx PRESENT @ 0s2
            REUSE WRITE idx @ 0s2
            READ idx PRESENT @ 0s2
            PUSH SUBFRAME if_block
                PUSH SUBFRAME for
                    ADD FOR-BIND k @ 0s4
                    READ k PRESENT @ 0s4
                POP SUBFRAME for subframe_var_count=1
            POP SUBFRAME if subframe_var_count=0
            READ idx PRESENT @ 0s2
            PUSH SUBFRAME elif_block
                PUSH SUBFRAME for
                    ADD FOR-BIND k @ 0s4
                    ADD FOR-BIND v @ 1s4
                    READ k PRESENT @ 0s4
                    READ v PRESENT @ 1s4
                POP SUBFRAME for subframe_var_count=2
            POP SUBFRAME elif subframe_var_count=0
            READ idx PRESENT @ 0s2
            PUSH SUBFRAME elif_block
                ADD DEFINE sum @ 0s3
                PUSH SUBFRAME for
                    ADD DEFINE i @ 0s4
                    READ i PRESENT @ 0s4
                    READ i PRESENT @ 0s4
                    REUSE WRITE i @ 0s4
                    PUSH SUBFRAME for
                        ADD DEFINE j @ 0s5
                        READ j PRESENT @ 0s5
                        READ j PRESENT @ 0s5
                        REUSE WRITE j @ 0s5
                        READ sum PRESENT @ 0s3
                        READ i PRESENT @ 0s4
                        READ j PRESENT @ 0s5
                        REUSE WRITE sum @ 0s3
                    POP SUBFRAME for subframe_var_count=1
                POP SUBFRAME for subframe_var_count=1
                READ sum PRESENT @ 0s3
                REUSE WRITE val @ 0s1
                READ val PRESENT @ 0s1
            POP SUBFRAME elif subframe_var_count=1
        POP SUBFRAME for subframe_var_count=1
    POP SUBFRAME cond subframe_var_count=1
BLOCK begin subframe_var_count=1 max_subframe_depth=6

ALLOCATING RELATIVE (PASS-1) LOCALS FOR MAIN BLOCK
    ADD FOR ABSENT s @ 0u0
    PUSH SUBFRAME cond_block
        READ nonesuch ABSENT @ 0s0
        ADD DEFINE val @ 0s1
        PUSH SUBFRAME while_block
            PUSH SUBFRAME if_block
                PUSH SUBFRAME for
                    ADD FOR-BIND k @ 0s4
                    ADD FOR-BIND v @ 1s4
                    READ v PRESENT @ 1s4
                    REUSE WRITE val @ 0s1
                    READ val PRESENT @ 0s1
                POP SUBFRAME for subframe_var_count=2
            POP SUBFRAME if subframe_var_count=0
            PUSH SUBFRAME elif_block
                PUSH SUBFRAME for
                    ADD FOR-BIND k @ 0s4
                    READ k PRESENT @ 0s4
                POP SUBFRAME for subframe_var_count=1
            POP SUBFRAME elif subframe_var_count=0
            PUSH SUBFRAME elif_block
                PUSH SUBFRAME for
                    ADD FOR-BIND k @ 0s4
                    ADD FOR-BIND v @ 1s4
                    READ k PRESENT @ 0s4
                    READ v PRESENT @ 1s4
                POP SUBFRAME for subframe_var_count=2
            POP SUBFRAME elif subframe_var_count=0
            PUSH SUBFRAME elif_block
                ADD DEFINE sum @ 0s3
                PUSH SUBFRAME for
                    ADD DEFINE i @ 0s4
                    READ i PRESENT @ 0s4
                    READ i PRESENT @ 0s4
                    REUSE WRITE i @ 0s4
                    PUSH SUBFRAME for
                        ADD DEFINE j @ 0s5
                        READ j PRESENT @ 0s5
                        READ j PRESENT @ 0s5
                        REUSE WRITE j @ 0s5
                        READ sum PRESENT @ 0s3
                        READ i PRESENT @ 0s4
                        READ j PRESENT @ 0s5
                        REUSE WRITE sum @ 0s3
                    POP SUBFRAME for subframe_var_count=1
                POP SUBFRAME for subframe_var_count=1
                READ sum PRESENT @ 0s3
                REUSE WRITE val @ 0s1
                READ val PRESENT @ 0s1
            POP SUBFRAME elif subframe_var_count=1
        POP SUBFRAME while subframe_var_count=0
    POP SUBFRAME cond subframe_var_count=1
BLOCK main_block subframe_var_count=1 max_subframe_depth=6

ALLOCATING RELATIVE (PASS-1) LOCALS FOR end BLOCK
    ADD FOR ABSENT s @ 0u0
    PUSH SUBFRAME cond_block
        READ nonesuch ABSENT @ 0s0
        ADD DEFINE val @ 0s1
        PUSH SUBFRAME for
            ADD DEFINE idx @ 0s2
            READ idx PRESENT @ 0s2
            READ idx PRESENT @ 0s2
            REUSE WRITE idx @ 0s2
            READ idx PRESENT @ 0s2
            PUSH SUBFRAME if_block
                PUSH SUBFRAME for
                    ADD FOR-BIND k @ 0s4
                    READ k PRESENT @ 0s4
                POP SUBFRAME for subframe_var_count=1
            POP SUBFRAME if subframe_var_count=0
            READ idx PRESENT @ 0s2
            PUSH SUBFRAME elif_block
                PUSH SUBFRAME for
                    ADD FOR-BIND k @ 0s4
                    ADD FOR-BIND v @ 1s4
                    READ k PRESENT @ 0s4
                    READ v PRESENT @ 1s4
                POP SUBFRAME for subframe_var_count=2
            POP SUBFRAME elif subframe_var_count=0
            READ idx PRESENT @ 0s2
            PUSH SUBFRAME elif_block
                ADD DEFINE sum @ 0s3
                PUSH SUBFRAME for
                    ADD DEFINE i @ 0s4
                    READ i PRESENT @ 0s4
                    READ i PRESENT @ 0s4
                    REUSE WRITE i @ 0s4
                    PUSH SUBFRAME for
                        ADD DEFINE j @ 0s5
                        READ j PRESENT @ 0s5
                        READ j PRESENT @ 0s5
                        REUSE WRITE j @ 0s5
                        READ sum PRESENT @ 0s3
                        READ i PRESENT @ 0s4
                        READ j PRESENT @ 0s5
                        REUSE WRITE sum @ 0s3
                    POP SUBFRAME for subframe_var_count=1
                POP SUBFRAME for subframe_var_count=1
                READ sum PRESENT @ 0s3
                REUSE WRITE val @ 0s1
                READ val PRESENT @ 0s1
            POP SUBFRAME elif subframe_var_count=1
        POP SUBFRAME for subframe_var_count=1
    POP SUBFRAME cond subframe_var_count=1
BLOCK end subframe_var_count=1 max_subframe_depth=6

ALLOCATING ABSOLUTE (PASS-2) LOCALS FOR DEFINITION BLOCK [f]
SUBFRAME [f] var_count_below=0 var_count_at=4 max_var_depth_so_far=4 subframe_depth=0
    NODE a 1s0 (0:0) -> 1
    NODE b 2s0 (0:0) -> 2
    NODE c 3s0 (0:0) -> 3
    SUBFRAME [cond_block] var_count_below=4 var_count_at=1 max_var_depth_so_far=5 subframe_depth=1
        NODE val 0s1 (0:0,1:4) -> 4
        NODE nonesuch 0s0 (0:0,1:4) -> 0
        SUBFRAME [while_block] var_count_below=5 var_count_at=0 max_var_depth_so_far=5 subframe_depth=2
            SUBFRAME [if_block] var_count_below=5 var_count_at=0 max_var_depth_so_far=5 subframe_depth=3
                SUBFRAME [for] var_count_below=5 var_count_at=2 max_var_depth_so_far=7 subframe_depth=4
                    NODE k 0s4 (0:0,1:4,2:5,3:5,4:5) -> 5
                    NODE v 1s4 (0:0,1:4,2:5,3:5,4:5) -> 6
                    NODE val 0s1 (0:0,1:4,2:5,3:5,4:5) -> 4
                    NODE v 1s4 (0:0,1:4,2:5,3:5,4:5) -> 6
                    NODE a 1s0 (0:0,1:4,2:5,3:5,4:5) -> 1
                    NODE b 2s0 (0:0,1:4,2:5,3:5,4:5) -> 2
                    NODE c 3s0 (0:0,1:4,2:5,3:5,4:5) -> 3
                    NODE val 0s1 (0:0,1:4,2:5,3:5,4:5) -> 4
            SUBFRAME [elif_block] var_count_below=5 var_count_at=0 max_var_depth_so_far=7 subframe_depth=3
                SUBFRAME [for] var_count_below=5 var_count_at=1 max_var_depth_so_far=7 subframe_depth=4
                    NODE k 0s4 (0:0,1:4,2:5,3:5,4:5) -> 5
                    NODE k 0s4 (0:0,1:4,2:5,3:5,4:5) -> 5
            SUBFRAME [elif_block] var_count_below=5 var_count_at=0 max_var_depth_so_far=7 subframe_depth=3
                SUBFRAME [for] var_count_below=5 var_count_at=2 max_var_depth_so_far=7 subframe_depth=4
                    NODE k 0s4 (0:0,1:4,2:5,3:5,4:5) -> 5
                    NODE v 1s4 (0:0,1:4,2:5,3:5,4:5) -> 6
                    NODE k 0s4 (0:0,1:4,2:5,3:5,4:5) -> 5
                    NODE v 1s4 (0:0,1:4,2:5,3:5,4:5) -> 6
            SUBFRAME [elif_block] var_count_below=5 var_count_at=1 max_var_depth_so_far=7 subframe_depth=3
                NODE sum 0s3 (0:0,1:4,2:5,3:5) -> 5
                SUBFRAME [for] var_count_below=6 var_count_at=1 max_var_depth_so_far=7 subframe_depth=4
                    NODE i 0s4 (0:0,1:4,2:5,3:5,4:6) -> 6
                    NODE i 0s4 (0:0,1:4,2:5,3:5,4:6) -> 6
                    NODE i 0s4 (0:0,1:4,2:5,3:5,4:6) -> 6
                    NODE i 0s4 (0:0,1:4,2:5,3:5,4:6) -> 6
                    SUBFRAME [for] var_count_below=7 var_count_at=1 max_var_depth_so_far=8 subframe_depth=5
                        NODE j 0s5 (0:0,1:4,2:5,3:5,4:6,5:7) -> 7
                        NODE j 0s5 (0:0,1:4,2:5,3:5,4:6,5:7) -> 7
                        NODE j 0s5 (0:0,1:4,2:5,3:5,4:6,5:7) -> 7
                        NODE j 0s5 (0:0,1:4,2:5,3:5,4:6,5:7) -> 7
                        NODE sum 0s3 (0:0,1:4,2:5,3:5,4:6,5:7) -> 5
                        NODE sum 0s3 (0:0,1:4,2:5,3:5,4:6,5:7) -> 5
                        NODE i 0s4 (0:0,1:4,2:5,3:5,4:6,5:7) -> 6
                        NODE j 0s5 (0:0,1:4,2:5,3:5,4:6,5:7) -> 7
                NODE val 0s1 (0:0,1:4,2:5,3:5) -> 4
                NODE sum 0s3 (0:0,1:4,2:5,3:5) -> 5
                NODE val 0s1 (0:0,1:4,2:5,3:5) -> 4

ALLOCATING ABSOLUTE (PASS-2) LOCALS FOR DEFINITION BLOCK [s]
SUBFRAME [s] var_count_below=0 var_count_at=4 max_var_depth_so_far=4 subframe_depth=0
    NODE a 1s0 (0:0) -> 1
    NODE b 2s0 (0:0) -> 2
    NODE c 3s0 (0:0) -> 3
    SUBFRAME [cond_block] var_count_below=4 var_count_at=1 max_var_depth_so_far=5 subframe_depth=1
        NODE val 0s1 (0:0,1:4) -> 4
        NODE nonesuch 0s0 (0:0,1:4) -> 0
        SUBFRAME [while_block] var_count_below=5 var_count_at=0 max_var_depth_so_far=5 subframe_depth=2
            SUBFRAME [if_block] var_count_below=5 var_count_at=0 max_var_depth_so_far=5 subframe_depth=3
                SUBFRAME [for] var_count_below=5 var_count_at=2 max_var_depth_so_far=7 subframe_depth=4
                    NODE k 0s4 (0:0,1:4,2:5,3:5,4:5) -> 5
                    NODE v 1s4 (0:0,1:4,2:5,3:5,4:5) -> 6
                    NODE val 0s1 (0:0,1:4,2:5,3:5,4:5) -> 4
                    NODE v 1s4 (0:0,1:4,2:5,3:5,4:5) -> 6
                    NODE a 1s0 (0:0,1:4,2:5,3:5,4:5) -> 1
                    NODE b 2s0 (0:0,1:4,2:5,3:5,4:5) -> 2
                    NODE c 3s0 (0:0,1:4,2:5,3:5,4:5) -> 3
                    NODE val 0s1 (0:0,1:4,2:5,3:5,4:5) -> 4
            SUBFRAME [elif_block] var_count_below=5 var_count_at=0 max_var_depth_so_far=7 subframe_depth=3
                SUBFRAME [for] var_count_below=5 var_count_at=1 max_var_depth_so_far=7 subframe_depth=4
                    NODE k 0s4 (0:0,1:4,2:5,3:5,4:5) -> 5
                    NODE k 0s4 (0:0,1:4,2:5,3:5,4:5) -> 5
            SUBFRAME [elif_block] var_count_below=5 var_count_at=0 max_var_depth_so_far=7 subframe_depth=3
                SUBFRAME [for] var_count_below=5 var_count_at=2 max_var_depth_so_far=7 subframe_depth=4
                    NODE k 0s4 (0:0,1:4,2:5,3:5,4:5) -> 5
                    NODE v 1s4 (0:0,1:4,2:5,3:5,4:5) -> 6
                    NODE k 0s4 (0:0,1:4,2:5,3:5,4:5) -> 5
                    NODE v 1s4 (0:0,1:4,2:5,3:5,4:5) -> 6
            SUBFRAME [elif_block] var_count_below=5 var_count_at=1 max_var_depth_so_far=7 subframe_depth=3
                NODE sum 0s3 (0:0,1:4,2:5,3:5) -> 5
                SUBFRAME [for] var_count_below=6 var_count_at=1 max_var_depth_so_far=7 subframe_depth=4
                    NODE i 0s4 (0:0,1:4,2:5,3:5,4:6) -> 6
                    NODE i 0s4 (0:0,1:4,2:5,3:5,4:6) -> 6
                    NODE i 0s4 (0:0,1:4,2:5,3:5,4:6) -> 6
                    NODE i 0s4 (0:0,1:4,2:5,3:5,4:6) -> 6
                    SUBFRAME [for] var_count_below=7 var_count_at=1 max_var_depth_so_far=8 subframe_depth=5
                        NODE j 0s5 (0:0,1:4,2:5,3:5,4:6,5:7) -> 7
                        NODE j 0s5 (0:0,1:4,2:5,3:5,4:6,5:7) -> 7
                        NODE j 0s5 (0:0,1:4,2:5,3:5,4:6,5:7) -> 7
                        NODE j 0s5 (0:0,1:4,2:5,3:5,4:6,5:7) -> 7
                        NODE sum 0s3 (0:0,1:4,2:5,3:5,4:6,5:7) -> 5
                        NODE sum 0s3 (0:0,1:4,2:5,3:5,4:6,5:7) -> 5
                        NODE i 0s4 (0:0,1:4,2:5,3:5,4:6,5:7) -> 6
                        NODE j 0s5 (0:0,1:4,2:5,3:5,4:6,5:7) -> 7
                NODE val 0s1 (0:0,1:4,2:5,3:5) -> 4
                NODE sum 0s3 (0:0,1:4,2:5,3:5) -> 5
                NODE val 0s1 (0:0,1:4,2:5,3:5) -> 4

ALLOCATING ABSOLUTE (PASS-2) LOCALS FOR DEFINITION BLOCK [begin]
SUBFRAME [begin] var_count_below=0 var_count_at=1 max_var_depth_so_far=1 subframe_depth=0
    SUBFRAME [cond_block] var_count_below=1 var_count_at=1 max_var_depth_so_far=2 subframe_depth=1
        NODE val 0s1 (0:0,1:1) -> 1
        NODE nonesuch 0s0 (0:0,1:1) -> 0
        SUBFRAME [for] var_count_below=2 var_count_at=1 max_var_depth_so_far=3 subframe_depth=2
            NODE idx 0s2 (0:0,1:1,2:2) -> 2
            NODE idx 0s2 (0:0,1:1,2:2) -> 2
            NODE idx 0s2 (0:0,1:1,2:2) -> 2
            NODE idx 0s2 (0:0,1:1,2:2) -> 2
            NODE idx 0s2 (0:0,1:1,2:2) -> 2
            SUBFRAME [if_block] var_count_below=3 var_count_at=0 max_var_depth_so_far=3 subframe_depth=3
                SUBFRAME [for] var_count_below=3 var_count_at=1 max_var_depth_so_far=4 subframe_depth=4
                    NODE k 0s4 (0:0,1:1,2:2,3:3,4:3) -> 3
                    NODE k 0s4 (0:0,1:1,2:2,3:3,4:3) -> 3
            NODE idx 0s2 (0:0,1:1,2:2) -> 2
            SUBFRAME [elif_block] var_count_below=3 var_count_at=0 max_var_depth_so_far=4 subframe_depth=3
                SUBFRAME [for] var_count_below=3 var_count_at=2 max_var_depth_so_far=5 subframe_depth=4
                    NODE k 0s4 (0:0,1:1,2:2,3:3,4:3) -> 3
                    NODE v 1s4 (0:0,1:1,2:2,3:3,4:3) -> 4
                    NODE k 0s4 (0:0,1:1,2:2,3:3,4:3) -> 3
                    NODE v 1s4 (0:0,1:1,2:2,3:3,4:3) -> 4
            NODE idx 0s2 (0:0,1:1,2:2) -> 2
            SUBFRAME [elif_block] var_count_below=3 var_count_at=1 max_var_depth_so_far=5 subframe_depth=3
                NODE sum 0s3 (0:0,1:1,2:2,3:3) -> 3
                SUBFRAME [for] var_count_below=4 var_count_at=1 max_var_depth_so_far=5 subframe_depth=4
                    NODE i 0s4 (0:0,1:1,2:2,3:3,4:4) -> 4
                    NODE i 0s4 (0:0,1:1,2:2,3:3,4:4) -> 4
                    NODE i 0s4 (0:0,1:1,2:2,3:3,4:4) -> 4
                    NODE i 0s4 (0:0,1:1,2:2,3:3,4:4) -> 4
                    SUBFRAME [for] var_count_below=5 var_count_at=1 max_var_depth_so_far=6 subframe_depth=5
                        NODE j 0s5 (0:0,1:1,2:2,3:3,4:4,5:5) -> 5
                        NODE j 0s5 (0:0,1:1,2:2,3:3,4:4,5:5) -> 5
                        NODE j 0s5 (0:0,1:1,2:2,3:3,4:4,5:5) -> 5
                        NODE j 0s5 (0:0,1:1,2:2,3:3,4:4,5:5) -> 5
                        NODE sum 0s3 (0:0,1:1,2:2,3:3,4:4,5:5) -> 3
                        NODE sum 0s3 (0:0,1:1,2:2,3:3,4:4,5:5) -> 3
                        NODE i 0s4 (0:0,1:1,2:2,3:3,4:4,5:5) -> 4
                        NODE j 0s5 (0:0,1:1,2:2,3:3,4:4,5:5) -> 5
                NODE val 0s1 (0:0,1:1,2:2,3:3) -> 1
                NODE sum 0s3 (0:0,1:1,2:2,3:3) -> 3
                NODE val 0s1 (0:0,1:1,2:2,3:3) -> 1

ALLOCATING ABSOLUTE (PASS-2) LOCALS FOR DEFINITION BLOCK [main_block]
SUBFRAME [main_block] var_count_below=0 var_count_at=1 max_var_depth_so_far=1 subframe_depth=0
    SUBFRAME [cond_block] var_count_below=1 var_count_at=1 max_var_depth_so_far=2 subframe_depth=1
        NODE val 0s1 (0:0,1:1) -> 1
        NODE nonesuch 0s0 (0:0,1:1) -> 0
        SUBFRAME [while_block] var_count_below=2 var_count_at=0 max_var_depth_so_far=2 subframe_depth=2
            SUBFRAME [if_block] var_count_below=2 var_count_at=0 max_var_depth_so_far=2 subframe_depth=3
                SUBFRAME [for] var_count_below=2 var_count_at=2 max_var_depth_so_far=4 subframe_depth=4
                    NODE k 0s4 (0:0,1:1,2:2,3:2,4:2) -> 2
                    NODE v 1s4 (0:0,1:1,2:2,3:2,4:2) -> 3
                    NODE val 0s1 (0:0,1:1,2:2,3:2,4:2) -> 1
                    NODE v 1s4 (0:0,1:1,2:2,3:2,4:2) -> 3
                    NODE val 0s1 (0:0,1:1,2:2,3:2,4:2) -> 1
            SUBFRAME [elif_block] var_count_below=2 var_count_at=0 max_var_depth_so_far=4 subframe_depth=3
                SUBFRAME [for] var_count_below=2 var_count_at=1 max_var_depth_so_far=4 subframe_depth=4
                    NODE k 0s4 (0:0,1:1,2:2,3:2,4:2) -> 2
                    NODE k 0s4 (0:0,1:1,2:2,3:2,4:2) -> 2
            SUBFRAME [elif_block] var_count_below=2 var_count_at=0 max_var_depth_so_far=4 subframe_depth=3
                SUBFRAME [for] var_count_below=2 var_count_at=2 max_var_depth_so_far=4 subframe_depth=4
                    NODE k 0s4 (0:0,1:1,2:2,3:2,4:2) -> 2
                    NODE v 1s4 (0:0,1:1,2:2,3:2,4:2) -> 3
                    NODE k 0s4 (0:0,1:1,2:2,3:2,4:2) -> 2
                    NODE v 1s4 (0:0,1:1,2:2,3:2,4:2) -> 3
            SUBFRAME [elif_block] var_count_below=2 var_count_at=1 max_var_depth_so_far=4 subframe_depth=3
                NODE sum 0s3 (0:0,1:1,2:2,3:2) -> 2
                SUBFRAME [for] var_count_below=3 var_count_at=1 max_var_depth_so_far=4 subframe_depth=4
                    NODE i 0s4 (0:0,1:1,2:2,3:2,4:3) -> 3
                    NODE i 0s4 (0:0,1:1,2:2,3:2,4:3) -> 3
                    NODE i 0s4 (0:0,1:1,2:2,3:2,4:3) -> 3
                    NODE i 0s4 (0:0,1:1,2:2,3:2,4:3) -> 3
                    SUBFRAME [for] var_count_below=4 var_count_at=1 max_var_depth_so_far=5 subframe_depth=5
                        NODE j 0s5 (0:0,1:1,2:2,3:2,4:3,5:4) -> 4
                        NODE j 0s5 (0:0,1:1,2:2,3:2,4:3,5:4) -> 4
                        NODE j 0s5 (0:0,1:1,2:2,3:2,4:3,5:4) -> 4
                        NODE j 0s5 (0:0,1:1,2:2,3:2,4:3,5:4) -> 4
                        NODE sum 0s3 (0:0,1:1,2:2,3:2,4:3,5:4) -> 2
                        NODE sum 0s3 (0:0,1:1,2:2,3:2,4:3,5:4) -> 2
                        NODE i 0s4 (0:0,1:1,2:2,3:2,4:3,5:4) -> 3
                        NODE j 0s5 (0:0,1:1,2:2,3:2,4:3,5:4) -> 4
                NODE val 0s1 (0:0,1:1,2:2,3:2) -> 1
                NODE sum 0s3 (0:0,1:1,2:2,3:2) -> 2
                NODE val 0s1 (0:0,1:1,2:2,3:2) -> 1

ALLOCATING ABSOLUTE (PASS-2) LOCALS FOR DEFINITION BLOCK [end]
SUBFRAME [end] var_count_below=0 var_count_at=1 max_var_depth_so_far=1 subframe_depth=0
    SUBFRAME [cond_block] var_count_below=1 var_count_at=1 max_var_depth_so_far=2 subframe_depth=1
        NODE val 0s1 (0:0,1:1) -> 1
        NODE nonesuch 0s0 (0:0,1:1) -> 0
        SUBFRAME [for] var_count_below=2 var_count_at=1 max_var_depth_so_far=3 subframe_depth=2
            NODE idx 0s2 (0:0,1:1,2:2) -> 2
            NODE idx 0s2 (0:0,1:1,2:2) -> 2
            NODE idx 0s2 (0:0,1:1,2:2) -> 2
            NODE idx 0s2 (0:0,1:1,2:2) -> 2
            NODE idx 0s2 (0:0,1:1,2:2) -> 2
            SUBFRAME [if_block] var_count_below=3 var_count_at=0 max_var_depth_so_far=3 subframe_depth=3
                SUBFRAME [for] var_count_below=3 var_count_at=1 max_var_depth_so_far=4 subframe_depth=4
                    NODE k 0s4 (0:0,1:1,2:2,3:3,4:3) -> 3
                    NODE k 0s4 (0:0,1:1,2:2,3:3,4:3) -> 3
            NODE idx 0s2 (0:0,1:1,2:2) -> 2
            SUBFRAME [elif_block] var_count_below=3 var_count_at=0 max_var_depth_so_far=4 subframe_depth=3
                SUBFRAME [for] var_count_below=3 var_count_at=2 max_var_depth_so_far=5 subframe_depth=4
                    NODE k 0s4 (0:0,1:1,2:2,3:3,4:3) -> 3
                    NODE v 1s4 (0:0,1:1,2:2,3:3,4:3) -> 4
                    NODE k 0s4 (0:0,1:1,2:2,3:3,4:3) -> 3
                    NODE v 1s4 (0:0,1:1,2:2,3:3,4:3) -> 4
            NODE idx 0s2 (0:0,1:1,2:2) -> 2
            SUBFRAME [elif_block] var_count_below=3 var_count_at=1 max_var_depth_so_far=5 subframe_depth=3
                NODE sum 0s3 (0:0,1:1,2:2,3:3) -> 3
                SUBFRAME [for] var_count_below=4 var_count_at=1 max_var_depth_so_far=5 subframe_depth=4
                    NODE i 0s4 (0:0,1:1,2:2,3:3,4:4) -> 4
                    NODE i 0s4 (0:0,1:1,2:2,3:3,4:4) -> 4
                    NODE i 0s4 (0:0,1:1,2:2,3:3,4:4) -> 4
                    NODE i 0s4 (0:0,1:1,2:2,3:3,4:4) -> 4
                    SUBFRAME [for] var_count_below=5 var_count_at=1 max_var_depth_so_far=6 subframe_depth=5
                        NODE j 0s5 (0:0,1:1,2:2,3:3,4:4,5:5) -> 5
                        NODE j 0s5 (0:0,1:1,2:2,3:3,4:4,5:5) -> 5
                        NODE j 0s5 (0:0,1:1,2:2,3:3,4:4,5:5) -> 5
                        NODE j 0s5 (0:0,1:1,2:2,3:3,4:4,5:5) -> 5
                        NODE sum 0s3 (0:0,1:1,2:2,3:3,4:4,5:5) -> 3
                        NODE sum 0s3 (0:0,1:1,2:2,3:3,4:4,5:5) -> 3
                        NODE i 0s4 (0:0,1:1,2:2,3:3,4:4,5:5) -> 4
                        NODE j 0s5 (0:0,1:1,2:2,3:3,4:4,5:5) -> 5
                NODE val 0s1 (0:0,1:1,2:2,3:3) -> 1
                NODE sum 0s3 (0:0,1:1,2:2,3:3) -> 3
                NODE val 0s1 (0:0,1:1,2:2,3:3) -> 1

BLOCKED AST:

FUNCTION DEFINITION:
text="f", type=FUNC_DEF: subframe_var_count=4 max_subframe_depth=6 max_var_depth=8
    text="f", type=NON_SIGIL_NAME:
        text="a", type=UNTYPED_PARAMETER_DEFINITION. vardef_subframe_relative_index=1 vardef_subframe_index=0 vardef_frame_relative_index=1
        text="b", type=UNTYPED_PARAMETER_DEFINITION. vardef_subframe_relative_index=2 vardef_subframe_index=0 vardef_frame_relative_index=2
        text="c", type=UNTYPED_PARAMETER_DEFINITION. vardef_subframe_relative_index=3 vardef_subframe_index=0 vardef_frame_relative_index=3
    text="func_block", type=STATEMENT_BLOCK:
        text="=", type=OOSVAR_ASSIGNMENT:
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="v", type=STRING_LITERAL.
                text="NR", type=CONTEXT_VARIABLE.
            text="*", type=OPERATOR:
                text="NR", type=CONTEXT_VARIABLE.
                text="1000", type=NUMERIC_LITERAL.
        text="cond", type=CONDITIONAL_BLOCK:
            text="true", type=BOOLEAN_LITERAL.
            text="cond_block", type=STATEMENT_BLOCK: subframe_var_count=1
                text="var", type=UNTYPED_LOCAL_DEFINITION:
                    text="val", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=1 vardef_frame_relative_index=4
                    text="nonesuch", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=0 vardef_frame_relative_index=0
                text="while", type=WHILE:
                    text="==", type=OPERATOR:
                        text="1", type=NUMERIC_LITERAL.
                        text="1", type=NUMERIC_LITERAL.
                    text="while_block", type=STATEMENT_BLOCK: subframe_var_count=0
                        text="if_head", type=IF_HEAD:
                            text="if", type=IF_ITEM:
                                text="==", type=OPERATOR:
                                    text="NR", type=CONTEXT_VARIABLE.
                                    text="1", type=NUMERIC_LITERAL.
                                text="if_block", type=STATEMENT_BLOCK: subframe_var_count=0
                                    text="for", type=FOR_SREC: subframe_var_count=2
                                        text="variables", type=FOR_VARIABLES:
                                            text="k", type=UNTYPED_LOCAL_DEFINITION. vardef_subframe_relative_index=0 vardef_subframe_index=4 vardef_frame_relative_index=5
                                            text="v", type=UNTYPED_LOCAL_DEFINITION. vardef_subframe_relative_index=1 vardef_subframe_index=4 vardef_frame_relative_index=6
                                        text="for_full_srec_block", type=STATEMENT_BLOCK:
                                            text="=", type=NONINDEXED_LOCAL_ASSIGNMENT:
                                                text="val", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=1 vardef_frame_relative_index=4
                                                text=".", type=OPERATOR:
                                                    text=".", type=OPERATOR:
                                                        text=".", type=OPERATOR:
                                                            text=".", type=OPERATOR:
                                                                text=".", type=OPERATOR:
                                                                    text=".", type=OPERATOR:
                                                                        text="v", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=1 vardef_subframe_index=4 vardef_frame_relative_index=6
                                                                        text=":", type=STRING_LITERAL.
                                                                    text="a", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=1 vardef_subframe_index=0 vardef_frame_relative_index=1
                                                                text=":", type=STRING_LITERAL.
                                                            text="b", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=2 vardef_subframe_index=0 vardef_frame_relative_index=2
                                                        text=":", type=STRING_LITERAL.
                                                    text="c", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=3 vardef_subframe_index=0 vardef_frame_relative_index=3
                                            text="print", type=PRINT:
                                                text=".", type=OPERATOR:
                                                    text="f:1:val:", type=STRING_LITERAL.
                                                    text="val", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=1 vardef_frame_relative_index=4
                                                text=">", type=FILE_WRITE:
                                                    text="stdout", type=STDOUT:
                            text="elif", type=IF_ITEM:
                                text="==", type=OPERATOR:
                                    text="NR", type=CONTEXT_VARIABLE.
                                    text="2", type=NUMERIC_LITERAL.
                                text="elif_block", type=STATEMENT_BLOCK: subframe_var_count=0
                                    text="for", type=FOR_OOSVAR_KEY_ONLY: subframe_var_count=1
                                        text="k", type=UNTYPED_LOCAL_DEFINITION. vardef_subframe_relative_index=0 vardef_subframe_index=4 vardef_frame_relative_index=5
                                        text="oosvar_keylist", type=OOSVAR_KEYLIST:
                                            text="v", type=STRING_LITERAL.
                                        text="for_loop_oosvar_block", type=STATEMENT_BLOCK:
                                            text="print", type=PRINT:
                                                text=".", type=OPERATOR:
                                                    text="f:2:k:", type=STRING_LITERAL.
                                                    text="k", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=4 vardef_frame_relative_index=5
                                                text=">", type=FILE_WRITE:
                                                    text="stdout", type=STDOUT:
                            text="elif", type=IF_ITEM:
                                text="==", type=OPERATOR:
                                    text="NR", type=CONTEXT_VARIABLE.
                                    text="3", type=NUMERIC_LITERAL.
                                text="elif_block", type=STATEMENT_BLOCK: subframe_var_count=0
                                    text="for", type=FOR_OOSVAR: subframe_var_count=2
                                        text="key_and_value_variables", type=FOR_VARIABLES:
                                            text="key_variables", type=FOR_VARIABLES:
                                                text="k", type=UNTYPED_LOCAL_DEFINITION. vardef_subframe_relative_index=0 vardef_subframe_index=4 vardef_frame_relative_index=5
                                            text="v", type=UNTYPED_LOCAL_DEFINITION. vardef_subframe_relative_index=1 vardef_subframe_index=4 vardef_frame_relative_index=6
                                        text="oosvar_keylist", type=OOSVAR_KEYLIST:
                                            text="v", type=STRING_LITERAL.
                                        text="for_loop_oosvar_block", type=STATEMENT_BLOCK:
                                            text="print", type=PRINT:
                                                text=".", type=OPERATOR:
                                                    text=".", type=OPERATOR:
                                                        text=".", type=OPERATOR:
                                                            text="f:3:k:", type=STRING_LITERAL.
                                                            text="k", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=4 vardef_frame_relative_index=5
                                                        text="v:", type=STRING_LITERAL.
                                                    text="v", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=1 vardef_subframe_index=4 vardef_frame_relative_index=6
                                                text=">", type=FILE_WRITE:
                                                    text="stdout", type=STDOUT:
                            text="elif", type=IF_ITEM:
                                text="==", type=OPERATOR:
                                    text="NR", type=CONTEXT_VARIABLE.
                                    text="4", type=NUMERIC_LITERAL.
                                text="elif_block", type=STATEMENT_BLOCK: subframe_var_count=1
                                    text="var", type=UNTYPED_LOCAL_DEFINITION:
                                        text="sum", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=3 vardef_frame_relative_index=5
                                        text="0", type=NUMERIC_LITERAL.
                                    text="for", type=TRIPLE_FOR: subframe_var_count=1
                                        text="triple_for_start_statements", type=STATEMENT_LIST:
                                            text="var", type=UNTYPED_LOCAL_DEFINITION:
                                                text="i", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=4 vardef_frame_relative_index=6
                                                text="1", type=NUMERIC_LITERAL.
                                        text="triple_for_continuation_statements", type=STATEMENT_LIST:
                                            text="<=", type=OPERATOR:
                                                text="i", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=4 vardef_frame_relative_index=6
                                                text="10", type=NUMERIC_LITERAL.
                                        text="triple_for_update_statements", type=STATEMENT_LIST:
                                            text="=", type=NONINDEXED_LOCAL_ASSIGNMENT:
                                                text="i", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=4 vardef_frame_relative_index=6
                                                text="+", type=OPERATOR:
                                                    text="i", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=4 vardef_frame_relative_index=6
                                                    text="1", type=NUMERIC_LITERAL.
                                        text="triple_for_block", type=STATEMENT_BLOCK:
                                            text="for", type=TRIPLE_FOR: subframe_var_count=1
                                                text="triple_for_start_statements", type=STATEMENT_LIST:
                                                    text="var", type=UNTYPED_LOCAL_DEFINITION:
                                                        text="j", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=5 vardef_frame_relative_index=7
                                                        text="1", type=NUMERIC_LITERAL.
                                                text="triple_for_continuation_statements", type=STATEMENT_LIST:
                                                    text="<=", type=OPERATOR:
                                                        text="j", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=5 vardef_frame_relative_index=7
                                                        text="10", type=NUMERIC_LITERAL.
                                                text="triple_for_update_statements", type=STATEMENT_LIST:
                                                    text="=", type=NONINDEXED_LOCAL_ASSIGNMENT:
                                                        text="j", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=5 vardef_frame_relative_index=7
                                                        text="+", type=OPERATOR:
                                                            text="j", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=5 vardef_frame_relative_index=7
                                                            text="1", type=NUMERIC_LITERAL.
                                                text="triple_for_block", type=STATEMENT_BLOCK:
                                                    text="=", type=NONINDEXED_LOCAL_ASSIGNMENT:
                                                        text="sum", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=3 vardef_frame_relative_index=5
                                                        text="+", type=OPERATOR:
                                                            text="sum", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=3 vardef_frame_relative_index=5
                                                            text="*", type=OPERATOR:
                                                                text="i", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=4 vardef_frame_relative_index=6
                                                                text="j", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=5 vardef_frame_relative_index=7
                                    text="=", type=NONINDEXED_LOCAL_ASSIGNMENT:
                                        text="val", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=1 vardef_frame_relative_index=4
                                        text="sum", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=3 vardef_frame_relative_index=5
                                    text="print", type=PRINT:
                                        text=".", type=OPERATOR:
                                            text="f:val:", type=STRING_LITERAL.
                                            text="val", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=1 vardef_frame_relative_index=4
                                        text=">", type=FILE_WRITE:
                                            text="stdout", type=STDOUT:
                        text="break", type=BREAK.

SUBROUTINE DEFINITION:
text="s", type=SUBR_DEF: subframe_var_count=4 max_subframe_depth=6 max_var_depth=8
    text="s", type=NON_SIGIL_NAME:
        text="a", type=UNTYPED_PARAMETER_DEFINITION. vardef_subframe_relative_index=1 vardef_subframe_index=0 vardef_frame_relative_index=1
        text="b", type=UNTYPED_PARAMETER_DEFINITION. vardef_subframe_relative_index=2 vardef_subframe_index=0 vardef_frame_relative_index=2
        text="c", type=UNTYPED_PARAMETER_DEFINITION. vardef_subframe_relative_index=3 vardef_subframe_index=0 vardef_frame_relative_index=3
    text="subr_block", type=STATEMENT_BLOCK:
        text="=", type=OOSVAR_ASSIGNMENT:
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="v", type=STRING_LITERAL.
                text="NR", type=CONTEXT_VARIABLE.
            text="*", type=OPERATOR:
                text="NR", type=CONTEXT_VARIABLE.
                text="2000", type=NUMERIC_LITERAL.
        text="cond", type=CONDITIONAL_BLOCK:
            text="true", type=BOOLEAN_LITERAL.
            text="cond_block", type=STATEMENT_BLOCK: subframe_var_count=1
                text="var", type=UNTYPED_LOCAL_DEFINITION:
                    text="val", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=1 vardef_frame_relative_index=4
                    text="nonesuch", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=0 vardef_frame_relative_index=0
                text="while", type=WHILE:
                    text="==", type=OPERATOR:
                        text="1", type=NUMERIC_LITERAL.
                        text="1", type=NUMERIC_LITERAL.
                    text="while_block", type=STATEMENT_BLOCK: subframe_var_count=0
                        text="if_head", type=IF_HEAD:
                            text="if", type=IF_ITEM:
                                text="==", type=OPERATOR:
                                    text="NR", type=CONTEXT_VARIABLE.
                                    text="1", type=NUMERIC_LITERAL.
                                text="if_block", type=STATEMENT_BLOCK: subframe_var_count=0
                                    text="for", type=FOR_SREC: subframe_var_count=2
                                        text="variables", type=FOR_VARIABLES:
                                            text="k", type=UNTYPED_LOCAL_DEFINITION. vardef_subframe_relative_index=0 vardef_subframe_index=4 vardef_frame_relative_index=5
                                            text="v", type=UNTYPED_LOCAL_DEFINITION. vardef_subframe_relative_index=1 vardef_subframe_index=4 vardef_frame_relative_index=6
                                        text="for_full_srec_block", type=STATEMENT_BLOCK:
                                            text="=", type=NONINDEXED_LOCAL_ASSIGNMENT:
                                                text="val", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=1 vardef_frame_relative_index=4
                                                text=".", type=OPERATOR:
                                                    text=".", type=OPERATOR:
                                                        text=".", type=OPERATOR:
                                                            text=".", type=OPERATOR:
                                                                text=".", type=OPERATOR:
                                                                    text=".", type=OPERATOR:
                                                                        text="v", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=1 vardef_subframe_index=4 vardef_frame_relative_index=6
                                                                        text=":", type=STRING_LITERAL.
                                                                    text="a", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=1 vardef_subframe_index=0 vardef_frame_relative_index=1
                                                                text=":", type=STRING_LITERAL.
                                                            text="b", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=2 vardef_subframe_index=0 vardef_frame_relative_index=2
                                                        text=":", type=STRING_LITERAL.
                                                    text="c", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=3 vardef_subframe_index=0 vardef_frame_relative_index=3
                                            text="print", type=PRINT:
                                                text=".", type=OPERATOR:
                                                    text="s:1:val:", type=STRING_LITERAL.
                                                    text="val", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=1 vardef_frame_relative_index=4
                                                text=">", type=FILE_WRITE:
                                                    text="stdout", type=STDOUT:
                            text="elif", type=IF_ITEM:
                                text="==", type=OPERATOR:
                                    text="NR", type=CONTEXT_VARIABLE.
                                    text="2", type=NUMERIC_LITERAL.
                                text="elif_block", type=STATEMENT_BLOCK: subframe_var_count=0
                                    text="for", type=FOR_OOSVAR_KEY_ONLY: subframe_var_count=1
                                        text="k", type=UNTYPED_LOCAL_DEFINITION. vardef_subframe_relative_index=0 vardef_subframe_index=4 vardef_frame_relative_index=5
                                        text="oosvar_keylist", type=OOSVAR_KEYLIST:
                                            text="v", type=STRING_LITERAL.
                                        text="for_loop_oosvar_block", type=STATEMENT_BLOCK:
                                            text="print", type=PRINT:
                                                text=".", type=OPERATOR:
                                                    text="s:2:k:", type=STRING_LITERAL.
                                                    text="k", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=4 vardef_frame_relative_index=5
                                                text=">", type=FILE_WRITE:
                                                    text="stdout", type=STDOUT:
                            text="elif", type=IF_ITEM:
                                text="==", type=OPERATOR:
                                    text="NR", type=CONTEXT_VARIABLE.
                                    text="3", type=NUMERIC_LITERAL.
                                text="elif_block", type=STATEMENT_BLOCK: subframe_var_count=0
                                    text="for", type=FOR_OOSVAR: subframe_var_count=2
                                        text="key_and_value_variables", type=FOR_VARIABLES:
                                            text="key_variables", type=FOR_VARIABLES:
                                                text="k", type=UNTYPED_LOCAL_DEFINITION. vardef_subframe_relative_index=0 vardef_subframe_index=4 vardef_frame_relative_index=5
                                            text="v", type=UNTYPED_LOCAL_DEFINITION. vardef_subframe_relative_index=1 vardef_subframe_index=4 vardef_frame_relative_index=6
                                        text="oosvar_keylist", type=OOSVAR_KEYLIST:
                                            text="v", type=STRING_LITERAL.
                                        text="for_loop_oosvar_block", type=STATEMENT_BLOCK:
                                            text="print", type=PRINT:
                                                text=".", type=OPERATOR:
                                                    text=".", type=OPERATOR:
                                                        text=".", type=OPERATOR:
                                                            text="s:3:k:", type=STRING_LITERAL.
                                                            text="k", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=4 vardef_frame_relative_index=5
                                                        text="v:", type=STRING_LITERAL.
                                                    text="v", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=1 vardef_subframe_index=4 vardef_frame_relative_index=6
                                                text=">", type=FILE_WRITE:
                                                    text="stdout", type=STDOUT:
                            text="elif", type=IF_ITEM:
                                text="==", type=OPERATOR:
                                    text="NR", type=CONTEXT_VARIABLE.
                                    text="4", type=NUMERIC_LITERAL.
                                text="elif_block", type=STATEMENT_BLOCK: subframe_var_count=1
                                    text="var", type=UNTYPED_LOCAL_DEFINITION:
                                        text="sum", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=3 vardef_frame_relative_index=5
                                        text="0", type=NUMERIC_LITERAL.
                                    text="for", type=TRIPLE_FOR: subframe_var_count=1
                                        text="triple_for_start_statements", type=STATEMENT_LIST:
                                            text="var", type=UNTYPED_LOCAL_DEFINITION:
                                                text="i", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=4 vardef_frame_relative_index=6
                                                text="1", type=NUMERIC_LITERAL.
                                        text="triple_for_continuation_statements", type=STATEMENT_LIST:
                                            text="<=", type=OPERATOR:
                                                text="i", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=4 vardef_frame_relative_index=6
                                                text="10", type=NUMERIC_LITERAL.
                                        text="triple_for_update_statements", type=STATEMENT_LIST:
                                            text="=", type=NONINDEXED_LOCAL_ASSIGNMENT:
                                                text="i", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=4 vardef_frame_relative_index=6
                                                text="+", type=OPERATOR:
                                                    text="i", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=4 vardef_frame_relative_index=6
                                                    text="1", type=NUMERIC_LITERAL.
                                        text="triple_for_block", type=STATEMENT_BLOCK:
                                            text="for", type=TRIPLE_FOR: subframe_var_count=1
                                                text="triple_for_start_statements", type=STATEMENT_LIST:
                                                    text="var", type=UNTYPED_LOCAL_DEFINITION:
                                                        text="j", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=5 vardef_frame_relative_index=7
                                                        text="1", type=NUMERIC_LITERAL.
                                                text="triple_for_continuation_statements", type=STATEMENT_LIST:
                                                    text="<=", type=OPERATOR:
                                                        text="j", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=5 vardef_frame_relative_index=7
                                                        text="10", type=NUMERIC_LITERAL.
                                                text="triple_for_update_statements", type=STATEMENT_LIST:
                                                    text="=", type=NONINDEXED_LOCAL_ASSIGNMENT:
                                                        text="j", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=5 vardef_frame_relative_index=7
                                                        text="+", type=OPERATOR:
                                                            text="j", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=5 vardef_frame_relative_index=7
                                                            text="1", type=NUMERIC_LITERAL.
                                                text="triple_for_block", type=STATEMENT_BLOCK:
                                                    text="=", type=NONINDEXED_LOCAL_ASSIGNMENT:
                                                        text="sum", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=3 vardef_frame_relative_index=5
                                                        text="+", type=OPERATOR:
                                                            text="sum", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=3 vardef_frame_relative_index=5
                                                            text="*", type=OPERATOR:
                                                                text="i", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=4 vardef_frame_relative_index=6
                                                                text="j", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=5 vardef_frame_relative_index=7
                                    text="=", type=NONINDEXED_LOCAL_ASSIGNMENT:
                                        text="val", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=1 vardef_frame_relative_index=4
                                        text="sum", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=3 vardef_frame_relative_index=5
                                    text="print", type=PRINT:
                                        text=".", type=OPERATOR:
                                            text="s:val:", type=STRING_LITERAL.
                                            text="val", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=1 vardef_frame_relative_index=4
                                        text=">", type=FILE_WRITE:
                                            text="stdout", type=STDOUT:
                        text="break", type=BREAK.

BEGIN-BLOCK:
text="begin", type=BEGIN: subframe_var_count=1 max_subframe_depth=6 max_var_depth=6
    text="begin_block", type=STATEMENT_BLOCK:
        text="print", type=PRINT:
            text="BEGIN", type=STRING_LITERAL.
            text=">", type=FILE_WRITE:
                text="stdout", type=STDOUT:
        text="=", type=OOSVAR_ASSIGNMENT:
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="v", type=STRING_LITERAL.
                text="0", type=NUMERIC_LITERAL.
            text="456", type=NUMERIC_LITERAL.
        text="cond", type=CONDITIONAL_BLOCK:
            text="true", type=BOOLEAN_LITERAL.
            text="cond_block", type=STATEMENT_BLOCK: subframe_var_count=1
                text="var", type=UNTYPED_LOCAL_DEFINITION:
                    text="val", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=1 vardef_frame_relative_index=1
                    text="nonesuch", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=0 vardef_frame_relative_index=0
                text="for", type=TRIPLE_FOR: subframe_var_count=1
                    text="triple_for_start_statements", type=STATEMENT_LIST:
                        text="var", type=UNTYPED_LOCAL_DEFINITION:
                            text="idx", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=2 vardef_frame_relative_index=2
                            text="1", type=NUMERIC_LITERAL.
                    text="triple_for_continuation_statements", type=STATEMENT_LIST:
                        text="<=", type=OPERATOR:
                            text="idx", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=2 vardef_frame_relative_index=2
                            text="4", type=NUMERIC_LITERAL.
                    text="triple_for_update_statements", type=STATEMENT_LIST:
                        text="=", type=NONINDEXED_LOCAL_ASSIGNMENT:
                            text="idx", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=2 vardef_frame_relative_index=2
                            text="+", type=OPERATOR:
                                text="idx", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=2 vardef_frame_relative_index=2
                                text="1", type=NUMERIC_LITERAL.
                    text="triple_for_block", type=STATEMENT_BLOCK:
                        text="if_head", type=IF_HEAD:
                            text="if", type=IF_ITEM:
                                text="==", type=OPERATOR:
                                    text="idx", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=2 vardef_frame_relative_index=2
                                    text="2", type=NUMERIC_LITERAL.
                                text="if_block", type=STATEMENT_BLOCK: subframe_var_count=0
                                    text="for", type=FOR_OOSVAR_KEY_ONLY: subframe_var_count=1
                                        text="k", type=UNTYPED_LOCAL_DEFINITION. vardef_subframe_relative_index=0 vardef_subframe_index=4 vardef_frame_relative_index=3
                                        text="oosvar_keylist", type=OOSVAR_KEYLIST:
                                            text="v", type=STRING_LITERAL.
                                        text="for_loop_oosvar_block", type=STATEMENT_BLOCK:
                                            text="print", type=PRINT:
                                                text=".", type=OPERATOR:
                                                    text="b:2:k:", type=STRING_LITERAL.
                                                    text="k", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=4 vardef_frame_relative_index=3
                                                text=">", type=FILE_WRITE:
                                                    text="stdout", type=STDOUT:
                            text="elif", type=IF_ITEM:
                                text="==", type=OPERATOR:
                                    text="idx", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=2 vardef_frame_relative_index=2
                                    text="3", type=NUMERIC_LITERAL.
                                text="elif_block", type=STATEMENT_BLOCK: subframe_var_count=0
                                    text="for", type=FOR_OOSVAR: subframe_var_count=2
                                        text="key_and_value_variables", type=FOR_VARIABLES:
                                            text="key_variables", type=FOR_VARIABLES:
                                                text="k", type=UNTYPED_LOCAL_DEFINITION. vardef_subframe_relative_index=0 vardef_subframe_index=4 vardef_frame_relative_index=3
                                            text="v", type=UNTYPED_LOCAL_DEFINITION. vardef_subframe_relative_index=1 vardef_subframe_index=4 vardef_frame_relative_index=4
                                        text="oosvar_keylist", type=OOSVAR_KEYLIST:
                                            text="v", type=STRING_LITERAL.
                                        text="for_loop_oosvar_block", type=STATEMENT_BLOCK:
                                            text="print", type=PRINT:
                                                text=".", type=OPERATOR:
                                                    text=".", type=OPERATOR:
                                                        text=".", type=OPERATOR:
                                                            text="b:3:k:", type=STRING_LITERAL.
                                                            text="k", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=4 vardef_frame_relative_index=3
                                                        text="v:", type=STRING_LITERAL.
                                                    text="v", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=1 vardef_subframe_index=4 vardef_frame_relative_index=4
                                                text=">", type=FILE_WRITE:
                                                    text="stdout", type=STDOUT:
                            text="elif", type=IF_ITEM:
                                text="==", type=OPERATOR:
                                    text="idx", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=2 vardef_frame_relative_index=2
                                    text="4", type=NUMERIC_LITERAL.
                                text="elif_block", type=STATEMENT_BLOCK: subframe_var_count=1
                                    text="var", type=UNTYPED_LOCAL_DEFINITION:
                                        text="sum", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=3 vardef_frame_relative_index=3
                                        text="0", type=NUMERIC_LITERAL.
                                    text="for", type=TRIPLE_FOR: subframe_var_count=1
                                        text="triple_for_start_statements", type=STATEMENT_LIST:
                                            text="var", type=UNTYPED_LOCAL_DEFINITION:
                                                text="i", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=4 vardef_frame_relative_index=4
                                                text="1", type=NUMERIC_LITERAL.
                                        text="triple_for_continuation_statements", type=STATEMENT_LIST:
                                            text="<=", type=OPERATOR:
                                                text="i", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=4 vardef_frame_relative_index=4
                                                text="10", type=NUMERIC_LITERAL.
                                        text="triple_for_update_statements", type=STATEMENT_LIST:
                                            text="=", type=NONINDEXED_LOCAL_ASSIGNMENT:
                                                text="i", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=4 vardef_frame_relative_index=4
                                                text="+", type=OPERATOR:
                                                    text="i", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=4 vardef_frame_relative_index=4
                                                    text="1", type=NUMERIC_LITERAL.
                                        text="triple_for_block", type=STATEMENT_BLOCK:
                                            text="for", type=TRIPLE_FOR: subframe_var_count=1
                                                text="triple_for_start_statements", type=STATEMENT_LIST:
                                                    text="var", type=UNTYPED_LOCAL_DEFINITION:
                                                        text="j", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=5 vardef_frame_relative_index=5
                                                        text="1", type=NUMERIC_LITERAL.
                                                text="triple_for_continuation_statements", type=STATEMENT_LIST:
                                                    text="<=", type=OPERATOR:
                                                        text="j", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=5 vardef_frame_relative_index=5
                                                        text="10", type=NUMERIC_LITERAL.
                                                text="triple_for_update_statements", type=STATEMENT_LIST:
                                                    text="=", type=NONINDEXED_LOCAL_ASSIGNMENT:
                                                        text="j", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=5 vardef_frame_relative_index=5
                                                        text="+", type=OPERATOR:
                                                            text="j", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=5 vardef_frame_relative_index=5
                                                            text="1", type=NUMERIC_LITERAL.
                                                text="triple_for_block", type=STATEMENT_BLOCK:
                                                    text="=", type=NONINDEXED_LOCAL_ASSIGNMENT:
                                                        text="sum", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=3 vardef_frame_relative_index=3
                                                        text="+", type=OPERATOR:
                                                            text="sum", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=3 vardef_frame_relative_index=3
                                                            text="*", type=OPERATOR:
                                                                text="i", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=4 vardef_frame_relative_index=4
                                                                text="j", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=5 vardef_frame_relative_index=5
                                    text="=", type=NONINDEXED_LOCAL_ASSIGNMENT:
                                        text="val", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=1 vardef_frame_relative_index=1
                                        text="sum", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=3 vardef_frame_relative_index=3
                                    text="print", type=PRINT:
                                        text=".", type=OPERATOR:
                                            text="b:val:", type=STRING_LITERAL.
                                            text="val", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=1 vardef_frame_relative_index=1
                                        text=">", type=FILE_WRITE:
                                            text="stdout", type=STDOUT:

END-BLOCK:
text="end", type=END: subframe_var_count=1 max_subframe_depth=6 max_var_depth=6
    text="end_block", type=STATEMENT_BLOCK:
        text="print", type=PRINT:
            text="END", type=STRING_LITERAL.
            text=">", type=FILE_WRITE:
                text="stdout", type=STDOUT:
        text="=", type=OOSVAR_ASSIGNMENT:
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="v", type=STRING_LITERAL.
                text="100", type=NUMERIC_LITERAL.
            text="789", type=NUMERIC_LITERAL.
        text="cond", type=CONDITIONAL_BLOCK:
            text="true", type=BOOLEAN_LITERAL.
            text="cond_block", type=STATEMENT_BLOCK: subframe_var_count=1
                text="var", type=UNTYPED_LOCAL_DEFINITION:
                    text="val", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=1 vardef_frame_relative_index=1
                    text="nonesuch", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=0 vardef_frame_relative_index=0
                text="for", type=TRIPLE_FOR: subframe_var_count=1
                    text="triple_for_start_statements", type=STATEMENT_LIST:
                        text="var", type=UNTYPED_LOCAL_DEFINITION:
                            text="idx", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=2 vardef_frame_relative_index=2
                            text="1", type=NUMERIC_LITERAL.
                    text="triple_for_continuation_statements", type=STATEMENT_LIST:
                        text="<=", type=OPERATOR:
                            text="idx", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=2 vardef_frame_relative_index=2
                            text="4", type=NUMERIC_LITERAL.
                    text="triple_for_update_statements", type=STATEMENT_LIST:
                        text="=", type=NONINDEXED_LOCAL_ASSIGNMENT:
                            text="idx", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=2 vardef_frame_relative_index=2
                            text="+", type=OPERATOR:
                                text="idx", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=2 vardef_frame_relative_index=2
                                text="1", type=NUMERIC_LITERAL.
                    text="triple_for_block", type=STATEMENT_BLOCK:
                        text="if_head", type=IF_HEAD:
                            text="if", type=IF_ITEM:
                                text="==", type=OPERATOR:
                                    text="idx", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=2 vardef_frame_relative_index=2
                                    text="2", type=NUMERIC_LITERAL.
                                text="if_block", type=STATEMENT_BLOCK: subframe_var_count=0
                                    text="for", type=FOR_OOSVAR_KEY_ONLY: subframe_var_count=1
                                        text="k", type=UNTYPED_LOCAL_DEFINITION. vardef_subframe_relative_index=0 vardef_subframe_index=4 vardef_frame_relative_index=3
                                        text="oosvar_keylist", type=OOSVAR_KEYLIST:
                                            text="v", type=STRING_LITERAL.
                                        text="for_loop_oosvar_block", type=STATEMENT_BLOCK:
                                            text="print", type=PRINT:
                                                text=".", type=OPERATOR:
                                                    text="e:2:k:", type=STRING_LITERAL.
                                                    text="k", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=4 vardef_frame_relative_index=3
                                                text=">", type=FILE_WRITE:
                                                    text="stdout", type=STDOUT:
                            text="elif", type=IF_ITEM:
                                text="==", type=OPERATOR:
                                    text="idx", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=2 vardef_frame_relative_index=2
                                    text="3", type=NUMERIC_LITERAL.
                                text="elif_block", type=STATEMENT_BLOCK: subframe_var_count=0
                                    text="for", type=FOR_OOSVAR: subframe_var_count=2
                                        text="key_and_value_variables", type=FOR_VARIABLES:
                                            text="key_variables", type=FOR_VARIABLES:
                                                text="k", type=UNTYPED_LOCAL_DEFINITION. vardef_subframe_relative_index=0 vardef_subframe_index=4 vardef_frame_relative_index=3
                                            text="v", type=UNTYPED_LOCAL_DEFINITION. vardef_subframe_relative_index=1 vardef_subframe_index=4 vardef_frame_relative_index=4
                                        text="oosvar_keylist", type=OOSVAR_KEYLIST:
                                            text="v", type=STRING_LITERAL.
                                        text="for_loop_oosvar_block", type=STATEMENT_BLOCK:
                                            text="print", type=PRINT:
                                                text=".", type=OPERATOR:
                                                    text=".", type=OPERATOR:
                                                        text=".", type=OPERATOR:
                                                            text="e:3:k:", type=STRING_LITERAL.
                                                            text="k", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=4 vardef_frame_relative_index=3
                                                        text="v:", type=STRING_LITERAL.
                                                    text="v", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=1 vardef_subframe_index=4 vardef_frame_relative_index=4
                                                text=">", type=FILE_WRITE:
                                                    text="stdout", type=STDOUT:
                            text="elif", type=IF_ITEM:
                                text="==", type=OPERATOR:
                                    text="idx", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=2 vardef_frame_relative_index=2
                                    text="4", type=NUMERIC_LITERAL.
                                text="elif_block", type=STATEMENT_BLOCK: subframe_var_count=1
                                    text="var", type=UNTYPED_LOCAL_DEFINITION:
                                        text="sum", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=3 vardef_frame_relative_index=3
                                        text="0", type=NUMERIC_LITERAL.
                                    text="for", type=TRIPLE_FOR: subframe_var_count=1
                                        text="triple_for_start_statements", type=STATEMENT_LIST:
                                            text="var", type=UNTYPED_LOCAL_DEFINITION:
                                                text="i", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=4 vardef_frame_relative_index=4
                                                text="1", type=NUMERIC_LITERAL.
                                        text="triple_for_continuation_statements", type=STATEMENT_LIST:
                                            text="<=", type=OPERATOR:
                                                text="i", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=4 vardef_frame_relative_index=4
                                                text="10", type=NUMERIC_LITERAL.
                                        text="triple_for_update_statements", type=STATEMENT_LIST:
                                            text="=", type=NONINDEXED_LOCAL_ASSIGNMENT:
                                                text="i", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=4 vardef_frame_relative_index=4
                                                text="+", type=OPERATOR:
                                                    text="i", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=4 vardef_frame_relative_index=4
                                                    text="1", type=NUMERIC_LITERAL.
                                        text="triple_for_block", type=STATEMENT_BLOCK:
                                            text="for", type=TRIPLE_FOR: subframe_var_count=1
                                                text="triple_for_start_statements", type=STATEMENT_LIST:
                                                    text="var", type=UNTYPED_LOCAL_DEFINITION:
                                                        text="j", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=5 vardef_frame_relative_index=5
                                                        text="1", type=NUMERIC_LITERAL.
                                                text="triple_for_continuation_statements", type=STATEMENT_LIST:
                                                    text="<=", type=OPERATOR:
                                                        text="j", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=5 vardef_frame_relative_index=5
                                                        text="10", type=NUMERIC_LITERAL.
                                                text="triple_for_update_statements", type=STATEMENT_LIST:
                                                    text="=", type=NONINDEXED_LOCAL_ASSIGNMENT:
                                                        text="j", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=5 vardef_frame_relative_index=5
                                                        text="+", type=OPERATOR:
                                                            text="j", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=5 vardef_frame_relative_index=5
                                                            text="1", type=NUMERIC_LITERAL.
                                                text="triple_for_block", type=STATEMENT_BLOCK:
                                                    text="=", type=NONINDEXED_LOCAL_ASSIGNMENT:
                                                        text="sum", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=3 vardef_frame_relative_index=3
                                                        text="+", type=OPERATOR:
                                                            text="sum", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=3 vardef_frame_relative_index=3
                                                            text="*", type=OPERATOR:
                                                                text="i", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=4 vardef_frame_relative_index=4
                                                                text="j", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=5 vardef_frame_relative_index=5
                                    text="=", type=NONINDEXED_LOCAL_ASSIGNMENT:
                                        text="val", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=1 vardef_frame_relative_index=1
                                        text="sum", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=3 vardef_frame_relative_index=3
                                    text="print", type=PRINT:
                                        text=".", type=OPERATOR:
                                            text="e:val:", type=STRING_LITERAL.
                                            text="val", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=1 vardef_frame_relative_index=1
                                        text=">", type=FILE_WRITE:
                                            text="stdout", type=STDOUT:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=6 max_var_depth=5
    text="print", type=PRINT:
        text="MAIN", type=STRING_LITERAL.
        text=">", type=FILE_WRITE:
            text="stdout", type=STDOUT:
    text="=", type=OOSVAR_ASSIGNMENT:
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="v", type=STRING_LITERAL.
            text="NR", type=CONTEXT_VARIABLE.
        text="*", type=OPERATOR:
            text="NR", type=CONTEXT_VARIABLE.
            text="4000", type=NUMERIC_LITERAL.
    text="cond", type=CONDITIONAL_BLOCK:
        text="true", type=BOOLEAN_LITERAL.
        text="cond_block", type=STATEMENT_BLOCK: subframe_var_count=1
            text="var", type=UNTYPED_LOCAL_DEFINITION:
                text="val", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=1 vardef_frame_relative_index=1
                text="nonesuch", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=0 vardef_frame_relative_index=0
            text="while", type=WHILE:
                text="==", type=OPERATOR:
                    text="1", type=NUMERIC_LITERAL.
                    text="1", type=NUMERIC_LITERAL.
                text="while_block", type=STATEMENT_BLOCK: subframe_var_count=0
                    text="if_head", type=IF_HEAD:
                        text="if", type=IF_ITEM:
                            text="==", type=OPERATOR:
                                text="NR", type=CONTEXT_VARIABLE.
                                text="1", type=NUMERIC_LITERAL.
                            text="if_block", type=STATEMENT_BLOCK: subframe_var_count=0
                                text="for", type=FOR_SREC: subframe_var_count=2
                                    text="variables", type=FOR_VARIABLES:
                                        text="k", type=UNTYPED_LOCAL_DEFINITION. vardef_subframe_relative_index=0 vardef_subframe_index=4 vardef_frame_relative_index=2
                                        text="v", type=UNTYPED_LOCAL_DEFINITION. vardef_subframe_relative_index=1 vardef_subframe_index=4 vardef_frame_relative_index=3
                                    text="for_full_srec_block", type=STATEMENT_BLOCK:
                                        text="=", type=NONINDEXED_LOCAL_ASSIGNMENT:
                                            text="val", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=1 vardef_frame_relative_index=1
                                            text="v", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=1 vardef_subframe_index=4 vardef_frame_relative_index=3
                                        text="print", type=PRINT:
                                            text=".", type=OPERATOR:
                                                text="m:1:val:", type=STRING_LITERAL.
                                                text="val", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=1 vardef_frame_relative_index=1
                                            text=">", type=FILE_WRITE:
                                                text="stdout", type=STDOUT:
                        text="elif", type=IF_ITEM:
                            text="==", type=OPERATOR:
                                text="NR", type=CONTEXT_VARIABLE.
                                text="2", type=NUMERIC_LITERAL.
                            text="elif_block", type=STATEMENT_BLOCK: subframe_var_count=0
                                text="for", type=FOR_OOSVAR_KEY_ONLY: subframe_var_count=1
                                    text="k", type=UNTYPED_LOCAL_DEFINITION. vardef_subframe_relative_index=0 vardef_subframe_index=4 vardef_frame_relative_index=2
                                    text="oosvar_keylist", type=OOSVAR_KEYLIST:
                                        text="v", type=STRING_LITERAL.
                                    text="for_loop_oosvar_block", type=STATEMENT_BLOCK:
                                        text="print", type=PRINT:
                                            text=".", type=OPERATOR:
                                                text="m:2:k:", type=STRING_LITERAL.
                                                text="k", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=4 vardef_frame_relative_index=2
                                            text=">", type=FILE_WRITE:
                                                text="stdout", type=STDOUT:
                        text="elif", type=IF_ITEM:
                            text="==", type=OPERATOR:
                                text="NR", type=CONTEXT_VARIABLE.
                                text="3", type=NUMERIC_LITERAL.
                            text="elif_block", type=STATEMENT_BLOCK: subframe_var_count=0
                                text="for", type=FOR_OOSVAR: subframe_var_count=2
                                    text="key_and_value_variables", type=FOR_VARIABLES:
                                        text="key_variables", type=FOR_VARIABLES:
                                            text="k", type=UNTYPED_LOCAL_DEFINITION. vardef_subframe_relative_index=0 vardef_subframe_index=4 vardef_frame_relative_index=2
                                        text="v", type=UNTYPED_LOCAL_DEFINITION. vardef_subframe_relative_index=1 vardef_subframe_index=4 vardef_frame_relative_index=3
                                    text="oosvar_keylist", type=OOSVAR_KEYLIST:
                                        text="v", type=STRING_LITERAL.
                                    text="for_loop_oosvar_block", type=STATEMENT_BLOCK:
                                        text="print", type=PRINT:
                                            text=".", type=OPERATOR:
                                                text=".", type=OPERATOR:
                                                    text=".", type=OPERATOR:
                                                        text="m:3:k:", type=STRING_LITERAL.
                                                        text="k", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=4 vardef_frame_relative_index=2
                                                    text="v:", type=STRING_LITERAL.
                                                text="v", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=1 vardef_subframe_index=4 vardef_frame_relative_index=3
                                            text=">", type=FILE_WRITE:
                                                text="stdout", type=STDOUT:
                        text="elif", type=IF_ITEM:
                            text="==", type=OPERATOR:
                                text="NR", type=CONTEXT_VARIABLE.
                                text="4", type=NUMERIC_LITERAL.
                            text="elif_block", type=STATEMENT_BLOCK: subframe_var_count=1
                                text="var", type=UNTYPED_LOCAL_DEFINITION:
                                    text="sum", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=3 vardef_frame_relative_index=2
                                    text="0", type=NUMERIC_LITERAL.
                                text="for", type=TRIPLE_FOR: subframe_var_count=1
                                    text="triple_for_start_statements", type=STATEMENT_LIST:
                                        text="var", type=UNTYPED_LOCAL_DEFINITION:
                                            text="i", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=4 vardef_frame_relative_index=3
                                            text="1", type=NUMERIC_LITERAL.
                                    text="triple_for_continuation_statements", type=STATEMENT_LIST:
                                        text="<=", type=OPERATOR:
                                            text="i", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=4 vardef_frame_relative_index=3
                                            text="10", type=NUMERIC_LITERAL.
                                    text="triple_for_update_statements", type=STATEMENT_LIST:
                                        text="=", type=NONINDEXED_LOCAL_ASSIGNMENT:
                                            text="i", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=4 vardef_frame_relative_index=3
                                            text="+", type=OPERATOR:
                                                text="i", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=4 vardef_frame_relative_index=3
                                                text="1", type=NUMERIC_LITERAL.
                                    text="triple_for_block", type=STATEMENT_BLOCK:
                                        text="for", type=TRIPLE_FOR: subframe_var_count=1
                                            text="triple_for_start_statements", type=STATEMENT_LIST:
                                                text="var", type=UNTYPED_LOCAL_DEFINITION:
                                                    text="j", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=5 vardef_frame_relative_index=4
                                                    text="1", type=NUMERIC_LITERAL.
                                            text="triple_for_continuation_statements", type=STATEMENT_LIST:
                                                text="<=", type=OPERATOR:
                                                    text="j", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=5 vardef_frame_relative_index=4
                                                    text="10", type=NUMERIC_LITERAL.
                                            text="triple_for_update_statements", type=STATEMENT_LIST:
                                                text="=", type=NONINDEXED_LOCAL_ASSIGNMENT:
                                                    text="j", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=5 vardef_frame_relative_index=4
                                                    text="+", type=OPERATOR:
                                                        text="j", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=5 vardef_frame_relative_index=4
                                                        text="1", type=NUMERIC_LITERAL.
                                            text="triple_for_block", type=STATEMENT_BLOCK:
                                                text="=", type=NONINDEXED_LOCAL_ASSIGNMENT:
                                                    text="sum", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=3 vardef_frame_relative_index=2
                                                    text="+", type=OPERATOR:
                                                        text="sum", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=3 vardef_frame_relative_index=2
                                                        text="*", type=OPERATOR:
                                                            text="i", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=4 vardef_frame_relative_index=3
                                                            text="j", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=5 vardef_frame_relative_index=4
                                text="=", type=NONINDEXED_LOCAL_ASSIGNMENT:
                                    text="val", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=1 vardef_frame_relative_index=1
                                    text="sum", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=3 vardef_frame_relative_index=2
                                text="print", type=PRINT:
                                    text=".", type=OPERATOR:
                                        text="m:val:", type=STRING_LITERAL.
                                        text="val", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=1 vardef_frame_relative_index=1
                                    text=">", type=FILE_WRITE:
                                        text="stdout", type=STDOUT:
                    text="break", type=BREAK.
    text="=", type=SREC_ASSIGNMENT:
        text="o", type=FIELD_NAME.
        text="f", type=FUNCTION_CALLSITE:
            text="NR", type=CONTEXT_VARIABLE.
            text="a", type=FIELD_NAME.
            text="y", type=FIELD_NAME.
    text="subr_call", type=SUBR_CALLSITE:
        text="s", type=FUNCTION_CALLSITE:
            text="b", type=FIELD_NAME.
            text="NR", type=CONTEXT_VARIABLE.
            text="**", type=OPERATOR:
                text="i", type=FIELD_NAME.
                text="2", type=NUMERIC_LITERAL.

BEGIN
b:2:k:0
b:3:k:0v:456
b:val:3025
MAIN
m:1:val:pan
m:1:val:pan
m:1:val:1
m:1:val:0.346790
m:1:val:0.726803
f:1:val:pan:1:pan:0.726803
f:1:val:pan:1:pan:0.726803
f:1:val:1:1:pan:0.726803
f:1:val:0.346790:1:pan:0.726803
f:1:val:0.726803:1:pan:0.726803
s:1:val:pan:pan:1:1.000000
s:1:val:pan:pan:1:1.000000
s:1:val:1:pan:1:1.000000
s:1:val:0.346790:pan:1:1.000000
s:1:val:0.726803:pan:1:1.000000
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
MAIN
m:2:k:0
m:2:k:1
m:2:k:2
f:2:k:0
f:2:k:1
f:2:k:2
s:2:k:0
s:2:k:1
s:2:k:2
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
MAIN
m:3:k:0v:456
m:3:k:1v:2000
m:3:k:2v:4000
m:3:k:3v:12000
f:3:k:0v:456
f:3:k:1v:2000
f:3:k:2v:4000
f:3:k:3v:3000
s:3:k:0v:456
s:3:k:1v:2000
s:3:k:2v:4000
s:3:k:3v:6000
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
MAIN
m:val:3025
f:val:3025
s:val:3025
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
MAIN
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
MAIN
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
MAIN
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
MAIN
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
MAIN
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
MAIN
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864
END
e:2:k:0
e:2:k:1
e:2:k:2
e:2:k:3
e:2:k:4
e:2:k:5
e:2:k:6
e:2:k:7
e:2:k:8
e:2:k:9
e:2:k:10
e:2:k:100
e:3:k:0v:456
e:3:k:1v:2000
e:3:k:2v:4000
e:3:k:3v:6000
e:3:k:4v:8000
e:3:k:5v:10000
e:3:k:6v:12000
e:3:k:7v:14000
e:3:k:8v:16000
e:3:k:9v:18000
e:3:k:10v:20000
e:3:k:100v:789
e:val:3025

mlr --from ./reg_test/input/abixy put a=a; $oa = a
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 a=a; $oa = a; a = a; $ob = a
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 a=a; $oa = a; a = a; $ob = a; a = b; $oc = a
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 a=a; $oa = a; a = a; $ob = a; a = b; $oc = a; b = 3; b = a; $od = a
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 a=a; $oa = a; a = a; $ob = a; a = b; $oc = a; b = 3; b = a; $od = a; b = 4;a = b; $oe= a
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533,oe=4
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797,oe=4
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776,oe=4
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463,oe=4
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729,oe=4
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697,oe=4
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694,oe=4
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006,oe=4
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059,oe=4
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864,oe=4


================================================================
DSL IF-CHAINING


---------------------------------------------------------------- IF/ELIF WITH ELSE
mlr --from ./reg_test/input/xy40.dkvp put -v 
  if (NR==1) {
    $x = 2;
    $y = 3
  }
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="if_head", type=IF_HEAD:
        text="if", type=IF_ITEM:
            text="==", type=OPERATOR:
                text="NR", type=CONTEXT_VARIABLE.
                text="1", type=NUMERIC_LITERAL.
            text="if_block", type=STATEMENT_BLOCK:
                text="=", type=SREC_ASSIGNMENT:
                    text="x", type=FIELD_NAME.
                    text="2", type=NUMERIC_LITERAL.
                text="=", type=SREC_ASSIGNMENT:
                    text="y", type=FIELD_NAME.
                    text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=2 max_var_depth=1
    text="if_head", type=IF_HEAD:
        text="if", type=IF_ITEM:
            text="==", type=OPERATOR:
                text="NR", type=CONTEXT_VARIABLE.
                text="1", type=NUMERIC_LITERAL.
            text="if_block", type=STATEMENT_BLOCK: subframe_var_count=0
                text="=", type=SREC_ASSIGNMENT:
                    text="x", type=FIELD_NAME.
                    text="2", type=NUMERIC_LITERAL.
                text="=", type=SREC_ASSIGNMENT:
                    text="y", type=FIELD_NAME.
                    text="3", type=NUMERIC_LITERAL.

i=1,x=2,y=3
i=2,x=102,y=202
i=3,x=103,y=203
i=4,x=104,y=204
i=5,x=105,y=205
i=6,x=106,y=206
i=7,x=107,y=207
i=8,x=108,y=208
i=9,x=109,y=209
i=10,x=110,y=210
i=11,x=111,y=211
i=12,x=112,y=212
i=13,x=113,y=213
i=14,x=114,y=214
i=15,x=115,y=215
i=16,x=116,y=216
i=17,x=117,y=217
i=18,x=118,y=218
i=19,x=119,y=219
i=20,x=120,y=220
i=21,x=121,y=221
i=22,x=122,y=222
i=23,x=123,y=223
i=24,x=124,y=224
i=25,x=125,y=225
i=26,x=126,y=226
i=27,x=127,y=227
i=28,x=128,y=228
i=29,x=129,y=229
i=30,x=130,y=230
i=31,x=131,y=231
i=32,x=132,y=232
i=33,x=133,y=233
i=34,x=134,y=234
i=35,x=135,y=235
i=36,x=136,y=236
i=37,x=137,y=237
i=38,x=138,y=238
i=39,x=139,y=239
i=40,x=140,y=240

mlr --from ./reg_test/input/xy40.dkvp put -v 
  if (NR == 4) {
    $x = 5;
    $y = 6
  } else {
    $x = 1007;
    $y = 1008
  }
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="if_head", type=IF_HEAD:
        text="if", type=IF_ITEM:
            text="==", type=OPERATOR:
                text="NR", type=CONTEXT_VARIABLE.
                text="4", type=NUMERIC_LITERAL.
            text="if_block", type=STATEMENT_BLOCK:
                text="=", type=SREC_ASSIGNMENT:
                    text="x", type=FIELD_NAME.
                    text="5", type=NUMERIC_LITERAL.
                text="=", type=SREC_ASSIGNMENT:
                    text="y", type=FIELD_NAME.
                    text="6", type=NUMERIC_LITERAL.
        text="else", type=IF_ITEM:
            text="else_block", type=STATEMENT_BLOCK:
                text="=", type=SREC_ASSIGNMENT:
                    text="x", type=FIELD_NAME.
                    text="1007", type=NUMERIC_LITERAL.
                text="=", type=SREC_ASSIGNMENT:
                    text="y", type=FIELD_NAME.
                    text="1008", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=2 max_var_depth=1
    text="if_head", type=IF_HEAD:
        text="if", type=IF_ITEM:
            text="==", type=OPERATOR:
                text="NR", type=CONTEXT_VARIABLE.
                text="4", type=NUMERIC_LITERAL.
            text="if_block", type=STATEMENT_BLOCK: subframe_var_count=0
                text="=", type=SREC_ASSIGNMENT:
                    text="x", type=FIELD_NAME.
                    text="5", type=NUMERIC_LITERAL.
                text="=", type=SREC_ASSIGNMENT:
                    text="y", type=FIELD_NAME.
                    text="6", type=NUMERIC_LITERAL.
        text="else", type=IF_ITEM:
            text="else_block", type=STATEMENT_BLOCK: subframe_var_count=0
                text="=", type=SREC_ASSIGNMENT:
                    text="x", type=FIELD_NAME.
                    text="1007", type=NUMERIC_LITERAL.
                text="=", type=SREC_ASSIGNMENT:
                    text="y", type=FIELD_NAME.
                    text="1008", type=NUMERIC_LITERAL.

i=1,x=1007,y=1008
i=2,x=1007,y=1008
i=3,x=1007,y=1008
i=4,x=5,y=6
i=5,x=1007,y=1008
i=6,x=1007,y=1008
i=7,x=1007,y=1008
i=8,x=1007,y=1008
i=9,x=1007,y=1008
i=10,x=1007,y=1008
i=11,x=1007,y=1008
i=12,x=1007,y=1008
i=13,x=1007,y=1008
i=14,x=1007,y=1008
i=15,x=1007,y=1008
i=16,x=1007,y=1008
i=17,x=1007,y=1008
i=18,x=1007,y=1008
i=19,x=1007,y=1008
i=20,x=1007,y=1008
i=21,x=1007,y=1008
i=22,x=1007,y=1008
i=23,x=1007,y=1008
i=24,x=1007,y=1008
i=25,x=1007,y=1008
i=26,x=1007,y=1008
i=27,x=1007,y=1008
i=28,x=1007,y=1008
i=29,x=1007,y=1008
i=30,x=1007,y=1008
i=31,x=1007,y=1008
i=32,x=1007,y=1008
i=33,x=1007,y=1008
i=34,x=1007,y=1008
i=35,x=1007,y=1008
i=36,x=1007,y=1008
i=37,x=1007,y=1008
i=38,x=1007,y=1008
i=39,x=1007,y=1008
i=40,x=1007,y=1008

mlr --from ./reg_test/input/xy40.dkvp put -v 
  if (NR == 9) {
    $x = 10;
    $y = 11
  } elif (NR == 12) {
    $x = 13;
    $y = 14
  } else {
    $x = 1015;
    $y = 1016
  }
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="if_head", type=IF_HEAD:
        text="if", type=IF_ITEM:
            text="==", type=OPERATOR:
                text="NR", type=CONTEXT_VARIABLE.
                text="9", type=NUMERIC_LITERAL.
            text="if_block", type=STATEMENT_BLOCK:
                text="=", type=SREC_ASSIGNMENT:
                    text="x", type=FIELD_NAME.
                    text="10", type=NUMERIC_LITERAL.
                text="=", type=SREC_ASSIGNMENT:
                    text="y", type=FIELD_NAME.
                    text="11", type=NUMERIC_LITERAL.
        text="elif", type=IF_ITEM:
            text="==", type=OPERATOR:
                text="NR", type=CONTEXT_VARIABLE.
                text="12", type=NUMERIC_LITERAL.
            text="elif_block", type=STATEMENT_BLOCK:
                text="=", type=SREC_ASSIGNMENT:
                    text="x", type=FIELD_NAME.
                    text="13", type=NUMERIC_LITERAL.
                text="=", type=SREC_ASSIGNMENT:
                    text="y", type=FIELD_NAME.
                    text="14", type=NUMERIC_LITERAL.
        text="else", type=IF_ITEM:
            text="else_block", type=STATEMENT_BLOCK:
                text="=", type=SREC_ASSIGNMENT:
                    text="x", type=FIELD_NAME.
                    text="1015", type=NUMERIC_LITERAL.
                text="=", type=SREC_ASSIGNMENT:
                    text="y", type=FIELD_NAME.
                    text="1016", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=2 max_var_depth=1
    text="if_head", type=IF_HEAD:
        text="if", type=IF_ITEM:
            text="==", type=OPERATOR:
                text="NR", type=CONTEXT_VARIABLE.
                text="9", type=NUMERIC_LITERAL.
            text="if_block", type=STATEMENT_BLOCK: subframe_var_count=0
                text="=", type=SREC_ASSIGNMENT:
                    text="x", type=FIELD_NAME.
                    text="10", type=NUMERIC_LITERAL.
                text="=", type=SREC_ASSIGNMENT:
                    text="y", type=FIELD_NAME.
                    text="11", type=NUMERIC_LITERAL.
        text="elif", type=IF_ITEM:
            text="==", type=OPERATOR:
                text="NR", type=CONTEXT_VARIABLE.
                text="12", type=NUMERIC_LITERAL.
            text="elif_block", type=STATEMENT_BLOCK: subframe_var_count=0
                text="=", type=SREC_ASSIGNMENT:
                    text="x", type=FIELD_NAME.
                    text="13", type=NUMERIC_LITERAL.
                text="=", type=SREC_ASSIGNMENT:
                    text="y", type=FIELD_NAME.
                    text="14", type=NUMERIC_LITERAL.
        text="else", type=IF_ITEM:
            text="else_block", type=STATEMENT_BLOCK: subframe_var_count=0
                text="=", type=SREC_ASSIGNMENT:
                    text="x", type=FIELD_NAME.
                    text="1015", type=NUMERIC_LITERAL.
                text="=", type=SREC_ASSIGNMENT:
                    text="y", type=FIELD_NAME.
                    text="1016", type=NUMERIC_LITERAL.

i=1,x=1015,y=1016
i=2,x=1015,y=1016
i=3,x=1015,y=1016
i=4,x=1015,y=1016
i=5,x=1015,y=1016
i=6,x=1015,y=1016
i=7,x=1015,y=1016
i=8,x=1015,y=1016
i=9,x=10,y=11
i=10,x=1015,y=1016
i=11,x=1015,y=1016
i=12,x=13,y=14
i=13,x=1015,y=1016
i=14,x=1015,y=1016
i=15,x=1015,y=1016
i=16,x=1015,y=1016
i=17,x=1015,y=1016
i=18,x=1015,y=1016
i=19,x=1015,y=1016
i=20,x=1015,y=1016
i=21,x=1015,y=1016
i=22,x=1015,y=1016
i=23,x=1015,y=1016
i=24,x=1015,y=1016
i=25,x=1015,y=1016
i=26,x=1015,y=1016
i=27,x=1015,y=1016
i=28,x=1015,y=1016
i=29,x=1015,y=1016
i=30,x=1015,y=1016
i=31,x=1015,y=1016
i=32,x=1015,y=1016
i=33,x=1015,y=1016
i=34,x=1015,y=1016
i=35,x=1015,y=1016
i=36,x=1015,y=1016
i=37,x=1015,y=1016
i=38,x=1015,y=1016
i=39,x=1015,y=1016
i=40,x=1015,y=1016

mlr --from ./reg_test/input/xy40.dkvp put -v 
  if (NR == 17) {
    $x = 18;
    $y = 19
  } elif (NR == 20) {
    $x = 21;
    $y = 22
  } elif (NR == 23) {
    $x = 24;
    $y = 25
  } else {
    $x = 1026;
    $y = 1027
  }
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="if_head", type=IF_HEAD:
        text="if", type=IF_ITEM:
            text="==", type=OPERATOR:
                text="NR", type=CONTEXT_VARIABLE.
                text="17", type=NUMERIC_LITERAL.
            text="if_block", type=STATEMENT_BLOCK:
                text="=", type=SREC_ASSIGNMENT:
                    text="x", type=FIELD_NAME.
                    text="18", type=NUMERIC_LITERAL.
                text="=", type=SREC_ASSIGNMENT:
                    text="y", type=FIELD_NAME.
                    text="19", type=NUMERIC_LITERAL.
        text="elif", type=IF_ITEM:
            text="==", type=OPERATOR:
                text="NR", type=CONTEXT_VARIABLE.
                text="20", type=NUMERIC_LITERAL.
            text="elif_block", type=STATEMENT_BLOCK:
                text="=", type=SREC_ASSIGNMENT:
                    text="x", type=FIELD_NAME.
                    text="21", type=NUMERIC_LITERAL.
                text="=", type=SREC_ASSIGNMENT:
                    text="y", type=FIELD_NAME.
                    text="22", type=NUMERIC_LITERAL.
        text="elif", type=IF_ITEM:
            text="==", type=OPERATOR:
                text="NR", type=CONTEXT_VARIABLE.
                text="23", type=NUMERIC_LITERAL.
            text="elif_block", type=STATEMENT_BLOCK:
                text="=", type=SREC_ASSIGNMENT:
                    text="x", type=FIELD_NAME.
                    text="24", type=NUMERIC_LITERAL.
                text="=", type=SREC_ASSIGNMENT:
                    text="y", type=FIELD_NAME.
                    text="25", type=NUMERIC_LITERAL.
        text="else", type=IF_ITEM:
            text="else_block", type=STATEMENT_BLOCK:
                text="=", type=SREC_ASSIGNMENT:
                    text="x", type=FIELD_NAME.
                    text="1026", type=NUMERIC_LITERAL.
                text="=", type=SREC_ASSIGNMENT:
                    text="y", type=FIELD_NAME.
                    text="1027", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=2 max_var_depth=1
    text="if_head", type=IF_HEAD:
        text="if", type=IF_ITEM:
            text="==", type=OPERATOR:
                text="NR", type=CONTEXT_VARIABLE.
                text="17", type=NUMERIC_LITERAL.
            text="if_block", type=STATEMENT_BLOCK: subframe_var_count=0
                text="=", type=SREC_ASSIGNMENT:
                    text="x", type=FIELD_NAME.
                    text="18", type=NUMERIC_LITERAL.
                text="=", type=SREC_ASSIGNMENT:
                    text="y", type=FIELD_NAME.
                    text="19", type=NUMERIC_LITERAL.
        text="elif", type=IF_ITEM:
            text="==", type=OPERATOR:
                text="NR", type=CONTEXT_VARIABLE.
                text="20", type=NUMERIC_LITERAL.
            text="elif_block", type=STATEMENT_BLOCK: subframe_var_count=0
                text="=", type=SREC_ASSIGNMENT:
                    text="x", type=FIELD_NAME.
                    text="21", type=NUMERIC_LITERAL.
                text="=", type=SREC_ASSIGNMENT:
                    text="y", type=FIELD_NAME.
                    text="22", type=NUMERIC_LITERAL.
        text="elif", type=IF_ITEM:
            text="==", type=OPERATOR:
                text="NR", type=CONTEXT_VARIABLE.
                text="23", type=NUMERIC_LITERAL.
            text="elif_block", type=STATEMENT_BLOCK: subframe_var_count=0
                text="=", type=SREC_ASSIGNMENT:
                    text="x", type=FIELD_NAME.
                    text="24", type=NUMERIC_LITERAL.
                text="=", type=SREC_ASSIGNMENT:
                    text="y", type=FIELD_NAME.
                    text="25", type=NUMERIC_LITERAL.
        text="else", type=IF_ITEM:
            text="else_block", type=STATEMENT_BLOCK: subframe_var_count=0
                text="=", type=SREC_ASSIGNMENT:
                    text="x", type=FIELD_NAME.
                    text="1026", type=NUMERIC_LITERAL.
                text="=", type=SREC_ASSIGNMENT:
                    text="y", type=FIELD_NAME.
                    text="1027", type=NUMERIC_LITERAL.

i=1,x=1026,y=1027
i=2,x=1026,y=1027
i=3,x=1026,y=1027
i=4,x=1026,y=1027
i=5,x=1026,y=1027
i=6,x=1026,y=1027
i=7,x=1026,y=1027
i=8,x=1026,y=1027
i=9,x=1026,y=1027
i=10,x=1026,y=1027
i=11,x=1026,y=1027
i=12,x=1026,y=1027
i=13,x=1026,y=1027
i=14,x=1026,y=1027
i=15,x=1026,y=1027
i=16,x=1026,y=1027
i=17,x=18,y=19
i=18,x=1026,y=1027
i=19,x=1026,y=1027
i=20,x=21,y=22
i=21,x=1026,y=1027
i=22,x=1026,y=1027
i=23,x=24,y=25
i=24,x=1026,y=1027
i=25,x=1026,y=1027
i=26,x=1026,y=1027
i=27,x=1026,y=1027
i=28,x=1026,y=1027
i=29,x=1026,y=1027
i=30,x=1026,y=1027
i=31,x=1026,y=1027
i=32,x=1026,y=1027
i=33,x=1026,y=1027
i=34,x=1026,y=1027
i=35,x=1026,y=1027
i=36,x=1026,y=1027
i=37,x=1026,y=1027
i=38,x=1026,y=1027
i=39,x=1026,y=1027
i=40,x=1026,y=1027

mlr --from ./reg_test/input/xy40.dkvp put -v 
  if (NR == 28) {
    $x = 29;
    $y = 30
  } elif (NR == 31) {
    $x = 32;
    $y = 33
  } elif (NR == 34) {
    $x = 35;
    $y = 36
  } elif (NR == 37) {
    $x = 38;
    $y = 39
  } else {
    $x = 1040;
    $y = 1041
  }
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="if_head", type=IF_HEAD:
        text="if", type=IF_ITEM:
            text="==", type=OPERATOR:
                text="NR", type=CONTEXT_VARIABLE.
                text="28", type=NUMERIC_LITERAL.
            text="if_block", type=STATEMENT_BLOCK:
                text="=", type=SREC_ASSIGNMENT:
                    text="x", type=FIELD_NAME.
                    text="29", type=NUMERIC_LITERAL.
                text="=", type=SREC_ASSIGNMENT:
                    text="y", type=FIELD_NAME.
                    text="30", type=NUMERIC_LITERAL.
        text="elif", type=IF_ITEM:
            text="==", type=OPERATOR:
                text="NR", type=CONTEXT_VARIABLE.
                text="31", type=NUMERIC_LITERAL.
            text="elif_block", type=STATEMENT_BLOCK:
                text="=", type=SREC_ASSIGNMENT:
                    text="x", type=FIELD_NAME.
                    text="32", type=NUMERIC_LITERAL.
                text="=", type=SREC_ASSIGNMENT:
                    text="y", type=FIELD_NAME.
                    text="33", type=NUMERIC_LITERAL.
        text="elif", type=IF_ITEM:
            text="==", type=OPERATOR:
                text="NR", type=CONTEXT_VARIABLE.
                text="34", type=NUMERIC_LITERAL.
            text="elif_block", type=STATEMENT_BLOCK:
                text="=", type=SREC_ASSIGNMENT:
                    text="x", type=FIELD_NAME.
                    text="35", type=NUMERIC_LITERAL.
                text="=", type=SREC_ASSIGNMENT:
                    text="y", type=FIELD_NAME.
                    text="36", type=NUMERIC_LITERAL.
        text="elif", type=IF_ITEM:
            text="==", type=OPERATOR:
                text="NR", type=CONTEXT_VARIABLE.
                text="37", type=NUMERIC_LITERAL.
            text="elif_block", type=STATEMENT_BLOCK:
                text="=", type=SREC_ASSIGNMENT:
                    text="x", type=FIELD_NAME.
                    text="38", type=NUMERIC_LITERAL.
                text="=", type=SREC_ASSIGNMENT:
                    text="y", type=FIELD_NAME.
                    text="39", type=NUMERIC_LITERAL.
        text="else", type=IF_ITEM:
            text="else_block", type=STATEMENT_BLOCK:
                text="=", type=SREC_ASSIGNMENT:
                    text="x", type=FIELD_NAME.
                    text="1040", type=NUMERIC_LITERAL.
                text="=", type=SREC_ASSIGNMENT:
                    text="y", type=FIELD_NAME.
                    text="1041", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=2 max_var_depth=1
    text="if_head", type=IF_HEAD:
        text="if", type=IF_ITEM:
            text="==", type=OPERATOR:
                text="NR", type=CONTEXT_VARIABLE.
                text="28", type=NUMERIC_LITERAL.
            text="if_block", type=STATEMENT_BLOCK: subframe_var_count=0
                text="=", type=SREC_ASSIGNMENT:
                    text="x", type=FIELD_NAME.
                    text="29", type=NUMERIC_LITERAL.
                text="=", type=SREC_ASSIGNMENT:
                    text="y", type=FIELD_NAME.
                    text="30", type=NUMERIC_LITERAL.
        text="elif", type=IF_ITEM:
            text="==", type=OPERATOR:
                text="NR", type=CONTEXT_VARIABLE.
                text="31", type=NUMERIC_LITERAL.
            text="elif_block", type=STATEMENT_BLOCK: subframe_var_count=0
                text="=", type=SREC_ASSIGNMENT:
                    text="x", type=FIELD_NAME.
                    text="32", type=NUMERIC_LITERAL.
                text="=", type=SREC_ASSIGNMENT:
                    text="y", type=FIELD_NAME.
                    text="33", type=NUMERIC_LITERAL.
        text="elif", type=IF_ITEM:
            text="==", type=OPERATOR:
                text="NR", type=CONTEXT_VARIABLE.
                text="34", type=NUMERIC_LITERAL.
            text="elif_block", type=STATEMENT_BLOCK: subframe_var_count=0
                text="=", type=SREC_ASSIGNMENT:
                    text="x", type=FIELD_NAME.
                    text="35", type=NUMERIC_LITERAL.
                text="=", type=SREC_ASSIGNMENT:
                    text="y", type=FIELD_NAME.
                    text="36", type=NUMERIC_LITERAL.
        text="elif", type=IF_ITEM:
            text="==", type=OPERATOR:
                text="NR", type=CONTEXT_VARIABLE.
                text="37", type=NUMERIC_LITERAL.
            text="elif_block", type=STATEMENT_BLOCK: subframe_var_count=0
                text="=", type=SREC_ASSIGNMENT:
                    text="x", type=FIELD_NAME.
                    text="38", type=NUMERIC_LITERAL.
                text="=", type=SREC_ASSIGNMENT:
                    text="y", type=FIELD_NAME.
                    text="39", type=NUMERIC_LITERAL.
        text="else", type=IF_ITEM:
            text="else_block", type=STATEMENT_BLOCK: subframe_var_count=0
                text="=", type=SREC_ASSIGNMENT:
                    text="x", type=FIELD_NAME.
                    text="1040", type=NUMERIC_LITERAL.
                text="=", type=SREC_ASSIGNMENT:
                    text="y", type=FIELD_NAME.
                    text="1041", type=NUMERIC_LITERAL.

i=1,x=1040,y=1041
i=2,x=1040,y=1041
i=3,x=1040,y=1041
i=4,x=1040,y=1041
i=5,x=1040,y=1041
i=6,x=1040,y=1041
i=7,x=1040,y=1041
i=8,x=1040,y=1041
i=9,x=1040,y=1041
i=10,x=1040,y=1041
i=11,x=1040,y=1041
i=12,x=1040,y=1041
i=13,x=1040,y=1041
i=14,x=1040,y=1041
i=15,x=1040,y=1041
i=16,x=1040,y=1041
i=17,x=1040,y=1041
i=18,x=1040,y=1041
i=19,x=1040,y=1041
i=20,x=1040,y=1041
i=21,x=1040,y=1041
i=22,x=1040,y=1041
i=23,x=1040,y=1041
i=24,x=1040,y=1041
i=25,x=1040,y=1041
i=26,x=1040,y=1041
i=27,x=1040,y=1041
i=28,x=29,y=30
i=29,x=1040,y=1041
i=30,x=1040,y=1041
i=31,x=32,y=33
i=32,x=1040,y=1041
i=33,x=1040,y=1041
i=34,x=35,y=36
i=35,x=1040,y=1041
i=36,x=1040,y=1041
i=37,x=38,y=39
i=38,x=1040,y=1041
i=39,x=1040,y=1041
i=40,x=1040,y=1041


---------------------------------------------------------------- IF/ELIF WITHOUT ELSE
mlr --from ./reg_test/input/xy40.dkvp put -v 
  if (NR == 1) {
    $x = 2;
    $y = 3
  }
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="if_head", type=IF_HEAD:
        text="if", type=IF_ITEM:
            text="==", type=OPERATOR:
                text="NR", type=CONTEXT_VARIABLE.
                text="1", type=NUMERIC_LITERAL.
            text="if_block", type=STATEMENT_BLOCK:
                text="=", type=SREC_ASSIGNMENT:
                    text="x", type=FIELD_NAME.
                    text="2", type=NUMERIC_LITERAL.
                text="=", type=SREC_ASSIGNMENT:
                    text="y", type=FIELD_NAME.
                    text="3", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=2 max_var_depth=1
    text="if_head", type=IF_HEAD:
        text="if", type=IF_ITEM:
            text="==", type=OPERATOR:
                text="NR", type=CONTEXT_VARIABLE.
                text="1", type=NUMERIC_LITERAL.
            text="if_block", type=STATEMENT_BLOCK: subframe_var_count=0
                text="=", type=SREC_ASSIGNMENT:
                    text="x", type=FIELD_NAME.
                    text="2", type=NUMERIC_LITERAL.
                text="=", type=SREC_ASSIGNMENT:
                    text="y", type=FIELD_NAME.
                    text="3", type=NUMERIC_LITERAL.

i=1,x=2,y=3
i=2,x=102,y=202
i=3,x=103,y=203
i=4,x=104,y=204
i=5,x=105,y=205
i=6,x=106,y=206
i=7,x=107,y=207
i=8,x=108,y=208
i=9,x=109,y=209
i=10,x=110,y=210
i=11,x=111,y=211
i=12,x=112,y=212
i=13,x=113,y=213
i=14,x=114,y=214
i=15,x=115,y=215
i=16,x=116,y=216
i=17,x=117,y=217
i=18,x=118,y=218
i=19,x=119,y=219
i=20,x=120,y=220
i=21,x=121,y=221
i=22,x=122,y=222
i=23,x=123,y=223
i=24,x=124,y=224
i=25,x=125,y=225
i=26,x=126,y=226
i=27,x=127,y=227
i=28,x=128,y=228
i=29,x=129,y=229
i=30,x=130,y=230
i=31,x=131,y=231
i=32,x=132,y=232
i=33,x=133,y=233
i=34,x=134,y=234
i=35,x=135,y=235
i=36,x=136,y=236
i=37,x=137,y=237
i=38,x=138,y=238
i=39,x=139,y=239
i=40,x=140,y=240

mlr --from ./reg_test/input/xy40.dkvp put -v 
  if (NR == 4) {
    $x = 5;
    $y = 6
  } elif (NR == 7) {
    $x = 8;
    $y = 9
  }
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="if_head", type=IF_HEAD:
        text="if", type=IF_ITEM:
            text="==", type=OPERATOR:
                text="NR", type=CONTEXT_VARIABLE.
                text="4", type=NUMERIC_LITERAL.
            text="if_block", type=STATEMENT_BLOCK:
                text="=", type=SREC_ASSIGNMENT:
                    text="x", type=FIELD_NAME.
                    text="5", type=NUMERIC_LITERAL.
                text="=", type=SREC_ASSIGNMENT:
                    text="y", type=FIELD_NAME.
                    text="6", type=NUMERIC_LITERAL.
        text="elif", type=IF_ITEM:
            text="==", type=OPERATOR:
                text="NR", type=CONTEXT_VARIABLE.
                text="7", type=NUMERIC_LITERAL.
            text="elif_block", type=STATEMENT_BLOCK:
                text="=", type=SREC_ASSIGNMENT:
                    text="x", type=FIELD_NAME.
                    text="8", type=NUMERIC_LITERAL.
                text="=", type=SREC_ASSIGNMENT:
                    text="y", type=FIELD_NAME.
                    text="9", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=2 max_var_depth=1
    text="if_head", type=IF_HEAD:
        text="if", type=IF_ITEM:
            text="==", type=OPERATOR:
                text="NR", type=CONTEXT_VARIABLE.
                text="4", type=NUMERIC_LITERAL.
            text="if_block", type=STATEMENT_BLOCK: subframe_var_count=0
                text="=", type=SREC_ASSIGNMENT:
                    text="x", type=FIELD_NAME.
                    text="5", type=NUMERIC_LITERAL.
                text="=", type=SREC_ASSIGNMENT:
                    text="y", type=FIELD_NAME.
                    text="6", type=NUMERIC_LITERAL.
        text="elif", type=IF_ITEM:
            text="==", type=OPERATOR:
                text="NR", type=CONTEXT_VARIABLE.
                text="7", type=NUMERIC_LITERAL.
            text="elif_block", type=STATEMENT_BLOCK: subframe_var_count=0
                text="=", type=SREC_ASSIGNMENT:
                    text="x", type=FIELD_NAME.
                    text="8", type=NUMERIC_LITERAL.
                text="=", type=SREC_ASSIGNMENT:
                    text="y", type=FIELD_NAME.
                    text="9", type=NUMERIC_LITERAL.

i=1,x=101,y=201
i=2,x=102,y=202
i=3,x=103,y=203
i=4,x=5,y=6
i=5,x=105,y=205
i=6,x=106,y=206
i=7,x=8,y=9
i=8,x=108,y=208
i=9,x=109,y=209
i=10,x=110,y=210
i=11,x=111,y=211
i=12,x=112,y=212
i=13,x=113,y=213
i=14,x=114,y=214
i=15,x=115,y=215
i=16,x=116,y=216
i=17,x=117,y=217
i=18,x=118,y=218
i=19,x=119,y=219
i=20,x=120,y=220
i=21,x=121,y=221
i=22,x=122,y=222
i=23,x=123,y=223
i=24,x=124,y=224
i=25,x=125,y=225
i=26,x=126,y=226
i=27,x=127,y=227
i=28,x=128,y=228
i=29,x=129,y=229
i=30,x=130,y=230
i=31,x=131,y=231
i=32,x=132,y=232
i=33,x=133,y=233
i=34,x=134,y=234
i=35,x=135,y=235
i=36,x=136,y=236
i=37,x=137,y=237
i=38,x=138,y=238
i=39,x=139,y=239
i=40,x=140,y=240

mlr --from ./reg_test/input/xy40.dkvp put -v 
  if (NR == 10) {
    $x = 11;
    $y = 12
  } elif (NR == 13) {
    $x = 14;
    $y = 15
  } elif (NR == 16) {
    $x = 17;
    $y = 18
  }
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="if_head", type=IF_HEAD:
        text="if", type=IF_ITEM:
            text="==", type=OPERATOR:
                text="NR", type=CONTEXT_VARIABLE.
                text="10", type=NUMERIC_LITERAL.
            text="if_block", type=STATEMENT_BLOCK:
                text="=", type=SREC_ASSIGNMENT:
                    text="x", type=FIELD_NAME.
                    text="11", type=NUMERIC_LITERAL.
                text="=", type=SREC_ASSIGNMENT:
                    text="y", type=FIELD_NAME.
                    text="12", type=NUMERIC_LITERAL.
        text="elif", type=IF_ITEM:
            text="==", type=OPERATOR:
                text="NR", type=CONTEXT_VARIABLE.
                text="13", type=NUMERIC_LITERAL.
            text="elif_block", type=STATEMENT_BLOCK:
                text="=", type=SREC_ASSIGNMENT:
                    text="x", type=FIELD_NAME.
                    text="14", type=NUMERIC_LITERAL.
                text="=", type=SREC_ASSIGNMENT:
                    text="y", type=FIELD_NAME.
                    text="15", type=NUMERIC_LITERAL.
        text="elif", type=IF_ITEM:
            text="==", type=OPERATOR:
                text="NR", type=CONTEXT_VARIABLE.
                text="16", type=NUMERIC_LITERAL.
            text="elif_block", type=STATEMENT_BLOCK:
                text="=", type=SREC_ASSIGNMENT:
                    text="x", type=FIELD_NAME.
                    text="17", type=NUMERIC_LITERAL.
                text="=", type=SREC_ASSIGNMENT:
                    text="y", type=FIELD_NAME.
                    text="18", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=2 max_var_depth=1
    text="if_head", type=IF_HEAD:
        text="if", type=IF_ITEM:
            text="==", type=OPERATOR:
                text="NR", type=CONTEXT_VARIABLE.
                text="10", type=NUMERIC_LITERAL.
            text="if_block", type=STATEMENT_BLOCK: subframe_var_count=0
                text="=", type=SREC_ASSIGNMENT:
                    text="x", type=FIELD_NAME.
                    text="11", type=NUMERIC_LITERAL.
                text="=", type=SREC_ASSIGNMENT:
                    text="y", type=FIELD_NAME.
                    text="12", type=NUMERIC_LITERAL.
        text="elif", type=IF_ITEM:
            text="==", type=OPERATOR:
                text="NR", type=CONTEXT_VARIABLE.
                text="13", type=NUMERIC_LITERAL.
            text="elif_block", type=STATEMENT_BLOCK: subframe_var_count=0
                text="=", type=SREC_ASSIGNMENT:
                    text="x", type=FIELD_NAME.
                    text="14", type=NUMERIC_LITERAL.
                text="=", type=SREC_ASSIGNMENT:
                    text="y", type=FIELD_NAME.
                    text="15", type=NUMERIC_LITERAL.
        text="elif", type=IF_ITEM:
            text="==", type=OPERATOR:
                text="NR", type=CONTEXT_VARIABLE.
                text="16", type=NUMERIC_LITERAL.
            text="elif_block", type=STATEMENT_BLOCK: subframe_var_count=0
                text="=", type=SREC_ASSIGNMENT:
                    text="x", type=FIELD_NAME.
                    text="17", type=NUMERIC_LITERAL.
                text="=", type=SREC_ASSIGNMENT:
                    text="y", type=FIELD_NAME.
                    text="18", type=NUMERIC_LITERAL.

i=1,x=101,y=201
i=2,x=102,y=202
i=3,x=103,y=203
i=4,x=104,y=204
i=5,x=105,y=205
i=6,x=106,y=206
i=7,x=107,y=207
i=8,x=108,y=208
i=9,x=109,y=209
i=10,x=11,y=12
i=11,x=111,y=211
i=12,x=112,y=212
i=13,x=14,y=15
i=14,x=114,y=214
i=15,x=115,y=215
i=16,x=17,y=18
i=17,x=117,y=217
i=18,x=118,y=218
i=19,x=119,y=219
i=20,x=120,y=220
i=21,x=121,y=221
i=22,x=122,y=222
i=23,x=123,y=223
i=24,x=124,y=224
i=25,x=125,y=225
i=26,x=126,y=226
i=27,x=127,y=227
i=28,x=128,y=228
i=29,x=129,y=229
i=30,x=130,y=230
i=31,x=131,y=231
i=32,x=132,y=232
i=33,x=133,y=233
i=34,x=134,y=234
i=35,x=135,y=235
i=36,x=136,y=236
i=37,x=137,y=237
i=38,x=138,y=238
i=39,x=139,y=239
i=40,x=140,y=240

mlr --from ./reg_test/input/xy40.dkvp put -v 
  if (NR == 19) {
    $x = 20;
    $y = 21
  } elif (NR == 22) {
    $x = 23;
    $y = 24
  } elif (NR == 25) {
    $x = 26;
    $y = 37
  } elif (NR == 28) {
    $x = 29;
    $y = 30
  }
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="if_head", type=IF_HEAD:
        text="if", type=IF_ITEM:
            text="==", type=OPERATOR:
                text="NR", type=CONTEXT_VARIABLE.
                text="19", type=NUMERIC_LITERAL.
            text="if_block", type=STATEMENT_BLOCK:
                text="=", type=SREC_ASSIGNMENT:
                    text="x", type=FIELD_NAME.
                    text="20", type=NUMERIC_LITERAL.
                text="=", type=SREC_ASSIGNMENT:
                    text="y", type=FIELD_NAME.
                    text="21", type=NUMERIC_LITERAL.
        text="elif", type=IF_ITEM:
            text="==", type=OPERATOR:
                text="NR", type=CONTEXT_VARIABLE.
                text="22", type=NUMERIC_LITERAL.
            text="elif_block", type=STATEMENT_BLOCK:
                text="=", type=SREC_ASSIGNMENT:
                    text="x", type=FIELD_NAME.
                    text="23", type=NUMERIC_LITERAL.
                text="=", type=SREC_ASSIGNMENT:
                    text="y", type=FIELD_NAME.
                    text="24", type=NUMERIC_LITERAL.
        text="elif", type=IF_ITEM:
            text="==", type=OPERATOR:
                text="NR", type=CONTEXT_VARIABLE.
                text="25", type=NUMERIC_LITERAL.
            text="elif_block", type=STATEMENT_BLOCK:
                text="=", type=SREC_ASSIGNMENT:
                    text="x", type=FIELD_NAME.
                    text="26", type=NUMERIC_LITERAL.
                text="=", type=SREC_ASSIGNMENT:
                    text="y", type=FIELD_NAME.
                    text="37", type=NUMERIC_LITERAL.
        text="elif", type=IF_ITEM:
            text="==", type=OPERATOR:
                text="NR", type=CONTEXT_VARIABLE.
                text="28", type=NUMERIC_LITERAL.
            text="elif_block", type=STATEMENT_BLOCK:
                text="=", type=SREC_ASSIGNMENT:
                    text="x", type=FIELD_NAME.
                    text="29", type=NUMERIC_LITERAL.
                text="=", type=SREC_ASSIGNMENT:
                    text="y", type=FIELD_NAME.
                    text="30", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=2 max_var_depth=1
    text="if_head", type=IF_HEAD:
        text="if", type=IF_ITEM:
            text="==", type=OPERATOR:
                text="NR", type=CONTEXT_VARIABLE.
                text="19", type=NUMERIC_LITERAL.
            text="if_block", type=STATEMENT_BLOCK: subframe_var_count=0
                text="=", type=SREC_ASSIGNMENT:
                    text="x", type=FIELD_NAME.
                    text="20", type=NUMERIC_LITERAL.
                text="=", type=SREC_ASSIGNMENT:
                    text="y", type=FIELD_NAME.
                    text="21", type=NUMERIC_LITERAL.
        text="elif", type=IF_ITEM:
            text="==", type=OPERATOR:
                text="NR", type=CONTEXT_VARIABLE.
                text="22", type=NUMERIC_LITERAL.
            text="elif_block", type=STATEMENT_BLOCK: subframe_var_count=0
                text="=", type=SREC_ASSIGNMENT:
                    text="x", type=FIELD_NAME.
                    text="23", type=NUMERIC_LITERAL.
                text="=", type=SREC_ASSIGNMENT:
                    text="y", type=FIELD_NAME.
                    text="24", type=NUMERIC_LITERAL.
        text="elif", type=IF_ITEM:
            text="==", type=OPERATOR:
                text="NR", type=CONTEXT_VARIABLE.
                text="25", type=NUMERIC_LITERAL.
            text="elif_block", type=STATEMENT_BLOCK: subframe_var_count=0
                text="=", type=SREC_ASSIGNMENT:
                    text="x", type=FIELD_NAME.
                    text="26", type=NUMERIC_LITERAL.
                text="=", type=SREC_ASSIGNMENT:
                    text="y", type=FIELD_NAME.
                    text="37", type=NUMERIC_LITERAL.
        text="elif", type=IF_ITEM:
            text="==", type=OPERATOR:
                text="NR", type=CONTEXT_VARIABLE.
                text="28", type=NUMERIC_LITERAL.
            text="elif_block", type=STATEMENT_BLOCK: subframe_var_count=0
                text="=", type=SREC_ASSIGNMENT:
                    text="x", type=FIELD_NAME.
                    text="29", type=NUMERIC_LITERAL.
                text="=", type=SREC_ASSIGNMENT:
                    text="y", type=FIELD_NAME.
                    text="30", type=NUMERIC_LITERAL.

i=1,x=101,y=201
i=2,x=102,y=202
i=3,x=103,y=203
i=4,x=104,y=204
i=5,x=105,y=205
i=6,x=106,y=206
i=7,x=107,y=207
i=8,x=108,y=208
i=9,x=109,y=209
i=10,x=110,y=210
i=11,x=111,y=211
i=12,x=112,y=212
i=13,x=113,y=213
i=14,x=114,y=214
i=15,x=115,y=215
i=16,x=116,y=216
i=17,x=117,y=217
i=18,x=118,y=218
i=19,x=20,y=21
i=20,x=120,y=220
i=21,x=121,y=221
i=22,x=23,y=24
i=23,x=123,y=223
i=24,x=124,y=224
i=25,x=26,y=37
i=26,x=126,y=226
i=27,x=127,y=227
i=28,x=29,y=30
i=29,x=129,y=229
i=30,x=130,y=230
i=31,x=131,y=231
i=32,x=132,y=232
i=33,x=133,y=233
i=34,x=134,y=234
i=35,x=135,y=235
i=36,x=136,y=236
i=37,x=137,y=237
i=38,x=138,y=238
i=39,x=139,y=239
i=40,x=140,y=240


================================================================
DSL INDIRECT SREC ASSIGNMENTS

mlr put -v $["a"] = $["b"]; $["x"] = 10 * $["y"] ./reg_test/input/abixy
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=INDIRECT_SREC_ASSIGNMENT:
        text="a", type=STRING_LITERAL.
        text="indirect_field_name", type=INDIRECT_FIELD_NAME:
            text="b", type=STRING_LITERAL.
    text="=", type=INDIRECT_SREC_ASSIGNMENT:
        text="x", type=STRING_LITERAL.
        text="*", type=OPERATOR:
            text="10", type=NUMERIC_LITERAL.
            text="indirect_field_name", type=INDIRECT_FIELD_NAME:
                text="y", type=STRING_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=INDIRECT_SREC_ASSIGNMENT:
        text="a", type=STRING_LITERAL.
        text="indirect_field_name", type=INDIRECT_FIELD_NAME:
            text="b", type=STRING_LITERAL.
    text="=", type=INDIRECT_SREC_ASSIGNMENT:
        text="x", type=STRING_LITERAL.
        text="*", type=OPERATOR:
            text="10", type=NUMERIC_LITERAL.
            text="indirect_field_name", type=INDIRECT_FIELD_NAME:
                text="y", type=STRING_LITERAL.

a=pan,b=pan,i=1,x=7.268029,y=0.7268028627434533
a=pan,b=pan,i=2,x=5.221511,y=0.5221511083334797
a=wye,b=wye,i=3,x=3.383185,y=0.33831852551664776
a=wye,b=wye,i=4,x=1.341887,y=0.13418874328430463
a=pan,b=pan,i=5,x=8.636245,y=0.8636244699032729
a=pan,b=pan,i=6,x=4.932213,y=0.49322128674835697
a=zee,b=zee,i=7,x=1.878849,y=0.1878849191181694
a=wye,b=wye,i=8,x=9.761814,y=0.976181385699006
a=wye,b=wye,i=9,x=7.495508,y=0.7495507603507059
a=wye,b=wye,i=10,x=9.526184,y=0.9526183602969864

mlr --from ./reg_test/input/abixy put while (NF < 256) { $["k".string(NF+1)] = "v".string(NF) }
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533,k6=v5,k7=v6,k8=v7,k9=v8,k10=v9,k11=v10,k12=v11,k13=v12,k14=v13,k15=v14,k16=v15,k17=v16,k18=v17,k19=v18,k20=v19,k21=v20,k22=v21,k23=v22,k24=v23,k25=v24,k26=v25,k27=v26,k28=v27,k29=v28,k30=v29,k31=v30,k32=v31,k33=v32,k34=v33,k35=v34,k36=v35,k37=v36,k38=v37,k39=v38,k40=v39,k41=v40,k42=v41,k43=v42,k44=v43,k45=v44,k46=v45,k47=v46,k48=v47,k49=v48,k50=v49,k51=v50,k52=v51,k53=v52,k54=v53,k55=v54,k56=v55,k57=v56,k58=v57,k59=v58,k60=v59,k61=v60,k62=v61,k63=v62,k64=v63,k65=v64,k66=v65,k67=v66,k68=v67,k69=v68,k70=v69,k71=v70,k72=v71,k73=v72,k74=v73,k75=v74,k76=v75,k77=v76,k78=v77,k79=v78,k80=v79,k81=v80,k82=v81,k83=v82,k84=v83,k85=v84,k86=v85,k87=v86,k88=v87,k89=v88,k90=v89,k91=v90,k92=v91,k93=v92,k94=v93,k95=v94,k96=v95,k97=v96,k98=v97,k99=v98,k100=v99,k101=v100,k102=v101,k103=v102,k104=v103,k105=v104,k106=v105,k107=v106,k108=v107,k109=v108,k110=v109,k111=v110,k112=v111,k113=v112,k114=v113,k115=v114,k116=v115,k117=v116,k118=v117,k119=v118,k120=v119,k121=v120,k122=v121,k123=v122,k124=v123,k125=v124,k126=v125,k127=v126,k128=v127,k129=v128,k130=v129,k131=v130,k132=v131,k133=v132,k134=v133,k135=v134,k136=v135,k137=v136,k138=v137,k139=v138,k140=v139,k141=v140,k142=v141,k143=v142,k144=v143,k145=v144,k146=v145,k147=v146,k148=v147,k149=v148,k150=v149,k151=v150,k152=v151,k153=v152,k154=v153,k155=v154,k156=v155,k157=v156,k158=v157,k159=v158,k160=v159,k161=v160,k162=v161,k163=v162,k164=v163,k165=v164,k166=v165,k167=v166,k168=v167,k169=v168,k170=v169,k171=v170,k172=v171,k173=v172,k174=v173,k175=v174,k176=v175,k177=v176,k178=v177,k179=v178,k180=v179,k181=v180,k182=v181,k183=v182,k184=v183,k185=v184,k186=v185,k187=v186,k188=v187,k189=v188,k190=v189,k191=v190,k192=v191,k193=v192,k194=v193,k195=v194,k196=v195,k197=v196,k198=v197,k199=v198,k200=v199,k201=v200,k202=v201,k203=v202,k204=v203,k205=v204,k206=v205,k207=v206,k208=v207,k209=v208,k210=v209,k211=v210,k212=v211,k213=v212,k214=v213,k215=v214,k216=v215,k217=v216,k218=v217,k219=v218,k220=v219,k221=v220,k222=v221,k223=v222,k224=v223,k225=v224,k226=v225,k227=v226,k228=v227,k229=v228,k230=v229,k231=v230,k232=v231,k233=v232,k234=v233,k235=v234,k236=v235,k237=v236,k238=v237,k239=v238,k240=v239,k241=v240,k242=v241,k243=v242,k244=v243,k245=v244,k246=v245,k247=v246,k248=v247,k249=v248,k250=v249,k251=v250,k252=v251,k253=v252,k254=v253,k255=v254,k256=v255
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797,k6=v5,k7=v6,k8=v7,k9=v8,k10=v9,k11=v10,k12=v11,k13=v12,k14=v13,k15=v14,k16=v15,k17=v16,k18=v17,k19=v18,k20=v19,k21=v20,k22=v21,k23=v22,k24=v23,k25=v24,k26=v25,k27=v26,k28=v27,k29=v28,k30=v29,k31=v30,k32=v31,k33=v32,k34=v33,k35=v34,k36=v35,k37=v36,k38=v37,k39=v38,k40=v39,k41=v40,k42=v41,k43=v42,k44=v43,k45=v44,k46=v45,k47=v46,k48=v47,k49=v48,k50=v49,k51=v50,k52=v51,k53=v52,k54=v53,k55=v54,k56=v55,k57=v56,k58=v57,k59=v58,k60=v59,k61=v60,k62=v61,k63=v62,k64=v63,k65=v64,k66=v65,k67=v66,k68=v67,k69=v68,k70=v69,k71=v70,k72=v71,k73=v72,k74=v73,k75=v74,k76=v75,k77=v76,k78=v77,k79=v78,k80=v79,k81=v80,k82=v81,k83=v82,k84=v83,k85=v84,k86=v85,k87=v86,k88=v87,k89=v88,k90=v89,k91=v90,k92=v91,k93=v92,k94=v93,k95=v94,k96=v95,k97=v96,k98=v97,k99=v98,k100=v99,k101=v100,k102=v101,k103=v102,k104=v103,k105=v104,k106=v105,k107=v106,k108=v107,k109=v108,k110=v109,k111=v110,k112=v111,k113=v112,k114=v113,k115=v114,k116=v115,k117=v116,k118=v117,k119=v118,k120=v119,k121=v120,k122=v121,k123=v122,k124=v123,k125=v124,k126=v125,k127=v126,k128=v127,k129=v128,k130=v129,k131=v130,k132=v131,k133=v132,k134=v133,k135=v134,k136=v135,k137=v136,k138=v137,k139=v138,k140=v139,k141=v140,k142=v141,k143=v142,k144=v143,k145=v144,k146=v145,k147=v146,k148=v147,k149=v148,k150=v149,k151=v150,k152=v151,k153=v152,k154=v153,k155=v154,k156=v155,k157=v156,k158=v157,k159=v158,k160=v159,k161=v160,k162=v161,k163=v162,k164=v163,k165=v164,k166=v165,k167=v166,k168=v167,k169=v168,k170=v169,k171=v170,k172=v171,k173=v172,k174=v173,k175=v174,k176=v175,k177=v176,k178=v177,k179=v178,k180=v179,k181=v180,k182=v181,k183=v182,k184=v183,k185=v184,k186=v185,k187=v186,k188=v187,k189=v188,k190=v189,k191=v190,k192=v191,k193=v192,k194=v193,k195=v194,k196=v195,k197=v196,k198=v197,k199=v198,k200=v199,k201=v200,k202=v201,k203=v202,k204=v203,k205=v204,k206=v205,k207=v206,k208=v207,k209=v208,k210=v209,k211=v210,k212=v211,k213=v212,k214=v213,k215=v214,k216=v215,k217=v216,k218=v217,k219=v218,k220=v219,k221=v220,k222=v221,k223=v222,k224=v223,k225=v224,k226=v225,k227=v226,k228=v227,k229=v228,k230=v229,k231=v230,k232=v231,k233=v232,k234=v233,k235=v234,k236=v235,k237=v236,k238=v237,k239=v238,k240=v239,k241=v240,k242=v241,k243=v242,k244=v243,k245=v244,k246=v245,k247=v246,k248=v247,k249=v248,k250=v249,k251=v250,k252=v251,k253=v252,k254=v253,k255=v254,k256=v255
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776,k6=v5,k7=v6,k8=v7,k9=v8,k10=v9,k11=v10,k12=v11,k13=v12,k14=v13,k15=v14,k16=v15,k17=v16,k18=v17,k19=v18,k20=v19,k21=v20,k22=v21,k23=v22,k24=v23,k25=v24,k26=v25,k27=v26,k28=v27,k29=v28,k30=v29,k31=v30,k32=v31,k33=v32,k34=v33,k35=v34,k36=v35,k37=v36,k38=v37,k39=v38,k40=v39,k41=v40,k42=v41,k43=v42,k44=v43,k45=v44,k46=v45,k47=v46,k48=v47,k49=v48,k50=v49,k51=v50,k52=v51,k53=v52,k54=v53,k55=v54,k56=v55,k57=v56,k58=v57,k59=v58,k60=v59,k61=v60,k62=v61,k63=v62,k64=v63,k65=v64,k66=v65,k67=v66,k68=v67,k69=v68,k70=v69,k71=v70,k72=v71,k73=v72,k74=v73,k75=v74,k76=v75,k77=v76,k78=v77,k79=v78,k80=v79,k81=v80,k82=v81,k83=v82,k84=v83,k85=v84,k86=v85,k87=v86,k88=v87,k89=v88,k90=v89,k91=v90,k92=v91,k93=v92,k94=v93,k95=v94,k96=v95,k97=v96,k98=v97,k99=v98,k100=v99,k101=v100,k102=v101,k103=v102,k104=v103,k105=v104,k106=v105,k107=v106,k108=v107,k109=v108,k110=v109,k111=v110,k112=v111,k113=v112,k114=v113,k115=v114,k116=v115,k117=v116,k118=v117,k119=v118,k120=v119,k121=v120,k122=v121,k123=v122,k124=v123,k125=v124,k126=v125,k127=v126,k128=v127,k129=v128,k130=v129,k131=v130,k132=v131,k133=v132,k134=v133,k135=v134,k136=v135,k137=v136,k138=v137,k139=v138,k140=v139,k141=v140,k142=v141,k143=v142,k144=v143,k145=v144,k146=v145,k147=v146,k148=v147,k149=v148,k150=v149,k151=v150,k152=v151,k153=v152,k154=v153,k155=v154,k156=v155,k157=v156,k158=v157,k159=v158,k160=v159,k161=v160,k162=v161,k163=v162,k164=v163,k165=v164,k166=v165,k167=v166,k168=v167,k169=v168,k170=v169,k171=v170,k172=v171,k173=v172,k174=v173,k175=v174,k176=v175,k177=v176,k178=v177,k179=v178,k180=v179,k181=v180,k182=v181,k183=v182,k184=v183,k185=v184,k186=v185,k187=v186,k188=v187,k189=v188,k190=v189,k191=v190,k192=v191,k193=v192,k194=v193,k195=v194,k196=v195,k197=v196,k198=v197,k199=v198,k200=v199,k201=v200,k202=v201,k203=v202,k204=v203,k205=v204,k206=v205,k207=v206,k208=v207,k209=v208,k210=v209,k211=v210,k212=v211,k213=v212,k214=v213,k215=v214,k216=v215,k217=v216,k218=v217,k219=v218,k220=v219,k221=v220,k222=v221,k223=v222,k224=v223,k225=v224,k226=v225,k227=v226,k228=v227,k229=v228,k230=v229,k231=v230,k232=v231,k233=v232,k234=v233,k235=v234,k236=v235,k237=v236,k238=v237,k239=v238,k240=v239,k241=v240,k242=v241,k243=v242,k244=v243,k245=v244,k246=v245,k247=v246,k248=v247,k249=v248,k250=v249,k251=v250,k252=v251,k253=v252,k254=v253,k255=v254,k256=v255
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463,k6=v5,k7=v6,k8=v7,k9=v8,k10=v9,k11=v10,k12=v11,k13=v12,k14=v13,k15=v14,k16=v15,k17=v16,k18=v17,k19=v18,k20=v19,k21=v20,k22=v21,k23=v22,k24=v23,k25=v24,k26=v25,k27=v26,k28=v27,k29=v28,k30=v29,k31=v30,k32=v31,k33=v32,k34=v33,k35=v34,k36=v35,k37=v36,k38=v37,k39=v38,k40=v39,k41=v40,k42=v41,k43=v42,k44=v43,k45=v44,k46=v45,k47=v46,k48=v47,k49=v48,k50=v49,k51=v50,k52=v51,k53=v52,k54=v53,k55=v54,k56=v55,k57=v56,k58=v57,k59=v58,k60=v59,k61=v60,k62=v61,k63=v62,k64=v63,k65=v64,k66=v65,k67=v66,k68=v67,k69=v68,k70=v69,k71=v70,k72=v71,k73=v72,k74=v73,k75=v74,k76=v75,k77=v76,k78=v77,k79=v78,k80=v79,k81=v80,k82=v81,k83=v82,k84=v83,k85=v84,k86=v85,k87=v86,k88=v87,k89=v88,k90=v89,k91=v90,k92=v91,k93=v92,k94=v93,k95=v94,k96=v95,k97=v96,k98=v97,k99=v98,k100=v99,k101=v100,k102=v101,k103=v102,k104=v103,k105=v104,k106=v105,k107=v106,k108=v107,k109=v108,k110=v109,k111=v110,k112=v111,k113=v112,k114=v113,k115=v114,k116=v115,k117=v116,k118=v117,k119=v118,k120=v119,k121=v120,k122=v121,k123=v122,k124=v123,k125=v124,k126=v125,k127=v126,k128=v127,k129=v128,k130=v129,k131=v130,k132=v131,k133=v132,k134=v133,k135=v134,k136=v135,k137=v136,k138=v137,k139=v138,k140=v139,k141=v140,k142=v141,k143=v142,k144=v143,k145=v144,k146=v145,k147=v146,k148=v147,k149=v148,k150=v149,k151=v150,k152=v151,k153=v152,k154=v153,k155=v154,k156=v155,k157=v156,k158=v157,k159=v158,k160=v159,k161=v160,k162=v161,k163=v162,k164=v163,k165=v164,k166=v165,k167=v166,k168=v167,k169=v168,k170=v169,k171=v170,k172=v171,k173=v172,k174=v173,k175=v174,k176=v175,k177=v176,k178=v177,k179=v178,k180=v179,k181=v180,k182=v181,k183=v182,k184=v183,k185=v184,k186=v185,k187=v186,k188=v187,k189=v188,k190=v189,k191=v190,k192=v191,k193=v192,k194=v193,k195=v194,k196=v195,k197=v196,k198=v197,k199=v198,k200=v199,k201=v200,k202=v201,k203=v202,k204=v203,k205=v204,k206=v205,k207=v206,k208=v207,k209=v208,k210=v209,k211=v210,k212=v211,k213=v212,k214=v213,k215=v214,k216=v215,k217=v216,k218=v217,k219=v218,k220=v219,k221=v220,k222=v221,k223=v222,k224=v223,k225=v224,k226=v225,k227=v226,k228=v227,k229=v228,k230=v229,k231=v230,k232=v231,k233=v232,k234=v233,k235=v234,k236=v235,k237=v236,k238=v237,k239=v238,k240=v239,k241=v240,k242=v241,k243=v242,k244=v243,k245=v244,k246=v245,k247=v246,k248=v247,k249=v248,k250=v249,k251=v250,k252=v251,k253=v252,k254=v253,k255=v254,k256=v255
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729,k6=v5,k7=v6,k8=v7,k9=v8,k10=v9,k11=v10,k12=v11,k13=v12,k14=v13,k15=v14,k16=v15,k17=v16,k18=v17,k19=v18,k20=v19,k21=v20,k22=v21,k23=v22,k24=v23,k25=v24,k26=v25,k27=v26,k28=v27,k29=v28,k30=v29,k31=v30,k32=v31,k33=v32,k34=v33,k35=v34,k36=v35,k37=v36,k38=v37,k39=v38,k40=v39,k41=v40,k42=v41,k43=v42,k44=v43,k45=v44,k46=v45,k47=v46,k48=v47,k49=v48,k50=v49,k51=v50,k52=v51,k53=v52,k54=v53,k55=v54,k56=v55,k57=v56,k58=v57,k59=v58,k60=v59,k61=v60,k62=v61,k63=v62,k64=v63,k65=v64,k66=v65,k67=v66,k68=v67,k69=v68,k70=v69,k71=v70,k72=v71,k73=v72,k74=v73,k75=v74,k76=v75,k77=v76,k78=v77,k79=v78,k80=v79,k81=v80,k82=v81,k83=v82,k84=v83,k85=v84,k86=v85,k87=v86,k88=v87,k89=v88,k90=v89,k91=v90,k92=v91,k93=v92,k94=v93,k95=v94,k96=v95,k97=v96,k98=v97,k99=v98,k100=v99,k101=v100,k102=v101,k103=v102,k104=v103,k105=v104,k106=v105,k107=v106,k108=v107,k109=v108,k110=v109,k111=v110,k112=v111,k113=v112,k114=v113,k115=v114,k116=v115,k117=v116,k118=v117,k119=v118,k120=v119,k121=v120,k122=v121,k123=v122,k124=v123,k125=v124,k126=v125,k127=v126,k128=v127,k129=v128,k130=v129,k131=v130,k132=v131,k133=v132,k134=v133,k135=v134,k136=v135,k137=v136,k138=v137,k139=v138,k140=v139,k141=v140,k142=v141,k143=v142,k144=v143,k145=v144,k146=v145,k147=v146,k148=v147,k149=v148,k150=v149,k151=v150,k152=v151,k153=v152,k154=v153,k155=v154,k156=v155,k157=v156,k158=v157,k159=v158,k160=v159,k161=v160,k162=v161,k163=v162,k164=v163,k165=v164,k166=v165,k167=v166,k168=v167,k169=v168,k170=v169,k171=v170,k172=v171,k173=v172,k174=v173,k175=v174,k176=v175,k177=v176,k178=v177,k179=v178,k180=v179,k181=v180,k182=v181,k183=v182,k184=v183,k185=v184,k186=v185,k187=v186,k188=v187,k189=v188,k190=v189,k191=v190,k192=v191,k193=v192,k194=v193,k195=v194,k196=v195,k197=v196,k198=v197,k199=v198,k200=v199,k201=v200,k202=v201,k203=v202,k204=v203,k205=v204,k206=v205,k207=v206,k208=v207,k209=v208,k210=v209,k211=v210,k212=v211,k213=v212,k214=v213,k215=v214,k216=v215,k217=v216,k218=v217,k219=v218,k220=v219,k221=v220,k222=v221,k223=v222,k224=v223,k225=v224,k226=v225,k227=v226,k228=v227,k229=v228,k230=v229,k231=v230,k232=v231,k233=v232,k234=v233,k235=v234,k236=v235,k237=v236,k238=v237,k239=v238,k240=v239,k241=v240,k242=v241,k243=v242,k244=v243,k245=v244,k246=v245,k247=v246,k248=v247,k249=v248,k250=v249,k251=v250,k252=v251,k253=v252,k254=v253,k255=v254,k256=v255
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697,k6=v5,k7=v6,k8=v7,k9=v8,k10=v9,k11=v10,k12=v11,k13=v12,k14=v13,k15=v14,k16=v15,k17=v16,k18=v17,k19=v18,k20=v19,k21=v20,k22=v21,k23=v22,k24=v23,k25=v24,k26=v25,k27=v26,k28=v27,k29=v28,k30=v29,k31=v30,k32=v31,k33=v32,k34=v33,k35=v34,k36=v35,k37=v36,k38=v37,k39=v38,k40=v39,k41=v40,k42=v41,k43=v42,k44=v43,k45=v44,k46=v45,k47=v46,k48=v47,k49=v48,k50=v49,k51=v50,k52=v51,k53=v52,k54=v53,k55=v54,k56=v55,k57=v56,k58=v57,k59=v58,k60=v59,k61=v60,k62=v61,k63=v62,k64=v63,k65=v64,k66=v65,k67=v66,k68=v67,k69=v68,k70=v69,k71=v70,k72=v71,k73=v72,k74=v73,k75=v74,k76=v75,k77=v76,k78=v77,k79=v78,k80=v79,k81=v80,k82=v81,k83=v82,k84=v83,k85=v84,k86=v85,k87=v86,k88=v87,k89=v88,k90=v89,k91=v90,k92=v91,k93=v92,k94=v93,k95=v94,k96=v95,k97=v96,k98=v97,k99=v98,k100=v99,k101=v100,k102=v101,k103=v102,k104=v103,k105=v104,k106=v105,k107=v106,k108=v107,k109=v108,k110=v109,k111=v110,k112=v111,k113=v112,k114=v113,k115=v114,k116=v115,k117=v116,k118=v117,k119=v118,k120=v119,k121=v120,k122=v121,k123=v122,k124=v123,k125=v124,k126=v125,k127=v126,k128=v127,k129=v128,k130=v129,k131=v130,k132=v131,k133=v132,k134=v133,k135=v134,k136=v135,k137=v136,k138=v137,k139=v138,k140=v139,k141=v140,k142=v141,k143=v142,k144=v143,k145=v144,k146=v145,k147=v146,k148=v147,k149=v148,k150=v149,k151=v150,k152=v151,k153=v152,k154=v153,k155=v154,k156=v155,k157=v156,k158=v157,k159=v158,k160=v159,k161=v160,k162=v161,k163=v162,k164=v163,k165=v164,k166=v165,k167=v166,k168=v167,k169=v168,k170=v169,k171=v170,k172=v171,k173=v172,k174=v173,k175=v174,k176=v175,k177=v176,k178=v177,k179=v178,k180=v179,k181=v180,k182=v181,k183=v182,k184=v183,k185=v184,k186=v185,k187=v186,k188=v187,k189=v188,k190=v189,k191=v190,k192=v191,k193=v192,k194=v193,k195=v194,k196=v195,k197=v196,k198=v197,k199=v198,k200=v199,k201=v200,k202=v201,k203=v202,k204=v203,k205=v204,k206=v205,k207=v206,k208=v207,k209=v208,k210=v209,k211=v210,k212=v211,k213=v212,k214=v213,k215=v214,k216=v215,k217=v216,k218=v217,k219=v218,k220=v219,k221=v220,k222=v221,k223=v222,k224=v223,k225=v224,k226=v225,k227=v226,k228=v227,k229=v228,k230=v229,k231=v230,k232=v231,k233=v232,k234=v233,k235=v234,k236=v235,k237=v236,k238=v237,k239=v238,k240=v239,k241=v240,k242=v241,k243=v242,k244=v243,k245=v244,k246=v245,k247=v246,k248=v247,k249=v248,k250=v249,k251=v250,k252=v251,k253=v252,k254=v253,k255=v254,k256=v255
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694,k6=v5,k7=v6,k8=v7,k9=v8,k10=v9,k11=v10,k12=v11,k13=v12,k14=v13,k15=v14,k16=v15,k17=v16,k18=v17,k19=v18,k20=v19,k21=v20,k22=v21,k23=v22,k24=v23,k25=v24,k26=v25,k27=v26,k28=v27,k29=v28,k30=v29,k31=v30,k32=v31,k33=v32,k34=v33,k35=v34,k36=v35,k37=v36,k38=v37,k39=v38,k40=v39,k41=v40,k42=v41,k43=v42,k44=v43,k45=v44,k46=v45,k47=v46,k48=v47,k49=v48,k50=v49,k51=v50,k52=v51,k53=v52,k54=v53,k55=v54,k56=v55,k57=v56,k58=v57,k59=v58,k60=v59,k61=v60,k62=v61,k63=v62,k64=v63,k65=v64,k66=v65,k67=v66,k68=v67,k69=v68,k70=v69,k71=v70,k72=v71,k73=v72,k74=v73,k75=v74,k76=v75,k77=v76,k78=v77,k79=v78,k80=v79,k81=v80,k82=v81,k83=v82,k84=v83,k85=v84,k86=v85,k87=v86,k88=v87,k89=v88,k90=v89,k91=v90,k92=v91,k93=v92,k94=v93,k95=v94,k96=v95,k97=v96,k98=v97,k99=v98,k100=v99,k101=v100,k102=v101,k103=v102,k104=v103,k105=v104,k106=v105,k107=v106,k108=v107,k109=v108,k110=v109,k111=v110,k112=v111,k113=v112,k114=v113,k115=v114,k116=v115,k117=v116,k118=v117,k119=v118,k120=v119,k121=v120,k122=v121,k123=v122,k124=v123,k125=v124,k126=v125,k127=v126,k128=v127,k129=v128,k130=v129,k131=v130,k132=v131,k133=v132,k134=v133,k135=v134,k136=v135,k137=v136,k138=v137,k139=v138,k140=v139,k141=v140,k142=v141,k143=v142,k144=v143,k145=v144,k146=v145,k147=v146,k148=v147,k149=v148,k150=v149,k151=v150,k152=v151,k153=v152,k154=v153,k155=v154,k156=v155,k157=v156,k158=v157,k159=v158,k160=v159,k161=v160,k162=v161,k163=v162,k164=v163,k165=v164,k166=v165,k167=v166,k168=v167,k169=v168,k170=v169,k171=v170,k172=v171,k173=v172,k174=v173,k175=v174,k176=v175,k177=v176,k178=v177,k179=v178,k180=v179,k181=v180,k182=v181,k183=v182,k184=v183,k185=v184,k186=v185,k187=v186,k188=v187,k189=v188,k190=v189,k191=v190,k192=v191,k193=v192,k194=v193,k195=v194,k196=v195,k197=v196,k198=v197,k199=v198,k200=v199,k201=v200,k202=v201,k203=v202,k204=v203,k205=v204,k206=v205,k207=v206,k208=v207,k209=v208,k210=v209,k211=v210,k212=v211,k213=v212,k214=v213,k215=v214,k216=v215,k217=v216,k218=v217,k219=v218,k220=v219,k221=v220,k222=v221,k223=v222,k224=v223,k225=v224,k226=v225,k227=v226,k228=v227,k229=v228,k230=v229,k231=v230,k232=v231,k233=v232,k234=v233,k235=v234,k236=v235,k237=v236,k238=v237,k239=v238,k240=v239,k241=v240,k242=v241,k243=v242,k244=v243,k245=v244,k246=v245,k247=v246,k248=v247,k249=v248,k250=v249,k251=v250,k252=v251,k253=v252,k254=v253,k255=v254,k256=v255
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006,k6=v5,k7=v6,k8=v7,k9=v8,k10=v9,k11=v10,k12=v11,k13=v12,k14=v13,k15=v14,k16=v15,k17=v16,k18=v17,k19=v18,k20=v19,k21=v20,k22=v21,k23=v22,k24=v23,k25=v24,k26=v25,k27=v26,k28=v27,k29=v28,k30=v29,k31=v30,k32=v31,k33=v32,k34=v33,k35=v34,k36=v35,k37=v36,k38=v37,k39=v38,k40=v39,k41=v40,k42=v41,k43=v42,k44=v43,k45=v44,k46=v45,k47=v46,k48=v47,k49=v48,k50=v49,k51=v50,k52=v51,k53=v52,k54=v53,k55=v54,k56=v55,k57=v56,k58=v57,k59=v58,k60=v59,k61=v60,k62=v61,k63=v62,k64=v63,k65=v64,k66=v65,k67=v66,k68=v67,k69=v68,k70=v69,k71=v70,k72=v71,k73=v72,k74=v73,k75=v74,k76=v75,k77=v76,k78=v77,k79=v78,k80=v79,k81=v80,k82=v81,k83=v82,k84=v83,k85=v84,k86=v85,k87=v86,k88=v87,k89=v88,k90=v89,k91=v90,k92=v91,k93=v92,k94=v93,k95=v94,k96=v95,k97=v96,k98=v97,k99=v98,k100=v99,k101=v100,k102=v101,k103=v102,k104=v103,k105=v104,k106=v105,k107=v106,k108=v107,k109=v108,k110=v109,k111=v110,k112=v111,k113=v112,k114=v113,k115=v114,k116=v115,k117=v116,k118=v117,k119=v118,k120=v119,k121=v120,k122=v121,k123=v122,k124=v123,k125=v124,k126=v125,k127=v126,k128=v127,k129=v128,k130=v129,k131=v130,k132=v131,k133=v132,k134=v133,k135=v134,k136=v135,k137=v136,k138=v137,k139=v138,k140=v139,k141=v140,k142=v141,k143=v142,k144=v143,k145=v144,k146=v145,k147=v146,k148=v147,k149=v148,k150=v149,k151=v150,k152=v151,k153=v152,k154=v153,k155=v154,k156=v155,k157=v156,k158=v157,k159=v158,k160=v159,k161=v160,k162=v161,k163=v162,k164=v163,k165=v164,k166=v165,k167=v166,k168=v167,k169=v168,k170=v169,k171=v170,k172=v171,k173=v172,k174=v173,k175=v174,k176=v175,k177=v176,k178=v177,k179=v178,k180=v179,k181=v180,k182=v181,k183=v182,k184=v183,k185=v184,k186=v185,k187=v186,k188=v187,k189=v188,k190=v189,k191=v190,k192=v191,k193=v192,k194=v193,k195=v194,k196=v195,k197=v196,k198=v197,k199=v198,k200=v199,k201=v200,k202=v201,k203=v202,k204=v203,k205=v204,k206=v205,k207=v206,k208=v207,k209=v208,k210=v209,k211=v210,k212=v211,k213=v212,k214=v213,k215=v214,k216=v215,k217=v216,k218=v217,k219=v218,k220=v219,k221=v220,k222=v221,k223=v222,k224=v223,k225=v224,k226=v225,k227=v226,k228=v227,k229=v228,k230=v229,k231=v230,k232=v231,k233=v232,k234=v233,k235=v234,k236=v235,k237=v236,k238=v237,k239=v238,k240=v239,k241=v240,k242=v241,k243=v242,k244=v243,k245=v244,k246=v245,k247=v246,k248=v247,k249=v248,k250=v249,k251=v250,k252=v251,k253=v252,k254=v253,k255=v254,k256=v255
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059,k6=v5,k7=v6,k8=v7,k9=v8,k10=v9,k11=v10,k12=v11,k13=v12,k14=v13,k15=v14,k16=v15,k17=v16,k18=v17,k19=v18,k20=v19,k21=v20,k22=v21,k23=v22,k24=v23,k25=v24,k26=v25,k27=v26,k28=v27,k29=v28,k30=v29,k31=v30,k32=v31,k33=v32,k34=v33,k35=v34,k36=v35,k37=v36,k38=v37,k39=v38,k40=v39,k41=v40,k42=v41,k43=v42,k44=v43,k45=v44,k46=v45,k47=v46,k48=v47,k49=v48,k50=v49,k51=v50,k52=v51,k53=v52,k54=v53,k55=v54,k56=v55,k57=v56,k58=v57,k59=v58,k60=v59,k61=v60,k62=v61,k63=v62,k64=v63,k65=v64,k66=v65,k67=v66,k68=v67,k69=v68,k70=v69,k71=v70,k72=v71,k73=v72,k74=v73,k75=v74,k76=v75,k77=v76,k78=v77,k79=v78,k80=v79,k81=v80,k82=v81,k83=v82,k84=v83,k85=v84,k86=v85,k87=v86,k88=v87,k89=v88,k90=v89,k91=v90,k92=v91,k93=v92,k94=v93,k95=v94,k96=v95,k97=v96,k98=v97,k99=v98,k100=v99,k101=v100,k102=v101,k103=v102,k104=v103,k105=v104,k106=v105,k107=v106,k108=v107,k109=v108,k110=v109,k111=v110,k112=v111,k113=v112,k114=v113,k115=v114,k116=v115,k117=v116,k118=v117,k119=v118,k120=v119,k121=v120,k122=v121,k123=v122,k124=v123,k125=v124,k126=v125,k127=v126,k128=v127,k129=v128,k130=v129,k131=v130,k132=v131,k133=v132,k134=v133,k135=v134,k136=v135,k137=v136,k138=v137,k139=v138,k140=v139,k141=v140,k142=v141,k143=v142,k144=v143,k145=v144,k146=v145,k147=v146,k148=v147,k149=v148,k150=v149,k151=v150,k152=v151,k153=v152,k154=v153,k155=v154,k156=v155,k157=v156,k158=v157,k159=v158,k160=v159,k161=v160,k162=v161,k163=v162,k164=v163,k165=v164,k166=v165,k167=v166,k168=v167,k169=v168,k170=v169,k171=v170,k172=v171,k173=v172,k174=v173,k175=v174,k176=v175,k177=v176,k178=v177,k179=v178,k180=v179,k181=v180,k182=v181,k183=v182,k184=v183,k185=v184,k186=v185,k187=v186,k188=v187,k189=v188,k190=v189,k191=v190,k192=v191,k193=v192,k194=v193,k195=v194,k196=v195,k197=v196,k198=v197,k199=v198,k200=v199,k201=v200,k202=v201,k203=v202,k204=v203,k205=v204,k206=v205,k207=v206,k208=v207,k209=v208,k210=v209,k211=v210,k212=v211,k213=v212,k214=v213,k215=v214,k216=v215,k217=v216,k218=v217,k219=v218,k220=v219,k221=v220,k222=v221,k223=v222,k224=v223,k225=v224,k226=v225,k227=v226,k228=v227,k229=v228,k230=v229,k231=v230,k232=v231,k233=v232,k234=v233,k235=v234,k236=v235,k237=v236,k238=v237,k239=v238,k240=v239,k241=v240,k242=v241,k243=v242,k244=v243,k245=v244,k246=v245,k247=v246,k248=v247,k249=v248,k250=v249,k251=v250,k252=v251,k253=v252,k254=v253,k255=v254,k256=v255
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864,k6=v5,k7=v6,k8=v7,k9=v8,k10=v9,k11=v10,k12=v11,k13=v12,k14=v13,k15=v14,k16=v15,k17=v16,k18=v17,k19=v18,k20=v19,k21=v20,k22=v21,k23=v22,k24=v23,k25=v24,k26=v25,k27=v26,k28=v27,k29=v28,k30=v29,k31=v30,k32=v31,k33=v32,k34=v33,k35=v34,k36=v35,k37=v36,k38=v37,k39=v38,k40=v39,k41=v40,k42=v41,k43=v42,k44=v43,k45=v44,k46=v45,k47=v46,k48=v47,k49=v48,k50=v49,k51=v50,k52=v51,k53=v52,k54=v53,k55=v54,k56=v55,k57=v56,k58=v57,k59=v58,k60=v59,k61=v60,k62=v61,k63=v62,k64=v63,k65=v64,k66=v65,k67=v66,k68=v67,k69=v68,k70=v69,k71=v70,k72=v71,k73=v72,k74=v73,k75=v74,k76=v75,k77=v76,k78=v77,k79=v78,k80=v79,k81=v80,k82=v81,k83=v82,k84=v83,k85=v84,k86=v85,k87=v86,k88=v87,k89=v88,k90=v89,k91=v90,k92=v91,k93=v92,k94=v93,k95=v94,k96=v95,k97=v96,k98=v97,k99=v98,k100=v99,k101=v100,k102=v101,k103=v102,k104=v103,k105=v104,k106=v105,k107=v106,k108=v107,k109=v108,k110=v109,k111=v110,k112=v111,k113=v112,k114=v113,k115=v114,k116=v115,k117=v116,k118=v117,k119=v118,k120=v119,k121=v120,k122=v121,k123=v122,k124=v123,k125=v124,k126=v125,k127=v126,k128=v127,k129=v128,k130=v129,k131=v130,k132=v131,k133=v132,k134=v133,k135=v134,k136=v135,k137=v136,k138=v137,k139=v138,k140=v139,k141=v140,k142=v141,k143=v142,k144=v143,k145=v144,k146=v145,k147=v146,k148=v147,k149=v148,k150=v149,k151=v150,k152=v151,k153=v152,k154=v153,k155=v154,k156=v155,k157=v156,k158=v157,k159=v158,k160=v159,k161=v160,k162=v161,k163=v162,k164=v163,k165=v164,k166=v165,k167=v166,k168=v167,k169=v168,k170=v169,k171=v170,k172=v171,k173=v172,k174=v173,k175=v174,k176=v175,k177=v176,k178=v177,k179=v178,k180=v179,k181=v180,k182=v181,k183=v182,k184=v183,k185=v184,k186=v185,k187=v186,k188=v187,k189=v188,k190=v189,k191=v190,k192=v191,k193=v192,k194=v193,k195=v194,k196=v195,k197=v196,k198=v197,k199=v198,k200=v199,k201=v200,k202=v201,k203=v202,k204=v203,k205=v204,k206=v205,k207=v206,k208=v207,k209=v208,k210=v209,k211=v210,k212=v211,k213=v212,k214=v213,k215=v214,k216=v215,k217=v216,k218=v217,k219=v218,k220=v219,k221=v220,k222=v221,k223=v222,k224=v223,k225=v224,k226=v225,k227=v226,k228=v227,k229=v228,k230=v229,k231=v230,k232=v231,k233=v232,k234=v233,k235=v234,k236=v235,k237=v236,k238=v237,k239=v238,k240=v239,k241=v240,k242=v241,k243=v242,k244=v243,k245=v244,k246=v245,k247=v246,k248=v247,k249=v248,k250=v249,k251=v250,k252=v251,k253=v252,k254=v253,k255=v254,k256=v255


================================================================
DSL INDIRECT OOSVAR ASSIGNMENTS

mlr --opprint put -v @s = NR; $t = @s; $u=@["s"]; $v = $t - $u ./reg_test/input/abixy
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=OOSVAR_ASSIGNMENT:
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="s", type=STRING_LITERAL.
        text="NR", type=CONTEXT_VARIABLE.
    text="=", type=SREC_ASSIGNMENT:
        text="t", type=FIELD_NAME.
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="s", type=STRING_LITERAL.
    text="=", type=SREC_ASSIGNMENT:
        text="u", type=FIELD_NAME.
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="s", type=STRING_LITERAL.
    text="=", type=SREC_ASSIGNMENT:
        text="v", type=FIELD_NAME.
        text="-", type=OPERATOR:
            text="t", type=FIELD_NAME.
            text="u", type=FIELD_NAME.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=OOSVAR_ASSIGNMENT:
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="s", type=STRING_LITERAL.
        text="NR", type=CONTEXT_VARIABLE.
    text="=", type=SREC_ASSIGNMENT:
        text="t", type=FIELD_NAME.
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="s", type=STRING_LITERAL.
    text="=", type=SREC_ASSIGNMENT:
        text="u", type=FIELD_NAME.
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="s", type=STRING_LITERAL.
    text="=", type=SREC_ASSIGNMENT:
        text="v", type=FIELD_NAME.
        text="-", type=OPERATOR:
            text="t", type=FIELD_NAME.
            text="u", type=FIELD_NAME.

a   b   i  x                   y                   t  u  v
pan pan 1  0.3467901443380824  0.7268028627434533  1  1  0
eks pan 2  0.7586799647899636  0.5221511083334797  2  2  0
wye wye 3  0.20460330576630303 0.33831852551664776 3  3  0
eks wye 4  0.38139939387114097 0.13418874328430463 4  4  0
wye pan 5  0.5732889198020006  0.8636244699032729  5  5  0
zee pan 6  0.5271261600918548  0.49322128674835697 6  6  0
eks zee 7  0.6117840605678454  0.1878849191181694  7  7  0
zee wye 8  0.5985540091064224  0.976181385699006   8  8  0
hat wye 9  0.03144187646093577 0.7495507603507059  9  9  0
pan wye 10 0.5026260055412137  0.9526183602969864  10 10 0

mlr put -v @t["u"] = NR; $tu = @["t"]["u"]; emitp all ./reg_test/input/abixy
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=OOSVAR_ASSIGNMENT:
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="t", type=STRING_LITERAL.
            text="u", type=STRING_LITERAL.
        text="NR", type=CONTEXT_VARIABLE.
    text="=", type=SREC_ASSIGNMENT:
        text="tu", type=FIELD_NAME.
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="t", type=STRING_LITERAL.
            text="u", type=STRING_LITERAL.
    text="emitp", type=EMITP:
        text="emitp", type=EMITP:
            text="all", type=ALL.
        text="stream", type=STREAM:

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=OOSVAR_ASSIGNMENT:
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="t", type=STRING_LITERAL.
            text="u", type=STRING_LITERAL.
        text="NR", type=CONTEXT_VARIABLE.
    text="=", type=SREC_ASSIGNMENT:
        text="tu", type=FIELD_NAME.
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="t", type=STRING_LITERAL.
            text="u", type=STRING_LITERAL.
    text="emitp", type=EMITP:
        text="emitp", type=EMITP:
            text="all", type=ALL.
        text="stream", type=STREAM:

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"] = NR; $tu = @["t"]["u"]; emitp @* ./reg_test/input/abixy
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=OOSVAR_ASSIGNMENT:
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="t", type=STRING_LITERAL.
            text="u", type=STRING_LITERAL.
        text="NR", type=CONTEXT_VARIABLE.
    text="=", type=SREC_ASSIGNMENT:
        text="tu", type=FIELD_NAME.
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="t", type=STRING_LITERAL.
            text="u", type=STRING_LITERAL.
    text="emitp", type=EMITP:
        text="emitp", type=EMITP:
            text="@*", type=FULL_OOSVAR.
        text="stream", type=STREAM:

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=OOSVAR_ASSIGNMENT:
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="t", type=STRING_LITERAL.
            text="u", type=STRING_LITERAL.
        text="NR", type=CONTEXT_VARIABLE.
    text="=", type=SREC_ASSIGNMENT:
        text="tu", type=FIELD_NAME.
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="t", type=STRING_LITERAL.
            text="u", type=STRING_LITERAL.
    text="emitp", type=EMITP:
        text="emitp", type=EMITP:
            text="@*", type=FULL_OOSVAR.
        text="stream", type=STREAM:

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 @["s"] = $x; emitp all ./reg_test/input/abixy
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=OOSVAR_ASSIGNMENT:
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="s", type=STRING_LITERAL.
        text="x", type=FIELD_NAME.
    text="emitp", type=EMITP:
        text="emitp", type=EMITP:
            text="all", type=ALL.
        text="stream", type=STREAM:

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=OOSVAR_ASSIGNMENT:
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="s", type=STRING_LITERAL.
        text="x", type=FIELD_NAME.
    text="emitp", type=EMITP:
        text="emitp", type=EMITP:
            text="all", type=ALL.
        text="stream", type=STREAM:

s=0.346790
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
s=0.758680
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
s=0.204603
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
s=0.381399
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
s=0.573289
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
s=0.527126
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
s=0.611784
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
s=0.598554
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
s=0.031442
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
s=0.502626
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864

mlr put -v @["t"]["u"] = $y; emitp all ./reg_test/input/abixy
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=OOSVAR_ASSIGNMENT:
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="t", type=STRING_LITERAL.
            text="u", type=STRING_LITERAL.
        text="y", type=FIELD_NAME.
    text="emitp", type=EMITP:
        text="emitp", type=EMITP:
            text="all", type=ALL.
        text="stream", type=STREAM:

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=OOSVAR_ASSIGNMENT:
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="t", type=STRING_LITERAL.
            text="u", type=STRING_LITERAL.
        text="y", type=FIELD_NAME.
    text="emitp", type=EMITP:
        text="emitp", type=EMITP:
            text="all", type=ALL.
        text="stream", type=STREAM:

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


================================================================
OOSVAR-FROM-SREC ASSIGNMENT

mlr put -v @v     = $* /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=OOSVAR_FROM_FULL_SREC_ASSIGNMENT:
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="v", type=STRING_LITERAL.
        text="$*", type=FULL_SREC.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=OOSVAR_FROM_FULL_SREC_ASSIGNMENT:
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="v", type=STRING_LITERAL.
        text="$*", type=FULL_SREC.


mlr put -v @v[1]  = $* /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=OOSVAR_FROM_FULL_SREC_ASSIGNMENT:
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="v", type=STRING_LITERAL.
            text="1", type=NUMERIC_LITERAL.
        text="$*", type=FULL_SREC.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=OOSVAR_FROM_FULL_SREC_ASSIGNMENT:
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="v", type=STRING_LITERAL.
            text="1", type=NUMERIC_LITERAL.
        text="$*", type=FULL_SREC.


mlr put -v @v[$2] = $* /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=OOSVAR_FROM_FULL_SREC_ASSIGNMENT:
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="v", type=STRING_LITERAL.
            text="2", type=FIELD_NAME.
        text="$*", type=FULL_SREC.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=OOSVAR_FROM_FULL_SREC_ASSIGNMENT:
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="v", type=STRING_LITERAL.
            text="2", type=FIELD_NAME.
        text="$*", type=FULL_SREC.


mlr put -v NR == 3 {@v     = $*} /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="cond", type=CONDITIONAL_BLOCK:
        text="==", type=OPERATOR:
            text="NR", type=CONTEXT_VARIABLE.
            text="3", type=NUMERIC_LITERAL.
        text="cond_block", type=STATEMENT_BLOCK:
            text="=", type=OOSVAR_FROM_FULL_SREC_ASSIGNMENT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="v", type=STRING_LITERAL.
                text="$*", type=FULL_SREC.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=2 max_var_depth=1
    text="cond", type=CONDITIONAL_BLOCK:
        text="==", type=OPERATOR:
            text="NR", type=CONTEXT_VARIABLE.
            text="3", type=NUMERIC_LITERAL.
        text="cond_block", type=STATEMENT_BLOCK: subframe_var_count=0
            text="=", type=OOSVAR_FROM_FULL_SREC_ASSIGNMENT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="v", type=STRING_LITERAL.
                text="$*", type=FULL_SREC.


mlr put -v NR == 3 {@v[1]  = $*} /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="cond", type=CONDITIONAL_BLOCK:
        text="==", type=OPERATOR:
            text="NR", type=CONTEXT_VARIABLE.
            text="3", type=NUMERIC_LITERAL.
        text="cond_block", type=STATEMENT_BLOCK:
            text="=", type=OOSVAR_FROM_FULL_SREC_ASSIGNMENT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="v", type=STRING_LITERAL.
                    text="1", type=NUMERIC_LITERAL.
                text="$*", type=FULL_SREC.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=2 max_var_depth=1
    text="cond", type=CONDITIONAL_BLOCK:
        text="==", type=OPERATOR:
            text="NR", type=CONTEXT_VARIABLE.
            text="3", type=NUMERIC_LITERAL.
        text="cond_block", type=STATEMENT_BLOCK: subframe_var_count=0
            text="=", type=OOSVAR_FROM_FULL_SREC_ASSIGNMENT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="v", type=STRING_LITERAL.
                    text="1", type=NUMERIC_LITERAL.
                text="$*", type=FULL_SREC.


mlr put -v NR == 3 {@v[$2] = $*} /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="cond", type=CONDITIONAL_BLOCK:
        text="==", type=OPERATOR:
            text="NR", type=CONTEXT_VARIABLE.
            text="3", type=NUMERIC_LITERAL.
        text="cond_block", type=STATEMENT_BLOCK:
            text="=", type=OOSVAR_FROM_FULL_SREC_ASSIGNMENT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="v", type=STRING_LITERAL.
                    text="2", type=FIELD_NAME.
                text="$*", type=FULL_SREC.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=2 max_var_depth=1
    text="cond", type=CONDITIONAL_BLOCK:
        text="==", type=OPERATOR:
            text="NR", type=CONTEXT_VARIABLE.
            text="3", type=NUMERIC_LITERAL.
        text="cond_block", type=STATEMENT_BLOCK: subframe_var_count=0
            text="=", type=OOSVAR_FROM_FULL_SREC_ASSIGNMENT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="v", type=STRING_LITERAL.
                    text="2", type=FIELD_NAME.
                text="$*", type=FULL_SREC.


mlr --oxtab put -q @v = $*; end {emitp @v } ./reg_test/input/abixy-het
v:a pan
v:b wye
v:i 10
v:x 0.5026260055412137
v:y 0.9526183602969864

mlr --oxtab put -q @v[$a] = $*; end {emitp @v      } ./reg_test/input/abixy-het
v:pan:a   pan
v:pan:b   wye
v:pan:i   10
v:pan:x   0.5026260055412137
v:pan:y   0.9526183602969864
v:eks:a   eks
v:eks:b   zee
v:eks:iii 7
v:eks:x   0.6117840605678454
v:eks:y   0.1878849191181694
v:wye:a   wye
v:wye:b   pan
v:wye:i   5
v:wye:xxx 0.5732889198020006
v:wye:y   0.8636244699032729
v:zee:a   zee
v:zee:b   wye
v:zee:i   8
v:zee:x   0.5985540091064224
v:zee:yyy 0.976181385699006

mlr --oxtab put -q @v[$a] = $*; end {emitp @v, "a" } ./reg_test/input/abixy-het
a   pan
v:a pan
v:b wye
v:i 10
v:x 0.5026260055412137
v:y 0.9526183602969864

a     eks
v:a   eks
v:b   zee
v:iii 7
v:x   0.6117840605678454
v:y   0.1878849191181694

a     wye
v:a   wye
v:b   pan
v:i   5
v:xxx 0.5732889198020006
v:y   0.8636244699032729

a     zee
v:a   zee
v:b   wye
v:i   8
v:x   0.5985540091064224
v:yyy 0.976181385699006

mlr --oxtab put -q @v[$a][$b] = $*; end {emitp @v          } ./reg_test/input/abixy-het
v:pan:pan:a   pan
v:pan:pan:b   pan
v:pan:pan:i   1
v:pan:pan:x   0.3467901443380824
v:pan:pan:y   0.7268028627434533
v:pan:wye:a   pan
v:pan:wye:b   wye
v:pan:wye:i   10
v:pan:wye:x   0.5026260055412137
v:pan:wye:y   0.9526183602969864
v:eks:pan:a   eks
v:eks:pan:b   pan
v:eks:pan:i   2
v:eks:pan:x   0.7586799647899636
v:eks:pan:y   0.5221511083334797
v:eks:zee:a   eks
v:eks:zee:b   zee
v:eks:zee:iii 7
v:eks:zee:x   0.6117840605678454
v:eks:zee:y   0.1878849191181694
v:wye:pan:a   wye
v:wye:pan:b   pan
v:wye:pan:i   5
v:wye:pan:xxx 0.5732889198020006
v:wye:pan:y   0.8636244699032729
v:zee:pan:a   zee
v:zee:pan:b   pan
v:zee:pan:i   6
v:zee:pan:x   0.5271261600918548
v:zee:pan:y   0.49322128674835697
v:zee:wye:a   zee
v:zee:wye:b   wye
v:zee:wye:i   8
v:zee:wye:x   0.5985540091064224
v:zee:wye:yyy 0.976181385699006

mlr --oxtab put -q @v[$a][$b] = $*; end {emitp @v, "a"     } ./reg_test/input/abixy-het
a       pan
v:pan:a pan
v:pan:b pan
v:pan:i 1
v:pan:x 0.3467901443380824
v:pan:y 0.7268028627434533
v:wye:a pan
v:wye:b wye
v:wye:i 10
v:wye:x 0.5026260055412137
v:wye:y 0.9526183602969864

a         eks
v:pan:a   eks
v:pan:b   pan
v:pan:i   2
v:pan:x   0.7586799647899636
v:pan:y   0.5221511083334797
v:zee:a   eks
v:zee:b   zee
v:zee:iii 7
v:zee:x   0.6117840605678454
v:zee:y   0.1878849191181694

a         wye
v:pan:a   wye
v:pan:b   pan
v:pan:i   5
v:pan:xxx 0.5732889198020006
v:pan:y   0.8636244699032729

a         zee
v:pan:a   zee
v:pan:b   pan
v:pan:i   6
v:pan:x   0.5271261600918548
v:pan:y   0.49322128674835697
v:wye:a   zee
v:wye:b   wye
v:wye:i   8
v:wye:x   0.5985540091064224
v:wye:yyy 0.976181385699006

mlr --oxtab put -q @v[$a][$b] = $*; end {emitp @v, "a", "b"} ./reg_test/input/abixy-het
a   pan
b   pan
v:a pan
v:b pan
v:i 1
v:x 0.3467901443380824
v:y 0.7268028627434533

a   pan
b   wye
v:a pan
v:b wye
v:i 10
v:x 0.5026260055412137
v:y 0.9526183602969864

a   eks
b   pan
v:a eks
v:b pan
v:i 2
v:x 0.7586799647899636
v:y 0.5221511083334797

a     eks
b     zee
v:a   eks
v:b   zee
v:iii 7
v:x   0.6117840605678454
v:y   0.1878849191181694

a     wye
b     pan
v:a   wye
v:b   pan
v:i   5
v:xxx 0.5732889198020006
v:y   0.8636244699032729

a   zee
b   pan
v:a zee
v:b pan
v:i 6
v:x 0.5271261600918548
v:y 0.49322128674835697

a     zee
b     wye
v:a   zee
v:b   wye
v:i   8
v:x   0.5985540091064224
v:yyy 0.976181385699006


================================================================
SREC-FROM-OOSVAR ASSIGNMENT

mlr put -v $* = @v     /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=FULL_SREC_ASSIGNMENT:
        text="$*", type=FULL_SREC.
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="v", type=STRING_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=FULL_SREC_ASSIGNMENT:
        text="$*", type=FULL_SREC.
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="v", type=STRING_LITERAL.


mlr put -v $* = @v[1]  /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=FULL_SREC_ASSIGNMENT:
        text="$*", type=FULL_SREC.
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="v", type=STRING_LITERAL.
            text="1", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=FULL_SREC_ASSIGNMENT:
        text="$*", type=FULL_SREC.
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="v", type=STRING_LITERAL.
            text="1", type=NUMERIC_LITERAL.


mlr put -v $* = @v[$2] /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=FULL_SREC_ASSIGNMENT:
        text="$*", type=FULL_SREC.
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="v", type=STRING_LITERAL.
            text="2", type=FIELD_NAME.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=FULL_SREC_ASSIGNMENT:
        text="$*", type=FULL_SREC.
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="v", type=STRING_LITERAL.
            text="2", type=FIELD_NAME.


mlr put -v NR == 3 {$* = @v    } /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="cond", type=CONDITIONAL_BLOCK:
        text="==", type=OPERATOR:
            text="NR", type=CONTEXT_VARIABLE.
            text="3", type=NUMERIC_LITERAL.
        text="cond_block", type=STATEMENT_BLOCK:
            text="=", type=FULL_SREC_ASSIGNMENT:
                text="$*", type=FULL_SREC.
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="v", type=STRING_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=2 max_var_depth=1
    text="cond", type=CONDITIONAL_BLOCK:
        text="==", type=OPERATOR:
            text="NR", type=CONTEXT_VARIABLE.
            text="3", type=NUMERIC_LITERAL.
        text="cond_block", type=STATEMENT_BLOCK: subframe_var_count=0
            text="=", type=FULL_SREC_ASSIGNMENT:
                text="$*", type=FULL_SREC.
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="v", type=STRING_LITERAL.


mlr put -v NR == 3 {$* = @v[1] } /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="cond", type=CONDITIONAL_BLOCK:
        text="==", type=OPERATOR:
            text="NR", type=CONTEXT_VARIABLE.
            text="3", type=NUMERIC_LITERAL.
        text="cond_block", type=STATEMENT_BLOCK:
            text="=", type=FULL_SREC_ASSIGNMENT:
                text="$*", type=FULL_SREC.
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="v", type=STRING_LITERAL.
                    text="1", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=2 max_var_depth=1
    text="cond", type=CONDITIONAL_BLOCK:
        text="==", type=OPERATOR:
            text="NR", type=CONTEXT_VARIABLE.
            text="3", type=NUMERIC_LITERAL.
        text="cond_block", type=STATEMENT_BLOCK: subframe_var_count=0
            text="=", type=FULL_SREC_ASSIGNMENT:
                text="$*", type=FULL_SREC.
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="v", type=STRING_LITERAL.
                    text="1", type=NUMERIC_LITERAL.


mlr put -v NR == 3 {$* = @v[$2]} /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="cond", type=CONDITIONAL_BLOCK:
        text="==", type=OPERATOR:
            text="NR", type=CONTEXT_VARIABLE.
            text="3", type=NUMERIC_LITERAL.
        text="cond_block", type=STATEMENT_BLOCK:
            text="=", type=FULL_SREC_ASSIGNMENT:
                text="$*", type=FULL_SREC.
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="v", type=STRING_LITERAL.
                    text="2", type=FIELD_NAME.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=2 max_var_depth=1
    text="cond", type=CONDITIONAL_BLOCK:
        text="==", type=OPERATOR:
            text="NR", type=CONTEXT_VARIABLE.
            text="3", type=NUMERIC_LITERAL.
        text="cond_block", type=STATEMENT_BLOCK: subframe_var_count=0
            text="=", type=FULL_SREC_ASSIGNMENT:
                text="$*", type=FULL_SREC.
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="v", type=STRING_LITERAL.
                    text="2", type=FIELD_NAME.


mlr put @v[NR] = $a; NR == 7 { @v = $*} ; $* = @v ./reg_test/input/abixy-het
1=pan
1=pan,2=eks
1=pan,2=eks
1=pan,2=eks,4=eks
1=pan,2=eks,4=eks,5=wye
1=pan,2=eks,4=eks,5=wye,6=zee
a=eks,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694
a=eks,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694,8=zee
a=eks,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694,8=zee
a=eks,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694,8=zee,10=pan


================================================================
OOSVAR-FROM-OOSVAR ASSIGNMENT

mlr put -v @u    = @v /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=OOSVAR_ASSIGNMENT:
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="u", type=STRING_LITERAL.
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="v", type=STRING_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=OOSVAR_ASSIGNMENT:
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="u", type=STRING_LITERAL.
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="v", type=STRING_LITERAL.


mlr put -v @u    = @v[1] /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=OOSVAR_ASSIGNMENT:
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="u", type=STRING_LITERAL.
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="v", type=STRING_LITERAL.
            text="1", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=OOSVAR_ASSIGNMENT:
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="u", type=STRING_LITERAL.
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="v", type=STRING_LITERAL.
            text="1", type=NUMERIC_LITERAL.


mlr put -v @u[2] = @v /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=OOSVAR_ASSIGNMENT:
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="u", type=STRING_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="v", type=STRING_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=OOSVAR_ASSIGNMENT:
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="u", type=STRING_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="v", type=STRING_LITERAL.


mlr put -v @u[2] = @v[1] /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=OOSVAR_ASSIGNMENT:
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="u", type=STRING_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="v", type=STRING_LITERAL.
            text="1", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=OOSVAR_ASSIGNMENT:
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="u", type=STRING_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="v", type=STRING_LITERAL.
            text="1", type=NUMERIC_LITERAL.


mlr put -v begin { @u    = @v } /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="begin", type=BEGIN:
        text="begin_block", type=STATEMENT_BLOCK:
            text="=", type=OOSVAR_ASSIGNMENT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="u", type=STRING_LITERAL.
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="v", type=STRING_LITERAL.

BLOCKED AST:

BEGIN-BLOCK:
text="begin", type=BEGIN: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="begin_block", type=STATEMENT_BLOCK:
        text="=", type=OOSVAR_ASSIGNMENT:
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="u", type=STRING_LITERAL.
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="v", type=STRING_LITERAL.

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1


mlr put -v begin { @u    = @v[1] } /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="begin", type=BEGIN:
        text="begin_block", type=STATEMENT_BLOCK:
            text="=", type=OOSVAR_ASSIGNMENT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="u", type=STRING_LITERAL.
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="v", type=STRING_LITERAL.
                    text="1", type=NUMERIC_LITERAL.

BLOCKED AST:

BEGIN-BLOCK:
text="begin", type=BEGIN: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="begin_block", type=STATEMENT_BLOCK:
        text="=", type=OOSVAR_ASSIGNMENT:
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="u", type=STRING_LITERAL.
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="v", type=STRING_LITERAL.
                text="1", type=NUMERIC_LITERAL.

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1


mlr put -v begin { @u[2] = @v } /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="begin", type=BEGIN:
        text="begin_block", type=STATEMENT_BLOCK:
            text="=", type=OOSVAR_ASSIGNMENT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="u", type=STRING_LITERAL.
                    text="2", type=NUMERIC_LITERAL.
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="v", type=STRING_LITERAL.

BLOCKED AST:

BEGIN-BLOCK:
text="begin", type=BEGIN: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="begin_block", type=STATEMENT_BLOCK:
        text="=", type=OOSVAR_ASSIGNMENT:
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="u", type=STRING_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="v", type=STRING_LITERAL.

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1


mlr put -v begin { @u[2] = @v[1] } /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="begin", type=BEGIN:
        text="begin_block", type=STATEMENT_BLOCK:
            text="=", type=OOSVAR_ASSIGNMENT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="u", type=STRING_LITERAL.
                    text="2", type=NUMERIC_LITERAL.
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="v", type=STRING_LITERAL.
                    text="1", type=NUMERIC_LITERAL.

BLOCKED AST:

BEGIN-BLOCK:
text="begin", type=BEGIN: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="begin_block", type=STATEMENT_BLOCK:
        text="=", type=OOSVAR_ASSIGNMENT:
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="u", type=STRING_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="v", type=STRING_LITERAL.
                text="1", type=NUMERIC_LITERAL.

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1


mlr put -v NR == 3 { @u    = @v } /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="cond", type=CONDITIONAL_BLOCK:
        text="==", type=OPERATOR:
            text="NR", type=CONTEXT_VARIABLE.
            text="3", type=NUMERIC_LITERAL.
        text="cond_block", type=STATEMENT_BLOCK:
            text="=", type=OOSVAR_ASSIGNMENT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="u", type=STRING_LITERAL.
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="v", type=STRING_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=2 max_var_depth=1
    text="cond", type=CONDITIONAL_BLOCK:
        text="==", type=OPERATOR:
            text="NR", type=CONTEXT_VARIABLE.
            text="3", type=NUMERIC_LITERAL.
        text="cond_block", type=STATEMENT_BLOCK: subframe_var_count=0
            text="=", type=OOSVAR_ASSIGNMENT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="u", type=STRING_LITERAL.
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="v", type=STRING_LITERAL.


mlr put -v NR == 3 { @u    = @v[1] } /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="cond", type=CONDITIONAL_BLOCK:
        text="==", type=OPERATOR:
            text="NR", type=CONTEXT_VARIABLE.
            text="3", type=NUMERIC_LITERAL.
        text="cond_block", type=STATEMENT_BLOCK:
            text="=", type=OOSVAR_ASSIGNMENT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="u", type=STRING_LITERAL.
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="v", type=STRING_LITERAL.
                    text="1", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=2 max_var_depth=1
    text="cond", type=CONDITIONAL_BLOCK:
        text="==", type=OPERATOR:
            text="NR", type=CONTEXT_VARIABLE.
            text="3", type=NUMERIC_LITERAL.
        text="cond_block", type=STATEMENT_BLOCK: subframe_var_count=0
            text="=", type=OOSVAR_ASSIGNMENT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="u", type=STRING_LITERAL.
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="v", type=STRING_LITERAL.
                    text="1", type=NUMERIC_LITERAL.


mlr put -v NR == 3 { @u[2] = @v } /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="cond", type=CONDITIONAL_BLOCK:
        text="==", type=OPERATOR:
            text="NR", type=CONTEXT_VARIABLE.
            text="3", type=NUMERIC_LITERAL.
        text="cond_block", type=STATEMENT_BLOCK:
            text="=", type=OOSVAR_ASSIGNMENT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="u", type=STRING_LITERAL.
                    text="2", type=NUMERIC_LITERAL.
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="v", type=STRING_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=2 max_var_depth=1
    text="cond", type=CONDITIONAL_BLOCK:
        text="==", type=OPERATOR:
            text="NR", type=CONTEXT_VARIABLE.
            text="3", type=NUMERIC_LITERAL.
        text="cond_block", type=STATEMENT_BLOCK: subframe_var_count=0
            text="=", type=OOSVAR_ASSIGNMENT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="u", type=STRING_LITERAL.
                    text="2", type=NUMERIC_LITERAL.
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="v", type=STRING_LITERAL.


mlr put -v NR == 3 { @u[2] = @v[1] } /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="cond", type=CONDITIONAL_BLOCK:
        text="==", type=OPERATOR:
            text="NR", type=CONTEXT_VARIABLE.
            text="3", type=NUMERIC_LITERAL.
        text="cond_block", type=STATEMENT_BLOCK:
            text="=", type=OOSVAR_ASSIGNMENT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="u", type=STRING_LITERAL.
                    text="2", type=NUMERIC_LITERAL.
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="v", type=STRING_LITERAL.
                    text="1", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=2 max_var_depth=1
    text="cond", type=CONDITIONAL_BLOCK:
        text="==", type=OPERATOR:
            text="NR", type=CONTEXT_VARIABLE.
            text="3", type=NUMERIC_LITERAL.
        text="cond_block", type=STATEMENT_BLOCK: subframe_var_count=0
            text="=", type=OOSVAR_ASSIGNMENT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="u", type=STRING_LITERAL.
                    text="2", type=NUMERIC_LITERAL.
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="v", type=STRING_LITERAL.
                    text="1", type=NUMERIC_LITERAL.


mlr put -v end { @u    = @v } /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="end", type=END:
        text="end_block", type=STATEMENT_BLOCK:
            text="=", type=OOSVAR_ASSIGNMENT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="u", type=STRING_LITERAL.
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="v", type=STRING_LITERAL.

BLOCKED AST:

END-BLOCK:
text="end", type=END: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="end_block", type=STATEMENT_BLOCK:
        text="=", type=OOSVAR_ASSIGNMENT:
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="u", type=STRING_LITERAL.
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="v", type=STRING_LITERAL.

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1


mlr put -v end { @u    = @v[1] } /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="end", type=END:
        text="end_block", type=STATEMENT_BLOCK:
            text="=", type=OOSVAR_ASSIGNMENT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="u", type=STRING_LITERAL.
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="v", type=STRING_LITERAL.
                    text="1", type=NUMERIC_LITERAL.

BLOCKED AST:

END-BLOCK:
text="end", type=END: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="end_block", type=STATEMENT_BLOCK:
        text="=", type=OOSVAR_ASSIGNMENT:
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="u", type=STRING_LITERAL.
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="v", type=STRING_LITERAL.
                text="1", type=NUMERIC_LITERAL.

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1


mlr put -v end { @u[2] = @v } /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="end", type=END:
        text="end_block", type=STATEMENT_BLOCK:
            text="=", type=OOSVAR_ASSIGNMENT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="u", type=STRING_LITERAL.
                    text="2", type=NUMERIC_LITERAL.
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="v", type=STRING_LITERAL.

BLOCKED AST:

END-BLOCK:
text="end", type=END: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="end_block", type=STATEMENT_BLOCK:
        text="=", type=OOSVAR_ASSIGNMENT:
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="u", type=STRING_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="v", type=STRING_LITERAL.

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1


mlr put -v end { @u[2] = @v[1] } /dev/null
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="end", type=END:
        text="end_block", type=STATEMENT_BLOCK:
            text="=", type=OOSVAR_ASSIGNMENT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="u", type=STRING_LITERAL.
                    text="2", type=NUMERIC_LITERAL.
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="v", type=STRING_LITERAL.
                    text="1", type=NUMERIC_LITERAL.

BLOCKED AST:

END-BLOCK:
text="end", type=END: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="end_block", type=STATEMENT_BLOCK:
        text="=", type=OOSVAR_ASSIGNMENT:
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="u", type=STRING_LITERAL.
                text="2", type=NUMERIC_LITERAL.
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="v", type=STRING_LITERAL.
                text="1", type=NUMERIC_LITERAL.

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1


mlr put -q @s    += $i; @t=@s;             end{dump; emitp@s; emitp @t} ./reg_test/input/abixy
{
  "s": 55,
  "t": 55
}
s=55
t=55

mlr put -q @s[1] += $i; @t=@s;             end{dump; emitp@s; emitp @t} ./reg_test/input/abixy
{
  "s": {
    "1": 55
  },
  "t": {
    "1": 55
  }
}
s:1=55
t:1=55

mlr put -q @s[1] += $i; @t=@s[1];          end{dump; emitp@s; emitp @t} ./reg_test/input/abixy
{
  "s": {
    "1": 55
  },
  "t": 55
}
s:1=55
t=55

mlr put -q @s[1] += $i; @t[3]=@s;          end{dump; emitp@s; emitp @t} ./reg_test/input/abixy
{
  "s": {
    "1": 55
  },
  "t": {
    "3": {
      "1": 55
    }
  }
}
s:1=55
t:3:1=55

mlr put -q @s[1] += $i; @t[3]=@s[1];       end{dump; emitp@s; emitp @t} ./reg_test/input/abixy
{
  "s": {
    "1": 55
  },
  "t": {
    "3": 55
  }
}
s:1=55
t:3=55

mlr put -q @s[1][2] += $i; @t=@s;             end{dump; emitp@s; emitp @t} ./reg_test/input/abixy
{
  "s": {
    "1": {
      "2": 55
    }
  },
  "t": {
    "1": {
      "2": 55
    }
  }
}
s:1:2=55
t:1:2=55

mlr put -q @s[1][2] += $i; @t=@s[1];          end{dump; emitp@s; emitp @t} ./reg_test/input/abixy
{
  "s": {
    "1": {
      "2": 55
    }
  },
  "t": {
    "2": 55
  }
}
s:1:2=55
t:2=55

mlr put -q @s[1][2] += $i; @t=@s[1][2];       end{dump; emitp@s; emitp @t} ./reg_test/input/abixy
{
  "s": {
    "1": {
      "2": 55
    }
  },
  "t": 55
}
s:1:2=55
t=55

mlr put -q @s[1][2] += $i; @t[3]=@s;          end{dump; emitp@s; emitp @t} ./reg_test/input/abixy
{
  "s": {
    "1": {
      "2": 55
    }
  },
  "t": {
    "3": {
      "1": {
        "2": 55
      }
    }
  }
}
s:1:2=55
t:3:1:2=55

mlr put -q @s[1][2] += $i; @t[3]=@s[1];       end{dump; emitp@s; emitp @t} ./reg_test/input/abixy
{
  "s": {
    "1": {
      "2": 55
    }
  },
  "t": {
    "3": {
      "2": 55
    }
  }
}
s:1:2=55
t:3:2=55

mlr put -q @s[1][2] += $i; @t[3]=@s[1][2];    end{dump; emitp@s; emitp @t} ./reg_test/input/abixy
{
  "s": {
    "1": {
      "2": 55
    }
  },
  "t": {
    "3": 55
  }
}
s:1:2=55
t:3=55

mlr put -q @s[1][2] += $i; @t[3][4]=@s;       end{dump; emitp@s; emitp @t} ./reg_test/input/abixy
{
  "s": {
    "1": {
      "2": 55
    }
  },
  "t": {
    "3": {
      "4": {
        "1": {
          "2": 55
        }
      }
    }
  }
}
s:1:2=55
t:3:4:1:2=55

mlr put -q @s[1][2] += $i; @t[3][4]=@s[1];    end{dump; emitp@s; emitp @t} ./reg_test/input/abixy
{
  "s": {
    "1": {
      "2": 55
    }
  },
  "t": {
    "3": {
      "4": {
        "2": 55
      }
    }
  }
}
s:1:2=55
t:3:4:2=55

mlr put -q @s[1][2] += $i; @t[3][4]=@s[1][2]; end{dump; emitp@s; emitp @t} ./reg_test/input/abixy
{
  "s": {
    "1": {
      "2": 55
    }
  },
  "t": {
    "3": {
      "4": 55
    }
  }
}
s:1:2=55
t:3:4=55

mlr --opprint put -q @s[NR][NR] = $i/100; @t[NR*10]=@s; end{emitp@s,"A","B"; emitp @t,"C","D","E"} ./reg_test/input/abixy
A  B  s
1  1  0.010000
2  2  0.020000
3  3  0.030000
4  4  0.040000
5  5  0.050000
6  6  0.060000
7  7  0.070000
8  8  0.080000
9  9  0.090000
10 10 0.100000

C   D  E  t
10  1  1  0.010000
20  1  1  0.010000
20  2  2  0.020000
30  1  1  0.010000
30  2  2  0.020000
30  3  3  0.030000
40  1  1  0.010000
40  2  2  0.020000
40  3  3  0.030000
40  4  4  0.040000
50  1  1  0.010000
50  2  2  0.020000
50  3  3  0.030000
50  4  4  0.040000
50  5  5  0.050000
60  1  1  0.010000
60  2  2  0.020000
60  3  3  0.030000
60  4  4  0.040000
60  5  5  0.050000
60  6  6  0.060000
70  1  1  0.010000
70  2  2  0.020000
70  3  3  0.030000
70  4  4  0.040000
70  5  5  0.050000
70  6  6  0.060000
70  7  7  0.070000
80  1  1  0.010000
80  2  2  0.020000
80  3  3  0.030000
80  4  4  0.040000
80  5  5  0.050000
80  6  6  0.060000
80  7  7  0.070000
80  8  8  0.080000
90  1  1  0.010000
90  2  2  0.020000
90  3  3  0.030000
90  4  4  0.040000
90  5  5  0.050000
90  6  6  0.060000
90  7  7  0.070000
90  8  8  0.080000
90  9  9  0.090000
100 1  1  0.010000
100 2  2  0.020000
100 3  3  0.030000
100 4  4  0.040000
100 5  5  0.050000
100 6  6  0.060000
100 7  7  0.070000
100 8  8  0.080000
100 9  9  0.090000
100 10 10 0.100000


================================================================
DSL WHILE/DO-WHILE LOOPS

mlr put -v while($i < 5) { $i += 1} ./reg_test/input/abixy
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="while", type=WHILE:
        text="<", type=OPERATOR:
            text="i", type=FIELD_NAME.
            text="5", type=NUMERIC_LITERAL.
        text="while_block", type=STATEMENT_BLOCK:
            text="=", type=SREC_ASSIGNMENT:
                text="i", type=FIELD_NAME.
                text="+", type=OPERATOR:
                    text="i", type=FIELD_NAME.
                    text="1", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=2 max_var_depth=1
    text="while", type=WHILE:
        text="<", type=OPERATOR:
            text="i", type=FIELD_NAME.
            text="5", type=NUMERIC_LITERAL.
        text="while_block", type=STATEMENT_BLOCK: subframe_var_count=0
            text="=", type=SREC_ASSIGNMENT:
                text="i", type=FIELD_NAME.
                text="+", type=OPERATOR:
                    text="i", type=FIELD_NAME.
                    text="1", type=NUMERIC_LITERAL.

a=pan,b=pan,i=5,x=0.3467901443380824,y=0.7268028627434533
a=eks,b=pan,i=5,x=0.7586799647899636,y=0.5221511083334797
a=wye,b=wye,i=5,x=0.20460330576630303,y=0.33831852551664776
a=eks,b=wye,i=5,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 put -v do {$i += 1} while($i < 5) ./reg_test/input/abixy
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="do", type=DO_WHILE:
        text="do_while_block", type=STATEMENT_BLOCK:
            text="=", type=SREC_ASSIGNMENT:
                text="i", type=FIELD_NAME.
                text="+", type=OPERATOR:
                    text="i", type=FIELD_NAME.
                    text="1", type=NUMERIC_LITERAL.
        text="<", type=OPERATOR:
            text="i", type=FIELD_NAME.
            text="5", type=NUMERIC_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=2 max_var_depth=1
    text="do", type=DO_WHILE:
        text="do_while_block", type=STATEMENT_BLOCK: subframe_var_count=0
            text="=", type=SREC_ASSIGNMENT:
                text="i", type=FIELD_NAME.
                text="+", type=OPERATOR:
                    text="i", type=FIELD_NAME.
                    text="1", type=NUMERIC_LITERAL.
        text="<", type=OPERATOR:
            text="i", type=FIELD_NAME.
            text="5", type=NUMERIC_LITERAL.

a=pan,b=pan,i=5,x=0.3467901443380824,y=0.7268028627434533
a=eks,b=pan,i=5,x=0.7586799647899636,y=0.5221511083334797
a=wye,b=wye,i=5,x=0.20460330576630303,y=0.33831852551664776
a=eks,b=wye,i=5,x=0.38139939387114097,y=0.13418874328430463
a=wye,b=pan,i=6,x=0.5732889198020006,y=0.8636244699032729
a=zee,b=pan,i=7,x=0.5271261600918548,y=0.49322128674835697
a=eks,b=zee,i=8,x=0.6117840605678454,y=0.1878849191181694
a=zee,b=wye,i=9,x=0.5985540091064224,y=0.976181385699006
a=hat,b=wye,i=10,x=0.03144187646093577,y=0.7495507603507059
a=pan,b=wye,i=11,x=0.5026260055412137,y=0.9526183602969864


================================================================
DSL FOR-SREC LOOPS


---------------------------------------------------------------- empty for-srec
mlr --from ./reg_test/input/abixy put -v for(k,v in $*) { }
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="for", type=FOR_SREC:
        text="variables", type=FOR_VARIABLES:
            text="k", type=UNTYPED_LOCAL_DEFINITION.
            text="v", type=UNTYPED_LOCAL_DEFINITION.
        text="for_full_srec_block", type=STATEMENT_BLOCK:

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=2 max_var_depth=3
    text="for", type=FOR_SREC: subframe_var_count=2
        text="variables", type=FOR_VARIABLES:
            text="k", type=UNTYPED_LOCAL_DEFINITION. vardef_subframe_relative_index=0 vardef_subframe_index=1 vardef_frame_relative_index=1
            text="v", type=UNTYPED_LOCAL_DEFINITION. vardef_subframe_relative_index=1 vardef_subframe_index=1 vardef_frame_relative_index=2
        text="for_full_srec_block", type=STATEMENT_BLOCK:

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


---------------------------------------------------------------- for-srec without boundvars
mlr --from ./reg_test/input/abixy put -v for(k,v in $*) {$nr= NR}
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="for", type=FOR_SREC:
        text="variables", type=FOR_VARIABLES:
            text="k", type=UNTYPED_LOCAL_DEFINITION.
            text="v", type=UNTYPED_LOCAL_DEFINITION.
        text="for_full_srec_block", type=STATEMENT_BLOCK:
            text="=", type=SREC_ASSIGNMENT:
                text="nr", type=FIELD_NAME.
                text="NR", type=CONTEXT_VARIABLE.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=2 max_var_depth=3
    text="for", type=FOR_SREC: subframe_var_count=2
        text="variables", type=FOR_VARIABLES:
            text="k", type=UNTYPED_LOCAL_DEFINITION. vardef_subframe_relative_index=0 vardef_subframe_index=1 vardef_frame_relative_index=1
            text="v", type=UNTYPED_LOCAL_DEFINITION. vardef_subframe_relative_index=1 vardef_subframe_index=1 vardef_frame_relative_index=2
        text="for_full_srec_block", type=STATEMENT_BLOCK:
            text="=", type=SREC_ASSIGNMENT:
                text="nr", type=FIELD_NAME.
                text="NR", type=CONTEXT_VARIABLE.

a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533,nr=1
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797,nr=2
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776,nr=3
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463,nr=4
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729,nr=5
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697,nr=6
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694,nr=7
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006,nr=8
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059,nr=9
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864,nr=10


---------------------------------------------------------------- for-srec modifying the srec
mlr --from ./reg_test/input/abixy put -v for(k,v in $*) {unset $[k]}; $j = NR
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="for", type=FOR_SREC:
        text="variables", type=FOR_VARIABLES:
            text="k", type=UNTYPED_LOCAL_DEFINITION.
            text="v", type=UNTYPED_LOCAL_DEFINITION.
        text="for_full_srec_block", type=STATEMENT_BLOCK:
            text="unset", type=UNSET:
                text="indirect_field_name", type=INDIRECT_FIELD_NAME:
                    text="k", type=NONINDEXED_LOCAL_VARIABLE.
    text="=", type=SREC_ASSIGNMENT:
        text="j", type=FIELD_NAME.
        text="NR", type=CONTEXT_VARIABLE.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=2 max_var_depth=3
    text="for", type=FOR_SREC: subframe_var_count=2
        text="variables", type=FOR_VARIABLES:
            text="k", type=UNTYPED_LOCAL_DEFINITION. vardef_subframe_relative_index=0 vardef_subframe_index=1 vardef_frame_relative_index=1
            text="v", type=UNTYPED_LOCAL_DEFINITION. vardef_subframe_relative_index=1 vardef_subframe_index=1 vardef_frame_relative_index=2
        text="for_full_srec_block", type=STATEMENT_BLOCK:
            text="unset", type=UNSET:
                text="indirect_field_name", type=INDIRECT_FIELD_NAME:
                    text="k", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=1 vardef_frame_relative_index=1
    text="=", type=SREC_ASSIGNMENT:
        text="j", type=FIELD_NAME.
        text="NR", type=CONTEXT_VARIABLE.

j=1
j=2
j=3
j=4
j=5
j=6
j=7
j=8
j=9
j=10

mlr --from ./reg_test/input/abixy put -v for(k,v in $*) {if (k != "x") {unset $[k]}}; $j = NR
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="for", type=FOR_SREC:
        text="variables", type=FOR_VARIABLES:
            text="k", type=UNTYPED_LOCAL_DEFINITION.
            text="v", type=UNTYPED_LOCAL_DEFINITION.
        text="for_full_srec_block", type=STATEMENT_BLOCK:
            text="if_head", type=IF_HEAD:
                text="if", type=IF_ITEM:
                    text="!=", type=OPERATOR:
                        text="k", type=NONINDEXED_LOCAL_VARIABLE.
                        text="x", type=STRING_LITERAL.
                    text="if_block", type=STATEMENT_BLOCK:
                        text="unset", type=UNSET:
                            text="indirect_field_name", type=INDIRECT_FIELD_NAME:
                                text="k", type=NONINDEXED_LOCAL_VARIABLE.
    text="=", type=SREC_ASSIGNMENT:
        text="j", type=FIELD_NAME.
        text="NR", type=CONTEXT_VARIABLE.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=3 max_var_depth=3
    text="for", type=FOR_SREC: subframe_var_count=2
        text="variables", type=FOR_VARIABLES:
            text="k", type=UNTYPED_LOCAL_DEFINITION. vardef_subframe_relative_index=0 vardef_subframe_index=1 vardef_frame_relative_index=1
            text="v", type=UNTYPED_LOCAL_DEFINITION. vardef_subframe_relative_index=1 vardef_subframe_index=1 vardef_frame_relative_index=2
        text="for_full_srec_block", type=STATEMENT_BLOCK:
            text="if_head", type=IF_HEAD:
                text="if", type=IF_ITEM:
                    text="!=", type=OPERATOR:
                        text="k", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=1 vardef_frame_relative_index=1
                        text="x", type=STRING_LITERAL.
                    text="if_block", type=STATEMENT_BLOCK: subframe_var_count=0
                        text="unset", type=UNSET:
                            text="indirect_field_name", type=INDIRECT_FIELD_NAME:
                                text="k", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=1 vardef_frame_relative_index=1
    text="=", type=SREC_ASSIGNMENT:
        text="j", type=FIELD_NAME.
        text="NR", type=CONTEXT_VARIABLE.

x=0.3467901443380824,j=1
x=0.7586799647899636,j=2
x=0.20460330576630303,j=3
x=0.38139939387114097,j=4
x=0.5732889198020006,j=5
x=0.5271261600918548,j=6
x=0.6117840605678454,j=7
x=0.5985540091064224,j=8
x=0.03144187646093577,j=9
x=0.5026260055412137,j=10

mlr --from ./reg_test/input/abixy --opprint put -S -v for(k,v in $*) {$[k."_orig"]=v; $[k] = "other"}
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="for", type=FOR_SREC:
        text="variables", type=FOR_VARIABLES:
            text="k", type=UNTYPED_LOCAL_DEFINITION.
            text="v", type=UNTYPED_LOCAL_DEFINITION.
        text="for_full_srec_block", type=STATEMENT_BLOCK:
            text="=", type=INDIRECT_SREC_ASSIGNMENT:
                text=".", type=OPERATOR:
                    text="k", type=NONINDEXED_LOCAL_VARIABLE.
                    text="_orig", type=STRING_LITERAL.
                text="v", type=NONINDEXED_LOCAL_VARIABLE.
            text="=", type=INDIRECT_SREC_ASSIGNMENT:
                text="k", type=NONINDEXED_LOCAL_VARIABLE.
                text="other", type=STRING_LITERAL.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=2 max_var_depth=3
    text="for", type=FOR_SREC: subframe_var_count=2
        text="variables", type=FOR_VARIABLES:
            text="k", type=UNTYPED_LOCAL_DEFINITION. vardef_subframe_relative_index=0 vardef_subframe_index=1 vardef_frame_relative_index=1
            text="v", type=UNTYPED_LOCAL_DEFINITION. vardef_subframe_relative_index=1 vardef_subframe_index=1 vardef_frame_relative_index=2
        text="for_full_srec_block", type=STATEMENT_BLOCK:
            text="=", type=INDIRECT_SREC_ASSIGNMENT:
                text=".", type=OPERATOR:
                    text="k", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=1 vardef_frame_relative_index=1
                    text="_orig", type=STRING_LITERAL.
                text="v", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=1 vardef_subframe_index=1 vardef_frame_relative_index=2
            text="=", type=INDIRECT_SREC_ASSIGNMENT:
                text="k", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=1 vardef_frame_relative_index=1
                text="other", type=STRING_LITERAL.

a     b     i     x     y     a_orig b_orig i_orig x_orig              y_orig
other other other other other pan    pan    1      0.3467901443380824  0.7268028627434533
other other other other other eks    pan    2      0.7586799647899636  0.5221511083334797
other other other other other wye    wye    3      0.20460330576630303 0.33831852551664776
other other other other other eks    wye    4      0.38139939387114097 0.13418874328430463
other other other other other wye    pan    5      0.5732889198020006  0.8636244699032729
other other other other other zee    pan    6      0.5271261600918548  0.49322128674835697
other other other other other eks    zee    7      0.6117840605678454  0.1878849191181694
other other other other other zee    wye    8      0.5985540091064224  0.976181385699006
other other other other other hat    wye    9      0.03144187646093577 0.7495507603507059
other other other other other pan    wye    10     0.5026260055412137  0.9526183602969864

mlr --from ./reg_test/input/abixy put -S -v for(k,v in $*) {$[v]=k}
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="for", type=FOR_SREC:
        text="variables", type=FOR_VARIABLES:
            text="k", type=UNTYPED_LOCAL_DEFINITION.
            text="v", type=UNTYPED_LOCAL_DEFINITION.
        text="for_full_srec_block", type=STATEMENT_BLOCK:
            text="=", type=INDIRECT_SREC_ASSIGNMENT:
                text="v", type=NONINDEXED_LOCAL_VARIABLE.
                text="k", type=NONINDEXED_LOCAL_VARIABLE.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=2 max_var_depth=3
    text="for", type=FOR_SREC: subframe_var_count=2
        text="variables", type=FOR_VARIABLES:
            text="k", type=UNTYPED_LOCAL_DEFINITION. vardef_subframe_relative_index=0 vardef_subframe_index=1 vardef_frame_relative_index=1
            text="v", type=UNTYPED_LOCAL_DEFINITION. vardef_subframe_relative_index=1 vardef_subframe_index=1 vardef_frame_relative_index=2
        text="for_full_srec_block", type=STATEMENT_BLOCK:
            text="=", type=INDIRECT_SREC_ASSIGNMENT:
                text="v", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=1 vardef_subframe_index=1 vardef_frame_relative_index=2
                text="k", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=1 vardef_frame_relative_index=1

a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533,pan=b,1=i,0.3467901443380824=x,0.7268028627434533=y
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797,eks=a,pan=b,2=i,0.7586799647899636=x,0.5221511083334797=y
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776,wye=b,3=i,0.20460330576630303=x,0.33831852551664776=y
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463,eks=a,wye=b,4=i,0.38139939387114097=x,0.13418874328430463=y
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729,wye=a,pan=b,5=i,0.5732889198020006=x,0.8636244699032729=y
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697,zee=a,pan=b,6=i,0.5271261600918548=x,0.49322128674835697=y
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694,eks=a,zee=b,7=i,0.6117840605678454=x,0.1878849191181694=y
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006,zee=a,wye=b,8=i,0.5985540091064224=x,0.976181385699006=y
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059,hat=a,wye=b,9=i,0.03144187646093577=x,0.7495507603507059=y
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864,pan=a,wye=b,10=i,0.5026260055412137=x,0.9526183602969864=y

mlr --from ./reg_test/input/abixy put -v 
  $sum = 0;
  for(k,v in $*) {
    if (k =~ "^[xy]$") {
      $sum += $[k]
    }
  }
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="sum", type=FIELD_NAME.
        text="0", type=NUMERIC_LITERAL.
    text="for", type=FOR_SREC:
        text="variables", type=FOR_VARIABLES:
            text="k", type=UNTYPED_LOCAL_DEFINITION.
            text="v", type=UNTYPED_LOCAL_DEFINITION.
        text="for_full_srec_block", type=STATEMENT_BLOCK:
            text="if_head", type=IF_HEAD:
                text="if", type=IF_ITEM:
                    text="=~", type=OPERATOR:
                        text="k", type=NONINDEXED_LOCAL_VARIABLE.
                        text="^[xy]$", type=STRING_LITERAL.
                    text="if_block", type=STATEMENT_BLOCK:
                        text="=", type=SREC_ASSIGNMENT:
                            text="sum", type=FIELD_NAME.
                            text="+", type=OPERATOR:
                                text="sum", type=FIELD_NAME.
                                text="indirect_field_name", type=INDIRECT_FIELD_NAME:
                                    text="k", type=NONINDEXED_LOCAL_VARIABLE.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=3 max_var_depth=3
    text="=", type=SREC_ASSIGNMENT:
        text="sum", type=FIELD_NAME.
        text="0", type=NUMERIC_LITERAL.
    text="for", type=FOR_SREC: subframe_var_count=2
        text="variables", type=FOR_VARIABLES:
            text="k", type=UNTYPED_LOCAL_DEFINITION. vardef_subframe_relative_index=0 vardef_subframe_index=1 vardef_frame_relative_index=1
            text="v", type=UNTYPED_LOCAL_DEFINITION. vardef_subframe_relative_index=1 vardef_subframe_index=1 vardef_frame_relative_index=2
        text="for_full_srec_block", type=STATEMENT_BLOCK:
            text="if_head", type=IF_HEAD:
                text="if", type=IF_ITEM:
                    text="=~", type=OPERATOR:
                        text="k", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=1 vardef_frame_relative_index=1
                        text="^[xy]$", type=STRING_LITERAL.
                    text="if_block", type=STATEMENT_BLOCK: subframe_var_count=0
                        text="=", type=SREC_ASSIGNMENT:
                            text="sum", type=FIELD_NAME.
                            text="+", type=OPERATOR:
                                text="sum", type=FIELD_NAME.
                                text="indirect_field_name", type=INDIRECT_FIELD_NAME:
                                    text="k", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=1 vardef_frame_relative_index=1

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 put -S -v 
  $sum = float(0);
  for(k,v in $*) {
    if (k =~ "^[xy]$") {
      $sum += float($[k])
    }
  }
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="sum", type=FIELD_NAME.
        text="float", type=FUNCTION_CALLSITE:
            text="0", type=NUMERIC_LITERAL.
    text="for", type=FOR_SREC:
        text="variables", type=FOR_VARIABLES:
            text="k", type=UNTYPED_LOCAL_DEFINITION.
            text="v", type=UNTYPED_LOCAL_DEFINITION.
        text="for_full_srec_block", type=STATEMENT_BLOCK:
            text="if_head", type=IF_HEAD:
                text="if", type=IF_ITEM:
                    text="=~", type=OPERATOR:
                        text="k", type=NONINDEXED_LOCAL_VARIABLE.
                        text="^[xy]$", type=STRING_LITERAL.
                    text="if_block", type=STATEMENT_BLOCK:
                        text="=", type=SREC_ASSIGNMENT:
                            text="sum", type=FIELD_NAME.
                            text="+", type=OPERATOR:
                                text="sum", type=FIELD_NAME.
                                text="float", type=FUNCTION_CALLSITE:
                                    text="indirect_field_name", type=INDIRECT_FIELD_NAME:
                                        text="k", type=NONINDEXED_LOCAL_VARIABLE.

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=3 max_var_depth=3
    text="=", type=SREC_ASSIGNMENT:
        text="sum", type=FIELD_NAME.
        text="float", type=FUNCTION_CALLSITE:
            text="0", type=NUMERIC_LITERAL.
    text="for", type=FOR_SREC: subframe_var_count=2
        text="variables", type=FOR_VARIABLES:
            text="k", type=UNTYPED_LOCAL_DEFINITION. vardef_subframe_relative_index=0 vardef_subframe_index=1 vardef_frame_relative_index=1
            text="v", type=UNTYPED_LOCAL_DEFINITION. vardef_subframe_relative_index=1 vardef_subframe_index=1 vardef_frame_relative_index=2
        text="for_full_srec_block", type=STATEMENT_BLOCK:
            text="if_head", type=IF_HEAD:
                text="if", type=IF_ITEM:
                    text="=~", type=OPERATOR:
                        text="k", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=1 vardef_frame_relative_index=1
                        text="^[xy]$", type=STRING_LITERAL.
                    text="if_block", type=STATEMENT_BLOCK: subframe_var_count=0
                        text="=", type=SREC_ASSIGNMENT:
                            text="sum", type=FIELD_NAME.
                            text="+", type=OPERATOR:
                                text="sum", type=FIELD_NAME.
                                text="float", type=FUNCTION_CALLSITE:
                                    text="indirect_field_name", type=INDIRECT_FIELD_NAME:
                                        text="k", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=1 vardef_frame_relative_index=1

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


================================================================
DSL FOR-OOSVAR LOOPS

mlr --opprint -n put -v 
  @o[1][1]["text1"][NR] = $a;
  @o[1][2]["text2"][NR] = $b;
  @o[1][2][$a][$i*100] = $x;
  for((k1,k2),v in @o[1][2]) {
    @n[3][4][k2][k1] = v;
  }
  end {
    emit @n, "a", "b", "c", "d"
  }

RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=OOSVAR_ASSIGNMENT:
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="o", type=STRING_LITERAL.
            text="1", type=NUMERIC_LITERAL.
            text="1", type=NUMERIC_LITERAL.
            text="text1", type=STRING_LITERAL.
            text="NR", type=CONTEXT_VARIABLE.
        text="a", type=FIELD_NAME.
    text="=", type=OOSVAR_ASSIGNMENT:
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="o", type=STRING_LITERAL.
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
            text="text2", type=STRING_LITERAL.
            text="NR", type=CONTEXT_VARIABLE.
        text="b", type=FIELD_NAME.
    text="=", type=OOSVAR_ASSIGNMENT:
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="o", type=STRING_LITERAL.
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
            text="a", type=FIELD_NAME.
            text="*", type=OPERATOR:
                text="i", type=FIELD_NAME.
                text="100", type=NUMERIC_LITERAL.
        text="x", type=FIELD_NAME.
    text="for", type=FOR_OOSVAR:
        text="key_and_value_variables", type=FOR_VARIABLES:
            text="key_variables", type=FOR_VARIABLES:
                text="k1", type=UNTYPED_LOCAL_DEFINITION.
                text="k2", type=UNTYPED_LOCAL_DEFINITION.
            text="v", type=UNTYPED_LOCAL_DEFINITION.
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="o", type=STRING_LITERAL.
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="for_loop_oosvar_block", type=STATEMENT_BLOCK:
            text="=", type=OOSVAR_ASSIGNMENT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="n", type=STRING_LITERAL.
                    text="3", type=NUMERIC_LITERAL.
                    text="4", type=NUMERIC_LITERAL.
                    text="k2", type=NONINDEXED_LOCAL_VARIABLE.
                    text="k1", type=NONINDEXED_LOCAL_VARIABLE.
                text="v", type=NONINDEXED_LOCAL_VARIABLE.
    text="end", type=END:
        text="end_block", type=STATEMENT_BLOCK:
            text="emit", type=EMIT:
                text="emit", type=EMIT:
                    text="oosvar_keylist", type=OOSVAR_KEYLIST:
                        text="n", type=STRING_LITERAL.
                    text="emit_namelist", type=EMIT:
                        text="a", type=STRING_LITERAL.
                        text="b", type=STRING_LITERAL.
                        text="c", type=STRING_LITERAL.
                        text="d", type=STRING_LITERAL.
                text="stream", type=STREAM:

BLOCKED AST:

END-BLOCK:
text="end", type=END: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="end_block", type=STATEMENT_BLOCK:
        text="emit", type=EMIT:
            text="emit", type=EMIT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="n", type=STRING_LITERAL.
                text="emit_namelist", type=EMIT:
                    text="a", type=STRING_LITERAL.
                    text="b", type=STRING_LITERAL.
                    text="c", type=STRING_LITERAL.
                    text="d", type=STRING_LITERAL.
            text="stream", type=STREAM:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=2 max_var_depth=4
    text="=", type=OOSVAR_ASSIGNMENT:
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="o", type=STRING_LITERAL.
            text="1", type=NUMERIC_LITERAL.
            text="1", type=NUMERIC_LITERAL.
            text="text1", type=STRING_LITERAL.
            text="NR", type=CONTEXT_VARIABLE.
        text="a", type=FIELD_NAME.
    text="=", type=OOSVAR_ASSIGNMENT:
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="o", type=STRING_LITERAL.
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
            text="text2", type=STRING_LITERAL.
            text="NR", type=CONTEXT_VARIABLE.
        text="b", type=FIELD_NAME.
    text="=", type=OOSVAR_ASSIGNMENT:
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="o", type=STRING_LITERAL.
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
            text="a", type=FIELD_NAME.
            text="*", type=OPERATOR:
                text="i", type=FIELD_NAME.
                text="100", type=NUMERIC_LITERAL.
        text="x", type=FIELD_NAME.
    text="for", type=FOR_OOSVAR: subframe_var_count=3
        text="key_and_value_variables", type=FOR_VARIABLES:
            text="key_variables", type=FOR_VARIABLES:
                text="k1", type=UNTYPED_LOCAL_DEFINITION. vardef_subframe_relative_index=0 vardef_subframe_index=1 vardef_frame_relative_index=1
                text="k2", type=UNTYPED_LOCAL_DEFINITION. vardef_subframe_relative_index=1 vardef_subframe_index=1 vardef_frame_relative_index=2
            text="v", type=UNTYPED_LOCAL_DEFINITION. vardef_subframe_relative_index=2 vardef_subframe_index=1 vardef_frame_relative_index=3
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="o", type=STRING_LITERAL.
            text="1", type=NUMERIC_LITERAL.
            text="2", type=NUMERIC_LITERAL.
        text="for_loop_oosvar_block", type=STATEMENT_BLOCK:
            text="=", type=OOSVAR_ASSIGNMENT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="n", type=STRING_LITERAL.
                    text="3", type=NUMERIC_LITERAL.
                    text="4", type=NUMERIC_LITERAL.
                    text="k2", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=1 vardef_subframe_index=1 vardef_frame_relative_index=2
                    text="k1", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=1 vardef_frame_relative_index=1
                text="v", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=2 vardef_subframe_index=1 vardef_frame_relative_index=3


mlr --opprint --from ./reg_test/input/abixy put -q 
  @o[1][1]["text1"][NR] = $a;
  @o[1][2]["text2"][NR] = $b;
  @o[1][2][$a][$i*100] = $x;
  for((k1,k2),v in @o[1][2]) {
    @n[3][4][k2][k1] = v;
  }
  end {
    emit @n, "a", "b", "c", "d"
  }

a b c    d     n
3 4 1    text2 pan
3 4 100  pan   0.346790
3 4 2    text2 pan
3 4 200  eks   0.758680
3 4 3    text2 wye
3 4 300  wye   0.204603
3 4 4    text2 wye
3 4 400  eks   0.381399
3 4 5    text2 pan
3 4 500  wye   0.573289
3 4 6    text2 pan
3 4 600  zee   0.527126
3 4 7    text2 zee
3 4 700  eks   0.611784
3 4 8    text2 wye
3 4 800  zee   0.598554
3 4 9    text2 wye
3 4 900  hat   0.031442
3 4 10   text2 wye
3 4 1000 pan   0.502626

mlr --opprint --from ./reg_test/input/abixy put -q 
  @sum[$a][$b] += $x;
  @count[$a][$b] += 1;
  end {
    for ((k1, k2), v in @sum) {
      @mean[k1][k2] = @sum[k1][k2] / @count[k1][k2]
    }
    emitp @sum, "a", "b";
    emitp @count, "a", "b";
    emitp @mean, "a", "b"
  }

a   b   sum
pan pan 0.346790
pan wye 0.502626
eks pan 0.758680
eks wye 0.381399
eks zee 0.611784
wye wye 0.204603
wye pan 0.573289
zee pan 0.527126
zee wye 0.598554
hat wye 0.031442

a   b   count
pan pan 1
pan wye 1
eks pan 1
eks wye 1
eks zee 1
wye wye 1
wye pan 1
zee pan 1
zee wye 1
hat wye 1

a   b   mean
pan pan 0.346790
pan wye 0.502626
eks pan 0.758680
eks wye 0.381399
eks zee 0.611784
wye wye 0.204603
wye pan 0.573289
zee pan 0.527126
zee wye 0.598554
hat wye 0.031442

mlr --opprint --from ./reg_test/input/abixy-wide put -q 
  @value["sum"][$a][$b] += $x;
  @value["count"][$a][$b] += 1;
  end {
    for ((k1, k2), v in @value["sum"]) {
      @value["mean"][k1][k2] = @value["sum"][k1][k2] / @value["count"][k1][k2]
    }
    emitp @value, "stat", "a", "b";
  }

stat  a   b   value
sum   cat pan 42.327158
sum   cat hat 43.184410
sum   cat dog 39.241473
sum   cat wye 45.196775
sum   cat cat 37.894148
sum   pan wye 40.135300
sum   pan pan 36.226334
sum   pan hat 35.115869
sum   pan dog 37.817560
sum   pan cat 42.235677
sum   wye cat 40.805723
sum   wye hat 41.166697
sum   wye dog 40.619547
sum   wye wye 32.490973
sum   wye pan 33.027196
sum   dog hat 43.515162
sum   dog pan 45.614011
sum   dog dog 43.545956
sum   dog wye 37.223795
sum   dog cat 45.642595
sum   hat hat 48.058897
sum   hat wye 34.054270
sum   hat pan 42.538758
sum   hat cat 44.325655
sum   hat dog 37.114244
count cat pan 89
count cat hat 90
count cat dog 78
count cat wye 77
count cat cat 79
count pan wye 78
count pan pan 77
count pan hat 67
count pan dog 73
count pan cat 89
count wye cat 74
count wye hat 87
count wye dog 76
count wye wye 67
count wye pan 66
count dog hat 88
count dog pan 87
count dog dog 87
count dog wye 79
count dog cat 83
count hat hat 88
count hat wye 70
count hat pan 85
count hat cat 88
count hat dog 78
mean  cat pan 0.475586
mean  cat hat 0.479827
mean  cat dog 0.503096
mean  cat wye 0.586971
mean  cat cat 0.479673
mean  pan wye 0.514555
mean  pan pan 0.470472
mean  pan hat 0.524117
mean  pan dog 0.518049
mean  pan cat 0.474558
mean  wye cat 0.551429
mean  wye hat 0.473180
mean  wye dog 0.534468
mean  wye wye 0.484940
mean  wye pan 0.500412
mean  dog hat 0.494490
mean  dog pan 0.524299
mean  dog dog 0.500528
mean  dog wye 0.471187
mean  dog cat 0.549911
mean  hat hat 0.546124
mean  hat wye 0.486490
mean  hat pan 0.500456
mean  hat cat 0.503701
mean  hat dog 0.475824

mlr -n put -v for (k, k in $*) {}
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="for", type=FOR_SREC:
        text="variables", type=FOR_VARIABLES:
            text="k", type=UNTYPED_LOCAL_DEFINITION.
            text="k", type=UNTYPED_LOCAL_DEFINITION.
        text="for_full_srec_block", type=STATEMENT_BLOCK:
mlr: redefinition of variable k in the same scope.

mlr -n put -v for (k, k in @*) {}
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="for", type=FOR_OOSVAR:
        text="key_and_value_variables", type=FOR_VARIABLES:
            text="key_variables", type=FOR_VARIABLES:
                text="k", type=UNTYPED_LOCAL_DEFINITION.
            text="k", type=UNTYPED_LOCAL_DEFINITION.
        text="empty_keylist", type=OOSVAR_KEYLIST:
        text="for_full_oosvar_block", type=STATEMENT_BLOCK:
mlr: redefinition of variable k in the same scope.

mlr -n put -v for ((a,a), c in @*) {}
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="for", type=FOR_OOSVAR:
        text="key_and_value_variables", type=FOR_VARIABLES:
            text="key_variables", type=FOR_VARIABLES:
                text="a", type=UNTYPED_LOCAL_DEFINITION.
                text="a", type=UNTYPED_LOCAL_DEFINITION.
            text="c", type=UNTYPED_LOCAL_DEFINITION.
        text="empty_keylist", type=OOSVAR_KEYLIST:
        text="for_full_oosvar_block", type=STATEMENT_BLOCK:
mlr: redefinition of variable a in the same scope.

mlr -n put -v for ((a,b), a in @*) {}
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="for", type=FOR_OOSVAR:
        text="key_and_value_variables", type=FOR_VARIABLES:
            text="key_variables", type=FOR_VARIABLES:
                text="a", type=UNTYPED_LOCAL_DEFINITION.
                text="b", type=UNTYPED_LOCAL_DEFINITION.
            text="a", type=UNTYPED_LOCAL_DEFINITION.
        text="empty_keylist", type=OOSVAR_KEYLIST:
        text="for_full_oosvar_block", type=STATEMENT_BLOCK:
mlr: redefinition of variable a in the same scope.

mlr -n put -v for ((a,b), b in @*) {}
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="for", type=FOR_OOSVAR:
        text="key_and_value_variables", type=FOR_VARIABLES:
            text="key_variables", type=FOR_VARIABLES:
                text="a", type=UNTYPED_LOCAL_DEFINITION.
                text="b", type=UNTYPED_LOCAL_DEFINITION.
            text="b", type=UNTYPED_LOCAL_DEFINITION.
        text="empty_keylist", type=OOSVAR_KEYLIST:
        text="for_full_oosvar_block", type=STATEMENT_BLOCK:
mlr: redefinition of variable b in the same scope.

mlr -n put -v for ((a,a,c), d in @*) {}
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="for", type=FOR_OOSVAR:
        text="key_and_value_variables", type=FOR_VARIABLES:
            text="key_variables", type=FOR_VARIABLES:
                text="a", type=UNTYPED_LOCAL_DEFINITION.
                text="a", type=UNTYPED_LOCAL_DEFINITION.
                text="c", type=UNTYPED_LOCAL_DEFINITION.
            text="d", type=UNTYPED_LOCAL_DEFINITION.
        text="empty_keylist", type=OOSVAR_KEYLIST:
        text="for_full_oosvar_block", type=STATEMENT_BLOCK:
mlr: redefinition of variable a in the same scope.

mlr -n put -v for ((a,b,a), d in @*) {}
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="for", type=FOR_OOSVAR:
        text="key_and_value_variables", type=FOR_VARIABLES:
            text="key_variables", type=FOR_VARIABLES:
                text="a", type=UNTYPED_LOCAL_DEFINITION.
                text="b", type=UNTYPED_LOCAL_DEFINITION.
                text="a", type=UNTYPED_LOCAL_DEFINITION.
            text="d", type=UNTYPED_LOCAL_DEFINITION.
        text="empty_keylist", type=OOSVAR_KEYLIST:
        text="for_full_oosvar_block", type=STATEMENT_BLOCK:
mlr: redefinition of variable a in the same scope.

mlr -n put -v for ((a,b,c), a in @*) {}
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="for", type=FOR_OOSVAR:
        text="key_and_value_variables", type=FOR_VARIABLES:
            text="key_variables", type=FOR_VARIABLES:
                text="a", type=UNTYPED_LOCAL_DEFINITION.
                text="b", type=UNTYPED_LOCAL_DEFINITION.
                text="c", type=UNTYPED_LOCAL_DEFINITION.
            text="a", type=UNTYPED_LOCAL_DEFINITION.
        text="empty_keylist", type=OOSVAR_KEYLIST:
        text="for_full_oosvar_block", type=STATEMENT_BLOCK:
mlr: redefinition of variable a in the same scope.

mlr -n put -v for ((a,b,b), d in @*) {}
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="for", type=FOR_OOSVAR:
        text="key_and_value_variables", type=FOR_VARIABLES:
            text="key_variables", type=FOR_VARIABLES:
                text="a", type=UNTYPED_LOCAL_DEFINITION.
                text="b", type=UNTYPED_LOCAL_DEFINITION.
                text="b", type=UNTYPED_LOCAL_DEFINITION.
            text="d", type=UNTYPED_LOCAL_DEFINITION.
        text="empty_keylist", type=OOSVAR_KEYLIST:
        text="for_full_oosvar_block", type=STATEMENT_BLOCK:
mlr: redefinition of variable b in the same scope.

mlr -n put -v for ((a,b,c), b in @*) {}
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="for", type=FOR_OOSVAR:
        text="key_and_value_variables", type=FOR_VARIABLES:
            text="key_variables", type=FOR_VARIABLES:
                text="a", type=UNTYPED_LOCAL_DEFINITION.
                text="b", type=UNTYPED_LOCAL_DEFINITION.
                text="c", type=UNTYPED_LOCAL_DEFINITION.
            text="b", type=UNTYPED_LOCAL_DEFINITION.
        text="empty_keylist", type=OOSVAR_KEYLIST:
        text="for_full_oosvar_block", type=STATEMENT_BLOCK:
mlr: redefinition of variable b in the same scope.

mlr -n put -v for ((a,b,c), c in @*) {}
RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="for", type=FOR_OOSVAR:
        text="key_and_value_variables", type=FOR_VARIABLES:
            text="key_variables", type=FOR_VARIABLES:
                text="a", type=UNTYPED_LOCAL_DEFINITION.
                text="b", type=UNTYPED_LOCAL_DEFINITION.
                text="c", type=UNTYPED_LOCAL_DEFINITION.
            text="c", type=UNTYPED_LOCAL_DEFINITION.
        text="empty_keylist", type=OOSVAR_KEYLIST:
        text="for_full_oosvar_block", type=STATEMENT_BLOCK:
mlr: redefinition of variable c in the same scope.

mlr --from ./reg_test/input/xyz2 put -q func f() { return {"a"."b":"c"."d",3:4}}; for (k,v in f()){print "k=".k.",v=".v}
k=ab,v=cd
k=3,v=4
k=ab,v=cd
k=3,v=4

mlr --from ./reg_test/input/xyz2 put -q for (k,v in {"a"."b":"c"."d",3:"c"}) {print "k=".k.",v=".v}
k=ab,v=cd
k=3,v=c
k=ab,v=cd
k=3,v=c

mlr --from ./reg_test/input/xyz2 put -q o["a"."b"]="c"."d"; for (k,v in o) {print "k=".k.",v=".v}
k=ab,v=cd
k=ab,v=cd

mlr --from ./reg_test/input/xyz2 put -q @o["a"."b"]="c"."d"; for (k,v in @o) {print "k=".k.",v=".v}
k=ab,v=cd
k=ab,v=cd

mlr --from ./reg_test/input/xyz2 put for (k in $*) { print k}
x
y
z
x=3,y=4,z=5
x
y
u
x=6,y=7,u=8

mlr --from ./reg_test/input/xyz2 put m=$*; for (k in m) { print k}
x
y
z
x=3,y=4,z=5
x
y
u
x=6,y=7,u=8


================================================================
DSL FOR-BIND LOOPS FOR VALGRIND


---------------------------------------------------------------- key-only fors
mlr --from ./reg_test/input/abixy-het put 
  ab = $a . "_" . $b;
  xy = $x . "_" . $y;
  map o = {};
  o[ab] = xy;
  for (k in o) {
    print "k is " . k;
  }

k is pan_pan
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
k is eks_pan
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
k is _wye
aaa=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
k is eks_
a=eks,bbb=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
k is wye_pan
a=wye,b=pan,i=5,xxx=0.5732889198020006,y=0.8636244699032729
k is zee_pan
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
k is eks_zee
a=eks,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694
k is zee_wye
a=zee,b=wye,i=8,x=0.5985540091064224,yyy=0.976181385699006
k is _
aaa=hat,bbb=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
k is pan_wye
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864

mlr --from ./reg_test/input/abixy-het put 
  ab = $a . "_" . $b;
  xy = $x . "_" . $y;
  unset @o;
  @o[ab] = xy;
  for (k in @o) {
    print "k is " . k;
  }

k is pan_pan
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
k is eks_pan
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
k is _wye
aaa=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
k is eks_
a=eks,bbb=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
k is wye_pan
a=wye,b=pan,i=5,xxx=0.5732889198020006,y=0.8636244699032729
k is zee_pan
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
k is eks_zee
a=eks,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694
k is zee_wye
a=zee,b=wye,i=8,x=0.5985540091064224,yyy=0.976181385699006
k is _
aaa=hat,bbb=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
k is pan_wye
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864

mlr --from ./reg_test/input/abixy-het put 
  ab = $a . "_" . $b;
  xy = $x . "_" . $y;
  for (k in {ab : xy}) {
    print "k is " . k;
  }

k is pan_pan
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
k is eks_pan
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
k is _wye
aaa=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
k is eks_
a=eks,bbb=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
k is wye_pan
a=wye,b=pan,i=5,xxx=0.5732889198020006,y=0.8636244699032729
k is zee_pan
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
k is eks_zee
a=eks,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694
k is zee_wye
a=zee,b=wye,i=8,x=0.5985540091064224,yyy=0.976181385699006
k is _
aaa=hat,bbb=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
k is pan_wye
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864

mlr --from ./reg_test/input/abixy-het put 
  func f(a, b, x, y): map {
    ab = $a . "_" . $b;
    xy = $x . "_" . $y;
    return {ab : xy};
  }
  for (k in f($a, $b, $x, $y)) {
    print "k is " . k;
  }

k is pan_pan
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
k is eks_pan
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
k is _wye
aaa=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
k is eks_
a=eks,bbb=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
k is wye_pan
a=wye,b=pan,i=5,xxx=0.5732889198020006,y=0.8636244699032729
k is zee_pan
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
k is eks_zee
a=eks,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694
k is zee_wye
a=zee,b=wye,i=8,x=0.5985540091064224,yyy=0.976181385699006
k is _
aaa=hat,bbb=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
k is pan_wye
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864


---------------------------------------------------------------- key-value fors with scalar values
mlr --from ./reg_test/input/abixy-het put 
  ab = $a . "_" . $b;
  xy = $x . "_" . $y;
  map o = {};
  o[ab] = xy;
  for (k, v in o) {
    print "k is " . k . "  v is " . v;
  }

k is pan_pan  v is 0.346790_0.726803
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
k is eks_pan  v is 0.758680_0.522151
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
k is _wye  v is 0.204603_0.338319
aaa=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
k is eks_  v is 0.381399_0.134189
a=eks,bbb=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
k is wye_pan  v is _0.863624
a=wye,b=pan,i=5,xxx=0.5732889198020006,y=0.8636244699032729
k is zee_pan  v is 0.527126_0.493221
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
k is eks_zee  v is 0.611784_0.187885
a=eks,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694
k is zee_wye  v is 0.598554_
a=zee,b=wye,i=8,x=0.5985540091064224,yyy=0.976181385699006
k is _  v is 0.031442_0.749551
aaa=hat,bbb=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
k is pan_wye  v is 0.502626_0.952618
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864

mlr --from ./reg_test/input/abixy-het put 
  ab = $a . "_" . $b;
  xy = $x . "_" . $y;
  unset @o;
  @o[ab] = xy;
  for (k, v in @o) {
    print "k is " . k . "  v is " . v;
  }

k is pan_pan  v is 0.346790_0.726803
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
k is eks_pan  v is 0.758680_0.522151
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
k is _wye  v is 0.204603_0.338319
aaa=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
k is eks_  v is 0.381399_0.134189
a=eks,bbb=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
k is wye_pan  v is _0.863624
a=wye,b=pan,i=5,xxx=0.5732889198020006,y=0.8636244699032729
k is zee_pan  v is 0.527126_0.493221
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
k is eks_zee  v is 0.611784_0.187885
a=eks,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694
k is zee_wye  v is 0.598554_
a=zee,b=wye,i=8,x=0.5985540091064224,yyy=0.976181385699006
k is _  v is 0.031442_0.749551
aaa=hat,bbb=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
k is pan_wye  v is 0.502626_0.952618
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864

mlr --from ./reg_test/input/abixy-het put 
  ab = $a . "_" . $b;
  xy = $x . "_" . $y;
  for (k, v in {ab : xy}) {
    print "k is " . k . "  v is " . v;
  }

k is pan_pan  v is 0.346790_0.726803
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
k is eks_pan  v is 0.758680_0.522151
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
k is _wye  v is 0.204603_0.338319
aaa=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
k is eks_  v is 0.381399_0.134189
a=eks,bbb=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
k is wye_pan  v is _0.863624
a=wye,b=pan,i=5,xxx=0.5732889198020006,y=0.8636244699032729
k is zee_pan  v is 0.527126_0.493221
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
k is eks_zee  v is 0.611784_0.187885
a=eks,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694
k is zee_wye  v is 0.598554_
a=zee,b=wye,i=8,x=0.5985540091064224,yyy=0.976181385699006
k is _  v is 0.031442_0.749551
aaa=hat,bbb=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
k is pan_wye  v is 0.502626_0.952618
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864

mlr --from ./reg_test/input/abixy-het put 
  func f(a, b, x, y): map {
    ab = $a . "_" . $b;
    xy = $x . "_" . $y;
    return {ab : xy};
  }
  for (k, v in f($a, $b, $x, $y)) {
    print "k is " . k . "  v is " . v;
  }

k is pan_pan  v is 0.346790_0.726803
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
k is eks_pan  v is 0.758680_0.522151
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
k is _wye  v is 0.204603_0.338319
aaa=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
k is eks_  v is 0.381399_0.134189
a=eks,bbb=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
k is wye_pan  v is _0.863624
a=wye,b=pan,i=5,xxx=0.5732889198020006,y=0.8636244699032729
k is zee_pan  v is 0.527126_0.493221
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
k is eks_zee  v is 0.611784_0.187885
a=eks,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694
k is zee_wye  v is 0.598554_
a=zee,b=wye,i=8,x=0.5985540091064224,yyy=0.976181385699006
k is _  v is 0.031442_0.749551
aaa=hat,bbb=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
k is pan_wye  v is 0.502626_0.952618
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864


---------------------------------------------------------------- key-value fors with map values
mlr --from ./reg_test/input/abixy-het put 
  ab = $a . "_" . $b;
  xy = $x . "_" . $y;
  map o = {};
  o[ab] = {"foo": xy};
  for (k, v in o) {
    print "k is " . k . "  v is ";
    dump v;
  }

k is pan_pan  v is 
{
  "foo": "0.346790_0.726803"
}
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
k is eks_pan  v is 
{
  "foo": "0.758680_0.522151"
}
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
k is _wye  v is 
{
  "foo": "0.204603_0.338319"
}
aaa=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
k is eks_  v is 
{
  "foo": "0.381399_0.134189"
}
a=eks,bbb=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
k is wye_pan  v is 
{
  "foo": "_0.863624"
}
a=wye,b=pan,i=5,xxx=0.5732889198020006,y=0.8636244699032729
k is zee_pan  v is 
{
  "foo": "0.527126_0.493221"
}
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
k is eks_zee  v is 
{
  "foo": "0.611784_0.187885"
}
a=eks,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694
k is zee_wye  v is 
{
  "foo": "0.598554_"
}
a=zee,b=wye,i=8,x=0.5985540091064224,yyy=0.976181385699006
k is _  v is 
{
  "foo": "0.031442_0.749551"
}
aaa=hat,bbb=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
k is pan_wye  v is 
{
  "foo": "0.502626_0.952618"
}
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864

mlr --from ./reg_test/input/abixy-het put 
  ab = $a . "_" . $b;
  xy = $x . "_" . $y;
  unset @o;
  @o[ab]["foo"] = xy;
  for (k, v in @o) {
    print "k is " . k . "  v is ";
    dump v;
  }

k is pan_pan  v is 
{
  "foo": "0.346790_0.726803"
}
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
k is eks_pan  v is 
{
  "foo": "0.758680_0.522151"
}
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
k is _wye  v is 
{
  "foo": "0.204603_0.338319"
}
aaa=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
k is eks_  v is 
{
  "foo": "0.381399_0.134189"
}
a=eks,bbb=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
k is wye_pan  v is 
{
  "foo": "_0.863624"
}
a=wye,b=pan,i=5,xxx=0.5732889198020006,y=0.8636244699032729
k is zee_pan  v is 
{
  "foo": "0.527126_0.493221"
}
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
k is eks_zee  v is 
{
  "foo": "0.611784_0.187885"
}
a=eks,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694
k is zee_wye  v is 
{
  "foo": "0.598554_"
}
a=zee,b=wye,i=8,x=0.5985540091064224,yyy=0.976181385699006
k is _  v is 
{
  "foo": "0.031442_0.749551"
}
aaa=hat,bbb=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
k is pan_wye  v is 
{
  "foo": "0.502626_0.952618"
}
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864

mlr --from ./reg_test/input/abixy-het put 
  ab = $a . "_" . $b;
  xy = $x . "_" . $y;
  for (k, v in {ab : {"foo": xy}}) {
    print "k is " . k . "  v is ";
    dump v;
  }

k is pan_pan  v is 
{
  "foo": "0.346790_0.726803"
}
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
k is eks_pan  v is 
{
  "foo": "0.758680_0.522151"
}
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
k is _wye  v is 
{
  "foo": "0.204603_0.338319"
}
aaa=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
k is eks_  v is 
{
  "foo": "0.381399_0.134189"
}
a=eks,bbb=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
k is wye_pan  v is 
{
  "foo": "_0.863624"
}
a=wye,b=pan,i=5,xxx=0.5732889198020006,y=0.8636244699032729
k is zee_pan  v is 
{
  "foo": "0.527126_0.493221"
}
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
k is eks_zee  v is 
{
  "foo": "0.611784_0.187885"
}
a=eks,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694
k is zee_wye  v is 
{
  "foo": "0.598554_"
}
a=zee,b=wye,i=8,x=0.5985540091064224,yyy=0.976181385699006
k is _  v is 
{
  "foo": "0.031442_0.749551"
}
aaa=hat,bbb=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
k is pan_wye  v is 
{
  "foo": "0.502626_0.952618"
}
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864

mlr --from ./reg_test/input/abixy-het put 
  func f(a, b, x, y): map {
    ab = $a . "_" . $b;
    xy = $x . "_" . $y;
    return {ab : {"foo" : xy}};
  }
  for (k, v in f($a, $b, $x, $y)) {
    print "k is " . k . "  v is ";
    dump v;
  }

k is pan_pan  v is 
{
  "foo": "0.346790_0.726803"
}
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
k is eks_pan  v is 
{
  "foo": "0.758680_0.522151"
}
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
k is _wye  v is 
{
  "foo": "0.204603_0.338319"
}
aaa=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
k is eks_  v is 
{
  "foo": "0.381399_0.134189"
}
a=eks,bbb=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
k is wye_pan  v is 
{
  "foo": "_0.863624"
}
a=wye,b=pan,i=5,xxx=0.5732889198020006,y=0.8636244699032729
k is zee_pan  v is 
{
  "foo": "0.527126_0.493221"
}
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
k is eks_zee  v is 
{
  "foo": "0.611784_0.187885"
}
a=eks,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694
k is zee_wye  v is 
{
  "foo": "0.598554_"
}
a=zee,b=wye,i=8,x=0.5985540091064224,yyy=0.976181385699006
k is _  v is 
{
  "foo": "0.031442_0.749551"
}
aaa=hat,bbb=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
k is pan_wye  v is 
{
  "foo": "0.502626_0.952618"
}
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864


================================================================
DSL BREAK/CONTINUE IN SINGLE WHILE/DO-WHILE

mlr --opprint --from ./reg_test/input/abixy put 
  while ($i < 5) {
    $i += 1;
    break;
    $a = "ERROR";
  }

a   b   i  x                   y
pan pan 2  0.3467901443380824  0.7268028627434533
eks pan 3  0.7586799647899636  0.5221511083334797
wye wye 4  0.20460330576630303 0.33831852551664776
eks wye 5  0.38139939387114097 0.13418874328430463
wye pan 5  0.5732889198020006  0.8636244699032729
zee pan 6  0.5271261600918548  0.49322128674835697
eks zee 7  0.6117840605678454  0.1878849191181694
zee wye 8  0.5985540091064224  0.976181385699006
hat wye 9  0.03144187646093577 0.7495507603507059
pan wye 10 0.5026260055412137  0.9526183602969864

mlr --opprint --from ./reg_test/input/abixy put 
  while ($i < 5) {
    $i += 1;
    continue;
    $a = "ERROR";
  }

a   b   i  x                   y
pan pan 5  0.3467901443380824  0.7268028627434533
eks pan 5  0.7586799647899636  0.5221511083334797
wye wye 5  0.20460330576630303 0.33831852551664776
eks wye 5  0.38139939387114097 0.13418874328430463
wye pan 5  0.5732889198020006  0.8636244699032729
zee pan 6  0.5271261600918548  0.49322128674835697
eks zee 7  0.6117840605678454  0.1878849191181694
zee wye 8  0.5985540091064224  0.976181385699006
hat wye 9  0.03144187646093577 0.7495507603507059
pan wye 10 0.5026260055412137  0.9526183602969864

mlr --opprint --from ./reg_test/input/abixy put 
  do {
    $i += 1;
    break;
    $a = "ERROR";
  } while ($i < 5);

a   b   i  x                   y
pan pan 2  0.3467901443380824  0.7268028627434533
eks pan 3  0.7586799647899636  0.5221511083334797
wye wye 4  0.20460330576630303 0.33831852551664776
eks wye 5  0.38139939387114097 0.13418874328430463
wye pan 6  0.5732889198020006  0.8636244699032729
zee pan 7  0.5271261600918548  0.49322128674835697
eks zee 8  0.6117840605678454  0.1878849191181694
zee wye 9  0.5985540091064224  0.976181385699006
hat wye 10 0.03144187646093577 0.7495507603507059
pan wye 11 0.5026260055412137  0.9526183602969864

mlr --opprint --from ./reg_test/input/abixy put 
  do {
    $i += 1;
    continue;
    $a = "ERROR";
  } while ($i < 5);

a   b   i  x                   y
pan pan 5  0.3467901443380824  0.7268028627434533
eks pan 5  0.7586799647899636  0.5221511083334797
wye wye 5  0.20460330576630303 0.33831852551664776
eks wye 5  0.38139939387114097 0.13418874328430463
wye pan 6  0.5732889198020006  0.8636244699032729
zee pan 7  0.5271261600918548  0.49322128674835697
eks zee 8  0.6117840605678454  0.1878849191181694
zee wye 9  0.5985540091064224  0.976181385699006
hat wye 10 0.03144187646093577 0.7495507603507059
pan wye 11 0.5026260055412137  0.9526183602969864

mlr --opprint --from ./reg_test/input/abixy put 
  $NR = NR;
  while ($i < 5) {
    $i += 1;
    if (NR == 2) {
      break;
    }
    $a = "reached";
  }

a       b   i  x                   y                   NR
reached pan 5  0.3467901443380824  0.7268028627434533  1
eks     pan 3  0.7586799647899636  0.5221511083334797  2
reached wye 5  0.20460330576630303 0.33831852551664776 3
reached wye 5  0.38139939387114097 0.13418874328430463 4
wye     pan 5  0.5732889198020006  0.8636244699032729  5
zee     pan 6  0.5271261600918548  0.49322128674835697 6
eks     zee 7  0.6117840605678454  0.1878849191181694  7
zee     wye 8  0.5985540091064224  0.976181385699006   8
hat     wye 9  0.03144187646093577 0.7495507603507059  9
pan     wye 10 0.5026260055412137  0.9526183602969864  10

mlr --opprint --from ./reg_test/input/abixy put 
  $NR = NR;
  while ($i < 5) {
    $i += 1;
    if (NR == 2) {
      continue;
    }
    $a = "reached";
  }

a       b   i  x                   y                   NR
reached pan 5  0.3467901443380824  0.7268028627434533  1
eks     pan 5  0.7586799647899636  0.5221511083334797  2
reached wye 5  0.20460330576630303 0.33831852551664776 3
reached wye 5  0.38139939387114097 0.13418874328430463 4
wye     pan 5  0.5732889198020006  0.8636244699032729  5
zee     pan 6  0.5271261600918548  0.49322128674835697 6
eks     zee 7  0.6117840605678454  0.1878849191181694  7
zee     wye 8  0.5985540091064224  0.976181385699006   8
hat     wye 9  0.03144187646093577 0.7495507603507059  9
pan     wye 10 0.5026260055412137  0.9526183602969864  10

mlr --opprint --from ./reg_test/input/abixy put 
$NR = NR;
  do {
    $i += 1;
    if (NR == 2) {
      break;
    }
    $a = "reached";
  } while ($i < 5);

a       b   i  x                   y                   NR
reached pan 5  0.3467901443380824  0.7268028627434533  1
eks     pan 3  0.7586799647899636  0.5221511083334797  2
reached wye 5  0.20460330576630303 0.33831852551664776 3
reached wye 5  0.38139939387114097 0.13418874328430463 4
reached pan 6  0.5732889198020006  0.8636244699032729  5
reached pan 7  0.5271261600918548  0.49322128674835697 6
reached zee 8  0.6117840605678454  0.1878849191181694  7
reached wye 9  0.5985540091064224  0.976181385699006   8
reached wye 10 0.03144187646093577 0.7495507603507059  9
reached wye 11 0.5026260055412137  0.9526183602969864  10

mlr --opprint --from ./reg_test/input/abixy put 
  $NR = NR;
  do {
    $i += 1;
    if (NR == 2) {
      continue;
    }
    $a = "reached";
  } while ($i < 5);

a       b   i  x                   y                   NR
reached pan 5  0.3467901443380824  0.7268028627434533  1
eks     pan 5  0.7586799647899636  0.5221511083334797  2
reached wye 5  0.20460330576630303 0.33831852551664776 3
reached wye 5  0.38139939387114097 0.13418874328430463 4
reached pan 6  0.5732889198020006  0.8636244699032729  5
reached pan 7  0.5271261600918548  0.49322128674835697 6
reached zee 8  0.6117840605678454  0.1878849191181694  7
reached wye 9  0.5985540091064224  0.976181385699006   8
reached wye 10 0.03144187646093577 0.7495507603507059  9
reached wye 11 0.5026260055412137  0.9526183602969864  10


================================================================
DSL BREAK/CONTINUE IN NESTED WHILE/DO-WHILE

mlr --opprint --from ./reg_test/input/abixy put 
  $j = NR;
  while ($j < 4) {
    $k = NR;
    $j += 1;
    break;
    while ($k < 7) {
      $k += 1
    }
  }

a   b   i x                   y                   j k
pan pan 1 0.3467901443380824  0.7268028627434533  2 1
eks pan 2 0.7586799647899636  0.5221511083334797  3 2
wye wye 3 0.20460330576630303 0.33831852551664776 4 3

a   b   i  x                   y                   j
eks wye 4  0.38139939387114097 0.13418874328430463 4
wye pan 5  0.5732889198020006  0.8636244699032729  5
zee pan 6  0.5271261600918548  0.49322128674835697 6
eks zee 7  0.6117840605678454  0.1878849191181694  7
zee wye 8  0.5985540091064224  0.976181385699006   8
hat wye 9  0.03144187646093577 0.7495507603507059  9
pan wye 10 0.5026260055412137  0.9526183602969864  10

mlr --opprint --from ./reg_test/input/abixy put 
  $j = NR;
  while ($j < 4) {
    $k = NR;
    $j += 1;
    continue;
    while ($k < 7) {
      $k += 1
    }
  }

a   b   i x                   y                   j k
pan pan 1 0.3467901443380824  0.7268028627434533  4 1
eks pan 2 0.7586799647899636  0.5221511083334797  4 2
wye wye 3 0.20460330576630303 0.33831852551664776 4 3

a   b   i  x                   y                   j
eks wye 4  0.38139939387114097 0.13418874328430463 4
wye pan 5  0.5732889198020006  0.8636244699032729  5
zee pan 6  0.5271261600918548  0.49322128674835697 6
eks zee 7  0.6117840605678454  0.1878849191181694  7
zee wye 8  0.5985540091064224  0.976181385699006   8
hat wye 9  0.03144187646093577 0.7495507603507059  9
pan wye 10 0.5026260055412137  0.9526183602969864  10

mlr --opprint --from ./reg_test/input/abixy put 
  $j = NR;
  while ($j < 4) {
    $k = NR;
    $j += 1;
    while ($k < 7) {
      $k += 1;
      break;
      $k += 10000;
    }
  }

a   b   i x                   y                   j k
pan pan 1 0.3467901443380824  0.7268028627434533  4 2
eks pan 2 0.7586799647899636  0.5221511083334797  4 3
wye wye 3 0.20460330576630303 0.33831852551664776 4 4

a   b   i  x                   y                   j
eks wye 4  0.38139939387114097 0.13418874328430463 4
wye pan 5  0.5732889198020006  0.8636244699032729  5
zee pan 6  0.5271261600918548  0.49322128674835697 6
eks zee 7  0.6117840605678454  0.1878849191181694  7
zee wye 8  0.5985540091064224  0.976181385699006   8
hat wye 9  0.03144187646093577 0.7495507603507059  9
pan wye 10 0.5026260055412137  0.9526183602969864  10

mlr --opprint --from ./reg_test/input/abixy put 
  $j = NR;
  while ($j < 4) {
    $k = NR;
    $j += 1;
    while ($k < 7) {
      $k += 1;
      continue;
      $k += 10000;
    }
  }

a   b   i x                   y                   j k
pan pan 1 0.3467901443380824  0.7268028627434533  4 7
eks pan 2 0.7586799647899636  0.5221511083334797  4 7
wye wye 3 0.20460330576630303 0.33831852551664776 4 7

a   b   i  x                   y                   j
eks wye 4  0.38139939387114097 0.13418874328430463 4
wye pan 5  0.5732889198020006  0.8636244699032729  5
zee pan 6  0.5271261600918548  0.49322128674835697 6
eks zee 7  0.6117840605678454  0.1878849191181694  7
zee wye 8  0.5985540091064224  0.976181385699006   8
hat wye 9  0.03144187646093577 0.7495507603507059  9
pan wye 10 0.5026260055412137  0.9526183602969864  10

mlr --opprint --from ./reg_test/input/abixy put 
  $j = NR;
  while ($j < 4) {
    $k = NR;
    $j += 1;
    if (NR == 2 || NR == 8) {
      break;
    }
    while ($k < 7) {
      $k += 1
    }
  }

a   b   i x                   y                   j k
pan pan 1 0.3467901443380824  0.7268028627434533  4 7
eks pan 2 0.7586799647899636  0.5221511083334797  3 2
wye wye 3 0.20460330576630303 0.33831852551664776 4 7

a   b   i  x                   y                   j
eks wye 4  0.38139939387114097 0.13418874328430463 4
wye pan 5  0.5732889198020006  0.8636244699032729  5
zee pan 6  0.5271261600918548  0.49322128674835697 6
eks zee 7  0.6117840605678454  0.1878849191181694  7
zee wye 8  0.5985540091064224  0.976181385699006   8
hat wye 9  0.03144187646093577 0.7495507603507059  9
pan wye 10 0.5026260055412137  0.9526183602969864  10

mlr --opprint --from ./reg_test/input/abixy put 
  $j = NR;
  while ($j < 4) {
    $k = NR;
    $j += 1;
    if (NR == 2 || NR == 8) {
      continue;
    }
    while ($k < 7) {
      $k += 1
    }
  }

a   b   i x                   y                   j k
pan pan 1 0.3467901443380824  0.7268028627434533  4 7
eks pan 2 0.7586799647899636  0.5221511083334797  4 2
wye wye 3 0.20460330576630303 0.33831852551664776 4 7

a   b   i  x                   y                   j
eks wye 4  0.38139939387114097 0.13418874328430463 4
wye pan 5  0.5732889198020006  0.8636244699032729  5
zee pan 6  0.5271261600918548  0.49322128674835697 6
eks zee 7  0.6117840605678454  0.1878849191181694  7
zee wye 8  0.5985540091064224  0.976181385699006   8
hat wye 9  0.03144187646093577 0.7495507603507059  9
pan wye 10 0.5026260055412137  0.9526183602969864  10

mlr --opprint --from ./reg_test/input/abixy put 
  $j = NR;
  while ($j < 4) {
    $k = NR;
    $j += 1;
    while ($k < 7) {
      $k += 1;
      if (NR == 2 || NR == 8) {
        break;
      }
      $k += 10000;
    }
  }

a   b   i x                   y                   j k
pan pan 1 0.3467901443380824  0.7268028627434533  4 10002
eks pan 2 0.7586799647899636  0.5221511083334797  4 3
wye wye 3 0.20460330576630303 0.33831852551664776 4 10004

a   b   i  x                   y                   j
eks wye 4  0.38139939387114097 0.13418874328430463 4
wye pan 5  0.5732889198020006  0.8636244699032729  5
zee pan 6  0.5271261600918548  0.49322128674835697 6
eks zee 7  0.6117840605678454  0.1878849191181694  7
zee wye 8  0.5985540091064224  0.976181385699006   8
hat wye 9  0.03144187646093577 0.7495507603507059  9
pan wye 10 0.5026260055412137  0.9526183602969864  10

mlr --opprint --from ./reg_test/input/abixy put 
  $j = NR;
  while ($j < 4) {
    $k = NR;
    $j += 1;
    while ($k < 7) {
      $k += 1;
      if (NR == 2 || NR == 8) {
        continue;
      }
      $k += 10000;
    }
  }

a   b   i x                   y                   j k
pan pan 1 0.3467901443380824  0.7268028627434533  4 10002
eks pan 2 0.7586799647899636  0.5221511083334797  4 7
wye wye 3 0.20460330576630303 0.33831852551664776 4 10004

a   b   i  x                   y                   j
eks wye 4  0.38139939387114097 0.13418874328430463 4
wye pan 5  0.5732889198020006  0.8636244699032729  5
zee pan 6  0.5271261600918548  0.49322128674835697 6
eks zee 7  0.6117840605678454  0.1878849191181694  7
zee wye 8  0.5985540091064224  0.976181385699006   8
hat wye 9  0.03144187646093577 0.7495507603507059  9
pan wye 10 0.5026260055412137  0.9526183602969864  10

mlr --opprint --from ./reg_test/input/abixy put 
  $j = NR;
  do {
    $k = NR;
    $j += 1;
    break;
    do {
      $k += 1
    } while ($k < 7);
  } while ($j < 4);

a   b   i  x                   y                   j  k
pan pan 1  0.3467901443380824  0.7268028627434533  2  1
eks pan 2  0.7586799647899636  0.5221511083334797  3  2
wye wye 3  0.20460330576630303 0.33831852551664776 4  3
eks wye 4  0.38139939387114097 0.13418874328430463 5  4
wye pan 5  0.5732889198020006  0.8636244699032729  6  5
zee pan 6  0.5271261600918548  0.49322128674835697 7  6
eks zee 7  0.6117840605678454  0.1878849191181694  8  7
zee wye 8  0.5985540091064224  0.976181385699006   9  8
hat wye 9  0.03144187646093577 0.7495507603507059  10 9
pan wye 10 0.5026260055412137  0.9526183602969864  11 10

mlr --opprint --from ./reg_test/input/abixy put 
  $j = NR;
  do {
    $k = NR;
    $j += 1;
    continue;
    do {
      $k += 1
    } while ($k < 7);
  } while ($j < 4);

a   b   i  x                   y                   j  k
pan pan 1  0.3467901443380824  0.7268028627434533  4  1
eks pan 2  0.7586799647899636  0.5221511083334797  4  2
wye wye 3  0.20460330576630303 0.33831852551664776 4  3
eks wye 4  0.38139939387114097 0.13418874328430463 5  4
wye pan 5  0.5732889198020006  0.8636244699032729  6  5
zee pan 6  0.5271261600918548  0.49322128674835697 7  6
eks zee 7  0.6117840605678454  0.1878849191181694  8  7
zee wye 8  0.5985540091064224  0.976181385699006   9  8
hat wye 9  0.03144187646093577 0.7495507603507059  10 9
pan wye 10 0.5026260055412137  0.9526183602969864  11 10

mlr --opprint --from ./reg_test/input/abixy put 
  $j = NR;
  do {
    $k = NR;
    $j += 1;
    do {
      $k += 1;
      break;
      $k += 10000;
    } while ($k < 7);
  } while ($j < 4);

a   b   i  x                   y                   j  k
pan pan 1  0.3467901443380824  0.7268028627434533  4  2
eks pan 2  0.7586799647899636  0.5221511083334797  4  3
wye wye 3  0.20460330576630303 0.33831852551664776 4  4
eks wye 4  0.38139939387114097 0.13418874328430463 5  5
wye pan 5  0.5732889198020006  0.8636244699032729  6  6
zee pan 6  0.5271261600918548  0.49322128674835697 7  7
eks zee 7  0.6117840605678454  0.1878849191181694  8  8
zee wye 8  0.5985540091064224  0.976181385699006   9  9
hat wye 9  0.03144187646093577 0.7495507603507059  10 10
pan wye 10 0.5026260055412137  0.9526183602969864  11 11

mlr --opprint --from ./reg_test/input/abixy put 
  $j = NR;
  do {
    $k = NR;
    $j += 1;
    do {
      $k += 1;
      continue;
      $k += 10000;
    } while ($k < 7);
  } while ($j < 4);

a   b   i  x                   y                   j  k
pan pan 1  0.3467901443380824  0.7268028627434533  4  7
eks pan 2  0.7586799647899636  0.5221511083334797  4  7
wye wye 3  0.20460330576630303 0.33831852551664776 4  7
eks wye 4  0.38139939387114097 0.13418874328430463 5  7
wye pan 5  0.5732889198020006  0.8636244699032729  6  7
zee pan 6  0.5271261600918548  0.49322128674835697 7  7
eks zee 7  0.6117840605678454  0.1878849191181694  8  8
zee wye 8  0.5985540091064224  0.976181385699006   9  9
hat wye 9  0.03144187646093577 0.7495507603507059  10 10
pan wye 10 0.5026260055412137  0.9526183602969864  11 11

mlr --opprint --from ./reg_test/input/abixy put 
  $j = NR;
  do {
    $k = NR;
    $j += 1;
    if (NR == 2 || NR == 8) {
      break;
    }
    do {
      $k += 1
    } while ($k < 7);
  } while ($j < 4);

a   b   i  x                   y                   j  k
pan pan 1  0.3467901443380824  0.7268028627434533  4  7
eks pan 2  0.7586799647899636  0.5221511083334797  3  2
wye wye 3  0.20460330576630303 0.33831852551664776 4  7
eks wye 4  0.38139939387114097 0.13418874328430463 5  7
wye pan 5  0.5732889198020006  0.8636244699032729  6  7
zee pan 6  0.5271261600918548  0.49322128674835697 7  7
eks zee 7  0.6117840605678454  0.1878849191181694  8  8
zee wye 8  0.5985540091064224  0.976181385699006   9  8
hat wye 9  0.03144187646093577 0.7495507603507059  10 10
pan wye 10 0.5026260055412137  0.9526183602969864  11 11

mlr --opprint --from ./reg_test/input/abixy put 
  $j = NR;
  do {
    $k = NR;
    $j += 1;
    if (NR == 2 || NR == 8) {
      continue;
    }
    do {
      $k += 1
    } while ($k < 7);
  } while ($j < 4);

a   b   i  x                   y                   j  k
pan pan 1  0.3467901443380824  0.7268028627434533  4  7
eks pan 2  0.7586799647899636  0.5221511083334797  4  2
wye wye 3  0.20460330576630303 0.33831852551664776 4  7
eks wye 4  0.38139939387114097 0.13418874328430463 5  7
wye pan 5  0.5732889198020006  0.8636244699032729  6  7
zee pan 6  0.5271261600918548  0.49322128674835697 7  7
eks zee 7  0.6117840605678454  0.1878849191181694  8  8
zee wye 8  0.5985540091064224  0.976181385699006   9  8
hat wye 9  0.03144187646093577 0.7495507603507059  10 10
pan wye 10 0.5026260055412137  0.9526183602969864  11 11

mlr --opprint --from ./reg_test/input/abixy put 
  $j = NR;
  do {
    $k = NR;
    $j += 1;
    do {
      $k += 1;
      if (NR == 2 || NR == 8) {
        break;
      }
      $k += 10000;
    } while ($k < 7);
  } while ($j < 4);

a   b   i  x                   y                   j  k
pan pan 1  0.3467901443380824  0.7268028627434533  4  10002
eks pan 2  0.7586799647899636  0.5221511083334797  4  3
wye wye 3  0.20460330576630303 0.33831852551664776 4  10004
eks wye 4  0.38139939387114097 0.13418874328430463 5  10005
wye pan 5  0.5732889198020006  0.8636244699032729  6  10006
zee pan 6  0.5271261600918548  0.49322128674835697 7  10007
eks zee 7  0.6117840605678454  0.1878849191181694  8  10008
zee wye 8  0.5985540091064224  0.976181385699006   9  9
hat wye 9  0.03144187646093577 0.7495507603507059  10 10010
pan wye 10 0.5026260055412137  0.9526183602969864  11 10011

mlr --opprint --from ./reg_test/input/abixy put 
  $j = NR;
  do {
    $k = NR;
    $j += 1;
    do {
      $k += 1;
      if (NR == 2 || NR == 8) {
        continue;
      }
      $k += 10000;
    } while ($k < 7);
  } while ($j < 4);

a   b   i  x                   y                   j  k
pan pan 1  0.3467901443380824  0.7268028627434533  4  10002
eks pan 2  0.7586799647899636  0.5221511083334797  4  7
wye wye 3  0.20460330576630303 0.33831852551664776 4  10004
eks wye 4  0.38139939387114097 0.13418874328430463 5  10005
wye pan 5  0.5732889198020006  0.8636244699032729  6  10006
zee pan 6  0.5271261600918548  0.49322128674835697 7  10007
eks zee 7  0.6117840605678454  0.1878849191181694  8  10008
zee wye 8  0.5985540091064224  0.976181385699006   9  9
hat wye 9  0.03144187646093577 0.7495507603507059  10 10010
pan wye 10 0.5026260055412137  0.9526183602969864  11 10011


================================================================
DSL BREAK/CONTINUE IN SINGLE FOR-SREC

mlr --opprint --from ./reg_test/input/abixy put -q 
  for (k,v in $*) {
      @logging1[NR][k] = v;
      if (k == "x") {
          break;
      }
  }
  end {
    emitp @logging1, "NR", "k";
  }

NR k logging1
1  a pan
1  b pan
1  i 1
1  x 0.346790
2  a eks
2  b pan
2  i 2
2  x 0.758680
3  a wye
3  b wye
3  i 3
3  x 0.204603
4  a eks
4  b wye
4  i 4
4  x 0.381399
5  a wye
5  b pan
5  i 5
5  x 0.573289
6  a zee
6  b pan
6  i 6
6  x 0.527126
7  a eks
7  b zee
7  i 7
7  x 0.611784
8  a zee
8  b wye
8  i 8
8  x 0.598554
9  a hat
9  b wye
9  i 9
9  x 0.031442
10 a pan
10 b wye
10 i 10
10 x 0.502626

mlr --opprint --from ./reg_test/input/abixy put -q 
  for (k,v in $*) {
      if (k == "x") {
          break;
      }
      @logging2[NR][k] = v;
  }
  end {
    emitp @logging2, "NR", "k";
  }

NR k logging2
1  a pan
1  b pan
1  i 1
2  a eks
2  b pan
2  i 2
3  a wye
3  b wye
3  i 3
4  a eks
4  b wye
4  i 4
5  a wye
5  b pan
5  i 5
6  a zee
6  b pan
6  i 6
7  a eks
7  b zee
7  i 7
8  a zee
8  b wye
8  i 8
9  a hat
9  b wye
9  i 9
10 a pan
10 b wye
10 i 10

mlr --opprint --from ./reg_test/input/abixy put -q 
  for (k,v in $*) {
      @logging3[NR][k] = v;
      if (k == "x") {
          continue;
      }
  }
  end {
    emitp @logging3, "NR", "k";
  }

NR k logging3
1  a pan
1  b pan
1  i 1
1  x 0.346790
1  y 0.726803
2  a eks
2  b pan
2  i 2
2  x 0.758680
2  y 0.522151
3  a wye
3  b wye
3  i 3
3  x 0.204603
3  y 0.338319
4  a eks
4  b wye
4  i 4
4  x 0.381399
4  y 0.134189
5  a wye
5  b pan
5  i 5
5  x 0.573289
5  y 0.863624
6  a zee
6  b pan
6  i 6
6  x 0.527126
6  y 0.493221
7  a eks
7  b zee
7  i 7
7  x 0.611784
7  y 0.187885
8  a zee
8  b wye
8  i 8
8  x 0.598554
8  y 0.976181
9  a hat
9  b wye
9  i 9
9  x 0.031442
9  y 0.749551
10 a pan
10 b wye
10 i 10
10 x 0.502626
10 y 0.952618

mlr --opprint --from ./reg_test/input/abixy put -q 
  for (k,v in $*) {
      if (k == "x") {
          continue;
      }
      @logging4[NR][k] = v;
  }
  end {
    emitp @logging4, "NR", "k"
  }

NR k logging4
1  a pan
1  b pan
1  i 1
1  y 0.726803
2  a eks
2  b pan
2  i 2
2  y 0.522151
3  a wye
3  b wye
3  i 3
3  y 0.338319
4  a eks
4  b wye
4  i 4
4  y 0.134189
5  a wye
5  b pan
5  i 5
5  y 0.863624
6  a zee
6  b pan
6  i 6
6  y 0.493221
7  a eks
7  b zee
7  i 7
7  y 0.187885
8  a zee
8  b wye
8  i 8
8  y 0.976181
9  a hat
9  b wye
9  i 9
9  y 0.749551
10 a pan
10 b wye
10 i 10
10 y 0.952618

mlr --opprint --from ./reg_test/input/abixy put -q 
  for (k,v in $*) {
      @logging1[NR][k] = v;
      if (k == "x") {
          break;
      }
  }

  for (k,v in $*) {
      if (k == "x") {
          break;
      }
      @logging2[NR][k] = v;
  }

  for (k,v in $*) {
      @logging3[NR][k] = v;
      if (k == "x") {
          continue;
      }
  }

  for (k,v in $*) {
      if (k == "x") {
          continue;
      }
      @logging4[NR][k] = v;
  }

  end {
    emitp @logging1, "NR", "k";
    emitp @logging2, "NR", "k";
    emitp @logging3, "NR", "k";
    emitp @logging4, "NR", "k"
  }

NR k logging1
1  a pan
1  b pan
1  i 1
1  x 0.346790
2  a eks
2  b pan
2  i 2
2  x 0.758680
3  a wye
3  b wye
3  i 3
3  x 0.204603
4  a eks
4  b wye
4  i 4
4  x 0.381399
5  a wye
5  b pan
5  i 5
5  x 0.573289
6  a zee
6  b pan
6  i 6
6  x 0.527126
7  a eks
7  b zee
7  i 7
7  x 0.611784
8  a zee
8  b wye
8  i 8
8  x 0.598554
9  a hat
9  b wye
9  i 9
9  x 0.031442
10 a pan
10 b wye
10 i 10
10 x 0.502626

NR k logging2
1  a pan
1  b pan
1  i 1
2  a eks
2  b pan
2  i 2
3  a wye
3  b wye
3  i 3
4  a eks
4  b wye
4  i 4
5  a wye
5  b pan
5  i 5
6  a zee
6  b pan
6  i 6
7  a eks
7  b zee
7  i 7
8  a zee
8  b wye
8  i 8
9  a hat
9  b wye
9  i 9
10 a pan
10 b wye
10 i 10

NR k logging3
1  a pan
1  b pan
1  i 1
1  x 0.346790
1  y 0.726803
2  a eks
2  b pan
2  i 2
2  x 0.758680
2  y 0.522151
3  a wye
3  b wye
3  i 3
3  x 0.204603
3  y 0.338319
4  a eks
4  b wye
4  i 4
4  x 0.381399
4  y 0.134189
5  a wye
5  b pan
5  i 5
5  x 0.573289
5  y 0.863624
6  a zee
6  b pan
6  i 6
6  x 0.527126
6  y 0.493221
7  a eks
7  b zee
7  i 7
7  x 0.611784
7  y 0.187885
8  a zee
8  b wye
8  i 8
8  x 0.598554
8  y 0.976181
9  a hat
9  b wye
9  i 9
9  x 0.031442
9  y 0.749551
10 a pan
10 b wye
10 i 10
10 x 0.502626
10 y 0.952618

NR k logging4
1  a pan
1  b pan
1  i 1
1  y 0.726803
2  a eks
2  b pan
2  i 2
2  y 0.522151
3  a wye
3  b wye
3  i 3
3  y 0.338319
4  a eks
4  b wye
4  i 4
4  y 0.134189
5  a wye
5  b pan
5  i 5
5  y 0.863624
6  a zee
6  b pan
6  i 6
6  y 0.493221
7  a eks
7  b zee
7  i 7
7  y 0.187885
8  a zee
8  b wye
8  i 8
8  y 0.976181
9  a hat
9  b wye
9  i 9
9  y 0.749551
10 a pan
10 b wye
10 i 10
10 y 0.952618


================================================================
DSL BREAK/CONTINUE IN NESTED FOR-SREC

mlr --opprint --from ./reg_test/input/abixy put -q 
  for (k1, v1 in $*) {
    @output1[NR][k1] = "before";
    break;
    @output1[NR][k1] = v1;
    for (k2, v2 in $*) {
      @output2[NR][k1."_".k2] = "before";
      @output2[NR][k1."_".k2] = v2;
    }
  }
  end {
    emit @output1, "NR", "name";
    emit @output2, "NR", "names";
  }

NR name output1
1  a    before
2  a    before
3  a    before
4  a    before
5  a    before
6  a    before
7  a    before
8  a    before
9  a    before
10 a    before

mlr --opprint --from ./reg_test/input/abixy put -q 
  for (k1, v1 in $*) {
    @output1[NR][k1] = "before";
    continue;
    @output1[NR][k1] = v1;
    for (k2, v2 in $*) {
      @output2[NR][k1."_".k2] = "before";
      @output2[NR][k1."_".k2] = v2;
    }
  }
  end {
    emit @output1, "NR", "name";
    emit @output2, "NR", "names";
  }

NR name output1
1  a    before
1  b    before
1  i    before
1  x    before
1  y    before
2  a    before
2  b    before
2  i    before
2  x    before
2  y    before
3  a    before
3  b    before
3  i    before
3  x    before
3  y    before
4  a    before
4  b    before
4  i    before
4  x    before
4  y    before
5  a    before
5  b    before
5  i    before
5  x    before
5  y    before
6  a    before
6  b    before
6  i    before
6  x    before
6  y    before
7  a    before
7  b    before
7  i    before
7  x    before
7  y    before
8  a    before
8  b    before
8  i    before
8  x    before
8  y    before
9  a    before
9  b    before
9  i    before
9  x    before
9  y    before
10 a    before
10 b    before
10 i    before
10 x    before
10 y    before

mlr --opprint --from ./reg_test/input/abixy put -q 
  for (k1, v1 in $*) {
    @output1[NR][k1] = "before";
    @output1[NR][k1] = v1;
    for (k2, v2 in $*) {
      @output2[NR][k1."_".k2] = "before";
      break;
      @output2[NR][k1."_".k2] = v2;
    }
  }
  end {
    emit @output1, "NR", "name";
    emit @output2, "NR", "names";
  }

NR name output1
1  a    pan
1  b    pan
1  i    1
1  x    0.346790
1  y    0.726803
2  a    eks
2  b    pan
2  i    2
2  x    0.758680
2  y    0.522151
3  a    wye
3  b    wye
3  i    3
3  x    0.204603
3  y    0.338319
4  a    eks
4  b    wye
4  i    4
4  x    0.381399
4  y    0.134189
5  a    wye
5  b    pan
5  i    5
5  x    0.573289
5  y    0.863624
6  a    zee
6  b    pan
6  i    6
6  x    0.527126
6  y    0.493221
7  a    eks
7  b    zee
7  i    7
7  x    0.611784
7  y    0.187885
8  a    zee
8  b    wye
8  i    8
8  x    0.598554
8  y    0.976181
9  a    hat
9  b    wye
9  i    9
9  x    0.031442
9  y    0.749551
10 a    pan
10 b    wye
10 i    10
10 x    0.502626
10 y    0.952618

NR names output2
1  a_a   before
1  b_a   before
1  i_a   before
1  x_a   before
1  y_a   before
2  a_a   before
2  b_a   before
2  i_a   before
2  x_a   before
2  y_a   before
3  a_a   before
3  b_a   before
3  i_a   before
3  x_a   before
3  y_a   before
4  a_a   before
4  b_a   before
4  i_a   before
4  x_a   before
4  y_a   before
5  a_a   before
5  b_a   before
5  i_a   before
5  x_a   before
5  y_a   before
6  a_a   before
6  b_a   before
6  i_a   before
6  x_a   before
6  y_a   before
7  a_a   before
7  b_a   before
7  i_a   before
7  x_a   before
7  y_a   before
8  a_a   before
8  b_a   before
8  i_a   before
8  x_a   before
8  y_a   before
9  a_a   before
9  b_a   before
9  i_a   before
9  x_a   before
9  y_a   before
10 a_a   before
10 b_a   before
10 i_a   before
10 x_a   before
10 y_a   before

mlr --opprint --from ./reg_test/input/abixy put -q 
  for (k1, v1 in $*) {
    @output1[NR][k1] = "before";
    @output1[NR][k1] = v1;
    for (k2, v2 in $*) {
      @output2[NR][k1."_".k2] = "before";
      continue;
      @output2[NR][k1."_".k2] = v2;
    }
  }
  end {
    emit @output1, "NR", "name";
    emit @output2, "NR", "names";
  }

NR name output1
1  a    pan
1  b    pan
1  i    1
1  x    0.346790
1  y    0.726803
2  a    eks
2  b    pan
2  i    2
2  x    0.758680
2  y    0.522151
3  a    wye
3  b    wye
3  i    3
3  x    0.204603
3  y    0.338319
4  a    eks
4  b    wye
4  i    4
4  x    0.381399
4  y    0.134189
5  a    wye
5  b    pan
5  i    5
5  x    0.573289
5  y    0.863624
6  a    zee
6  b    pan
6  i    6
6  x    0.527126
6  y    0.493221
7  a    eks
7  b    zee
7  i    7
7  x    0.611784
7  y    0.187885
8  a    zee
8  b    wye
8  i    8
8  x    0.598554
8  y    0.976181
9  a    hat
9  b    wye
9  i    9
9  x    0.031442
9  y    0.749551
10 a    pan
10 b    wye
10 i    10
10 x    0.502626
10 y    0.952618

NR names output2
1  a_a   before
1  a_b   before
1  a_i   before
1  a_x   before
1  a_y   before
1  b_a   before
1  b_b   before
1  b_i   before
1  b_x   before
1  b_y   before
1  i_a   before
1  i_b   before
1  i_i   before
1  i_x   before
1  i_y   before
1  x_a   before
1  x_b   before
1  x_i   before
1  x_x   before
1  x_y   before
1  y_a   before
1  y_b   before
1  y_i   before
1  y_x   before
1  y_y   before
2  a_a   before
2  a_b   before
2  a_i   before
2  a_x   before
2  a_y   before
2  b_a   before
2  b_b   before
2  b_i   before
2  b_x   before
2  b_y   before
2  i_a   before
2  i_b   before
2  i_i   before
2  i_x   before
2  i_y   before
2  x_a   before
2  x_b   before
2  x_i   before
2  x_x   before
2  x_y   before
2  y_a   before
2  y_b   before
2  y_i   before
2  y_x   before
2  y_y   before
3  a_a   before
3  a_b   before
3  a_i   before
3  a_x   before
3  a_y   before
3  b_a   before
3  b_b   before
3  b_i   before
3  b_x   before
3  b_y   before
3  i_a   before
3  i_b   before
3  i_i   before
3  i_x   before
3  i_y   before
3  x_a   before
3  x_b   before
3  x_i   before
3  x_x   before
3  x_y   before
3  y_a   before
3  y_b   before
3  y_i   before
3  y_x   before
3  y_y   before
4  a_a   before
4  a_b   before
4  a_i   before
4  a_x   before
4  a_y   before
4  b_a   before
4  b_b   before
4  b_i   before
4  b_x   before
4  b_y   before
4  i_a   before
4  i_b   before
4  i_i   before
4  i_x   before
4  i_y   before
4  x_a   before
4  x_b   before
4  x_i   before
4  x_x   before
4  x_y   before
4  y_a   before
4  y_b   before
4  y_i   before
4  y_x   before
4  y_y   before
5  a_a   before
5  a_b   before
5  a_i   before
5  a_x   before
5  a_y   before
5  b_a   before
5  b_b   before
5  b_i   before
5  b_x   before
5  b_y   before
5  i_a   before
5  i_b   before
5  i_i   before
5  i_x   before
5  i_y   before
5  x_a   before
5  x_b   before
5  x_i   before
5  x_x   before
5  x_y   before
5  y_a   before
5  y_b   before
5  y_i   before
5  y_x   before
5  y_y   before
6  a_a   before
6  a_b   before
6  a_i   before
6  a_x   before
6  a_y   before
6  b_a   before
6  b_b   before
6  b_i   before
6  b_x   before
6  b_y   before
6  i_a   before
6  i_b   before
6  i_i   before
6  i_x   before
6  i_y   before
6  x_a   before
6  x_b   before
6  x_i   before
6  x_x   before
6  x_y   before
6  y_a   before
6  y_b   before
6  y_i   before
6  y_x   before
6  y_y   before
7  a_a   before
7  a_b   before
7  a_i   before
7  a_x   before
7  a_y   before
7  b_a   before
7  b_b   before
7  b_i   before
7  b_x   before
7  b_y   before
7  i_a   before
7  i_b   before
7  i_i   before
7  i_x   before
7  i_y   before
7  x_a   before
7  x_b   before
7  x_i   before
7  x_x   before
7  x_y   before
7  y_a   before
7  y_b   before
7  y_i   before
7  y_x   before
7  y_y   before
8  a_a   before
8  a_b   before
8  a_i   before
8  a_x   before
8  a_y   before
8  b_a   before
8  b_b   before
8  b_i   before
8  b_x   before
8  b_y   before
8  i_a   before
8  i_b   before
8  i_i   before
8  i_x   before
8  i_y   before
8  x_a   before
8  x_b   before
8  x_i   before
8  x_x   before
8  x_y   before
8  y_a   before
8  y_b   before
8  y_i   before
8  y_x   before
8  y_y   before
9  a_a   before
9  a_b   before
9  a_i   before
9  a_x   before
9  a_y   before
9  b_a   before
9  b_b   before
9  b_i   before
9  b_x   before
9  b_y   before
9  i_a   before
9  i_b   before
9  i_i   before
9  i_x   before
9  i_y   before
9  x_a   before
9  x_b   before
9  x_i   before
9  x_x   before
9  x_y   before
9  y_a   before
9  y_b   before
9  y_i   before
9  y_x   before
9  y_y   before
10 a_a   before
10 a_b   before
10 a_i   before
10 a_x   before
10 a_y   before
10 b_a   before
10 b_b   before
10 b_i   before
10 b_x   before
10 b_y   before
10 i_a   before
10 i_b   before
10 i_i   before
10 i_x   before
10 i_y   before
10 x_a   before
10 x_b   before
10 x_i   before
10 x_x   before
10 x_y   before
10 y_a   before
10 y_b   before
10 y_i   before
10 y_x   before
10 y_y   before

mlr --opprint --from ./reg_test/input/abixy put -q 
  for (k1, v1 in $*) {
    @output1[NR][k1] = "before";
    break;
    @output1[NR][k1] = v1;
    for (k2, v2 in $*) {
      @output2[NR][k1."_".k2] = "before";
      break;
      @output2[NR][k1."_".k2] = v2;
    }
  }
  end {
    emit @output1, "NR", "name";
    emit @output2, "NR", "names";
  }

NR name output1
1  a    before
2  a    before
3  a    before
4  a    before
5  a    before
6  a    before
7  a    before
8  a    before
9  a    before
10 a    before

mlr --opprint --from ./reg_test/input/abixy put -q 
  for (k1, v1 in $*) {
    @output1[NR][k1] = "before";
    continue;
    @output1[NR][k1] = v1;
    for (k2, v2 in $*) {
      @output2[NR][k1."_".k2] = "before";
      break;
      @output2[NR][k1."_".k2] = v2;
    }
  }
  end {
    emit @output1, "NR", "name";
    emit @output2, "NR", "names";
  }

NR name output1
1  a    before
1  b    before
1  i    before
1  x    before
1  y    before
2  a    before
2  b    before
2  i    before
2  x    before
2  y    before
3  a    before
3  b    before
3  i    before
3  x    before
3  y    before
4  a    before
4  b    before
4  i    before
4  x    before
4  y    before
5  a    before
5  b    before
5  i    before
5  x    before
5  y    before
6  a    before
6  b    before
6  i    before
6  x    before
6  y    before
7  a    before
7  b    before
7  i    before
7  x    before
7  y    before
8  a    before
8  b    before
8  i    before
8  x    before
8  y    before
9  a    before
9  b    before
9  i    before
9  x    before
9  y    before
10 a    before
10 b    before
10 i    before
10 x    before
10 y    before

mlr --opprint --from ./reg_test/input/abixy put -q 
  for (k1, v1 in $*) {
    @output1[NR][k1] = "before";
    break;
    @output1[NR][k1] = v1;
    for (k2, v2 in $*) {
      @output2[NR][k1."_".k2] = "before";
      continue;
      @output2[NR][k1."_".k2] = v2;
    }
  }
  end {
    emit @output1, "NR", "name";
    emit @output2, "NR", "names";
  }

NR name output1
1  a    before
2  a    before
3  a    before
4  a    before
5  a    before
6  a    before
7  a    before
8  a    before
9  a    before
10 a    before

mlr --opprint --from ./reg_test/input/abixy put -q 
  for (k1, v1 in $*) {
    @output1[NR][k1] = "before";
    continue;
    @output1[NR][k1] = v1;
    for (k2, v2 in $*) {
      @output2[NR][k1."_".k2] = "before";
      continue;
      @output2[NR][k1."_".k2] = v2;
    }
  }
  end {
    emit @output1, "NR", "name";
    emit @output2, "NR", "names";
  }

NR name output1
1  a    before
1  b    before
1  i    before
1  x    before
1  y    before
2  a    before
2  b    before
2  i    before
2  x    before
2  y    before
3  a    before
3  b    before
3  i    before
3  x    before
3  y    before
4  a    before
4  b    before
4  i    before
4  x    before
4  y    before
5  a    before
5  b    before
5  i    before
5  x    before
5  y    before
6  a    before
6  b    before
6  i    before
6  x    before
6  y    before
7  a    before
7  b    before
7  i    before
7  x    before
7  y    before
8  a    before
8  b    before
8  i    before
8  x    before
8  y    before
9  a    before
9  b    before
9  i    before
9  x    before
9  y    before
10 a    before
10 b    before
10 i    before
10 x    before
10 y    before

mlr --opprint --from ./reg_test/input/abixy put -q 
  for (k1, v1 in $*) {
    @output1[NR][k1] = "before";
    if (k1 == "b") {
        break
    }
    @output1[NR][k1] = v1;
    for (k2, v2 in $*) {
      @output2[NR][k1."_".k2] = "before";
      @output2[NR][k1."_".k2] = v2;
    }
  }
  end {
    emit @output1, "NR", "name";
    emit @output2, "NR", "names";
  }

NR name output1
1  a    pan
1  b    before
2  a    eks
2  b    before
3  a    wye
3  b    before
4  a    eks
4  b    before
5  a    wye
5  b    before
6  a    zee
6  b    before
7  a    eks
7  b    before
8  a    zee
8  b    before
9  a    hat
9  b    before
10 a    pan
10 b    before

NR names output2
1  a_a   pan
1  a_b   pan
1  a_i   1
1  a_x   0.346790
1  a_y   0.726803
2  a_a   eks
2  a_b   pan
2  a_i   2
2  a_x   0.758680
2  a_y   0.522151
3  a_a   wye
3  a_b   wye
3  a_i   3
3  a_x   0.204603
3  a_y   0.338319
4  a_a   eks
4  a_b   wye
4  a_i   4
4  a_x   0.381399
4  a_y   0.134189
5  a_a   wye
5  a_b   pan
5  a_i   5
5  a_x   0.573289
5  a_y   0.863624
6  a_a   zee
6  a_b   pan
6  a_i   6
6  a_x   0.527126
6  a_y   0.493221
7  a_a   eks
7  a_b   zee
7  a_i   7
7  a_x   0.611784
7  a_y   0.187885
8  a_a   zee
8  a_b   wye
8  a_i   8
8  a_x   0.598554
8  a_y   0.976181
9  a_a   hat
9  a_b   wye
9  a_i   9
9  a_x   0.031442
9  a_y   0.749551
10 a_a   pan
10 a_b   wye
10 a_i   10
10 a_x   0.502626
10 a_y   0.952618

mlr --opprint --from ./reg_test/input/abixy put -q 
  for (k1, v1 in $*) {
    @output1[NR][k1] = "before";
    if (k1 == "b") {
        continue
    }
    @output1[NR][k1] = v1;
    for (k2, v2 in $*) {
      @output2[NR][k1."_".k2] = "before";
      @output2[NR][k1."_".k2] = v2;
    }
  }
  end {
    emit @output1, "NR", "name";
    emit @output2, "NR", "names";
  }

NR name output1
1  a    pan
1  b    before
1  i    1
1  x    0.346790
1  y    0.726803
2  a    eks
2  b    before
2  i    2
2  x    0.758680
2  y    0.522151
3  a    wye
3  b    before
3  i    3
3  x    0.204603
3  y    0.338319
4  a    eks
4  b    before
4  i    4
4  x    0.381399
4  y    0.134189
5  a    wye
5  b    before
5  i    5
5  x    0.573289
5  y    0.863624
6  a    zee
6  b    before
6  i    6
6  x    0.527126
6  y    0.493221
7  a    eks
7  b    before
7  i    7
7  x    0.611784
7  y    0.187885
8  a    zee
8  b    before
8  i    8
8  x    0.598554
8  y    0.976181
9  a    hat
9  b    before
9  i    9
9  x    0.031442
9  y    0.749551
10 a    pan
10 b    before
10 i    10
10 x    0.502626
10 y    0.952618

NR names output2
1  a_a   pan
1  a_b   pan
1  a_i   1
1  a_x   0.346790
1  a_y   0.726803
1  i_a   pan
1  i_b   pan
1  i_i   1
1  i_x   0.346790
1  i_y   0.726803
1  x_a   pan
1  x_b   pan
1  x_i   1
1  x_x   0.346790
1  x_y   0.726803
1  y_a   pan
1  y_b   pan
1  y_i   1
1  y_x   0.346790
1  y_y   0.726803
2  a_a   eks
2  a_b   pan
2  a_i   2
2  a_x   0.758680
2  a_y   0.522151
2  i_a   eks
2  i_b   pan
2  i_i   2
2  i_x   0.758680
2  i_y   0.522151
2  x_a   eks
2  x_b   pan
2  x_i   2
2  x_x   0.758680
2  x_y   0.522151
2  y_a   eks
2  y_b   pan
2  y_i   2
2  y_x   0.758680
2  y_y   0.522151
3  a_a   wye
3  a_b   wye
3  a_i   3
3  a_x   0.204603
3  a_y   0.338319
3  i_a   wye
3  i_b   wye
3  i_i   3
3  i_x   0.204603
3  i_y   0.338319
3  x_a   wye
3  x_b   wye
3  x_i   3
3  x_x   0.204603
3  x_y   0.338319
3  y_a   wye
3  y_b   wye
3  y_i   3
3  y_x   0.204603
3  y_y   0.338319
4  a_a   eks
4  a_b   wye
4  a_i   4
4  a_x   0.381399
4  a_y   0.134189
4  i_a   eks
4  i_b   wye
4  i_i   4
4  i_x   0.381399
4  i_y   0.134189
4  x_a   eks
4  x_b   wye
4  x_i   4
4  x_x   0.381399
4  x_y   0.134189
4  y_a   eks
4  y_b   wye
4  y_i   4
4  y_x   0.381399
4  y_y   0.134189
5  a_a   wye
5  a_b   pan
5  a_i   5
5  a_x   0.573289
5  a_y   0.863624
5  i_a   wye
5  i_b   pan
5  i_i   5
5  i_x   0.573289
5  i_y   0.863624
5  x_a   wye
5  x_b   pan
5  x_i   5
5  x_x   0.573289
5  x_y   0.863624
5  y_a   wye
5  y_b   pan
5  y_i   5
5  y_x   0.573289
5  y_y   0.863624
6  a_a   zee
6  a_b   pan
6  a_i   6
6  a_x   0.527126
6  a_y   0.493221
6  i_a   zee
6  i_b   pan
6  i_i   6
6  i_x   0.527126
6  i_y   0.493221
6  x_a   zee
6  x_b   pan
6  x_i   6
6  x_x   0.527126
6  x_y   0.493221
6  y_a   zee
6  y_b   pan
6  y_i   6
6  y_x   0.527126
6  y_y   0.493221
7  a_a   eks
7  a_b   zee
7  a_i   7
7  a_x   0.611784
7  a_y   0.187885
7  i_a   eks
7  i_b   zee
7  i_i   7
7  i_x   0.611784
7  i_y   0.187885
7  x_a   eks
7  x_b   zee
7  x_i   7
7  x_x   0.611784
7  x_y   0.187885
7  y_a   eks
7  y_b   zee
7  y_i   7
7  y_x   0.611784
7  y_y   0.187885
8  a_a   zee
8  a_b   wye
8  a_i   8
8  a_x   0.598554
8  a_y   0.976181
8  i_a   zee
8  i_b   wye
8  i_i   8
8  i_x   0.598554
8  i_y   0.976181
8  x_a   zee
8  x_b   wye
8  x_i   8
8  x_x   0.598554
8  x_y   0.976181
8  y_a   zee
8  y_b   wye
8  y_i   8
8  y_x   0.598554
8  y_y   0.976181
9  a_a   hat
9  a_b   wye
9  a_i   9
9  a_x   0.031442
9  a_y   0.749551
9  i_a   hat
9  i_b   wye
9  i_i   9
9  i_x   0.031442
9  i_y   0.749551
9  x_a   hat
9  x_b   wye
9  x_i   9
9  x_x   0.031442
9  x_y   0.749551
9  y_a   hat
9  y_b   wye
9  y_i   9
9  y_x   0.031442
9  y_y   0.749551
10 a_a   pan
10 a_b   wye
10 a_i   10
10 a_x   0.502626
10 a_y   0.952618
10 i_a   pan
10 i_b   wye
10 i_i   10
10 i_x   0.502626
10 i_y   0.952618
10 x_a   pan
10 x_b   wye
10 x_i   10
10 x_x   0.502626
10 x_y   0.952618
10 y_a   pan
10 y_b   wye
10 y_i   10
10 y_x   0.502626
10 y_y   0.952618

mlr --opprint --from ./reg_test/input/abixy put -q 
  for (k1, v1 in $*) {
    @output1[NR][k1] = "before";
    @output1[NR][k1] = v1;
    for (k2, v2 in $*) {
      @output2[NR][k1."_".k2] = "before";
      if (k2 == "a") {
          break
      }
      @output2[NR][k1."_".k2] = v2;
    }
  }
  end {
    emit @output1, "NR", "name";
    emit @output2, "NR", "names";
  }

NR name output1
1  a    pan
1  b    pan
1  i    1
1  x    0.346790
1  y    0.726803
2  a    eks
2  b    pan
2  i    2
2  x    0.758680
2  y    0.522151
3  a    wye
3  b    wye
3  i    3
3  x    0.204603
3  y    0.338319
4  a    eks
4  b    wye
4  i    4
4  x    0.381399
4  y    0.134189
5  a    wye
5  b    pan
5  i    5
5  x    0.573289
5  y    0.863624
6  a    zee
6  b    pan
6  i    6
6  x    0.527126
6  y    0.493221
7  a    eks
7  b    zee
7  i    7
7  x    0.611784
7  y    0.187885
8  a    zee
8  b    wye
8  i    8
8  x    0.598554
8  y    0.976181
9  a    hat
9  b    wye
9  i    9
9  x    0.031442
9  y    0.749551
10 a    pan
10 b    wye
10 i    10
10 x    0.502626
10 y    0.952618

NR names output2
1  a_a   before
1  b_a   before
1  i_a   before
1  x_a   before
1  y_a   before
2  a_a   before
2  b_a   before
2  i_a   before
2  x_a   before
2  y_a   before
3  a_a   before
3  b_a   before
3  i_a   before
3  x_a   before
3  y_a   before
4  a_a   before
4  b_a   before
4  i_a   before
4  x_a   before
4  y_a   before
5  a_a   before
5  b_a   before
5  i_a   before
5  x_a   before
5  y_a   before
6  a_a   before
6  b_a   before
6  i_a   before
6  x_a   before
6  y_a   before
7  a_a   before
7  b_a   before
7  i_a   before
7  x_a   before
7  y_a   before
8  a_a   before
8  b_a   before
8  i_a   before
8  x_a   before
8  y_a   before
9  a_a   before
9  b_a   before
9  i_a   before
9  x_a   before
9  y_a   before
10 a_a   before
10 b_a   before
10 i_a   before
10 x_a   before
10 y_a   before

mlr --opprint --from ./reg_test/input/abixy put -q 
  for (k1, v1 in $*) {
    @output1[NR][k1] = "before";
    @output1[NR][k1] = v1;
    for (k2, v2 in $*) {
      @output2[NR][k1."_".k2] = "before";
      if (k2 == "b") {
          continue
      }
      @output2[NR][k1."_".k2] = v2;
    }
  }
  end {
    emit @output1, "NR", "name";
    emit @output2, "NR", "names";
  }

NR name output1
1  a    pan
1  b    pan
1  i    1
1  x    0.346790
1  y    0.726803
2  a    eks
2  b    pan
2  i    2
2  x    0.758680
2  y    0.522151
3  a    wye
3  b    wye
3  i    3
3  x    0.204603
3  y    0.338319
4  a    eks
4  b    wye
4  i    4
4  x    0.381399
4  y    0.134189
5  a    wye
5  b    pan
5  i    5
5  x    0.573289
5  y    0.863624
6  a    zee
6  b    pan
6  i    6
6  x    0.527126
6  y    0.493221
7  a    eks
7  b    zee
7  i    7
7  x    0.611784
7  y    0.187885
8  a    zee
8  b    wye
8  i    8
8  x    0.598554
8  y    0.976181
9  a    hat
9  b    wye
9  i    9
9  x    0.031442
9  y    0.749551
10 a    pan
10 b    wye
10 i    10
10 x    0.502626
10 y    0.952618

NR names output2
1  a_a   pan
1  a_b   before
1  a_i   1
1  a_x   0.346790
1  a_y   0.726803
1  b_a   pan
1  b_b   before
1  b_i   1
1  b_x   0.346790
1  b_y   0.726803
1  i_a   pan
1  i_b   before
1  i_i   1
1  i_x   0.346790
1  i_y   0.726803
1  x_a   pan
1  x_b   before
1  x_i   1
1  x_x   0.346790
1  x_y   0.726803
1  y_a   pan
1  y_b   before
1  y_i   1
1  y_x   0.346790
1  y_y   0.726803
2  a_a   eks
2  a_b   before
2  a_i   2
2  a_x   0.758680
2  a_y   0.522151
2  b_a   eks
2  b_b   before
2  b_i   2
2  b_x   0.758680
2  b_y   0.522151
2  i_a   eks
2  i_b   before
2  i_i   2
2  i_x   0.758680
2  i_y   0.522151
2  x_a   eks
2  x_b   before
2  x_i   2
2  x_x   0.758680
2  x_y   0.522151
2  y_a   eks
2  y_b   before
2  y_i   2
2  y_x   0.758680
2  y_y   0.522151
3  a_a   wye
3  a_b   before
3  a_i   3
3  a_x   0.204603
3  a_y   0.338319
3  b_a   wye
3  b_b   before
3  b_i   3
3  b_x   0.204603
3  b_y   0.338319
3  i_a   wye
3  i_b   before
3  i_i   3
3  i_x   0.204603
3  i_y   0.338319
3  x_a   wye
3  x_b   before
3  x_i   3
3  x_x   0.204603
3  x_y   0.338319
3  y_a   wye
3  y_b   before
3  y_i   3
3  y_x   0.204603
3  y_y   0.338319
4  a_a   eks
4  a_b   before
4  a_i   4
4  a_x   0.381399
4  a_y   0.134189
4  b_a   eks
4  b_b   before
4  b_i   4
4  b_x   0.381399
4  b_y   0.134189
4  i_a   eks
4  i_b   before
4  i_i   4
4  i_x   0.381399
4  i_y   0.134189
4  x_a   eks
4  x_b   before
4  x_i   4
4  x_x   0.381399
4  x_y   0.134189
4  y_a   eks
4  y_b   before
4  y_i   4
4  y_x   0.381399
4  y_y   0.134189
5  a_a   wye
5  a_b   before
5  a_i   5
5  a_x   0.573289
5  a_y   0.863624
5  b_a   wye
5  b_b   before
5  b_i   5
5  b_x   0.573289
5  b_y   0.863624
5  i_a   wye
5  i_b   before
5  i_i   5
5  i_x   0.573289
5  i_y   0.863624
5  x_a   wye
5  x_b   before
5  x_i   5
5  x_x   0.573289
5  x_y   0.863624
5  y_a   wye
5  y_b   before
5  y_i   5
5  y_x   0.573289
5  y_y   0.863624
6  a_a   zee
6  a_b   before
6  a_i   6
6  a_x   0.527126
6  a_y   0.493221
6  b_a   zee
6  b_b   before
6  b_i   6
6  b_x   0.527126
6  b_y   0.493221
6  i_a   zee
6  i_b   before
6  i_i   6
6  i_x   0.527126
6  i_y   0.493221
6  x_a   zee
6  x_b   before
6  x_i   6
6  x_x   0.527126
6  x_y   0.493221
6  y_a   zee
6  y_b   before
6  y_i   6
6  y_x   0.527126
6  y_y   0.493221
7  a_a   eks
7  a_b   before
7  a_i   7
7  a_x   0.611784
7  a_y   0.187885
7  b_a   eks
7  b_b   before
7  b_i   7
7  b_x   0.611784
7  b_y   0.187885
7  i_a   eks
7  i_b   before
7  i_i   7
7  i_x   0.611784
7  i_y   0.187885
7  x_a   eks
7  x_b   before
7  x_i   7
7  x_x   0.611784
7  x_y   0.187885
7  y_a   eks
7  y_b   before
7  y_i   7
7  y_x   0.611784
7  y_y   0.187885
8  a_a   zee
8  a_b   before
8  a_i   8
8  a_x   0.598554
8  a_y   0.976181
8  b_a   zee
8  b_b   before
8  b_i   8
8  b_x   0.598554
8  b_y   0.976181
8  i_a   zee
8  i_b   before
8  i_i   8
8  i_x   0.598554
8  i_y   0.976181
8  x_a   zee
8  x_b   before
8  x_i   8
8  x_x   0.598554
8  x_y   0.976181
8  y_a   zee
8  y_b   before
8  y_i   8
8  y_x   0.598554
8  y_y   0.976181
9  a_a   hat
9  a_b   before
9  a_i   9
9  a_x   0.031442
9  a_y   0.749551
9  b_a   hat
9  b_b   before
9  b_i   9
9  b_x   0.031442
9  b_y   0.749551
9  i_a   hat
9  i_b   before
9  i_i   9
9  i_x   0.031442
9  i_y   0.749551
9  x_a   hat
9  x_b   before
9  x_i   9
9  x_x   0.031442
9  x_y   0.749551
9  y_a   hat
9  y_b   before
9  y_i   9
9  y_x   0.031442
9  y_y   0.749551
10 a_a   pan
10 a_b   before
10 a_i   10
10 a_x   0.502626
10 a_y   0.952618
10 b_a   pan
10 b_b   before
10 b_i   10
10 b_x   0.502626
10 b_y   0.952618
10 i_a   pan
10 i_b   before
10 i_i   10
10 i_x   0.502626
10 i_y   0.952618
10 x_a   pan
10 x_b   before
10 x_i   10
10 x_x   0.502626
10 x_y   0.952618
10 y_a   pan
10 y_b   before
10 y_i   10
10 y_x   0.502626
10 y_y   0.952618

mlr --opprint --from ./reg_test/input/abixy put -q 
  for (k1, v1 in $*) {
    @output1[NR][k1] = "before";
    if (k1 == "b") {
        break
    }
    @output1[NR][k1] = v1;
    for (k2, v2 in $*) {
      @output2[NR][k1."_".k2] = "before";
      if (k2 == "a") {
          break
      }
      @output2[NR][k1."_".k2] = v2;
    }
  }
  end {
    emit @output1, "NR", "name";
    emit @output2, "NR", "names";
  }

NR name output1
1  a    pan
1  b    before
2  a    eks
2  b    before
3  a    wye
3  b    before
4  a    eks
4  b    before
5  a    wye
5  b    before
6  a    zee
6  b    before
7  a    eks
7  b    before
8  a    zee
8  b    before
9  a    hat
9  b    before
10 a    pan
10 b    before

NR names output2
1  a_a   before
2  a_a   before
3  a_a   before
4  a_a   before
5  a_a   before
6  a_a   before
7  a_a   before
8  a_a   before
9  a_a   before
10 a_a   before

mlr --opprint --from ./reg_test/input/abixy put -q 
  for (k1, v1 in $*) {
    @output1[NR][k1] = "before";
    if (k1 == "b") {
        continue
    }
    @output1[NR][k1] = v1;
    for (k2, v2 in $*) {
      @output2[NR][k1."_".k2] = "before";
      if (k2 == "a") {
          break
      }
      @output2[NR][k1."_".k2] = v2;
    }
  }
  end {
    emit @output1, "NR", "name";
    emit @output2, "NR", "names";
  }

NR name output1
1  a    pan
1  b    before
1  i    1
1  x    0.346790
1  y    0.726803
2  a    eks
2  b    before
2  i    2
2  x    0.758680
2  y    0.522151
3  a    wye
3  b    before
3  i    3
3  x    0.204603
3  y    0.338319
4  a    eks
4  b    before
4  i    4
4  x    0.381399
4  y    0.134189
5  a    wye
5  b    before
5  i    5
5  x    0.573289
5  y    0.863624
6  a    zee
6  b    before
6  i    6
6  x    0.527126
6  y    0.493221
7  a    eks
7  b    before
7  i    7
7  x    0.611784
7  y    0.187885
8  a    zee
8  b    before
8  i    8
8  x    0.598554
8  y    0.976181
9  a    hat
9  b    before
9  i    9
9  x    0.031442
9  y    0.749551
10 a    pan
10 b    before
10 i    10
10 x    0.502626
10 y    0.952618

NR names output2
1  a_a   before
1  i_a   before
1  x_a   before
1  y_a   before
2  a_a   before
2  i_a   before
2  x_a   before
2  y_a   before
3  a_a   before
3  i_a   before
3  x_a   before
3  y_a   before
4  a_a   before
4  i_a   before
4  x_a   before
4  y_a   before
5  a_a   before
5  i_a   before
5  x_a   before
5  y_a   before
6  a_a   before
6  i_a   before
6  x_a   before
6  y_a   before
7  a_a   before
7  i_a   before
7  x_a   before
7  y_a   before
8  a_a   before
8  i_a   before
8  x_a   before
8  y_a   before
9  a_a   before
9  i_a   before
9  x_a   before
9  y_a   before
10 a_a   before
10 i_a   before
10 x_a   before
10 y_a   before

mlr --opprint --from ./reg_test/input/abixy put -q 
  for (k1, v1 in $*) {
    @output1[NR][k1] = "before";
    if (k1 == "b") {
        break
    }
    @output1[NR][k1] = v1;
    for (k2, v2 in $*) {
      @output2[NR][k1."_".k2] = "before";
      if (k2 == "a") {
          continue
      }
      @output2[NR][k1."_".k2] = v2;
    }
  }
  end {
    emit @output1, "NR", "name";
    emit @output2, "NR", "names";
  }

NR name output1
1  a    pan
1  b    before
2  a    eks
2  b    before
3  a    wye
3  b    before
4  a    eks
4  b    before
5  a    wye
5  b    before
6  a    zee
6  b    before
7  a    eks
7  b    before
8  a    zee
8  b    before
9  a    hat
9  b    before
10 a    pan
10 b    before

NR names output2
1  a_a   before
1  a_b   pan
1  a_i   1
1  a_x   0.346790
1  a_y   0.726803
2  a_a   before
2  a_b   pan
2  a_i   2
2  a_x   0.758680
2  a_y   0.522151
3  a_a   before
3  a_b   wye
3  a_i   3
3  a_x   0.204603
3  a_y   0.338319
4  a_a   before
4  a_b   wye
4  a_i   4
4  a_x   0.381399
4  a_y   0.134189
5  a_a   before
5  a_b   pan
5  a_i   5
5  a_x   0.573289
5  a_y   0.863624
6  a_a   before
6  a_b   pan
6  a_i   6
6  a_x   0.527126
6  a_y   0.493221
7  a_a   before
7  a_b   zee
7  a_i   7
7  a_x   0.611784
7  a_y   0.187885
8  a_a   before
8  a_b   wye
8  a_i   8
8  a_x   0.598554
8  a_y   0.976181
9  a_a   before
9  a_b   wye
9  a_i   9
9  a_x   0.031442
9  a_y   0.749551
10 a_a   before
10 a_b   wye
10 a_i   10
10 a_x   0.502626
10 a_y   0.952618

mlr --opprint --from ./reg_test/input/abixy put -q 
  for (k1, v1 in $*) {
    @output1[NR][k1] = "before";
    if (k1 == "b") {
        continue
    }
    @output1[NR][k1] = v1;
    for (k2, v2 in $*) {
      @output2[NR][k1."_".k2] = "before";
      if (k2 == "a") {
          continue
      }
      @output2[NR][k1."_".k2] = v2;
    }
  }
  end {
    emit @output1, "NR", "name";
    emit @output2, "NR", "names";
  }

NR name output1
1  a    pan
1  b    before
1  i    1
1  x    0.346790
1  y    0.726803
2  a    eks
2  b    before
2  i    2
2  x    0.758680
2  y    0.522151
3  a    wye
3  b    before
3  i    3
3  x    0.204603
3  y    0.338319
4  a    eks
4  b    before
4  i    4
4  x    0.381399
4  y    0.134189
5  a    wye
5  b    before
5  i    5
5  x    0.573289
5  y    0.863624
6  a    zee
6  b    before
6  i    6
6  x    0.527126
6  y    0.493221
7  a    eks
7  b    before
7  i    7
7  x    0.611784
7  y    0.187885
8  a    zee
8  b    before
8  i    8
8  x    0.598554
8  y    0.976181
9  a    hat
9  b    before
9  i    9
9  x    0.031442
9  y    0.749551
10 a    pan
10 b    before
10 i    10
10 x    0.502626
10 y    0.952618

NR names output2
1  a_a   before
1  a_b   pan
1  a_i   1
1  a_x   0.346790
1  a_y   0.726803
1  i_a   before
1  i_b   pan
1  i_i   1
1  i_x   0.346790
1  i_y   0.726803
1  x_a   before
1  x_b   pan
1  x_i   1
1  x_x   0.346790
1  x_y   0.726803
1  y_a   before
1  y_b   pan
1  y_i   1
1  y_x   0.346790
1  y_y   0.726803
2  a_a   before
2  a_b   pan
2  a_i   2
2  a_x   0.758680
2  a_y   0.522151
2  i_a   before
2  i_b   pan
2  i_i   2
2  i_x   0.758680
2  i_y   0.522151
2  x_a   before
2  x_b   pan
2  x_i   2
2  x_x   0.758680
2  x_y   0.522151
2  y_a   before
2  y_b   pan
2  y_i   2
2  y_x   0.758680
2  y_y   0.522151
3  a_a   before
3  a_b   wye
3  a_i   3
3  a_x   0.204603
3  a_y   0.338319
3  i_a   before
3  i_b   wye
3  i_i   3
3  i_x   0.204603
3  i_y   0.338319
3  x_a   before
3  x_b   wye
3  x_i   3
3  x_x   0.204603
3  x_y   0.338319
3  y_a   before
3  y_b   wye
3  y_i   3
3  y_x   0.204603
3  y_y   0.338319
4  a_a   before
4  a_b   wye
4  a_i   4
4  a_x   0.381399
4  a_y   0.134189
4  i_a   before
4  i_b   wye
4  i_i   4
4  i_x   0.381399
4  i_y   0.134189
4  x_a   before
4  x_b   wye
4  x_i   4
4  x_x   0.381399
4  x_y   0.134189
4  y_a   before
4  y_b   wye
4  y_i   4
4  y_x   0.381399
4  y_y   0.134189
5  a_a   before
5  a_b   pan
5  a_i   5
5  a_x   0.573289
5  a_y   0.863624
5  i_a   before
5  i_b   pan
5  i_i   5
5  i_x   0.573289
5  i_y   0.863624
5  x_a   before
5  x_b   pan
5  x_i   5
5  x_x   0.573289
5  x_y   0.863624
5  y_a   before
5  y_b   pan
5  y_i   5
5  y_x   0.573289
5  y_y   0.863624
6  a_a   before
6  a_b   pan
6  a_i   6
6  a_x   0.527126
6  a_y   0.493221
6  i_a   before
6  i_b   pan
6  i_i   6
6  i_x   0.527126
6  i_y   0.493221
6  x_a   before
6  x_b   pan
6  x_i   6
6  x_x   0.527126
6  x_y   0.493221
6  y_a   before
6  y_b   pan
6  y_i   6
6  y_x   0.527126
6  y_y   0.493221
7  a_a   before
7  a_b   zee
7  a_i   7
7  a_x   0.611784
7  a_y   0.187885
7  i_a   before
7  i_b   zee
7  i_i   7
7  i_x   0.611784
7  i_y   0.187885
7  x_a   before
7  x_b   zee
7  x_i   7
7  x_x   0.611784
7  x_y   0.187885
7  y_a   before
7  y_b   zee
7  y_i   7
7  y_x   0.611784
7  y_y   0.187885
8  a_a   before
8  a_b   wye
8  a_i   8
8  a_x   0.598554
8  a_y   0.976181
8  i_a   before
8  i_b   wye
8  i_i   8
8  i_x   0.598554
8  i_y   0.976181
8  x_a   before
8  x_b   wye
8  x_i   8
8  x_x   0.598554
8  x_y   0.976181
8  y_a   before
8  y_b   wye
8  y_i   8
8  y_x   0.598554
8  y_y   0.976181
9  a_a   before
9  a_b   wye
9  a_i   9
9  a_x   0.031442
9  a_y   0.749551
9  i_a   before
9  i_b   wye
9  i_i   9
9  i_x   0.031442
9  i_y   0.749551
9  x_a   before
9  x_b   wye
9  x_i   9
9  x_x   0.031442
9  x_y   0.749551
9  y_a   before
9  y_b   wye
9  y_i   9
9  y_x   0.031442
9  y_y   0.749551
10 a_a   before
10 a_b   wye
10 a_i   10
10 a_x   0.502626
10 a_y   0.952618
10 i_a   before
10 i_b   wye
10 i_i   10
10 i_x   0.502626
10 i_y   0.952618
10 x_a   before
10 x_b   wye
10 x_i   10
10 x_x   0.502626
10 x_y   0.952618
10 y_a   before
10 y_b   wye
10 y_i   10
10 y_x   0.502626
10 y_y   0.952618


================================================================
FOR-MAP DEPTH TESTS


---------------------------------------------------------------- for full oosvar
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=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] = 7; for((k1),v in @*) {$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] = 7; for((k1,k2),v in @*) {$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] = 7; for((k1,k2,k3),v in @*) {$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


---------------------------------------------------------------- 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=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


---------------------------------------------------------------- for local
mlr --from ./reg_test/input/abixy put o[1][2] = 7; for(k1,v in o) {$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] = 7; for((k1),v in o) {$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] = 7; for((k1,k2),v in o) {$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] = 7; for((k1,k2,k3),v in o) {$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


---------------------------------------------------------------- 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=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 for((k1),v in {1:{2:7}}) {$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 for((k1,k2),v in {1:{2:7}}) {$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 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
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


================================================================
DSL BREAK/CONTINUE IN SINGLE FOR-OOSVAR


---------------------------------------------------------------- single-key tests, direct break/continue
mlr --opprint --from ./reg_test/input/abixy put -q 
  @logging[NR] = $*;
  end {
    for (k1, v in @logging[2]) {
        break;
        @output[k1] = v;
    }
    emit @output, "NR", "name"
  }


mlr --opprint --from ./reg_test/input/abixy put -q 
  @logging[NR] = $*;
  end {
    for (k1, v in @logging[2]) {
        @output[k1] = v;
        break;
        @output[k1] = "ERROR";
    }
    emit @output, "NR", "name"
  }

NR output
a  eks

mlr --opprint --from ./reg_test/input/abixy put -q 
  @logging[NR] = $*;
  end {
    for (k1, v in @logging[2]) {
        continue;
        @output[k1] = v
    }
    emit @output, "NR", "name"
  }


mlr --opprint --from ./reg_test/input/abixy put -q 
  @logging[NR] = $*;
  end {
    for (k1, v in @logging[2]) {
        @output[k1] = v;
        continue;
        @output[k1] = "ERROR";
    }
    emit @output, "NR", "name"
  }

NR output
a  eks
b  pan
i  2
x  0.7586799647899636
y  0.5221511083334797


---------------------------------------------------------------- single-key tests, indirect break/continue
mlr --opprint --from ./reg_test/input/abixy put -q 
  @logging[NR] = $*;
  end {
    for (k1, v in @logging[2]) {
        if (k1 == "i") {
          break;
        }
        @output[k1] = v;
    }
    emit @output, "NR", "name"
  }

NR output
a  eks
b  pan

mlr --opprint --from ./reg_test/input/abixy put -q 
  @logging[NR] = $*;
  end {
    for (k1, v in @logging[2]) {
        @output[k1] = v;
        if (k1 == "i") {
          break;
        }
    }
    emit @output, "NR", "name"
  }

NR output
a  eks
b  pan
i  2

mlr --opprint --from ./reg_test/input/abixy put -q 
  @logging[NR] = $*;
  end {
    for (k1, v in @logging[2]) {
        if (k1 == "i") {
          continue;
        }
        @output[k1] = v
    }
    emit @output, "NR", "name"
  }

NR output
a  eks
b  pan
x  0.7586799647899636
y  0.5221511083334797

mlr --opprint --from ./reg_test/input/abixy put -q 
  @logging[NR] = $*;
  end {
    for (k1, v in @logging[2]) {
        @output[k1] = v;
        if (k1 == "i") {
          continue;
        }
        @output[k1] = "reached";
    }
    emit @output, "NR", "name"
  }

NR output
a  reached
b  reached
i  2
x  reached
y  reached


---------------------------------------------------------------- multiple-key tests, direct break/continue
mlr --opprint --from ./reg_test/input/abixy put -q 
  @logging[NR] = $*;
  end {
    for ((k1, k2), v in @logging) {
        break;
        @output[k1][k2] = v;
    }
    emit @output, "NR", "name"
  }


mlr --opprint --from ./reg_test/input/abixy put -q 
  @logging[NR] = $*;
  end {
    for ((k1, k2), v in @logging) {
        @output[k1][k2] = v;
        break;
        @output[k1][k2] = "ERROR"
    }
    emit @output, "NR", "name"
  }

NR name output
1  a    pan

mlr --opprint --from ./reg_test/input/abixy put -q 
  @logging[NR] = $*;
  end {
    for ((k1, k2), v in @logging) {
        continue;
        @output[k1][k2] = v
    }
    emit @output, "NR", "name"
  }


mlr --opprint --from ./reg_test/input/abixy put -q 
  @logging[NR] = $*;
  end {
    for ((k1, k2), v in @logging) {
        @output[k1][k2] = v;
        continue;
        @output[k1][k2] = "ERROR";
    }
    emit @output, "NR", "name"
  }

NR name output
1  a    pan
1  b    pan
1  i    1
1  x    0.3467901443380824
1  y    0.7268028627434533
2  a    eks
2  b    pan
2  i    2
2  x    0.7586799647899636
2  y    0.5221511083334797
3  a    wye
3  b    wye
3  i    3
3  x    0.20460330576630303
3  y    0.33831852551664776
4  a    eks
4  b    wye
4  i    4
4  x    0.38139939387114097
4  y    0.13418874328430463
5  a    wye
5  b    pan
5  i    5
5  x    0.5732889198020006
5  y    0.8636244699032729
6  a    zee
6  b    pan
6  i    6
6  x    0.5271261600918548
6  y    0.49322128674835697
7  a    eks
7  b    zee
7  i    7
7  x    0.6117840605678454
7  y    0.1878849191181694
8  a    zee
8  b    wye
8  i    8
8  x    0.5985540091064224
8  y    0.976181385699006
9  a    hat
9  b    wye
9  i    9
9  x    0.03144187646093577
9  y    0.7495507603507059
10 a    pan
10 b    wye
10 i    10
10 x    0.5026260055412137
10 y    0.9526183602969864


---------------------------------------------------------------- multiple-key tests, indirect break/continue
mlr --opprint --from ./reg_test/input/abixy put -q 
  @logging[NR] = $*;
  end {
    for ((k1, k2), v in @logging) {
        if (k1 == 5) {
          break;
        }
        @output[k1][k2] = v;
    }
    emit @output, "NR", "name"
  }

NR name output
1  a    pan
1  b    pan
1  i    1
1  x    0.3467901443380824
1  y    0.7268028627434533
2  a    eks
2  b    pan
2  i    2
2  x    0.7586799647899636
2  y    0.5221511083334797
3  a    wye
3  b    wye
3  i    3
3  x    0.20460330576630303
3  y    0.33831852551664776
4  a    eks
4  b    wye
4  i    4
4  x    0.38139939387114097
4  y    0.13418874328430463

mlr --opprint --from ./reg_test/input/abixy put -q 
  @logging[NR] = $*;
  end {
    for ((k1, k2), v in @logging) {
        if (k2 == "i") {
          break;
        }
        @output[k1][k2] = v;
    }
    emit @output, "NR", "name"
  }

NR name output
1  a    pan
1  b    pan

mlr --opprint --from ./reg_test/input/abixy put -q 
  @logging[NR] = $*;
  end {
    for ((k1, k2), v in @logging) {
        @output[k1][k2] = v;
        if (k1 == 5) {
          break;
        }
    }
    emit @output, "NR", "name"
  }

NR name output
1  a    pan
1  b    pan
1  i    1
1  x    0.3467901443380824
1  y    0.7268028627434533
2  a    eks
2  b    pan
2  i    2
2  x    0.7586799647899636
2  y    0.5221511083334797
3  a    wye
3  b    wye
3  i    3
3  x    0.20460330576630303
3  y    0.33831852551664776
4  a    eks
4  b    wye
4  i    4
4  x    0.38139939387114097
4  y    0.13418874328430463
5  a    wye

mlr --opprint --from ./reg_test/input/abixy put -q 
  @logging[NR] = $*;
  end {
    for ((k1, k2), v in @logging) {
        @output[k1][k2] = v;
        if (k2 == "i") {
          break;
        }
    }
    emit @output, "NR", "name"
  }

NR name output
1  a    pan
1  b    pan
1  i    1

mlr --opprint --from ./reg_test/input/abixy put -q 
  @logging[NR] = $*;
  end {
    for ((k1, k2), v in @logging) {
        if (k1 == 5) {
          continue;
        }
        @output[k1][k2] = v
    }
    emit @output, "NR", "name"
  }

NR name output
1  a    pan
1  b    pan
1  i    1
1  x    0.3467901443380824
1  y    0.7268028627434533
2  a    eks
2  b    pan
2  i    2
2  x    0.7586799647899636
2  y    0.5221511083334797
3  a    wye
3  b    wye
3  i    3
3  x    0.20460330576630303
3  y    0.33831852551664776
4  a    eks
4  b    wye
4  i    4
4  x    0.38139939387114097
4  y    0.13418874328430463
6  a    zee
6  b    pan
6  i    6
6  x    0.5271261600918548
6  y    0.49322128674835697
7  a    eks
7  b    zee
7  i    7
7  x    0.6117840605678454
7  y    0.1878849191181694
8  a    zee
8  b    wye
8  i    8
8  x    0.5985540091064224
8  y    0.976181385699006
9  a    hat
9  b    wye
9  i    9
9  x    0.03144187646093577
9  y    0.7495507603507059
10 a    pan
10 b    wye
10 i    10
10 x    0.5026260055412137
10 y    0.9526183602969864

mlr --opprint --from ./reg_test/input/abixy put -q 
  @logging[NR] = $*;
  end {
    for ((k1, k2), v in @logging) {
        if (k2 == "i") {
          continue;
        }
        @output[k1][k2] = v
    }
    emit @output, "NR", "name"
  }

NR name output
1  a    pan
1  b    pan
1  x    0.3467901443380824
1  y    0.7268028627434533
2  a    eks
2  b    pan
2  x    0.7586799647899636
2  y    0.5221511083334797
3  a    wye
3  b    wye
3  x    0.20460330576630303
3  y    0.33831852551664776
4  a    eks
4  b    wye
4  x    0.38139939387114097
4  y    0.13418874328430463
5  a    wye
5  b    pan
5  x    0.5732889198020006
5  y    0.8636244699032729
6  a    zee
6  b    pan
6  x    0.5271261600918548
6  y    0.49322128674835697
7  a    eks
7  b    zee
7  x    0.6117840605678454
7  y    0.1878849191181694
8  a    zee
8  b    wye
8  x    0.5985540091064224
8  y    0.976181385699006
9  a    hat
9  b    wye
9  x    0.03144187646093577
9  y    0.7495507603507059
10 a    pan
10 b    wye
10 x    0.5026260055412137
10 y    0.9526183602969864

mlr --opprint --from ./reg_test/input/abixy put -q 
  @logging[NR] = $*;
  end {
    for ((k1, k2), v in @logging) {
        @output[k1][k2] = "before";
        if (k1 == 5) {
          continue;
        }
        @output[k1][k2] = v;
    }
    emit @output, "NR", "name"
  }

NR name output
1  a    pan
1  b    pan
1  i    1
1  x    0.3467901443380824
1  y    0.7268028627434533
2  a    eks
2  b    pan
2  i    2
2  x    0.7586799647899636
2  y    0.5221511083334797
3  a    wye
3  b    wye
3  i    3
3  x    0.20460330576630303
3  y    0.33831852551664776
4  a    eks
4  b    wye
4  i    4
4  x    0.38139939387114097
4  y    0.13418874328430463
5  a    before
5  b    before
5  i    before
5  x    before
5  y    before
6  a    zee
6  b    pan
6  i    6
6  x    0.5271261600918548
6  y    0.49322128674835697
7  a    eks
7  b    zee
7  i    7
7  x    0.6117840605678454
7  y    0.1878849191181694
8  a    zee
8  b    wye
8  i    8
8  x    0.5985540091064224
8  y    0.976181385699006
9  a    hat
9  b    wye
9  i    9
9  x    0.03144187646093577
9  y    0.7495507603507059
10 a    pan
10 b    wye
10 i    10
10 x    0.5026260055412137
10 y    0.9526183602969864

mlr --opprint --from ./reg_test/input/abixy put -q 
  @logging[NR] = $*;
  end {
    for ((k1, k2), v in @logging) {
        @output[k1][k2] = "before";
        if (k2 == "i") {
          continue;
        }
        @output[k1][k2] = v;
    }
    emit @output, "NR", "name"
  }

NR name output
1  a    pan
1  b    pan
1  i    before
1  x    0.3467901443380824
1  y    0.7268028627434533
2  a    eks
2  b    pan
2  i    before
2  x    0.7586799647899636
2  y    0.5221511083334797
3  a    wye
3  b    wye
3  i    before
3  x    0.20460330576630303
3  y    0.33831852551664776
4  a    eks
4  b    wye
4  i    before
4  x    0.38139939387114097
4  y    0.13418874328430463
5  a    wye
5  b    pan
5  i    before
5  x    0.5732889198020006
5  y    0.8636244699032729
6  a    zee
6  b    pan
6  i    before
6  x    0.5271261600918548
6  y    0.49322128674835697
7  a    eks
7  b    zee
7  i    before
7  x    0.6117840605678454
7  y    0.1878849191181694
8  a    zee
8  b    wye
8  i    before
8  x    0.5985540091064224
8  y    0.976181385699006
9  a    hat
9  b    wye
9  i    before
9  x    0.03144187646093577
9  y    0.7495507603507059
10 a    pan
10 b    wye
10 i    before
10 x    0.5026260055412137
10 y    0.9526183602969864


================================================================
DSL BREAK/CONTINUE IN NESTED FOR-OOSVAR

mlr --opprint --from ./reg_test/input/abixy put -q 
  @logging[NR] = $*;
  end {
    for ((k1, k2), v in @logging) {
        if (k1 != 2) {
          continue
        }
        for ((k3, k4), v in @logging) {
          if (k3 != 4) {
            continue
          }
          @output[k1][k2][k3][k4] = v;
        }
    }
    emit @output, "NR1", "name1", "NR2", "name2"
  }

NR1 name1 NR2 name2 output
2   a     4   a     eks
2   a     4   b     wye
2   a     4   i     4
2   a     4   x     0.38139939387114097
2   a     4   y     0.13418874328430463
2   b     4   a     eks
2   b     4   b     wye
2   b     4   i     4
2   b     4   x     0.38139939387114097
2   b     4   y     0.13418874328430463
2   i     4   a     eks
2   i     4   b     wye
2   i     4   i     4
2   i     4   x     0.38139939387114097
2   i     4   y     0.13418874328430463
2   x     4   a     eks
2   x     4   b     wye
2   x     4   i     4
2   x     4   x     0.38139939387114097
2   x     4   y     0.13418874328430463
2   y     4   a     eks
2   y     4   b     wye
2   y     4   i     4
2   y     4   x     0.38139939387114097
2   y     4   y     0.13418874328430463


================================================================
DSL PRINT

mlr put -q print  1; print  "two"; print  $a; print;  print  $i < 4; print  "y is ".string($y); print "" ./reg_test/input/abixy
1
two
pan

true
y is 0.726803

1
two
eks

true
y is 0.522151

1
two
wye

true
y is 0.338319

1
two
eks

false
y is 0.134189

1
two
wye

false
y is 0.863624

1
two
zee

false
y is 0.493221

1
two
eks

false
y is 0.187885

1
two
zee

false
y is 0.976181

1
two
hat

false
y is 0.749551

1
two
pan

false
y is 0.952618


mlr put -q printn 1; printn "two"; printn $a; printn; printn $i < 4; printn "y is ".string($y); print "" ./reg_test/input/abixy
1twopantruey is 0.726803
1twoekstruey is 0.522151
1twowyetruey is 0.338319
1twoeksfalsey is 0.134189
1twowyefalsey is 0.863624
1twozeefalsey is 0.493221
1twoeksfalsey is 0.187885
1twozeefalsey is 0.976181
1twohatfalsey is 0.749551
1twopanfalsey is 0.952618

mlr put -q print  $*; print  $*; print  {}; print ./reg_test/input/abixy
{is-a-map}
{is-a-map}
{is-a-map}

{is-a-map}
{is-a-map}
{is-a-map}

{is-a-map}
{is-a-map}
{is-a-map}

{is-a-map}
{is-a-map}
{is-a-map}

{is-a-map}
{is-a-map}
{is-a-map}

{is-a-map}
{is-a-map}
{is-a-map}

{is-a-map}
{is-a-map}
{is-a-map}

{is-a-map}
{is-a-map}
{is-a-map}

{is-a-map}
{is-a-map}
{is-a-map}

{is-a-map}
{is-a-map}
{is-a-map}


mlr put -q printn $*; printn $*; printn {}; print ./reg_test/input/abixy
{is-a-map}{is-a-map}{is-a-map}
{is-a-map}{is-a-map}{is-a-map}
{is-a-map}{is-a-map}{is-a-map}
{is-a-map}{is-a-map}{is-a-map}
{is-a-map}{is-a-map}{is-a-map}
{is-a-map}{is-a-map}{is-a-map}
{is-a-map}{is-a-map}{is-a-map}
{is-a-map}{is-a-map}{is-a-map}
{is-a-map}{is-a-map}{is-a-map}
{is-a-map}{is-a-map}{is-a-map}


================================================================
ABSENT/EMPTY

mlr put -q @sum     += $x; end{emitp @sum} ./reg_test/input/abixy
sum=4.536294

mlr put -q @sum[$a] += $x; end{emitp @sum, "a"} ./reg_test/input/abixy
a=pan,sum=0.849416
a=eks,sum=1.751863
a=wye,sum=0.777892
a=zee,sum=1.125680
a=hat,sum=0.031442

mlr put $nonesuch = @nonesuch ./reg_test/input/abixy
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 put -q @sum     += $x; end{emitp @sum} ./reg_test/input/abixy-het
sum=3.963005

mlr put -q @sum[$a] += $x; end{emitp @sum, "a"} ./reg_test/input/abixy-het
a=pan,sum=0.849416
a=eks,sum=1.751863
a=zee,sum=1.125680

mlr put $nonesuch = @nonesuch ./reg_test/input/abixy-het
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
aaa=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=eks,bbb=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=wye,b=pan,i=5,xxx=0.5732889198020006,y=0.8636244699032729
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=eks,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694
a=zee,b=wye,i=8,x=0.5985540091064224,yyy=0.976181385699006
aaa=hat,bbb=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864

mlr put -q @sum += $x; @sumtype = typeof(@sum); @xtype = typeof($x); emitf @sumtype, @xtype, @sum; end{emitp @sum} ./reg_test/input/abixy
sumtype=float,xtype=float,sum=0.346790
sumtype=float,xtype=float,sum=1.105470
sumtype=float,xtype=float,sum=1.310073
sumtype=float,xtype=float,sum=1.691473
sumtype=float,xtype=float,sum=2.264762
sumtype=float,xtype=float,sum=2.791888
sumtype=float,xtype=float,sum=3.403672
sumtype=float,xtype=float,sum=4.002226
sumtype=float,xtype=float,sum=4.033668
sumtype=float,xtype=float,sum=4.536294
sum=4.536294

mlr put -q @sum += $x; @sumtype = typeof(@sum); @xtype = typeof($x); emitf @sumtype, @xtype, @sum; end{emitp @sum} ./reg_test/input/abixy-het
sumtype=float,xtype=float,sum=0.346790
sumtype=float,xtype=float,sum=1.105470
sumtype=float,xtype=float,sum=1.310073
sumtype=float,xtype=float,sum=1.691473
sumtype=float,xtype=absent,sum=1.691473
sumtype=float,xtype=float,sum=2.218599
sumtype=float,xtype=float,sum=2.830383
sumtype=float,xtype=float,sum=3.428937
sumtype=float,xtype=float,sum=3.460379
sumtype=float,xtype=float,sum=3.963005
sum=3.963005

mlr put $z = $x + $y ./reg_test/input/typeof.dkvp
x=1,y=2,z=3
x=1,y=,z=
x=,y=2,z=
x=,y=,z=
a=1,y=2,z=2
a=1,y=
a=,y=2,z=2
a=,y=
x=1,b=2,z=1
x=1,b=,z=1
x=,b=2
x=,b=

mlr put $z = $x + $u ./reg_test/input/typeof.dkvp
x=1,y=2,z=1
x=1,y=,z=1
x=,y=2
x=,y=
a=1,y=2
a=1,y=
a=,y=2
a=,y=
x=1,b=2,z=1
x=1,b=,z=1
x=,b=2
x=,b=

mlr put @s = @s + $y; emitp @s ./reg_test/input/typeof.dkvp
s=2
x=1,y=2
s=
x=1,y=
s=
x=,y=2
s=
x=,y=
s=
a=1,y=2
s=
a=1,y=
s=
a=,y=2
s=
a=,y=
s=
x=1,b=2
s=
x=1,b=
s=
x=,b=2
s=
x=,b=

mlr put @s = @s + $u; emitp @s ./reg_test/input/typeof.dkvp
x=1,y=2
x=1,y=
x=,y=2
x=,y=
a=1,y=2
a=1,y=
a=,y=2
a=,y=
x=1,b=2
x=1,b=
x=,b=2
x=,b=

mlr put $z = $x + $y; $x=typeof($x);$y=typeof($y);$z=typeof($z) ./reg_test/input/typeof.dkvp
x=int,y=int,z=int
x=int,y=empty,z=empty
x=empty,y=int,z=empty
x=empty,y=empty,z=empty
a=1,y=int,z=int,x=absent
a=1,y=empty,x=absent,z=absent
a=,y=int,z=int,x=absent
a=,y=empty,x=absent,z=absent
x=int,b=2,z=int,y=absent
x=int,b=,z=int,y=absent
x=empty,b=2,y=absent,z=absent
x=empty,b=,y=absent,z=absent

mlr put $z = $x + $u; $x=typeof($x);$y=typeof($y);$z=typeof($z) ./reg_test/input/typeof.dkvp
x=int,y=int,z=int
x=int,y=empty,z=int
x=empty,y=int,z=absent
x=empty,y=empty,z=absent
a=1,y=int,x=absent,z=absent
a=1,y=empty,x=absent,z=absent
a=,y=int,x=absent,z=absent
a=,y=empty,x=absent,z=absent
x=int,b=2,z=int,y=absent
x=int,b=,z=int,y=absent
x=empty,b=2,y=absent,z=absent
x=empty,b=,y=absent,z=absent

mlr put @s = @s + $y; $x=typeof($x);$y=typeof($y);$z=typeof($z);$s=typeof(@s) ./reg_test/input/typeof.dkvp
x=int,y=int,z=absent,s=int
x=int,y=empty,z=absent,s=empty
x=empty,y=int,z=absent,s=empty
x=empty,y=empty,z=absent,s=empty
a=1,y=int,x=absent,z=absent,s=empty
a=1,y=empty,x=absent,z=absent,s=empty
a=,y=int,x=absent,z=absent,s=empty
a=,y=empty,x=absent,z=absent,s=empty
x=int,b=2,y=absent,z=absent,s=empty
x=int,b=,y=absent,z=absent,s=empty
x=empty,b=2,y=absent,z=absent,s=empty
x=empty,b=,y=absent,z=absent,s=empty

mlr put @s = @s + $u; $x=typeof($x);$y=typeof($y);$z=typeof($z);$s=typeof(@s) ./reg_test/input/typeof.dkvp
x=int,y=int,z=absent,s=absent
x=int,y=empty,z=absent,s=absent
x=empty,y=int,z=absent,s=absent
x=empty,y=empty,z=absent,s=absent
a=1,y=int,x=absent,z=absent,s=absent
a=1,y=empty,x=absent,z=absent,s=absent
a=,y=int,x=absent,z=absent,s=absent
a=,y=empty,x=absent,z=absent,s=absent
x=int,b=2,y=absent,z=absent,s=absent
x=int,b=,y=absent,z=absent,s=absent
x=empty,b=2,y=absent,z=absent,s=absent
x=empty,b=,y=absent,z=absent,s=absent

mlr cat
x=1
x=
x=7

mlr --ofs tab put $osum=@sum; $ostype=typeof(@sum);$xtype=typeof($x);@sum+=$x; $nstype=typeof(@sum);$nsum=@sum; end { emit @sum }
x=1	ostype=absent	xtype=int	nstype=int	nsum=1
x=	osum=1	ostype=int	xtype=empty	nstype=empty	nsum=
x=7	osum=	ostype=empty	xtype=int	nstype=empty	nsum=
sum=

mlr --ofs tab put $osum=@sum; $ostype=typeof(@sum);$xtype=typeof($x);is_present($x){@sum+=$x}; $nstype=typeof(@sum);$nsum=@sum; end { emit @sum }
x=1	ostype=absent	xtype=int	nstype=int	nsum=1
x=	osum=1	ostype=int	xtype=empty	nstype=empty	nsum=
x=7	osum=	ostype=empty	xtype=int	nstype=empty	nsum=
sum=

mlr cat
x=1
xxx=
x=7

mlr --ofs tab put $osum=@sum; $ostype=typeof(@sum);$xtype=typeof($x);@sum+=$x; $nstype=typeof(@sum);$nsum=@sum; end { emit @sum }
x=1	ostype=absent	xtype=int	nstype=int	nsum=1
xxx=	osum=1	ostype=int	xtype=absent	nstype=int	nsum=1
x=7	osum=1	ostype=int	xtype=int	nstype=int	nsum=8
sum=8

mlr --ofs tab put $osum=@sum; $ostype=typeof(@sum);$xtype=typeof($x);is_present($x){@sum+=$x}; $nstype=typeof(@sum);$nsum=@sum; end { emit @sum }
x=1	ostype=absent	xtype=int	nstype=int	nsum=1
xxx=	osum=1	ostype=int	xtype=absent	nstype=int	nsum=1
x=7	osum=1	ostype=int	xtype=int	nstype=int	nsum=8
sum=8

mlr cat
x=1
x=
y=
x=7

mlr --ofs tab put $xtype=typeof($x);$sum = $x + 10; $stype=typeof($sum)
x=1	xtype=int	sum=11	stype=int
x=	xtype=empty	sum=	stype=empty
y=	xtype=absent	sum=10	stype=int
x=7	xtype=int	sum=17	stype=int

mlr --ofs tab put $xtype=typeof($x);$sum = is_present($x) ? $x + 10 : 999; $stype=typeof($sum)
x=1	xtype=int	sum=11	stype=int
x=	xtype=empty	sum=	stype=empty
y=	xtype=absent	sum=999	stype=int
x=7	xtype=int	sum=17	stype=int


================================================================
MAP-VARIANT DUMPS

mlr --from ./reg_test/input/abixy-het put -q dump {"a"."b":$a.$b}
{
  "ab": "panpan"
}
{
  "ab": "ekspan"
}
{
  "ab": "wye"
}
{
  "ab": "eks"
}
{
  "ab": "wyepan"
}
{
  "ab": "zeepan"
}
{
  "ab": "ekszee"
}
{
  "ab": "zeewye"
}
{
  "ab": 
}
{
  "ab": "panwye"
}

mlr --from ./reg_test/input/abixy-het put -q func f(a, b) { return {"a"."b":a.b} } dump f($a, $b)
{
  "ab": "panpan"
}
{
  "ab": "ekspan"
}
{
  "ab": "wye"
}
{
  "ab": "eks"
}
{
  "ab": "wyepan"
}
{
  "ab": "zeepan"
}
{
  "ab": "ekszee"
}
{
  "ab": "zeewye"
}
{
  "ab": 
}
{
  "ab": "panwye"
}


================================================================
PARAMETERIZED EMIT

mlr put -q @sum[$a] = $x; end{ emitp @sum; } ./reg_test/input/abixy
sum:pan=0.502626,sum:eks=0.611784,sum:wye=0.573289,sum:zee=0.598554,sum:hat=0.031442

mlr put -q @sum[$a] = $x; end{ emitp @sum,"a"; } ./reg_test/input/abixy
a=pan,sum=0.502626
a=eks,sum=0.611784
a=wye,sum=0.573289
a=zee,sum=0.598554
a=hat,sum=0.031442

mlr put -q @sum[$a] = $x; end{ emitp @sum,"a","b"; } ./reg_test/input/abixy
a=pan,sum=0.502626
a=eks,sum=0.611784
a=wye,sum=0.573289
a=zee,sum=0.598554
a=hat,sum=0.031442

mlr put -q @sum[$a][$b] = $x; end{ emitp @sum; } ./reg_test/input/abixy
sum:pan:pan=0.346790,sum:pan:wye=0.502626,sum:eks:pan=0.758680,sum:eks:wye=0.381399,sum:eks:zee=0.611784,sum:wye:wye=0.204603,sum:wye:pan=0.573289,sum:zee:pan=0.527126,sum:zee:wye=0.598554,sum:hat:wye=0.031442

mlr put -q @sum[$a][$b] = $x; end{ emitp @sum,"a"; } ./reg_test/input/abixy
a=pan,sum:pan=0.346790,sum:wye=0.502626
a=eks,sum:pan=0.758680,sum:wye=0.381399,sum:zee=0.611784
a=wye,sum:wye=0.204603,sum:pan=0.573289
a=zee,sum:pan=0.527126,sum:wye=0.598554
a=hat,sum:wye=0.031442

mlr put -q @sum[$a][$b] = $x; end{ emitp @sum,"a","b"; } ./reg_test/input/abixy
a=pan,b=pan,sum=0.346790
a=pan,b=wye,sum=0.502626
a=eks,b=pan,sum=0.758680
a=eks,b=wye,sum=0.381399
a=eks,b=zee,sum=0.611784
a=wye,b=wye,sum=0.204603
a=wye,b=pan,sum=0.573289
a=zee,b=pan,sum=0.527126
a=zee,b=wye,sum=0.598554
a=hat,b=wye,sum=0.031442

mlr put -q @v = $a;        end {emitf @v } ./reg_test/input/abixy
v=pan

mlr put -q @v = $i;        end {emitf @v } ./reg_test/input/abixy
v=10

mlr put -q @v = $x;        end {emitf @v } ./reg_test/input/abixy
v=0.502626

mlr put -q @v = $nonesuch; end {emitf @v } ./reg_test/input/abixy
v=

mlr put -q @v = $a;        end {emitp @v } ./reg_test/input/abixy
v=pan

mlr put -q @v = $i;        end {emitp @v } ./reg_test/input/abixy
v=10

mlr put -q @v = $x;        end {emitp @v } ./reg_test/input/abixy
v=0.502626

mlr put -q @v = $nonesuch; end {emitp @v } ./reg_test/input/abixy

mlr put -q @sum += $i;        end {emitf @sum } ./reg_test/input/abixy
sum=55

mlr put -q @sum += $x;        end {emitf @sum } ./reg_test/input/abixy
sum=4.536294

mlr put -q @sum += $nonesuch; end {emitf @sum } ./reg_test/input/abixy
sum=

mlr put -q @sum += $i;        end {emitp  @sum          } ./reg_test/input/abixy
sum=55

mlr put -q @sum += $x;        end {emitp  @sum          } ./reg_test/input/abixy
sum=4.536294

mlr put -q @sum += $nonesuch; end {emitp  @sum          } ./reg_test/input/abixy

mlr put -q @sum += $i;        end {emitp  @sum, "extra" } ./reg_test/input/abixy
sum=55

mlr put -q @sum += $x;        end {emitp  @sum, "extra" } ./reg_test/input/abixy
sum=4.536294

mlr put -q @sum += $nonesuch; end {emitp  @sum, "extra" } ./reg_test/input/abixy

mlr put -q @sum[$a] += $i;        end {emitp  @sum               } ./reg_test/input/abixy
sum:pan=11,sum:eks=13,sum:wye=8,sum:zee=14,sum:hat=9

mlr put -q @sum[$a] += $x;        end {emitp  @sum               } ./reg_test/input/abixy
sum:pan=0.849416,sum:eks=1.751863,sum:wye=0.777892,sum:zee=1.125680,sum:hat=0.031442

mlr put -q @sum[$a] += $nonesuch; end {emitp  @sum               } ./reg_test/input/abixy

mlr put -q @sum[$a] += $i;        end {emitp  @sum, "a"          } ./reg_test/input/abixy
a=pan,sum=11
a=eks,sum=13
a=wye,sum=8
a=zee,sum=14
a=hat,sum=9

mlr put -q @sum[$a] += $x;        end {emitp  @sum, "a"          } ./reg_test/input/abixy
a=pan,sum=0.849416
a=eks,sum=1.751863
a=wye,sum=0.777892
a=zee,sum=1.125680
a=hat,sum=0.031442

mlr put -q @sum[$a] += $nonesuch; end {emitp  @sum, "a"          } ./reg_test/input/abixy

mlr put -q @sum[$a] += $i;        end {emitp  @sum, "a", "extra" } ./reg_test/input/abixy
a=pan,sum=11
a=eks,sum=13
a=wye,sum=8
a=zee,sum=14
a=hat,sum=9

mlr put -q @sum[$a] += $x;        end {emitp  @sum, "a", "extra" } ./reg_test/input/abixy
a=pan,sum=0.849416
a=eks,sum=1.751863
a=wye,sum=0.777892
a=zee,sum=1.125680
a=hat,sum=0.031442

mlr put -q @sum[$a] += $nonesuch; end {emitp  @sum, "a", "extra" } ./reg_test/input/abixy

mlr put -q @sum[$a][$b] += $i;        end {emitp  @sum                    } ./reg_test/input/abixy
sum:pan:pan=1,sum:pan:wye=10,sum:eks:pan=2,sum:eks:wye=4,sum:eks:zee=7,sum:wye:wye=3,sum:wye:pan=5,sum:zee:pan=6,sum:zee:wye=8,sum:hat:wye=9

mlr put -q @sum[$a][$b] += $x;        end {emitp  @sum                    } ./reg_test/input/abixy
sum:pan:pan=0.346790,sum:pan:wye=0.502626,sum:eks:pan=0.758680,sum:eks:wye=0.381399,sum:eks:zee=0.611784,sum:wye:wye=0.204603,sum:wye:pan=0.573289,sum:zee:pan=0.527126,sum:zee:wye=0.598554,sum:hat:wye=0.031442

mlr put -q @sum[$a][$b] += $nonesuch; end {emitp  @sum                    } ./reg_test/input/abixy

mlr put -q @sum[$a][$b] += $i;        end {emitp  @sum, "a"               } ./reg_test/input/abixy
a=pan,sum:pan=1,sum:wye=10
a=eks,sum:pan=2,sum:wye=4,sum:zee=7
a=wye,sum:wye=3,sum:pan=5
a=zee,sum:pan=6,sum:wye=8
a=hat,sum:wye=9

mlr put -q @sum[$a][$b] += $x;        end {emitp  @sum, "a"               } ./reg_test/input/abixy
a=pan,sum:pan=0.346790,sum:wye=0.502626
a=eks,sum:pan=0.758680,sum:wye=0.381399,sum:zee=0.611784
a=wye,sum:wye=0.204603,sum:pan=0.573289
a=zee,sum:pan=0.527126,sum:wye=0.598554
a=hat,sum:wye=0.031442

mlr put -q @sum[$a][$b] += $nonesuch; end {emitp  @sum, "a"               } ./reg_test/input/abixy

mlr put -q @sum[$a][$b] += $i;        end {emitp  @sum, "a", "b"          } ./reg_test/input/abixy
a=pan,b=pan,sum=1
a=pan,b=wye,sum=10
a=eks,b=pan,sum=2
a=eks,b=wye,sum=4
a=eks,b=zee,sum=7
a=wye,b=wye,sum=3
a=wye,b=pan,sum=5
a=zee,b=pan,sum=6
a=zee,b=wye,sum=8
a=hat,b=wye,sum=9

mlr put -q @sum[$a][$b] += $x;        end {emitp  @sum, "a", "b"          } ./reg_test/input/abixy
a=pan,b=pan,sum=0.346790
a=pan,b=wye,sum=0.502626
a=eks,b=pan,sum=0.758680
a=eks,b=wye,sum=0.381399
a=eks,b=zee,sum=0.611784
a=wye,b=wye,sum=0.204603
a=wye,b=pan,sum=0.573289
a=zee,b=pan,sum=0.527126
a=zee,b=wye,sum=0.598554
a=hat,b=wye,sum=0.031442

mlr put -q @sum[$a][$b] += $nonesuch; end {emitp  @sum, "a", "b"          } ./reg_test/input/abixy

mlr put -q @sum[$a][$b] += $i;        end {emitp  @sum, "a", "b", "extra" } ./reg_test/input/abixy
a=pan,b=pan,sum=1
a=pan,b=wye,sum=10
a=eks,b=pan,sum=2
a=eks,b=wye,sum=4
a=eks,b=zee,sum=7
a=wye,b=wye,sum=3
a=wye,b=pan,sum=5
a=zee,b=pan,sum=6
a=zee,b=wye,sum=8
a=hat,b=wye,sum=9

mlr put -q @sum[$a][$b] += $x;        end {emitp  @sum, "a", "b", "extra" } ./reg_test/input/abixy
a=pan,b=pan,sum=0.346790
a=pan,b=wye,sum=0.502626
a=eks,b=pan,sum=0.758680
a=eks,b=wye,sum=0.381399
a=eks,b=zee,sum=0.611784
a=wye,b=wye,sum=0.204603
a=wye,b=pan,sum=0.573289
a=zee,b=pan,sum=0.527126
a=zee,b=wye,sum=0.598554
a=hat,b=wye,sum=0.031442

mlr put -q @sum[$a][$b] += $nonesuch; end {emitp  @sum, "a", "b", "extra" } ./reg_test/input/abixy

mlr --oxtab put -q @sum[$a][$b] += $i; NR == 3 { @x = $x }; NR == 7 { @v = $* }; end {emitp all} ./reg_test/input/abixy-het
sum:pan:pan 1
sum:pan:wye 10
sum:eks:pan 2
sum:wye:pan 5
sum:zee:pan 6
sum:zee:wye 8

x 0.204603

v:a   eks
v:b   zee
v:iii 7
v:x   0.6117840605678454
v:y   0.1878849191181694

mlr --opprint put -q @v[NR]=$*; end{emitp @v} ./reg_test/input/abixy
v:1:a v:1:b v:1:i v:1:x              v:1:y              v:2:a v:2:b v:2:i v:2:x              v:2:y              v:3:a v:3:b v:3:i v:3:x               v:3:y               v:4:a v:4:b v:4:i v:4:x               v:4:y               v:5:a v:5:b v:5:i v:5:x              v:5:y              v:6:a v:6:b v:6:i v:6:x              v:6:y               v:7:a v:7:b v:7:i v:7:x              v:7:y              v:8:a v:8:b v:8:i v:8:x              v:8:y             v:9:a v:9:b v:9:i v:9:x               v:9:y              v:10:a v:10:b v:10:i v:10:x             v:10:y
pan   pan   1     0.3467901443380824 0.7268028627434533 eks   pan   2     0.7586799647899636 0.5221511083334797 wye   wye   3     0.20460330576630303 0.33831852551664776 eks   wye   4     0.38139939387114097 0.13418874328430463 wye   pan   5     0.5732889198020006 0.8636244699032729 zee   pan   6     0.5271261600918548 0.49322128674835697 eks   zee   7     0.6117840605678454 0.1878849191181694 zee   wye   8     0.5985540091064224 0.976181385699006 hat   wye   9     0.03144187646093577 0.7495507603507059 pan    wye    10     0.5026260055412137 0.9526183602969864

mlr --opprint put -q @v[NR]=$*; end{emitp @v,"X"} ./reg_test/input/abixy
X  v:a v:b v:i v:x                 v:y
1  pan pan 1   0.3467901443380824  0.7268028627434533
2  eks pan 2   0.7586799647899636  0.5221511083334797
3  wye wye 3   0.20460330576630303 0.33831852551664776
4  eks wye 4   0.38139939387114097 0.13418874328430463
5  wye pan 5   0.5732889198020006  0.8636244699032729
6  zee pan 6   0.5271261600918548  0.49322128674835697
7  eks zee 7   0.6117840605678454  0.1878849191181694
8  zee wye 8   0.5985540091064224  0.976181385699006
9  hat wye 9   0.03144187646093577 0.7495507603507059
10 pan wye 10  0.5026260055412137  0.9526183602969864

mlr --opprint put -q @v[NR]=$*; end{emitp @v[1]} ./reg_test/input/abixy
v:a v:b v:i v:x                v:y
pan pan 1   0.3467901443380824 0.7268028627434533

mlr --opprint put -q @v[NR]=$*; end{emitp @v[1],"X"} ./reg_test/input/abixy
X v
a pan
b pan
i 1
x 0.3467901443380824
y 0.7268028627434533

mlr --opprint put -q @v[NR]=$*; end{emitp @v[1],"X","Y"} ./reg_test/input/abixy
X v
a pan
b pan
i 1
x 0.3467901443380824
y 0.7268028627434533

mlr --opprint put -q @v[NR][NR]=$*; end{emitp @v[1]} ./reg_test/input/abixy
v:1:a v:1:b v:1:i v:1:x              v:1:y
pan   pan   1     0.3467901443380824 0.7268028627434533

mlr --opprint put -q @v[NR][NR]=$*; end{emitp @v[1],"X"} ./reg_test/input/abixy
X v:a v:b v:i v:x                v:y
1 pan pan 1   0.3467901443380824 0.7268028627434533

mlr --opprint put -q @v[NR][NR]=$*; end{emitp @v[1],"X","Y"} ./reg_test/input/abixy
X Y v
1 a pan
1 b pan
1 i 1
1 x 0.3467901443380824
1 y 0.7268028627434533

mlr --opprint put -q @v[NR][NR]=$*; end{emitp @v[1][1]} ./reg_test/input/abixy
v:a v:b v:i v:x                v:y
pan pan 1   0.3467901443380824 0.7268028627434533

mlr --opprint put -q @v[NR][NR]=$*; end{emitp @v[1][1],"X"} ./reg_test/input/abixy
X v
a pan
b pan
i 1
x 0.3467901443380824
y 0.7268028627434533

mlr --opprint put -q @v[NR][NR]=$*; end{emitp @v[1][1],"X","Y"} ./reg_test/input/abixy
X v
a pan
b pan
i 1
x 0.3467901443380824
y 0.7268028627434533

mlr put -q @a=$a; @b[1]=$b; @c[1][2]=$x; end{emitp all} ./reg_test/input/abixy-het
a=pan
b:1=wye
c:1:2=0.502626

mlr put -q @a=$a; @b[1]=$b; @c[1][2]=$x; end{emitp all,"one"} ./reg_test/input/abixy-het
a=pan
one=1,b=wye
one=1,c:2=0.502626

mlr put -q @a=$a; @b[1]=$b; @c[1][2]=$x; end{emitp all,"one","two"} ./reg_test/input/abixy-het
a=pan
one=1,b=wye
one=1,two=2,c=0.502626

mlr put -q @a=$a; @b[1]=$b; @c[1][2]=$x; end{emitp all,"one","two","three"} ./reg_test/input/abixy-het
a=pan
one=1,b=wye
one=1,two=2,c=0.502626

mlr --oxtab put --oflatsep @ -q @a=$a; @b[1]=$b; @c[1][2]=$x; end{emitp all} ./reg_test/input/abixy-het
a pan

b@1 wye

c@1@2 0.502626


================================================================
PREFIXED/UNPREFIXED EMIT

mlr --oxtab put -q @sum     += $x; end{dump;emitp  @sum     } ./reg_test/input/abixy-wide
{
  "sum": 1009.118181
}
sum 1009.118181

mlr --oxtab put -q @sum     += $x; end{dump;emit @sum     } ./reg_test/input/abixy-wide
{
  "sum": 1009.118181
}
sum 1009.118181

mlr --oxtab put -q @sum[$a] += $x; end{dump;emitp  @sum     } ./reg_test/input/abixy-wide
{
  "sum": {
    "cat": 207.843964,
    "pan": 191.530740,
    "wye": 188.110135,
    "dog": 215.541519,
    "hat": 206.091824
  }
}
sum:cat 207.843964
sum:pan 191.530740
sum:wye 188.110135
sum:dog 215.541519
sum:hat 206.091824

mlr --oxtab put -q @sum[$a] += $x; end{dump;emit @sum     } ./reg_test/input/abixy-wide
{
  "sum": {
    "cat": 207.843964,
    "pan": 191.530740,
    "wye": 188.110135,
    "dog": 215.541519,
    "hat": 206.091824
  }
}
cat 207.843964
pan 191.530740
wye 188.110135
dog 215.541519
hat 206.091824

mlr --oxtab put -q @sum[$a] += $x; end{dump;emitp  @sum, "a"} ./reg_test/input/abixy-wide
{
  "sum": {
    "cat": 207.843964,
    "pan": 191.530740,
    "wye": 188.110135,
    "dog": 215.541519,
    "hat": 206.091824
  }
}
a   cat
sum 207.843964

a   pan
sum 191.530740

a   wye
sum 188.110135

a   dog
sum 215.541519

a   hat
sum 206.091824

mlr --oxtab put -q @sum[$a] += $x; end{dump;emit @sum, "a"} ./reg_test/input/abixy-wide
{
  "sum": {
    "cat": 207.843964,
    "pan": 191.530740,
    "wye": 188.110135,
    "dog": 215.541519,
    "hat": 206.091824
  }
}
a   cat
sum 207.843964

a   pan
sum 191.530740

a   wye
sum 188.110135

a   dog
sum 215.541519

a   hat
sum 206.091824

mlr --oxtab put -q @sum[$a][$b] += $x; end{dump;emitp  @sum     } ./reg_test/input/abixy-wide
{
  "sum": {
    "cat": {
      "pan": 42.327158,
      "hat": 43.184410,
      "dog": 39.241473,
      "wye": 45.196775,
      "cat": 37.894148
    },
    "pan": {
      "wye": 40.135300,
      "pan": 36.226334,
      "hat": 35.115869,
      "dog": 37.817560,
      "cat": 42.235677
    },
    "wye": {
      "cat": 40.805723,
      "hat": 41.166697,
      "dog": 40.619547,
      "wye": 32.490973,
      "pan": 33.027196
    },
    "dog": {
      "hat": 43.515162,
      "pan": 45.614011,
      "dog": 43.545956,
      "wye": 37.223795,
      "cat": 45.642595
    },
    "hat": {
      "hat": 48.058897,
      "wye": 34.054270,
      "pan": 42.538758,
      "cat": 44.325655,
      "dog": 37.114244
    }
  }
}
sum:cat:pan 42.327158
sum:cat:hat 43.184410
sum:cat:dog 39.241473
sum:cat:wye 45.196775
sum:cat:cat 37.894148
sum:pan:wye 40.135300
sum:pan:pan 36.226334
sum:pan:hat 35.115869
sum:pan:dog 37.817560
sum:pan:cat 42.235677
sum:wye:cat 40.805723
sum:wye:hat 41.166697
sum:wye:dog 40.619547
sum:wye:wye 32.490973
sum:wye:pan 33.027196
sum:dog:hat 43.515162
sum:dog:pan 45.614011
sum:dog:dog 43.545956
sum:dog:wye 37.223795
sum:dog:cat 45.642595
sum:hat:hat 48.058897
sum:hat:wye 34.054270
sum:hat:pan 42.538758
sum:hat:cat 44.325655
sum:hat:dog 37.114244

mlr --oxtab put -q @sum[$a][$b] += $x; end{dump;emit @sum     } ./reg_test/input/abixy-wide
{
  "sum": {
    "cat": {
      "pan": 42.327158,
      "hat": 43.184410,
      "dog": 39.241473,
      "wye": 45.196775,
      "cat": 37.894148
    },
    "pan": {
      "wye": 40.135300,
      "pan": 36.226334,
      "hat": 35.115869,
      "dog": 37.817560,
      "cat": 42.235677
    },
    "wye": {
      "cat": 40.805723,
      "hat": 41.166697,
      "dog": 40.619547,
      "wye": 32.490973,
      "pan": 33.027196
    },
    "dog": {
      "hat": 43.515162,
      "pan": 45.614011,
      "dog": 43.545956,
      "wye": 37.223795,
      "cat": 45.642595
    },
    "hat": {
      "hat": 48.058897,
      "wye": 34.054270,
      "pan": 42.538758,
      "cat": 44.325655,
      "dog": 37.114244
    }
  }
}
pan 42.327158
hat 43.184410
dog 39.241473
wye 45.196775
cat 37.894148

wye 40.135300
pan 36.226334
hat 35.115869
dog 37.817560
cat 42.235677

cat 40.805723
hat 41.166697
dog 40.619547
wye 32.490973
pan 33.027196

hat 43.515162
pan 45.614011
dog 43.545956
wye 37.223795
cat 45.642595

hat 48.058897
wye 34.054270
pan 42.538758
cat 44.325655
dog 37.114244

mlr --oxtab put -q @sum[$a][$b] += $x; end{dump;emitp  @sum, "a"} ./reg_test/input/abixy-wide
{
  "sum": {
    "cat": {
      "pan": 42.327158,
      "hat": 43.184410,
      "dog": 39.241473,
      "wye": 45.196775,
      "cat": 37.894148
    },
    "pan": {
      "wye": 40.135300,
      "pan": 36.226334,
      "hat": 35.115869,
      "dog": 37.817560,
      "cat": 42.235677
    },
    "wye": {
      "cat": 40.805723,
      "hat": 41.166697,
      "dog": 40.619547,
      "wye": 32.490973,
      "pan": 33.027196
    },
    "dog": {
      "hat": 43.515162,
      "pan": 45.614011,
      "dog": 43.545956,
      "wye": 37.223795,
      "cat": 45.642595
    },
    "hat": {
      "hat": 48.058897,
      "wye": 34.054270,
      "pan": 42.538758,
      "cat": 44.325655,
      "dog": 37.114244
    }
  }
}
a       cat
sum:pan 42.327158
sum:hat 43.184410
sum:dog 39.241473
sum:wye 45.196775
sum:cat 37.894148

a       pan
sum:wye 40.135300
sum:pan 36.226334
sum:hat 35.115869
sum:dog 37.817560
sum:cat 42.235677

a       wye
sum:cat 40.805723
sum:hat 41.166697
sum:dog 40.619547
sum:wye 32.490973
sum:pan 33.027196

a       dog
sum:hat 43.515162
sum:pan 45.614011
sum:dog 43.545956
sum:wye 37.223795
sum:cat 45.642595

a       hat
sum:hat 48.058897
sum:wye 34.054270
sum:pan 42.538758
sum:cat 44.325655
sum:dog 37.114244

mlr --oxtab put -q @sum[$a][$b] += $x; end{dump;emit @sum, "a"} ./reg_test/input/abixy-wide
{
  "sum": {
    "cat": {
      "pan": 42.327158,
      "hat": 43.184410,
      "dog": 39.241473,
      "wye": 45.196775,
      "cat": 37.894148
    },
    "pan": {
      "wye": 40.135300,
      "pan": 36.226334,
      "hat": 35.115869,
      "dog": 37.817560,
      "cat": 42.235677
    },
    "wye": {
      "cat": 40.805723,
      "hat": 41.166697,
      "dog": 40.619547,
      "wye": 32.490973,
      "pan": 33.027196
    },
    "dog": {
      "hat": 43.515162,
      "pan": 45.614011,
      "dog": 43.545956,
      "wye": 37.223795,
      "cat": 45.642595
    },
    "hat": {
      "hat": 48.058897,
      "wye": 34.054270,
      "pan": 42.538758,
      "cat": 44.325655,
      "dog": 37.114244
    }
  }
}
a   cat
pan 42.327158
hat 43.184410
dog 39.241473
wye 45.196775
cat 37.894148

a   pan
wye 40.135300
pan 36.226334
hat 35.115869
dog 37.817560
cat 42.235677

a   wye
cat 40.805723
hat 41.166697
dog 40.619547
wye 32.490973
pan 33.027196

a   dog
hat 43.515162
pan 45.614011
dog 43.545956
wye 37.223795
cat 45.642595

a   hat
hat 48.058897
wye 34.054270
pan 42.538758
cat 44.325655
dog 37.114244

mlr --opprint put -q @sum[$a][$b] += $x; end{dump;emitp  @sum, "a", "b"} ./reg_test/input/abixy-wide
{
  "sum": {
    "cat": {
      "pan": 42.327158,
      "hat": 43.184410,
      "dog": 39.241473,
      "wye": 45.196775,
      "cat": 37.894148
    },
    "pan": {
      "wye": 40.135300,
      "pan": 36.226334,
      "hat": 35.115869,
      "dog": 37.817560,
      "cat": 42.235677
    },
    "wye": {
      "cat": 40.805723,
      "hat": 41.166697,
      "dog": 40.619547,
      "wye": 32.490973,
      "pan": 33.027196
    },
    "dog": {
      "hat": 43.515162,
      "pan": 45.614011,
      "dog": 43.545956,
      "wye": 37.223795,
      "cat": 45.642595
    },
    "hat": {
      "hat": 48.058897,
      "wye": 34.054270,
      "pan": 42.538758,
      "cat": 44.325655,
      "dog": 37.114244
    }
  }
}
a   b   sum
cat pan 42.327158
cat hat 43.184410
cat dog 39.241473
cat wye 45.196775
cat cat 37.894148
pan wye 40.135300
pan pan 36.226334
pan hat 35.115869
pan dog 37.817560
pan cat 42.235677
wye cat 40.805723
wye hat 41.166697
wye dog 40.619547
wye wye 32.490973
wye pan 33.027196
dog hat 43.515162
dog pan 45.614011
dog dog 43.545956
dog wye 37.223795
dog cat 45.642595
hat hat 48.058897
hat wye 34.054270
hat pan 42.538758
hat cat 44.325655
hat dog 37.114244

mlr --opprint put -q @sum[$a][$b] += $x; end{dump;emit @sum, "a", "b"} ./reg_test/input/abixy-wide
{
  "sum": {
    "cat": {
      "pan": 42.327158,
      "hat": 43.184410,
      "dog": 39.241473,
      "wye": 45.196775,
      "cat": 37.894148
    },
    "pan": {
      "wye": 40.135300,
      "pan": 36.226334,
      "hat": 35.115869,
      "dog": 37.817560,
      "cat": 42.235677
    },
    "wye": {
      "cat": 40.805723,
      "hat": 41.166697,
      "dog": 40.619547,
      "wye": 32.490973,
      "pan": 33.027196
    },
    "dog": {
      "hat": 43.515162,
      "pan": 45.614011,
      "dog": 43.545956,
      "wye": 37.223795,
      "cat": 45.642595
    },
    "hat": {
      "hat": 48.058897,
      "wye": 34.054270,
      "pan": 42.538758,
      "cat": 44.325655,
      "dog": 37.114244
    }
  }
}
a   b   sum
cat pan 42.327158
cat hat 43.184410
cat dog 39.241473
cat wye 45.196775
cat cat 37.894148
pan wye 40.135300
pan pan 36.226334
pan hat 35.115869
pan dog 37.817560
pan cat 42.235677
wye cat 40.805723
wye hat 41.166697
wye dog 40.619547
wye wye 32.490973
wye pan 33.027196
dog hat 43.515162
dog pan 45.614011
dog dog 43.545956
dog wye 37.223795
dog cat 45.642595
hat hat 48.058897
hat wye 34.054270
hat pan 42.538758
hat cat 44.325655
hat dog 37.114244

mlr --oxtab put -q @sum[$a][$b][$a.$b] += $x; end{dump;emitp  @sum     } ./reg_test/input/abixy-wide
{
  "sum": {
    "cat": {
      "pan": {
        "catpan": 42.327158
      },
      "hat": {
        "cathat": 43.184410
      },
      "dog": {
        "catdog": 39.241473
      },
      "wye": {
        "catwye": 45.196775
      },
      "cat": {
        "catcat": 37.894148
      }
    },
    "pan": {
      "wye": {
        "panwye": 40.135300
      },
      "pan": {
        "panpan": 36.226334
      },
      "hat": {
        "panhat": 35.115869
      },
      "dog": {
        "pandog": 37.817560
      },
      "cat": {
        "pancat": 42.235677
      }
    },
    "wye": {
      "cat": {
        "wyecat": 40.805723
      },
      "hat": {
        "wyehat": 41.166697
      },
      "dog": {
        "wyedog": 40.619547
      },
      "wye": {
        "wyewye": 32.490973
      },
      "pan": {
        "wyepan": 33.027196
      }
    },
    "dog": {
      "hat": {
        "doghat": 43.515162
      },
      "pan": {
        "dogpan": 45.614011
      },
      "dog": {
        "dogdog": 43.545956
      },
      "wye": {
        "dogwye": 37.223795
      },
      "cat": {
        "dogcat": 45.642595
      }
    },
    "hat": {
      "hat": {
        "hathat": 48.058897
      },
      "wye": {
        "hatwye": 34.054270
      },
      "pan": {
        "hatpan": 42.538758
      },
      "cat": {
        "hatcat": 44.325655
      },
      "dog": {
        "hatdog": 37.114244
      }
    }
  }
}
sum:cat:pan:catpan 42.327158
sum:cat:hat:cathat 43.184410
sum:cat:dog:catdog 39.241473
sum:cat:wye:catwye 45.196775
sum:cat:cat:catcat 37.894148
sum:pan:wye:panwye 40.135300
sum:pan:pan:panpan 36.226334
sum:pan:hat:panhat 35.115869
sum:pan:dog:pandog 37.817560
sum:pan:cat:pancat 42.235677
sum:wye:cat:wyecat 40.805723
sum:wye:hat:wyehat 41.166697
sum:wye:dog:wyedog 40.619547
sum:wye:wye:wyewye 32.490973
sum:wye:pan:wyepan 33.027196
sum:dog:hat:doghat 43.515162
sum:dog:pan:dogpan 45.614011
sum:dog:dog:dogdog 43.545956
sum:dog:wye:dogwye 37.223795
sum:dog:cat:dogcat 45.642595
sum:hat:hat:hathat 48.058897
sum:hat:wye:hatwye 34.054270
sum:hat:pan:hatpan 42.538758
sum:hat:cat:hatcat 44.325655
sum:hat:dog:hatdog 37.114244

mlr --oxtab put -q @sum[$a][$b][$a.$b] += $x; end{dump;emit @sum     } ./reg_test/input/abixy-wide
{
  "sum": {
    "cat": {
      "pan": {
        "catpan": 42.327158
      },
      "hat": {
        "cathat": 43.184410
      },
      "dog": {
        "catdog": 39.241473
      },
      "wye": {
        "catwye": 45.196775
      },
      "cat": {
        "catcat": 37.894148
      }
    },
    "pan": {
      "wye": {
        "panwye": 40.135300
      },
      "pan": {
        "panpan": 36.226334
      },
      "hat": {
        "panhat": 35.115869
      },
      "dog": {
        "pandog": 37.817560
      },
      "cat": {
        "pancat": 42.235677
      }
    },
    "wye": {
      "cat": {
        "wyecat": 40.805723
      },
      "hat": {
        "wyehat": 41.166697
      },
      "dog": {
        "wyedog": 40.619547
      },
      "wye": {
        "wyewye": 32.490973
      },
      "pan": {
        "wyepan": 33.027196
      }
    },
    "dog": {
      "hat": {
        "doghat": 43.515162
      },
      "pan": {
        "dogpan": 45.614011
      },
      "dog": {
        "dogdog": 43.545956
      },
      "wye": {
        "dogwye": 37.223795
      },
      "cat": {
        "dogcat": 45.642595
      }
    },
    "hat": {
      "hat": {
        "hathat": 48.058897
      },
      "wye": {
        "hatwye": 34.054270
      },
      "pan": {
        "hatpan": 42.538758
      },
      "cat": {
        "hatcat": 44.325655
      },
      "dog": {
        "hatdog": 37.114244
      }
    }
  }
}
catpan 42.327158

cathat 43.184410

catdog 39.241473

catwye 45.196775

catcat 37.894148

panwye 40.135300

panpan 36.226334

panhat 35.115869

pandog 37.817560

pancat 42.235677

wyecat 40.805723

wyehat 41.166697

wyedog 40.619547

wyewye 32.490973

wyepan 33.027196

doghat 43.515162

dogpan 45.614011

dogdog 43.545956

dogwye 37.223795

dogcat 45.642595

hathat 48.058897

hatwye 34.054270

hatpan 42.538758

hatcat 44.325655

hatdog 37.114244

mlr --oxtab put -q @sum[$a][$b][$a.$b] += $x; end{dump;emitp  @sum, "a"} ./reg_test/input/abixy-wide
{
  "sum": {
    "cat": {
      "pan": {
        "catpan": 42.327158
      },
      "hat": {
        "cathat": 43.184410
      },
      "dog": {
        "catdog": 39.241473
      },
      "wye": {
        "catwye": 45.196775
      },
      "cat": {
        "catcat": 37.894148
      }
    },
    "pan": {
      "wye": {
        "panwye": 40.135300
      },
      "pan": {
        "panpan": 36.226334
      },
      "hat": {
        "panhat": 35.115869
      },
      "dog": {
        "pandog": 37.817560
      },
      "cat": {
        "pancat": 42.235677
      }
    },
    "wye": {
      "cat": {
        "wyecat": 40.805723
      },
      "hat": {
        "wyehat": 41.166697
      },
      "dog": {
        "wyedog": 40.619547
      },
      "wye": {
        "wyewye": 32.490973
      },
      "pan": {
        "wyepan": 33.027196
      }
    },
    "dog": {
      "hat": {
        "doghat": 43.515162
      },
      "pan": {
        "dogpan": 45.614011
      },
      "dog": {
        "dogdog": 43.545956
      },
      "wye": {
        "dogwye": 37.223795
      },
      "cat": {
        "dogcat": 45.642595
      }
    },
    "hat": {
      "hat": {
        "hathat": 48.058897
      },
      "wye": {
        "hatwye": 34.054270
      },
      "pan": {
        "hatpan": 42.538758
      },
      "cat": {
        "hatcat": 44.325655
      },
      "dog": {
        "hatdog": 37.114244
      }
    }
  }
}
a              cat
sum:pan:catpan 42.327158
sum:hat:cathat 43.184410
sum:dog:catdog 39.241473
sum:wye:catwye 45.196775
sum:cat:catcat 37.894148

a              pan
sum:wye:panwye 40.135300
sum:pan:panpan 36.226334
sum:hat:panhat 35.115869
sum:dog:pandog 37.817560
sum:cat:pancat 42.235677

a              wye
sum:cat:wyecat 40.805723
sum:hat:wyehat 41.166697
sum:dog:wyedog 40.619547
sum:wye:wyewye 32.490973
sum:pan:wyepan 33.027196

a              dog
sum:hat:doghat 43.515162
sum:pan:dogpan 45.614011
sum:dog:dogdog 43.545956
sum:wye:dogwye 37.223795
sum:cat:dogcat 45.642595

a              hat
sum:hat:hathat 48.058897
sum:wye:hatwye 34.054270
sum:pan:hatpan 42.538758
sum:cat:hatcat 44.325655
sum:dog:hatdog 37.114244

mlr --oxtab put -q @sum[$a][$b][$a.$b] += $x; end{dump;emit @sum, "a"} ./reg_test/input/abixy-wide
{
  "sum": {
    "cat": {
      "pan": {
        "catpan": 42.327158
      },
      "hat": {
        "cathat": 43.184410
      },
      "dog": {
        "catdog": 39.241473
      },
      "wye": {
        "catwye": 45.196775
      },
      "cat": {
        "catcat": 37.894148
      }
    },
    "pan": {
      "wye": {
        "panwye": 40.135300
      },
      "pan": {
        "panpan": 36.226334
      },
      "hat": {
        "panhat": 35.115869
      },
      "dog": {
        "pandog": 37.817560
      },
      "cat": {
        "pancat": 42.235677
      }
    },
    "wye": {
      "cat": {
        "wyecat": 40.805723
      },
      "hat": {
        "wyehat": 41.166697
      },
      "dog": {
        "wyedog": 40.619547
      },
      "wye": {
        "wyewye": 32.490973
      },
      "pan": {
        "wyepan": 33.027196
      }
    },
    "dog": {
      "hat": {
        "doghat": 43.515162
      },
      "pan": {
        "dogpan": 45.614011
      },
      "dog": {
        "dogdog": 43.545956
      },
      "wye": {
        "dogwye": 37.223795
      },
      "cat": {
        "dogcat": 45.642595
      }
    },
    "hat": {
      "hat": {
        "hathat": 48.058897
      },
      "wye": {
        "hatwye": 34.054270
      },
      "pan": {
        "hatpan": 42.538758
      },
      "cat": {
        "hatcat": 44.325655
      },
      "dog": {
        "hatdog": 37.114244
      }
    }
  }
}
a      cat
catpan 42.327158

a      cat
cathat 43.184410

a      cat
catdog 39.241473

a      cat
catwye 45.196775

a      cat
catcat 37.894148

a      pan
panwye 40.135300

a      pan
panpan 36.226334

a      pan
panhat 35.115869

a      pan
pandog 37.817560

a      pan
pancat 42.235677

a      wye
wyecat 40.805723

a      wye
wyehat 41.166697

a      wye
wyedog 40.619547

a      wye
wyewye 32.490973

a      wye
wyepan 33.027196

a      dog
doghat 43.515162

a      dog
dogpan 45.614011

a      dog
dogdog 43.545956

a      dog
dogwye 37.223795

a      dog
dogcat 45.642595

a      hat
hathat 48.058897

a      hat
hatwye 34.054270

a      hat
hatpan 42.538758

a      hat
hatcat 44.325655

a      hat
hatdog 37.114244

mlr --opprint put -q @sum[$a][$b][$a.$b] += $x; end{dump;emitp  @sum, "a", "b"} ./reg_test/input/abixy-wide
{
  "sum": {
    "cat": {
      "pan": {
        "catpan": 42.327158
      },
      "hat": {
        "cathat": 43.184410
      },
      "dog": {
        "catdog": 39.241473
      },
      "wye": {
        "catwye": 45.196775
      },
      "cat": {
        "catcat": 37.894148
      }
    },
    "pan": {
      "wye": {
        "panwye": 40.135300
      },
      "pan": {
        "panpan": 36.226334
      },
      "hat": {
        "panhat": 35.115869
      },
      "dog": {
        "pandog": 37.817560
      },
      "cat": {
        "pancat": 42.235677
      }
    },
    "wye": {
      "cat": {
        "wyecat": 40.805723
      },
      "hat": {
        "wyehat": 41.166697
      },
      "dog": {
        "wyedog": 40.619547
      },
      "wye": {
        "wyewye": 32.490973
      },
      "pan": {
        "wyepan": 33.027196
      }
    },
    "dog": {
      "hat": {
        "doghat": 43.515162
      },
      "pan": {
        "dogpan": 45.614011
      },
      "dog": {
        "dogdog": 43.545956
      },
      "wye": {
        "dogwye": 37.223795
      },
      "cat": {
        "dogcat": 45.642595
      }
    },
    "hat": {
      "hat": {
        "hathat": 48.058897
      },
      "wye": {
        "hatwye": 34.054270
      },
      "pan": {
        "hatpan": 42.538758
      },
      "cat": {
        "hatcat": 44.325655
      },
      "dog": {
        "hatdog": 37.114244
      }
    }
  }
}
a   b   sum:catpan
cat pan 42.327158

a   b   sum:cathat
cat hat 43.184410

a   b   sum:catdog
cat dog 39.241473

a   b   sum:catwye
cat wye 45.196775

a   b   sum:catcat
cat cat 37.894148

a   b   sum:panwye
pan wye 40.135300

a   b   sum:panpan
pan pan 36.226334

a   b   sum:panhat
pan hat 35.115869

a   b   sum:pandog
pan dog 37.817560

a   b   sum:pancat
pan cat 42.235677

a   b   sum:wyecat
wye cat 40.805723

a   b   sum:wyehat
wye hat 41.166697

a   b   sum:wyedog
wye dog 40.619547

a   b   sum:wyewye
wye wye 32.490973

a   b   sum:wyepan
wye pan 33.027196

a   b   sum:doghat
dog hat 43.515162

a   b   sum:dogpan
dog pan 45.614011

a   b   sum:dogdog
dog dog 43.545956

a   b   sum:dogwye
dog wye 37.223795

a   b   sum:dogcat
dog cat 45.642595

a   b   sum:hathat
hat hat 48.058897

a   b   sum:hatwye
hat wye 34.054270

a   b   sum:hatpan
hat pan 42.538758

a   b   sum:hatcat
hat cat 44.325655

a   b   sum:hatdog
hat dog 37.114244

mlr --opprint put -q @sum[$a][$b][$a.$b] += $x; end{dump;emit @sum, "a", "b"} ./reg_test/input/abixy-wide
{
  "sum": {
    "cat": {
      "pan": {
        "catpan": 42.327158
      },
      "hat": {
        "cathat": 43.184410
      },
      "dog": {
        "catdog": 39.241473
      },
      "wye": {
        "catwye": 45.196775
      },
      "cat": {
        "catcat": 37.894148
      }
    },
    "pan": {
      "wye": {
        "panwye": 40.135300
      },
      "pan": {
        "panpan": 36.226334
      },
      "hat": {
        "panhat": 35.115869
      },
      "dog": {
        "pandog": 37.817560
      },
      "cat": {
        "pancat": 42.235677
      }
    },
    "wye": {
      "cat": {
        "wyecat": 40.805723
      },
      "hat": {
        "wyehat": 41.166697
      },
      "dog": {
        "wyedog": 40.619547
      },
      "wye": {
        "wyewye": 32.490973
      },
      "pan": {
        "wyepan": 33.027196
      }
    },
    "dog": {
      "hat": {
        "doghat": 43.515162
      },
      "pan": {
        "dogpan": 45.614011
      },
      "dog": {
        "dogdog": 43.545956
      },
      "wye": {
        "dogwye": 37.223795
      },
      "cat": {
        "dogcat": 45.642595
      }
    },
    "hat": {
      "hat": {
        "hathat": 48.058897
      },
      "wye": {
        "hatwye": 34.054270
      },
      "pan": {
        "hatpan": 42.538758
      },
      "cat": {
        "hatcat": 44.325655
      },
      "dog": {
        "hatdog": 37.114244
      }
    }
  }
}
a   b   catpan
cat pan 42.327158

a   b   cathat
cat hat 43.184410

a   b   catdog
cat dog 39.241473

a   b   catwye
cat wye 45.196775

a   b   catcat
cat cat 37.894148

a   b   panwye
pan wye 40.135300

a   b   panpan
pan pan 36.226334

a   b   panhat
pan hat 35.115869

a   b   pandog
pan dog 37.817560

a   b   pancat
pan cat 42.235677

a   b   wyecat
wye cat 40.805723

a   b   wyehat
wye hat 41.166697

a   b   wyedog
wye dog 40.619547

a   b   wyewye
wye wye 32.490973

a   b   wyepan
wye pan 33.027196

a   b   doghat
dog hat 43.515162

a   b   dogpan
dog pan 45.614011

a   b   dogdog
dog dog 43.545956

a   b   dogwye
dog wye 37.223795

a   b   dogcat
dog cat 45.642595

a   b   hathat
hat hat 48.058897

a   b   hatwye
hat wye 34.054270

a   b   hatpan
hat pan 42.538758

a   b   hatcat
hat cat 44.325655

a   b   hatdog
hat dog 37.114244

mlr --opprint put -q @sum[$a][$b][$a.$b] += $x; end{dump;emitp  @sum, "a", "b", "ab"} ./reg_test/input/abixy-wide
{
  "sum": {
    "cat": {
      "pan": {
        "catpan": 42.327158
      },
      "hat": {
        "cathat": 43.184410
      },
      "dog": {
        "catdog": 39.241473
      },
      "wye": {
        "catwye": 45.196775
      },
      "cat": {
        "catcat": 37.894148
      }
    },
    "pan": {
      "wye": {
        "panwye": 40.135300
      },
      "pan": {
        "panpan": 36.226334
      },
      "hat": {
        "panhat": 35.115869
      },
      "dog": {
        "pandog": 37.817560
      },
      "cat": {
        "pancat": 42.235677
      }
    },
    "wye": {
      "cat": {
        "wyecat": 40.805723
      },
      "hat": {
        "wyehat": 41.166697
      },
      "dog": {
        "wyedog": 40.619547
      },
      "wye": {
        "wyewye": 32.490973
      },
      "pan": {
        "wyepan": 33.027196
      }
    },
    "dog": {
      "hat": {
        "doghat": 43.515162
      },
      "pan": {
        "dogpan": 45.614011
      },
      "dog": {
        "dogdog": 43.545956
      },
      "wye": {
        "dogwye": 37.223795
      },
      "cat": {
        "dogcat": 45.642595
      }
    },
    "hat": {
      "hat": {
        "hathat": 48.058897
      },
      "wye": {
        "hatwye": 34.054270
      },
      "pan": {
        "hatpan": 42.538758
      },
      "cat": {
        "hatcat": 44.325655
      },
      "dog": {
        "hatdog": 37.114244
      }
    }
  }
}
a   b   ab     sum
cat pan catpan 42.327158
cat hat cathat 43.184410
cat dog catdog 39.241473
cat wye catwye 45.196775
cat cat catcat 37.894148
pan wye panwye 40.135300
pan pan panpan 36.226334
pan hat panhat 35.115869
pan dog pandog 37.817560
pan cat pancat 42.235677
wye cat wyecat 40.805723
wye hat wyehat 41.166697
wye dog wyedog 40.619547
wye wye wyewye 32.490973
wye pan wyepan 33.027196
dog hat doghat 43.515162
dog pan dogpan 45.614011
dog dog dogdog 43.545956
dog wye dogwye 37.223795
dog cat dogcat 45.642595
hat hat hathat 48.058897
hat wye hatwye 34.054270
hat pan hatpan 42.538758
hat cat hatcat 44.325655
hat dog hatdog 37.114244

mlr --opprint put -q @sum[$a][$b][$a.$b] += $x; end{dump;emit @sum, "a", "b", "ab"} ./reg_test/input/abixy-wide
{
  "sum": {
    "cat": {
      "pan": {
        "catpan": 42.327158
      },
      "hat": {
        "cathat": 43.184410
      },
      "dog": {
        "catdog": 39.241473
      },
      "wye": {
        "catwye": 45.196775
      },
      "cat": {
        "catcat": 37.894148
      }
    },
    "pan": {
      "wye": {
        "panwye": 40.135300
      },
      "pan": {
        "panpan": 36.226334
      },
      "hat": {
        "panhat": 35.115869
      },
      "dog": {
        "pandog": 37.817560
      },
      "cat": {
        "pancat": 42.235677
      }
    },
    "wye": {
      "cat": {
        "wyecat": 40.805723
      },
      "hat": {
        "wyehat": 41.166697
      },
      "dog": {
        "wyedog": 40.619547
      },
      "wye": {
        "wyewye": 32.490973
      },
      "pan": {
        "wyepan": 33.027196
      }
    },
    "dog": {
      "hat": {
        "doghat": 43.515162
      },
      "pan": {
        "dogpan": 45.614011
      },
      "dog": {
        "dogdog": 43.545956
      },
      "wye": {
        "dogwye": 37.223795
      },
      "cat": {
        "dogcat": 45.642595
      }
    },
    "hat": {
      "hat": {
        "hathat": 48.058897
      },
      "wye": {
        "hatwye": 34.054270
      },
      "pan": {
        "hatpan": 42.538758
      },
      "cat": {
        "hatcat": 44.325655
      },
      "dog": {
        "hatdog": 37.114244
      }
    }
  }
}
a   b   ab     sum
cat pan catpan 42.327158
cat hat cathat 43.184410
cat dog catdog 39.241473
cat wye catwye 45.196775
cat cat catcat 37.894148
pan wye panwye 40.135300
pan pan panpan 36.226334
pan hat panhat 35.115869
pan dog pandog 37.817560
pan cat pancat 42.235677
wye cat wyecat 40.805723
wye hat wyehat 41.166697
wye dog wyedog 40.619547
wye wye wyewye 32.490973
wye pan wyepan 33.027196
dog hat doghat 43.515162
dog pan dogpan 45.614011
dog dog dogdog 43.545956
dog wye dogwye 37.223795
dog cat dogcat 45.642595
hat hat hathat 48.058897
hat wye hatwye 34.054270
hat pan hatpan 42.538758
hat cat hatcat 44.325655
hat dog hatdog 37.114244

mlr --oxtab head -n 2 then put -q @v       =  $*; end{dump;emitp  @v} ./reg_test/input/abixy
{
  "v": {
    "a": "eks",
    "b": "pan",
    "i": 2,
    "x": 0.7586799647899636,
    "y": 0.5221511083334797
  }
}
v:a eks
v:b pan
v:i 2
v:x 0.7586799647899636
v:y 0.5221511083334797

mlr --oxtab head -n 2 then put -q @v       =  $*; end{dump;emit @v} ./reg_test/input/abixy
{
  "v": {
    "a": "eks",
    "b": "pan",
    "i": 2,
    "x": 0.7586799647899636,
    "y": 0.5221511083334797
  }
}
a eks
b pan
i 2
x 0.7586799647899636
y 0.5221511083334797

mlr --oxtab head -n 2 then put -q @v[NR]   =  $*; end{dump;emitp  @v        } ./reg_test/input/abixy
{
  "v": {
    "1": {
      "a": "pan",
      "b": "pan",
      "i": 1,
      "x": 0.3467901443380824,
      "y": 0.7268028627434533
    },
    "2": {
      "a": "eks",
      "b": "pan",
      "i": 2,
      "x": 0.7586799647899636,
      "y": 0.5221511083334797
    }
  }
}
v:1:a pan
v:1:b pan
v:1:i 1
v:1:x 0.3467901443380824
v:1:y 0.7268028627434533
v:2:a eks
v:2:b pan
v:2:i 2
v:2:x 0.7586799647899636
v:2:y 0.5221511083334797

mlr --oxtab head -n 2 then put -q @v[NR]   =  $*; end{dump;emit @v        } ./reg_test/input/abixy
{
  "v": {
    "1": {
      "a": "pan",
      "b": "pan",
      "i": 1,
      "x": 0.3467901443380824,
      "y": 0.7268028627434533
    },
    "2": {
      "a": "eks",
      "b": "pan",
      "i": 2,
      "x": 0.7586799647899636,
      "y": 0.5221511083334797
    }
  }
}
a pan
b pan
i 1
x 0.3467901443380824
y 0.7268028627434533

a eks
b pan
i 2
x 0.7586799647899636
y 0.5221511083334797

mlr --opprint head -n 2 then put -q @v[NR]   =  $*; end{dump;emitp  @v,   "I"} ./reg_test/input/abixy
{
  "v": {
    "1": {
      "a": "pan",
      "b": "pan",
      "i": 1,
      "x": 0.3467901443380824,
      "y": 0.7268028627434533
    },
    "2": {
      "a": "eks",
      "b": "pan",
      "i": 2,
      "x": 0.7586799647899636,
      "y": 0.5221511083334797
    }
  }
}
I v:a v:b v:i v:x                v:y
1 pan pan 1   0.3467901443380824 0.7268028627434533
2 eks pan 2   0.7586799647899636 0.5221511083334797

mlr --opprint head -n 2 then put -q @v[NR]   =  $*; end{dump;emit @v,   "I"} ./reg_test/input/abixy
{
  "v": {
    "1": {
      "a": "pan",
      "b": "pan",
      "i": 1,
      "x": 0.3467901443380824,
      "y": 0.7268028627434533
    },
    "2": {
      "a": "eks",
      "b": "pan",
      "i": 2,
      "x": 0.7586799647899636,
      "y": 0.5221511083334797
    }
  }
}
I a   b   i x                  y
1 pan pan 1 0.3467901443380824 0.7268028627434533
2 eks pan 2 0.7586799647899636 0.5221511083334797

mlr --oxtab head -n 2 then put -q @v[NR][NR]   =  $*; end{dump;emitp  @v        } ./reg_test/input/abixy
{
  "v": {
    "1": {
      "1": {
        "a": "pan",
        "b": "pan",
        "i": 1,
        "x": 0.3467901443380824,
        "y": 0.7268028627434533
      }
    },
    "2": {
      "2": {
        "a": "eks",
        "b": "pan",
        "i": 2,
        "x": 0.7586799647899636,
        "y": 0.5221511083334797
      }
    }
  }
}
v:1:1:a pan
v:1:1:b pan
v:1:1:i 1
v:1:1:x 0.3467901443380824
v:1:1:y 0.7268028627434533
v:2:2:a eks
v:2:2:b pan
v:2:2:i 2
v:2:2:x 0.7586799647899636
v:2:2:y 0.5221511083334797

mlr --oxtab head -n 2 then put -q @v[NR][NR]   =  $*; end{dump;emit @v        } ./reg_test/input/abixy
{
  "v": {
    "1": {
      "1": {
        "a": "pan",
        "b": "pan",
        "i": 1,
        "x": 0.3467901443380824,
        "y": 0.7268028627434533
      }
    },
    "2": {
      "2": {
        "a": "eks",
        "b": "pan",
        "i": 2,
        "x": 0.7586799647899636,
        "y": 0.5221511083334797
      }
    }
  }
}
a pan
b pan
i 1
x 0.3467901443380824
y 0.7268028627434533

a eks
b pan
i 2
x 0.7586799647899636
y 0.5221511083334797

mlr --opprint head -n 2 then put -q @v[NR][NR]   =  $*; end{dump;emitp  @v,   "I"} ./reg_test/input/abixy
{
  "v": {
    "1": {
      "1": {
        "a": "pan",
        "b": "pan",
        "i": 1,
        "x": 0.3467901443380824,
        "y": 0.7268028627434533
      }
    },
    "2": {
      "2": {
        "a": "eks",
        "b": "pan",
        "i": 2,
        "x": 0.7586799647899636,
        "y": 0.5221511083334797
      }
    }
  }
}
I v:1:a v:1:b v:1:i v:1:x              v:1:y
1 pan   pan   1     0.3467901443380824 0.7268028627434533

I v:2:a v:2:b v:2:i v:2:x              v:2:y
2 eks   pan   2     0.7586799647899636 0.5221511083334797

mlr --opprint head -n 2 then put -q @v[NR][NR]   =  $*; end{dump;emit @v,   "I"} ./reg_test/input/abixy
{
  "v": {
    "1": {
      "1": {
        "a": "pan",
        "b": "pan",
        "i": 1,
        "x": 0.3467901443380824,
        "y": 0.7268028627434533
      }
    },
    "2": {
      "2": {
        "a": "eks",
        "b": "pan",
        "i": 2,
        "x": 0.7586799647899636,
        "y": 0.5221511083334797
      }
    }
  }
}
I a   b   i x                  y
1 pan pan 1 0.3467901443380824 0.7268028627434533
2 eks pan 2 0.7586799647899636 0.5221511083334797

mlr --opprint head -n 2 then put -q @v[NR][NR]   =  $*; end{dump;emitp  @v,   "I", "J"} ./reg_test/input/abixy
{
  "v": {
    "1": {
      "1": {
        "a": "pan",
        "b": "pan",
        "i": 1,
        "x": 0.3467901443380824,
        "y": 0.7268028627434533
      }
    },
    "2": {
      "2": {
        "a": "eks",
        "b": "pan",
        "i": 2,
        "x": 0.7586799647899636,
        "y": 0.5221511083334797
      }
    }
  }
}
I J v:a v:b v:i v:x                v:y
1 1 pan pan 1   0.3467901443380824 0.7268028627434533
2 2 eks pan 2   0.7586799647899636 0.5221511083334797

mlr --opprint head -n 2 then put -q @v[NR][NR]   =  $*; end{dump;emit @v,   "I", "J"} ./reg_test/input/abixy
{
  "v": {
    "1": {
      "1": {
        "a": "pan",
        "b": "pan",
        "i": 1,
        "x": 0.3467901443380824,
        "y": 0.7268028627434533
      }
    },
    "2": {
      "2": {
        "a": "eks",
        "b": "pan",
        "i": 2,
        "x": 0.7586799647899636,
        "y": 0.5221511083334797
      }
    }
  }
}
I J a   b   i x                  y
1 1 pan pan 1 0.3467901443380824 0.7268028627434533
2 2 eks pan 2 0.7586799647899636 0.5221511083334797

mlr --oxtab head -n 2 then put -q @v[NR][NR][NR]   =  $*; end{dump;emitp  @v        } ./reg_test/input/abixy
{
  "v": {
    "1": {
      "1": {
        "1": {
          "a": "pan",
          "b": "pan",
          "i": 1,
          "x": 0.3467901443380824,
          "y": 0.7268028627434533
        }
      }
    },
    "2": {
      "2": {
        "2": {
          "a": "eks",
          "b": "pan",
          "i": 2,
          "x": 0.7586799647899636,
          "y": 0.5221511083334797
        }
      }
    }
  }
}
v:1:1:1:a pan
v:1:1:1:b pan
v:1:1:1:i 1
v:1:1:1:x 0.3467901443380824
v:1:1:1:y 0.7268028627434533
v:2:2:2:a eks
v:2:2:2:b pan
v:2:2:2:i 2
v:2:2:2:x 0.7586799647899636
v:2:2:2:y 0.5221511083334797

mlr --oxtab head -n 2 then put -q @v[NR][NR][NR]   =  $*; end{dump;emit @v        } ./reg_test/input/abixy
{
  "v": {
    "1": {
      "1": {
        "1": {
          "a": "pan",
          "b": "pan",
          "i": 1,
          "x": 0.3467901443380824,
          "y": 0.7268028627434533
        }
      }
    },
    "2": {
      "2": {
        "2": {
          "a": "eks",
          "b": "pan",
          "i": 2,
          "x": 0.7586799647899636,
          "y": 0.5221511083334797
        }
      }
    }
  }
}
a pan
b pan
i 1
x 0.3467901443380824
y 0.7268028627434533

a eks
b pan
i 2
x 0.7586799647899636
y 0.5221511083334797

mlr --opprint head -n 2 then put -q @v[NR][NR][NR]   =  $*; end{dump;emitp  @v,   "I"} ./reg_test/input/abixy
{
  "v": {
    "1": {
      "1": {
        "1": {
          "a": "pan",
          "b": "pan",
          "i": 1,
          "x": 0.3467901443380824,
          "y": 0.7268028627434533
        }
      }
    },
    "2": {
      "2": {
        "2": {
          "a": "eks",
          "b": "pan",
          "i": 2,
          "x": 0.7586799647899636,
          "y": 0.5221511083334797
        }
      }
    }
  }
}
I v:1:1:a v:1:1:b v:1:1:i v:1:1:x            v:1:1:y
1 pan     pan     1       0.3467901443380824 0.7268028627434533

I v:2:2:a v:2:2:b v:2:2:i v:2:2:x            v:2:2:y
2 eks     pan     2       0.7586799647899636 0.5221511083334797

mlr --opprint head -n 2 then put -q @v[NR][NR][NR]   =  $*; end{dump;emit @v,   "I"} ./reg_test/input/abixy
{
  "v": {
    "1": {
      "1": {
        "1": {
          "a": "pan",
          "b": "pan",
          "i": 1,
          "x": 0.3467901443380824,
          "y": 0.7268028627434533
        }
      }
    },
    "2": {
      "2": {
        "2": {
          "a": "eks",
          "b": "pan",
          "i": 2,
          "x": 0.7586799647899636,
          "y": 0.5221511083334797
        }
      }
    }
  }
}
I a   b   i x                  y
1 pan pan 1 0.3467901443380824 0.7268028627434533
2 eks pan 2 0.7586799647899636 0.5221511083334797

mlr --opprint head -n 2 then put -q @v[NR][NR][NR]   =  $*; end{dump;emitp  @v,   "I", "J"} ./reg_test/input/abixy
{
  "v": {
    "1": {
      "1": {
        "1": {
          "a": "pan",
          "b": "pan",
          "i": 1,
          "x": 0.3467901443380824,
          "y": 0.7268028627434533
        }
      }
    },
    "2": {
      "2": {
        "2": {
          "a": "eks",
          "b": "pan",
          "i": 2,
          "x": 0.7586799647899636,
          "y": 0.5221511083334797
        }
      }
    }
  }
}
I J v:1:a v:1:b v:1:i v:1:x              v:1:y
1 1 pan   pan   1     0.3467901443380824 0.7268028627434533

I J v:2:a v:2:b v:2:i v:2:x              v:2:y
2 2 eks   pan   2     0.7586799647899636 0.5221511083334797

mlr --opprint head -n 2 then put -q @v[NR][NR][NR]   =  $*; end{dump;emit @v,   "I", "J"} ./reg_test/input/abixy
{
  "v": {
    "1": {
      "1": {
        "1": {
          "a": "pan",
          "b": "pan",
          "i": 1,
          "x": 0.3467901443380824,
          "y": 0.7268028627434533
        }
      }
    },
    "2": {
      "2": {
        "2": {
          "a": "eks",
          "b": "pan",
          "i": 2,
          "x": 0.7586799647899636,
          "y": 0.5221511083334797
        }
      }
    }
  }
}
I J a   b   i x                  y
1 1 pan pan 1 0.3467901443380824 0.7268028627434533
2 2 eks pan 2 0.7586799647899636 0.5221511083334797

mlr --opprint head -n 2 then put -q @v[NR][NR][NR]   =  $*; end{dump;emitp  @v,   "I", "J", "K"} ./reg_test/input/abixy
{
  "v": {
    "1": {
      "1": {
        "1": {
          "a": "pan",
          "b": "pan",
          "i": 1,
          "x": 0.3467901443380824,
          "y": 0.7268028627434533
        }
      }
    },
    "2": {
      "2": {
        "2": {
          "a": "eks",
          "b": "pan",
          "i": 2,
          "x": 0.7586799647899636,
          "y": 0.5221511083334797
        }
      }
    }
  }
}
I J K v:a v:b v:i v:x                v:y
1 1 1 pan pan 1   0.3467901443380824 0.7268028627434533
2 2 2 eks pan 2   0.7586799647899636 0.5221511083334797

mlr --opprint head -n 2 then put -q @v[NR][NR][NR]   =  $*; end{dump;emit @v,   "I", "J", "K"} ./reg_test/input/abixy
{
  "v": {
    "1": {
      "1": {
        "1": {
          "a": "pan",
          "b": "pan",
          "i": 1,
          "x": 0.3467901443380824,
          "y": 0.7268028627434533
        }
      }
    },
    "2": {
      "2": {
        "2": {
          "a": "eks",
          "b": "pan",
          "i": 2,
          "x": 0.7586799647899636,
          "y": 0.5221511083334797
        }
      }
    }
  }
}
I J K a   b   i x                  y
1 1 1 pan pan 1 0.3467901443380824 0.7268028627434533
2 2 2 eks pan 2 0.7586799647899636 0.5221511083334797


================================================================
LASHED EMITP SINGLES

mlr -n put end {
  @a = 111;
  emitp @a
}
a=111

mlr -n put end {
  @a = 111;
  emitp (@a)
}
a=111

mlr -n put end {
  @a[111] = 222;
  emitp @a, "s"
}
s=111,a=222

mlr -n put end {
  @a[111] = 222;
  emitp (@a), "s"
}
s=111,a=222

mlr -n put end {
  @a[111] = 222;
  @a[333] = 444;
  emitp @a, "s"
}
s=111,a=222
s=333,a=444

mlr -n put end {
  @a[111] = 222;
  @a[333] = 444;
  emitp (@a), "s"
}
s=111,a=222
s=333,a=444

mlr -n put end {
  @a[111][222] = 333;
  emitp @a, "s"
}
s=111,a:222=333

mlr -n put end {
  @a[111][222] = 333;
  emitp (@a), "s"
}
s=111,a:222=333

mlr -n put end {
  @a[111][222] = 333;
  @a[444][555] = 666;
  emitp @a, "s"
}
s=111,a:222=333
s=444,a:555=666

mlr -n put end {
  @a[111][222] = 333;
  @a[444][555] = 666;
  emitp (@a), "s"
}
s=111,a:222=333
s=444,a:555=666

mlr -n put end {
  @a[111][222] = 333;
  emitp @a, "s", "t"
}
s=111,t=222,a=333

mlr -n put end {
  @a[111][222] = 333;
  emitp (@a), "s", "t"
}
s=111,t=222,a=333

mlr -n put end {
  @a[111][222] = 333;
  emitp @a[111], "t"
}
t=222,a=333

mlr -n put end {
  @a[111][222] = 333;
  emitp (@a[111]), "t"
}
t=222,a=333


================================================================
LASHED EMIT SINGLES

mlr -n put end {
  @a = 111;
  emit @a
}
a=111

mlr -n put end {
  @a = 111;
  emit (@a)
}
a=111

mlr -n put end {
  @a[111] = 222;
  emit @a, "s"
}
s=111,a=222

mlr -n put end {
  @a[111] = 222;
  emit (@a), "s"
}
s=111,a=222

mlr -n put end {
  @a[111] = 222;
  @a[333] = 444;
  emit @a, "s"
}
s=111,a=222
s=333,a=444

mlr -n put end {
  @a[111] = 222;
  @a[333] = 444;
  emit (@a), "s"
}
s=111,a=222
s=333,a=444

mlr -n put end {
  @a[111][222] = 333;
  emit @a, "s"
}
s=111,222=333

mlr -n put end {
  @a[111][222] = 333;
  emit (@a), "s"
}
s=111,222=333


================================================================
LASHED EMITP PAIRS

mlr -n put end {
  @a = 111;
  @b = 222;
  emitp (@a, @b)
}
a=111,b=222

mlr -n put end {
  @a[1] = 111;
  @b[1] = 222;
  emitp (@a[1], @b[1])
}
a=111,b=222

mlr -n put end {
  @a[1][2][3] = 4;
  @b[1][2][3] = 8;
  emitp (@a, @b), "s", "t", "u"
}
s=1,t=2,u=3,a=4,b=8

mlr -n put end {
  @a[1][2][3] = 4;
  @b[5][2][3] = 8;
  emitp (@a[1], @b[5]), "t", "u"
}
t=2,u=3,a=4,b=8

mlr -n put end {
  @a[1][2][3] = 4;
  @b[5][6][3] = 8;
  emitp (@a[1][2], @b[5][6]), "u"
}
u=3,a=4,b=8


================================================================
LASHED EMIT PAIRS

mlr -n put end {
  @a = 111;
  @b = 222;
  emit (@a, @b)
}
a=111,b=222

mlr -n put end {
  @a[1] = 111;
  @b[1] = 222;
  emit (@a[1], @b[1])
}
a=111,b=222

mlr -n put end {
  @a[1][2][3] = 4;
  @b[1][2][3] = 8;
  emit (@a, @b), "s", "t", "u"
}
s=1,t=2,u=3,a=4,b=8

mlr -n put end {
  @a[1][2][3] = 4;
  @b[5][2][3] = 8;
  emit (@a[1], @b[5]), "t", "u"
}
t=2,u=3,a=4,b=8

mlr -n put end {
  @a[1][2][3] = 4;
  @b[5][6][3] = 8;
  emit (@a[1][2], @b[5][6]), "u"
}
u=3,a=4,b=8


================================================================
LASHED EMIT WITH VARYING DEPTH

mlr -n put end {
  @a[1][1] = 1;
  @a[1][2] = 2;
  @a[2][1] = 3;
  @a[2][2] = 4;
  @b[1][1] = 5;
  @b[1][2] = 6;
  @b[2][1] = 7;
  @b[2][2] = 8;
  emit (@a[1], @b[2]), "t"
}
t=1,a=1,b=7
t=2,a=2,b=8

mlr -n put end {
  @a[1][1] = 1;
  @a[1][2] = 2;
  @a[2][1] = 3;
  @a[2][2] = 4;
  @b[1][1] = 5;
  @b[1][2] = 6;
  @b[2][1] = 7;
  @b[2][2] = 8;
  emit (@a, @b), "s", "t"
}
s=1,t=1,a=1,b=5
s=1,t=2,a=2,b=6
s=2,t=1,a=3,b=7
s=2,t=2,a=4,b=8

mlr -n put end {
  @a[1][1] = 1;
  @a[1][2] = 2;
  @a[2][1] = 3;
  @a[2][2] = 4;
  @a[3] = 10;
  @a[4] = 11;
  @a[5][6][7] = 12;
  @b[1][1] = 5;
  @b[1][2] = 6;
  @b[2][1] = 7;
  @b[2][2] = 8;
  emit (@a, @b), "s", "t"
}
s=1,t=1,a=1,b=5
s=1,t=2,a=2,b=6
s=2,t=1,a=3,b=7
s=2,t=2,a=4,b=8
s=3,a=10
s=4,a=11
s=5,t=6,7=12

mlr -n put end {
  @a[1][1] = 1;
  @a[1][2] = 2;
  @a[2][1] = 3;
  @a[2][2] = 4;
  @a[3] = 10;
  @a[4] = 11;
  @a[5][6][7] = 12;
  @b[1][1] = 5;
  @b[1][2] = 6;
  @b[2][1] = 7;
  @b[2][2] = 8;
  emit (@b, @a), "s", "t"
}
s=1,t=1,b=5,a=1
s=1,t=2,b=6,a=2
s=2,t=1,b=7,a=3
s=2,t=2,b=8,a=4

mlr -n put end {
  @a[1][2][3] = 4;
  @b[5][2][3] = 8;
  emit (@a[1], @b[3]), "t", "u"
}
t=2,u=3,a=4

mlr -n put end {
  @a[1][2][3] = 4;
  @b[5][2][3] = 8;
  emit (@a[1][2], @b[5][9]), "t", "u"
}
t=3,a=4

mlr -n put end {
  @a[1][2][3] = 4;
  @b[5][2][3] = 8;
  emit (@a[1][2], @b[9][2]), "t", "u"
}
t=3,a=4

mlr -n put end {
  @a[1][2][3] = 4;
  @b[5][2][3] = 8;
  emit (@a[9], @b[5]), "t", "u"
}


================================================================
LASHED EMITP WITH VARYING DEPTH

mlr -n put end {
  @a[1][1] = 1;
  @a[1][2] = 2;
  @a[2][1] = 3;
  @a[2][2] = 4;
  @b[1][1] = 5;
  @b[1][2] = 6;
  @b[2][1] = 7;
  @b[2][2] = 8;
  emitp (@a[1], @b[2]), "t"
}
t=1,a=1,b=7
t=2,a=2,b=8

mlr -n put end {
  @a[1][1] = 1;
  @a[1][2] = 2;
  @a[2][1] = 3;
  @a[2][2] = 4;
  @b[1][1] = 5;
  @b[1][2] = 6;
  @b[2][1] = 7;
  @b[2][2] = 8;
  emitp (@a, @b), "s", "t"
}
s=1,t=1,a=1,b=5
s=1,t=2,a=2,b=6
s=2,t=1,a=3,b=7
s=2,t=2,a=4,b=8

mlr -n put end {
  @a[1][1] = 1;
  @a[1][2] = 2;
  @a[2][1] = 3;
  @a[2][2] = 4;
  @a[3] = 10;
  @a[4] = 11;
  @a[5][6][7] = 12;
  @b[1][1] = 5;
  @b[1][2] = 6;
  @b[2][1] = 7;
  @b[2][2] = 8;
  emitp (@a, @b), "s", "t"
}
s=1,t=1,a=1,b=5
s=1,t=2,a=2,b=6
s=2,t=1,a=3,b=7
s=2,t=2,a=4,b=8
s=3,a=10
s=4,a=11
s=5,t=6,a:7=12

mlr -n put end {
  @a[1][1] = 1;
  @a[1][2] = 2;
  @a[2][1] = 3;
  @a[2][2] = 4;
  @a[3] = 10;
  @a[4] = 11;
  @a[5][6][7] = 12;
  @b[1][1] = 5;
  @b[1][2] = 6;
  @b[2][1] = 7;
  @b[2][2] = 8;
  emitp (@b, @a), "s", "t"
}
s=1,t=1,b=5,a=1
s=1,t=2,b=6,a=2
s=2,t=1,b=7,a=3
s=2,t=2,b=8,a=4

mlr -n put end {
  @a[1][2][3] = 4;
  @b[5][2][3] = 8;
  emitp (@a[1], @b[3]), "t", "u"
}
t=2,u=3,a=4

mlr -n put end {
  @a[1][2][3] = 4;
  @b[5][2][3] = 8;
  emitp (@a[1][2], @b[5][9]), "t", "u"
}
t=3,a=4

mlr -n put end {
  @a[1][2][3] = 4;
  @b[5][2][3] = 8;
  emitp (@a[1][2], @b[9][2]), "t", "u"
}
t=3,a=4

mlr -n put end {
  @a[1][2][3] = 4;
  @b[5][2][3] = 8;
  emitp (@a[9], @b[5]), "t", "u"
}


================================================================
CANONICAL LASHED EMIT

mlr --from ./reg_test/input/abixy-wide --opprint put -q 
  @count[$a] += 1;
  @sum[$a] += $x;
  end {
      for (a, c in @count) {
          @mean[a] = @sum[a] / @count[a]
      }
      emit (@sum, @count, @mean), "a"
  }

a   sum        count mean
cat 207.843964 413   0.503254
pan 191.530740 384   0.498778
wye 188.110135 370   0.508406
dog 215.541519 424   0.508353
hat 206.091824 409   0.503892

mlr --from ./reg_test/input/abixy-wide --opprint put -q 
  @count[$a][$b] += 1;
  @sum[$a][$b] += $x;
  end {
      for ((a, b), c in @count) {
          @mean[a][b] = @sum[a][b] / @count[a][b]
      }
      emit (@sum, @count, @mean), "a", "b"
  }

a   b   sum       count mean
cat pan 42.327158 89    0.475586
cat hat 43.184410 90    0.479827
cat dog 39.241473 78    0.503096
cat wye 45.196775 77    0.586971
cat cat 37.894148 79    0.479673
pan wye 40.135300 78    0.514555
pan pan 36.226334 77    0.470472
pan hat 35.115869 67    0.524117
pan dog 37.817560 73    0.518049
pan cat 42.235677 89    0.474558
wye cat 40.805723 74    0.551429
wye hat 41.166697 87    0.473180
wye dog 40.619547 76    0.534468
wye wye 32.490973 67    0.484940
wye pan 33.027196 66    0.500412
dog hat 43.515162 88    0.494490
dog pan 45.614011 87    0.524299
dog dog 43.545956 87    0.500528
dog wye 37.223795 79    0.471187
dog cat 45.642595 83    0.549911
hat hat 48.058897 88    0.546124
hat wye 34.054270 70    0.486490
hat pan 42.538758 85    0.500456
hat cat 44.325655 88    0.503701
hat dog 37.114244 78    0.475824


================================================================
MAP-VARIANT EMITS

mlr --from ./reg_test/input/abixy-het --opprint put -q o=$a.$b; emit o
o
panpan
ekspan
wye
eks
wyepan
zeepan
ekszee
zeewye
-
panwye

mlr --from ./reg_test/input/abixy-het --opprint put -q o={"ab":$a.$b}; emit o
ab
panpan
ekspan
wye
eks
wyepan
zeepan
ekszee
zeewye
-
panwye

mlr --from ./reg_test/input/abixy-het --opprint put -q @o=$a.$b; emit @o
o
panpan
ekspan
wye
eks
wyepan
zeepan
ekszee
zeewye
zeewye
panwye

mlr --from ./reg_test/input/abixy-het --opprint put -q @o={"ab":$a.$b}; emit @o
ab
panpan
ekspan
wye
eks
wyepan
zeepan
ekszee
zeewye
-
panwye

mlr --from ./reg_test/input/abixy-het --opprint put -q @o=$a.$b; emit @*
o
panpan
ekspan
wye
eks
wyepan
zeepan
ekszee
zeewye
zeewye
panwye

mlr --from ./reg_test/input/abixy-het --opprint put -q @o={"ab":$a.$b}; emit @*
ab
panpan
ekspan
wye
eks
wyepan
zeepan
ekszee
zeewye
-
panwye

mlr --from ./reg_test/input/abixy-het --opprint put -q emit $a.$b
mlr DSL: syntax error at "$a"
mlr put: syntax error on DSL parse of 'emit $a.$b'

mlr --from ./reg_test/input/abixy-het --opprint put -q emit {"ab":$a.$b}
ab
panpan
ekspan
wye
eks
wyepan
zeepan
ekszee
zeewye
-
panwye

mlr --from ./reg_test/input/abixy-het --opprint put -q func f(a,b) { return a.b } o = f($a, $b); emit o
o
panpan
ekspan
wye
eks
wyepan
zeepan
ekszee
zeewye
-
panwye

mlr --from ./reg_test/input/abixy-het --opprint put -q func f(a,b) { return a.b } emit f($a, $b)

mlr --from ./reg_test/input/abixy-het --opprint put -q func f(a,b) { return {"ab": a.b} } o = f($a, $b); emit o
ab
panpan
ekspan
wye
eks
wyepan
zeepan
ekszee
zeewye
-
panwye

mlr --from ./reg_test/input/abixy-het --opprint put -q func f(a,b) { return {"ab": a.b} } emit f($a, $b)
ab
panpan
ekspan
wye
eks
wyepan
zeepan
ekszee
zeewye
-
panwye


================================================================
MAP-VARIANT LASHED EMITS


---------------------------------------------------------------- scalar lashed emits
mlr --from ./reg_test/input/abixy-het --opprint put -q emit ($a . "_" . $b, $x . "_" . $y)
mlr DSL: syntax error at "$a"
mlr put: syntax error on DSL parse of 'emit ($a . "_" . $b, $x . "_" . $y)'

mlr --from ./reg_test/input/abixy-het --opprint put -q  o = $a . "_" . $b;  p = $x . "_" . $y; emit  (o,  p)
o       p
pan_pan 0.346790_0.726803
eks_pan 0.758680_0.522151
_wye    0.204603_0.338319
eks_    0.381399_0.134189
wye_pan _0.863624
zee_pan 0.527126_0.493221
eks_zee 0.611784_0.187885
zee_wye 0.598554_
_       0.031442_0.749551
pan_wye 0.502626_0.952618

mlr --from ./reg_test/input/abixy-het --opprint put -q @o = $a . "_" . $b; @p = $x . "_" . $y; emit (@o, @p)
o       p
pan_pan 0.346790_0.726803
eks_pan 0.758680_0.522151
_wye    0.204603_0.338319
eks_    0.381399_0.134189
wye_pan _0.863624
zee_pan 0.527126_0.493221
eks_zee 0.611784_0.187885
zee_wye 0.598554_
_       0.031442_0.749551
pan_wye 0.502626_0.952618

mlr --from ./reg_test/input/abixy-het --opprint put -q func f(a, b) { return a . "_" . b }  o = f($a, $b);  p = f($x, $y); emit  (o,  p)
o       p
pan_pan 0.346790_0.726803
eks_pan 0.758680_0.522151
_wye    0.204603_0.338319
eks_    0.381399_0.134189
wye_pan _0.863624
zee_pan 0.527126_0.493221
eks_zee 0.611784_0.187885
zee_wye 0.598554_
_       0.031442_0.749551
pan_wye 0.502626_0.952618

mlr --from ./reg_test/input/abixy-het --opprint put -q func f(a, b) { return a . "_" . b } @o = f($a, $b); @p = f($x, $y); emit (@o, @p)
o       p
pan_pan 0.346790_0.726803
eks_pan 0.758680_0.522151
_wye    0.204603_0.338319
eks_    0.381399_0.134189
wye_pan _0.863624
zee_pan 0.527126_0.493221
eks_zee 0.611784_0.187885
zee_wye 0.598554_
_       0.031442_0.749551
pan_wye 0.502626_0.952618

mlr --from ./reg_test/input/abixy-het --opprint put -q func f(a, b) { return a . "_" . b } emit (f($a, $b), f($x, $y))
_
0.346790_0.726803
0.758680_0.522151
0.204603_0.338319
0.381399_0.134189
_0.863624
0.527126_0.493221
0.611784_0.187885
0.598554_
0.031442_0.749551
0.502626_0.952618


---------------------------------------------------------------- non-scalar non-keyed lashed emits
mlr --from ./reg_test/input/abixy-het --opprint put -q emit ({"ab": $a . "_" . $b}, {"ab": $x . "_" . $y})
ab
0.346790_0.726803
0.758680_0.522151
0.204603_0.338319
0.381399_0.134189
_0.863624
0.527126_0.493221
0.611784_0.187885
0.598554_
0.031442_0.749551
0.502626_0.952618

mlr --from ./reg_test/input/abixy-het --opprint put -q  o = {"ab": $a . "_" . $b};  p = {"ab": $x . "_" . $y}; emit  (o, p)
ab
0.346790_0.726803
0.758680_0.522151
0.204603_0.338319
0.381399_0.134189
_0.863624
0.527126_0.493221
0.611784_0.187885
0.598554_
0.031442_0.749551
0.502626_0.952618

mlr --from ./reg_test/input/abixy-het --opprint put -q @o = {"ab": $a . "_" . $b}; @p = {"ab": $x . "_" . $y}; emit (@o, @p)
ab
0.346790_0.726803
0.758680_0.522151
0.204603_0.338319
0.381399_0.134189
_0.863624
0.527126_0.493221
0.611784_0.187885
0.598554_
0.031442_0.749551
0.502626_0.952618

mlr --from ./reg_test/input/abixy-het --opprint put -q func f(a, b) { return {"ab": a . "_" . b} }  o = f($a, $b);  p = f($x, $y); emit  (o, p)
ab
0.346790_0.726803
0.758680_0.522151
0.204603_0.338319
0.381399_0.134189
_0.863624
0.527126_0.493221
0.611784_0.187885
0.598554_
0.031442_0.749551
0.502626_0.952618

mlr --from ./reg_test/input/abixy-het --opprint put -q func f(a, b) { return {"ab": a . "_" . b} } @o = f($a, $b); @p = f($x, $y); emit (@o, @p)
ab
0.346790_0.726803
0.758680_0.522151
0.204603_0.338319
0.381399_0.134189
_0.863624
0.527126_0.493221
0.611784_0.187885
0.598554_
0.031442_0.749551
0.502626_0.952618

mlr --from ./reg_test/input/abixy-het --opprint put -q func f(a, b) { return {"ab": a . "_" . b} } emit (f($a, $b), f($x, $y))
ab
0.346790_0.726803
0.758680_0.522151
0.204603_0.338319
0.381399_0.134189
_0.863624
0.527126_0.493221
0.611784_0.187885
0.598554_
0.031442_0.749551
0.502626_0.952618


---------------------------------------------------------------- non-scalar non-keyed lashed emits
mlr --from ./reg_test/input/abixy-het --opprint put -q emitp ({"ab": $a . "_" . $b}, {"ab": $x . "_" . $y})
_:ab
0.346790_0.726803
0.758680_0.522151
0.204603_0.338319
0.381399_0.134189
_0.863624
0.527126_0.493221
0.611784_0.187885
0.598554_
0.031442_0.749551
0.502626_0.952618

mlr --from ./reg_test/input/abixy-het --opprint put -q  o = {"ab": $a . "_" . $b};  p = {"ab": $x . "_" . $y}; emitp  (o, p)
o:ab    p:ab
pan_pan 0.346790_0.726803
eks_pan 0.758680_0.522151
_wye    0.204603_0.338319
eks_    0.381399_0.134189
wye_pan _0.863624
zee_pan 0.527126_0.493221
eks_zee 0.611784_0.187885
zee_wye 0.598554_
_       0.031442_0.749551
pan_wye 0.502626_0.952618

mlr --from ./reg_test/input/abixy-het --opprint put -q @o = {"ab": $a . "_" . $b}; @p = {"ab": $x . "_" . $y}; emitp (@o, @p)
o:ab    p:ab
pan_pan 0.346790_0.726803
eks_pan 0.758680_0.522151
_wye    0.204603_0.338319
eks_    0.381399_0.134189
wye_pan _0.863624
zee_pan 0.527126_0.493221
eks_zee 0.611784_0.187885
zee_wye 0.598554_
_       0.031442_0.749551
pan_wye 0.502626_0.952618

mlr --from ./reg_test/input/abixy-het --opprint put -q func f(a, b) { return {"ab": a . "_" . b} }  o = f($a, $b);  p = f($x, $y); emitp  (o, p)
o:ab    p:ab
pan_pan 0.346790_0.726803
eks_pan 0.758680_0.522151
_wye    0.204603_0.338319
eks_    0.381399_0.134189
wye_pan _0.863624
zee_pan 0.527126_0.493221
eks_zee 0.611784_0.187885
zee_wye 0.598554_
_       0.031442_0.749551
pan_wye 0.502626_0.952618

mlr --from ./reg_test/input/abixy-het --opprint put -q func f(a, b) { return {"ab": a . "_" . b} } @o = f($a, $b); @p = f($x, $y); emitp (@o, @p)
o:ab    p:ab
pan_pan 0.346790_0.726803
eks_pan 0.758680_0.522151
_wye    0.204603_0.338319
eks_    0.381399_0.134189
wye_pan _0.863624
zee_pan 0.527126_0.493221
eks_zee 0.611784_0.187885
zee_wye 0.598554_
_       0.031442_0.749551
pan_wye 0.502626_0.952618

mlr --from ./reg_test/input/abixy-het --opprint put -q func f(a, b) { return {"ab": a . "_" . b} } emit (f($a, $b), f($x, $y))
ab
0.346790_0.726803
0.758680_0.522151
0.204603_0.338319
0.381399_0.134189
_0.863624
0.527126_0.493221
0.611784_0.187885
0.598554_
0.031442_0.749551
0.502626_0.952618


---------------------------------------------------------------- non-scalar keyed lashed emits
mlr --from ./reg_test/input/abixy-het --opprint put -q emit ({"ab": $a . "_" . $b}, {"ab": $x . "_" . $y}), "ab"
ab _
ab 0.346790_0.726803
ab 0.758680_0.522151
ab 0.204603_0.338319
ab 0.381399_0.134189
ab _0.863624
ab 0.527126_0.493221
ab 0.611784_0.187885
ab 0.598554_
ab 0.031442_0.749551
ab 0.502626_0.952618

mlr --from ./reg_test/input/abixy-het --opprint put -q  o = {"ab": $a . "_" . $b};  p = {"ab": $x . "_" . $y}; emit  (o, p), "ab"
ab o       p
ab pan_pan 0.346790_0.726803
ab eks_pan 0.758680_0.522151
ab _wye    0.204603_0.338319
ab eks_    0.381399_0.134189
ab wye_pan _0.863624
ab zee_pan 0.527126_0.493221
ab eks_zee 0.611784_0.187885
ab zee_wye 0.598554_
ab _       0.031442_0.749551
ab pan_wye 0.502626_0.952618

mlr --from ./reg_test/input/abixy-het --opprint put -q @o = {"ab": $a . "_" . $b}; @p = {"ab": $x . "_" . $y}; emit (@o, @p), "ab"
ab o       p
ab pan_pan 0.346790_0.726803
ab eks_pan 0.758680_0.522151
ab _wye    0.204603_0.338319
ab eks_    0.381399_0.134189
ab wye_pan _0.863624
ab zee_pan 0.527126_0.493221
ab eks_zee 0.611784_0.187885
ab zee_wye 0.598554_
ab _       0.031442_0.749551
ab pan_wye 0.502626_0.952618

mlr --from ./reg_test/input/abixy-het --opprint put -q func f(a, b) { return {"ab": a . "_" . b} }  o = f($a, $b);  p = f($x, $y); emit  (o, p), "ab"
ab o       p
ab pan_pan 0.346790_0.726803
ab eks_pan 0.758680_0.522151
ab _wye    0.204603_0.338319
ab eks_    0.381399_0.134189
ab wye_pan _0.863624
ab zee_pan 0.527126_0.493221
ab eks_zee 0.611784_0.187885
ab zee_wye 0.598554_
ab _       0.031442_0.749551
ab pan_wye 0.502626_0.952618

mlr --from ./reg_test/input/abixy-het --opprint put -q func f(a, b) { return {"ab": a . "_" . b} } @o = f($a, $b); @p = f($x, $y); emit (@o, @p), "ab"
ab o       p
ab pan_pan 0.346790_0.726803
ab eks_pan 0.758680_0.522151
ab _wye    0.204603_0.338319
ab eks_    0.381399_0.134189
ab wye_pan _0.863624
ab zee_pan 0.527126_0.493221
ab eks_zee 0.611784_0.187885
ab zee_wye 0.598554_
ab _       0.031442_0.749551
ab pan_wye 0.502626_0.952618

mlr --from ./reg_test/input/abixy-het --opprint put -q func f(a, b) { return {"ab": a . "_" . b} } emit (f($a, $b), f($x, $y)), "ab"
ab _
ab 0.346790_0.726803
ab 0.758680_0.522151
ab 0.204603_0.338319
ab 0.381399_0.134189
ab _0.863624
ab 0.527126_0.493221
ab 0.611784_0.187885
ab 0.598554_
ab 0.031442_0.749551
ab 0.502626_0.952618


---------------------------------------------------------------- non-scalar keyed lashed emits
mlr --from ./reg_test/input/abixy-het --opprint put -q emitp ({"ab": $a . "_" . $b}, {"ab": $x . "_" . $y}), "ab"
ab _
ab 0.346790_0.726803
ab 0.758680_0.522151
ab 0.204603_0.338319
ab 0.381399_0.134189
ab _0.863624
ab 0.527126_0.493221
ab 0.611784_0.187885
ab 0.598554_
ab 0.031442_0.749551
ab 0.502626_0.952618

mlr --from ./reg_test/input/abixy-het --opprint put -q  o = {"ab": $a . "_" . $b};  p = {"ab": $x . "_" . $y}; emitp  (o, p), "ab"
ab o       p
ab pan_pan 0.346790_0.726803
ab eks_pan 0.758680_0.522151
ab _wye    0.204603_0.338319
ab eks_    0.381399_0.134189
ab wye_pan _0.863624
ab zee_pan 0.527126_0.493221
ab eks_zee 0.611784_0.187885
ab zee_wye 0.598554_
ab _       0.031442_0.749551
ab pan_wye 0.502626_0.952618

mlr --from ./reg_test/input/abixy-het --opprint put -q @o = {"ab": $a . "_" . $b}; @p = {"ab": $x . "_" . $y}; emitp (@o, @p), "ab"
ab o       p
ab pan_pan 0.346790_0.726803
ab eks_pan 0.758680_0.522151
ab _wye    0.204603_0.338319
ab eks_    0.381399_0.134189
ab wye_pan _0.863624
ab zee_pan 0.527126_0.493221
ab eks_zee 0.611784_0.187885
ab zee_wye 0.598554_
ab _       0.031442_0.749551
ab pan_wye 0.502626_0.952618

mlr --from ./reg_test/input/abixy-het --opprint put -q func f(a, b) { return {"ab": a . "_" . b} }  o = f($a, $b);  p = f($x, $y); emitp  (o, p), "ab"
ab o       p
ab pan_pan 0.346790_0.726803
ab eks_pan 0.758680_0.522151
ab _wye    0.204603_0.338319
ab eks_    0.381399_0.134189
ab wye_pan _0.863624
ab zee_pan 0.527126_0.493221
ab eks_zee 0.611784_0.187885
ab zee_wye 0.598554_
ab _       0.031442_0.749551
ab pan_wye 0.502626_0.952618

mlr --from ./reg_test/input/abixy-het --opprint put -q func f(a, b) { return {"ab": a . "_" . b} } @o = f($a, $b); @p = f($x, $y); emitp (@o, @p), "ab"
ab o       p
ab pan_pan 0.346790_0.726803
ab eks_pan 0.758680_0.522151
ab _wye    0.204603_0.338319
ab eks_    0.381399_0.134189
ab wye_pan _0.863624
ab zee_pan 0.527126_0.493221
ab eks_zee 0.611784_0.187885
ab zee_wye 0.598554_
ab _       0.031442_0.749551
ab pan_wye 0.502626_0.952618

mlr --from ./reg_test/input/abixy-het --opprint put -q func f(a, b) { return {"ab": a . "_" . b} } emitp (f($a, $b), f($x, $y)), "ab"
ab _
ab 0.346790_0.726803
ab 0.758680_0.522151
ab 0.204603_0.338319
ab 0.381399_0.134189
ab _0.863624
ab 0.527126_0.493221
ab 0.611784_0.187885
ab 0.598554_
ab 0.031442_0.749551
ab 0.502626_0.952618


================================================================
MAPPER TEE REDIRECTS

mlr --from ./reg_test/input/abixy tee ./output-regtest/tee1/out then nothing

cat ./output-regtest/tee1/out
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 tee --no-fflush ./output-regtest/tee1/out then nothing

cat ./output-regtest/tee1/out
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 tee -a ./output-regtest/tee1/out then nothing

cat ./output-regtest/tee1/out
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=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 tee -o json ./output-regtest/tee1/out then nothing

cat ./output-regtest/tee1/out
{ "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 }


================================================================
DSL TEE REDIRECTS

mlr put -q tee > "./output-regtest/tee2/out.".$a, $* ./reg_test/input/abixy

cat ./output-regtest/tee2/out.eks
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694

cat ./output-regtest/tee2/out.hat
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059

cat ./output-regtest/tee2/out.pan
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864

cat ./output-regtest/tee2/out.wye
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729

cat ./output-regtest/tee2/out.zee
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006

mlr put -q --no-fflush tee > "./output-regtest/tee2/out.".$a, $* ./reg_test/input/abixy

cat ./output-regtest/tee2/out.eks
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694

cat ./output-regtest/tee2/out.hat
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059

cat ./output-regtest/tee2/out.pan
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864

cat ./output-regtest/tee2/out.wye
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729

cat ./output-regtest/tee2/out.zee
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006

mlr put -q tee >> "./output-regtest/tee2/out.".$a, $* ./reg_test/input/abixy

cat ./output-regtest/tee2/out.eks
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694

cat ./output-regtest/tee2/out.hat
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059

cat ./output-regtest/tee2/out.pan
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864

cat ./output-regtest/tee2/out.wye
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729

cat ./output-regtest/tee2/out.zee
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006

mlr put -q -o json tee > "./output-regtest/tee2/out.".$a, $* ./reg_test/input/abixy

cat ./output-regtest/tee2/out.eks
{ "a": "eks", "b": "pan", "i": 2, "x": 0.7586799647899636, "y": 0.5221511083334797 }
{ "a": "eks", "b": "wye", "i": 4, "x": 0.38139939387114097, "y": 0.13418874328430463 }
{ "a": "eks", "b": "zee", "i": 7, "x": 0.6117840605678454, "y": 0.1878849191181694 }

cat ./output-regtest/tee2/out.hat
{ "a": "hat", "b": "wye", "i": 9, "x": 0.03144187646093577, "y": 0.7495507603507059 }

cat ./output-regtest/tee2/out.pan
{ "a": "pan", "b": "pan", "i": 1, "x": 0.3467901443380824, "y": 0.7268028627434533 }
{ "a": "pan", "b": "wye", "i": 10, "x": 0.5026260055412137, "y": 0.9526183602969864 }

cat ./output-regtest/tee2/out.wye
{ "a": "wye", "b": "wye", "i": 3, "x": 0.20460330576630303, "y": 0.33831852551664776 }
{ "a": "wye", "b": "pan", "i": 5, "x": 0.5732889198020006, "y": 0.8636244699032729 }

cat ./output-regtest/tee2/out.zee
{ "a": "zee", "b": "pan", "i": 6, "x": 0.5271261600918548, "y": 0.49322128674835697 }
{ "a": "zee", "b": "wye", "i": 8, "x": 0.5985540091064224, "y": 0.976181385699006 }

mlr put -q tee | "tr \[a-z\] \[A-Z\]", $* ./reg_test/input/abixy
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 put -q -o json tee | "tr \[a-z\] \[A-Z\]", $* ./reg_test/input/abixy
{ "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 put -q tee > stdout, $* ./reg_test/input/abixy
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

cat ./output-regtest/tee2/err1

mlr put -q tee > stderr, $* ./reg_test/input/abixy

cat ./output-regtest/tee2/err2
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


================================================================
DSL PRINT REDIRECTS

mlr put -q print > "./output-regtest/print1/out.".$a, "abi:".$a.$b.$i ./reg_test/input/abixy

cat ./output-regtest/print1/out.eks
abi:ekspan2
abi:ekswye4
abi:ekszee7

cat ./output-regtest/print1/out.hat
abi:hatwye9

cat ./output-regtest/print1/out.pan
abi:panpan1
abi:panwye10

cat ./output-regtest/print1/out.wye
abi:wyewye3
abi:wyepan5

cat ./output-regtest/print1/out.zee
abi:zeepan6
abi:zeewye8

mlr put -q print > "./output-regtest/print1/out.".$a, "abi:".$a.$b.$i ./reg_test/input/abixy

cat ./output-regtest/print1/out.eks
abi:ekspan2
abi:ekswye4
abi:ekszee7

cat ./output-regtest/print1/out.hat
abi:hatwye9

cat ./output-regtest/print1/out.pan
abi:panpan1
abi:panwye10

cat ./output-regtest/print1/out.wye
abi:wyewye3
abi:wyepan5

cat ./output-regtest/print1/out.zee
abi:zeepan6
abi:zeewye8

mlr put -q print >> "./output-regtest/print1/out.".$a, "abi:".$a.$b.$i ./reg_test/input/abixy

cat ./output-regtest/print1/out.eks
abi:ekspan2
abi:ekswye4
abi:ekszee7
abi:ekspan2
abi:ekswye4
abi:ekszee7

cat ./output-regtest/print1/out.hat
abi:hatwye9
abi:hatwye9

cat ./output-regtest/print1/out.pan
abi:panpan1
abi:panwye10
abi:panpan1
abi:panwye10

cat ./output-regtest/print1/out.wye
abi:wyewye3
abi:wyepan5
abi:wyewye3
abi:wyepan5

cat ./output-regtest/print1/out.zee
abi:zeepan6
abi:zeewye8
abi:zeepan6
abi:zeewye8

mlr put -q print | "tr \[a-z\] \[A-Z\]",  "abi:".$a.$b.$i ./reg_test/input/abixy
ABI:PANPAN1
ABI:EKSPAN2
ABI:WYEWYE3
ABI:EKSWYE4
ABI:WYEPAN5
ABI:ZEEPAN6
ABI:EKSZEE7
ABI:ZEEWYE8
ABI:HATWYE9
ABI:PANWYE10

mlr put -q print > stdout, "abi:".$a.$b.$i ./reg_test/input/abixy
abi:panpan1
abi:ekspan2
abi:wyewye3
abi:ekswye4
abi:wyepan5
abi:zeepan6
abi:ekszee7
abi:zeewye8
abi:hatwye9
abi:panwye10

cat ./output-regtest/print1/err1

mlr put -q print > stderr, "abi:".$a.$b.$i ./reg_test/input/abixy

cat ./output-regtest/print1/err2
abi:panpan1
abi:ekspan2
abi:wyewye3
abi:ekswye4
abi:wyepan5
abi:zeepan6
abi:ekszee7
abi:zeewye8
abi:hatwye9
abi:panwye10


================================================================
DSL PRINTN REDIRECTS

mlr put -q printn > "./output-regtest/printn1/out.".$a, "abi:".$a.$b.$i ./reg_test/input/abixy

cat ./output-regtest/printn1/out.eks
abi:ekspan2abi:ekswye4abi:ekszee7
cat ./output-regtest/printn1/out.hat
abi:hatwye9
cat ./output-regtest/printn1/out.pan
abi:panpan1abi:panwye10
cat ./output-regtest/printn1/out.wye
abi:wyewye3abi:wyepan5
cat ./output-regtest/printn1/out.zee
abi:zeepan6abi:zeewye8
mlr put -q printn > "./output-regtest/printn1/out.".$a, "abi:".$a.$b.$i ./reg_test/input/abixy

cat ./output-regtest/printn1/out.eks
abi:ekspan2abi:ekswye4abi:ekszee7
cat ./output-regtest/printn1/out.hat
abi:hatwye9
cat ./output-regtest/printn1/out.pan
abi:panpan1abi:panwye10
cat ./output-regtest/printn1/out.wye
abi:wyewye3abi:wyepan5
cat ./output-regtest/printn1/out.zee
abi:zeepan6abi:zeewye8
mlr put -q printn >> "./output-regtest/printn1/out.".$a, "abi:".$a.$b.$i ./reg_test/input/abixy

cat ./output-regtest/printn1/out.eks
abi:ekspan2abi:ekswye4abi:ekszee7abi:ekspan2abi:ekswye4abi:ekszee7
cat ./output-regtest/printn1/out.hat
abi:hatwye9abi:hatwye9
cat ./output-regtest/printn1/out.pan
abi:panpan1abi:panwye10abi:panpan1abi:panwye10
cat ./output-regtest/printn1/out.wye
abi:wyewye3abi:wyepan5abi:wyewye3abi:wyepan5
cat ./output-regtest/printn1/out.zee
abi:zeepan6abi:zeewye8abi:zeepan6abi:zeewye8
mlr put -q printn | "tr \[a-z\] \[A-Z\]",  "abi:".$a.$b.$i ./reg_test/input/abixy
ABI:PANPAN1ABI:EKSPAN2ABI:WYEWYE3ABI:EKSWYE4ABI:WYEPAN5ABI:ZEEPAN6ABI:EKSZEE7ABI:ZEEWYE8ABI:HATWYE9ABI:PANWYE10
mlr put -q printn > stdout, "abi:".$a.$b.$i ./reg_test/input/abixy
abi:panpan1abi:ekspan2abi:wyewye3abi:ekswye4abi:wyepan5abi:zeepan6abi:ekszee7abi:zeewye8abi:hatwye9abi:panwye10
cat ./output-regtest/printn1/err1

mlr put -q printn > stderr, "abi:".$a.$b.$i ./reg_test/input/abixy

cat ./output-regtest/printn1/err2
abi:panpan1abi:ekspan2abi:wyewye3abi:ekswye4abi:wyepan5abi:zeepan6abi:ekszee7abi:zeewye8abi:hatwye9abi:panwye10

================================================================
DSL DUMP REDIRECTS

mlr put -q @v=$*; dump > "./output-regtest/dump1/out.".$a ./reg_test/input/abixy

cat ./output-regtest/dump1/out.eks
{
  "v": {
    "a": "eks",
    "b": "pan",
    "i": 2,
    "x": 0.7586799647899636,
    "y": 0.5221511083334797
  }
}
{
  "v": {
    "a": "eks",
    "b": "wye",
    "i": 4,
    "x": 0.38139939387114097,
    "y": 0.13418874328430463
  }
}
{
  "v": {
    "a": "eks",
    "b": "zee",
    "i": 7,
    "x": 0.6117840605678454,
    "y": 0.1878849191181694
  }
}

cat ./output-regtest/dump1/out.hat
{
  "v": {
    "a": "hat",
    "b": "wye",
    "i": 9,
    "x": 0.03144187646093577,
    "y": 0.7495507603507059
  }
}

cat ./output-regtest/dump1/out.pan
{
  "v": {
    "a": "pan",
    "b": "pan",
    "i": 1,
    "x": 0.3467901443380824,
    "y": 0.7268028627434533
  }
}
{
  "v": {
    "a": "pan",
    "b": "wye",
    "i": 10,
    "x": 0.5026260055412137,
    "y": 0.9526183602969864
  }
}

cat ./output-regtest/dump1/out.wye
{
  "v": {
    "a": "wye",
    "b": "wye",
    "i": 3,
    "x": 0.20460330576630303,
    "y": 0.33831852551664776
  }
}
{
  "v": {
    "a": "wye",
    "b": "pan",
    "i": 5,
    "x": 0.5732889198020006,
    "y": 0.8636244699032729
  }
}

cat ./output-regtest/dump1/out.zee
{
  "v": {
    "a": "zee",
    "b": "pan",
    "i": 6,
    "x": 0.5271261600918548,
    "y": 0.49322128674835697
  }
}
{
  "v": {
    "a": "zee",
    "b": "wye",
    "i": 8,
    "x": 0.5985540091064224,
    "y": 0.976181385699006
  }
}

mlr put -q @v=$*; dump > "./output-regtest/dump1/out.".$a ./reg_test/input/abixy

cat ./output-regtest/dump1/out.eks
{
  "v": {
    "a": "eks",
    "b": "pan",
    "i": 2,
    "x": 0.7586799647899636,
    "y": 0.5221511083334797
  }
}
{
  "v": {
    "a": "eks",
    "b": "wye",
    "i": 4,
    "x": 0.38139939387114097,
    "y": 0.13418874328430463
  }
}
{
  "v": {
    "a": "eks",
    "b": "zee",
    "i": 7,
    "x": 0.6117840605678454,
    "y": 0.1878849191181694
  }
}

cat ./output-regtest/dump1/out.hat
{
  "v": {
    "a": "hat",
    "b": "wye",
    "i": 9,
    "x": 0.03144187646093577,
    "y": 0.7495507603507059
  }
}

cat ./output-regtest/dump1/out.pan
{
  "v": {
    "a": "pan",
    "b": "pan",
    "i": 1,
    "x": 0.3467901443380824,
    "y": 0.7268028627434533
  }
}
{
  "v": {
    "a": "pan",
    "b": "wye",
    "i": 10,
    "x": 0.5026260055412137,
    "y": 0.9526183602969864
  }
}

cat ./output-regtest/dump1/out.wye
{
  "v": {
    "a": "wye",
    "b": "wye",
    "i": 3,
    "x": 0.20460330576630303,
    "y": 0.33831852551664776
  }
}
{
  "v": {
    "a": "wye",
    "b": "pan",
    "i": 5,
    "x": 0.5732889198020006,
    "y": 0.8636244699032729
  }
}

cat ./output-regtest/dump1/out.zee
{
  "v": {
    "a": "zee",
    "b": "pan",
    "i": 6,
    "x": 0.5271261600918548,
    "y": 0.49322128674835697
  }
}
{
  "v": {
    "a": "zee",
    "b": "wye",
    "i": 8,
    "x": 0.5985540091064224,
    "y": 0.976181385699006
  }
}

mlr put -q @v=$*; dump >> "./output-regtest/dump1/out.".$a ./reg_test/input/abixy

cat ./output-regtest/dump1/out.eks
{
  "v": {
    "a": "eks",
    "b": "pan",
    "i": 2,
    "x": 0.7586799647899636,
    "y": 0.5221511083334797
  }
}
{
  "v": {
    "a": "eks",
    "b": "wye",
    "i": 4,
    "x": 0.38139939387114097,
    "y": 0.13418874328430463
  }
}
{
  "v": {
    "a": "eks",
    "b": "zee",
    "i": 7,
    "x": 0.6117840605678454,
    "y": 0.1878849191181694
  }
}
{
  "v": {
    "a": "eks",
    "b": "pan",
    "i": 2,
    "x": 0.7586799647899636,
    "y": 0.5221511083334797
  }
}
{
  "v": {
    "a": "eks",
    "b": "wye",
    "i": 4,
    "x": 0.38139939387114097,
    "y": 0.13418874328430463
  }
}
{
  "v": {
    "a": "eks",
    "b": "zee",
    "i": 7,
    "x": 0.6117840605678454,
    "y": 0.1878849191181694
  }
}

cat ./output-regtest/dump1/out.hat
{
  "v": {
    "a": "hat",
    "b": "wye",
    "i": 9,
    "x": 0.03144187646093577,
    "y": 0.7495507603507059
  }
}
{
  "v": {
    "a": "hat",
    "b": "wye",
    "i": 9,
    "x": 0.03144187646093577,
    "y": 0.7495507603507059
  }
}

cat ./output-regtest/dump1/out.pan
{
  "v": {
    "a": "pan",
    "b": "pan",
    "i": 1,
    "x": 0.3467901443380824,
    "y": 0.7268028627434533
  }
}
{
  "v": {
    "a": "pan",
    "b": "wye",
    "i": 10,
    "x": 0.5026260055412137,
    "y": 0.9526183602969864
  }
}
{
  "v": {
    "a": "pan",
    "b": "pan",
    "i": 1,
    "x": 0.3467901443380824,
    "y": 0.7268028627434533
  }
}
{
  "v": {
    "a": "pan",
    "b": "wye",
    "i": 10,
    "x": 0.5026260055412137,
    "y": 0.9526183602969864
  }
}

cat ./output-regtest/dump1/out.wye
{
  "v": {
    "a": "wye",
    "b": "wye",
    "i": 3,
    "x": 0.20460330576630303,
    "y": 0.33831852551664776
  }
}
{
  "v": {
    "a": "wye",
    "b": "pan",
    "i": 5,
    "x": 0.5732889198020006,
    "y": 0.8636244699032729
  }
}
{
  "v": {
    "a": "wye",
    "b": "wye",
    "i": 3,
    "x": 0.20460330576630303,
    "y": 0.33831852551664776
  }
}
{
  "v": {
    "a": "wye",
    "b": "pan",
    "i": 5,
    "x": 0.5732889198020006,
    "y": 0.8636244699032729
  }
}

cat ./output-regtest/dump1/out.zee
{
  "v": {
    "a": "zee",
    "b": "pan",
    "i": 6,
    "x": 0.5271261600918548,
    "y": 0.49322128674835697
  }
}
{
  "v": {
    "a": "zee",
    "b": "wye",
    "i": 8,
    "x": 0.5985540091064224,
    "y": 0.976181385699006
  }
}
{
  "v": {
    "a": "zee",
    "b": "pan",
    "i": 6,
    "x": 0.5271261600918548,
    "y": 0.49322128674835697
  }
}
{
  "v": {
    "a": "zee",
    "b": "wye",
    "i": 8,
    "x": 0.5985540091064224,
    "y": 0.976181385699006
  }
}

mlr put -q @v=$*; dump | "tr \[a-z\] \[A-Z\]" ./reg_test/input/abixy
{
  "V": {
    "A": "PAN",
    "B": "PAN",
    "I": 1,
    "X": 0.3467901443380824,
    "Y": 0.7268028627434533
  }
}
{
  "V": {
    "A": "EKS",
    "B": "PAN",
    "I": 2,
    "X": 0.7586799647899636,
    "Y": 0.5221511083334797
  }
}
{
  "V": {
    "A": "WYE",
    "B": "WYE",
    "I": 3,
    "X": 0.20460330576630303,
    "Y": 0.33831852551664776
  }
}
{
  "V": {
    "A": "EKS",
    "B": "WYE",
    "I": 4,
    "X": 0.38139939387114097,
    "Y": 0.13418874328430463
  }
}
{
  "V": {
    "A": "WYE",
    "B": "PAN",
    "I": 5,
    "X": 0.5732889198020006,
    "Y": 0.8636244699032729
  }
}
{
  "V": {
    "A": "ZEE",
    "B": "PAN",
    "I": 6,
    "X": 0.5271261600918548,
    "Y": 0.49322128674835697
  }
}
{
  "V": {
    "A": "EKS",
    "B": "ZEE",
    "I": 7,
    "X": 0.6117840605678454,
    "Y": 0.1878849191181694
  }
}
{
  "V": {
    "A": "ZEE",
    "B": "WYE",
    "I": 8,
    "X": 0.5985540091064224,
    "Y": 0.976181385699006
  }
}
{
  "V": {
    "A": "HAT",
    "B": "WYE",
    "I": 9,
    "X": 0.03144187646093577,
    "Y": 0.7495507603507059
  }
}
{
  "V": {
    "A": "PAN",
    "B": "WYE",
    "I": 10,
    "X": 0.5026260055412137,
    "Y": 0.9526183602969864
  }
}

mlr put -q @v[NR] = $*; NR == 2 { dump > stdout } ./reg_test/input/abixy
{
  "v": {
    "1": {
      "a": "pan",
      "b": "pan",
      "i": 1,
      "x": 0.3467901443380824,
      "y": 0.7268028627434533
    },
    "2": {
      "a": "eks",
      "b": "pan",
      "i": 2,
      "x": 0.7586799647899636,
      "y": 0.5221511083334797
    }
  }
}

cat ./output-regtest/dump1/err1

mlr put -q @v[NR] = $*; NR == 2 { dump > stderr } ./reg_test/input/abixy

cat ./output-regtest/dump1/err2
{
  "v": {
    "1": {
      "a": "pan",
      "b": "pan",
      "i": 1,
      "x": 0.3467901443380824,
      "y": 0.7268028627434533
    },
    "2": {
      "a": "eks",
      "b": "pan",
      "i": 2,
      "x": 0.7586799647899636,
      "y": 0.5221511083334797
    }
  }
}


================================================================
DSL EMITF REDIRECTS

mlr put -q @a=$a; @b=$b; emitf > "./output-regtest/emitf1/out.".$a.$b, @a, @b ./reg_test/input/abixy

cat ./output-regtest/emitf1/out.ekspan
a=eks,b=pan

cat ./output-regtest/emitf1/out.ekswye
a=eks,b=wye

cat ./output-regtest/emitf1/out.ekszee
a=eks,b=zee

cat ./output-regtest/emitf1/out.hatwye
a=hat,b=wye

cat ./output-regtest/emitf1/out.panpan
a=pan,b=pan

cat ./output-regtest/emitf1/out.panwye
a=pan,b=wye

cat ./output-regtest/emitf1/out.wyepan
a=wye,b=pan

cat ./output-regtest/emitf1/out.wyewye
a=wye,b=wye

cat ./output-regtest/emitf1/out.zeepan
a=zee,b=pan

cat ./output-regtest/emitf1/out.zeewye
a=zee,b=wye

mlr put -q @a=$a; @b=$b; emitf > "./output-regtest/emitf1/out.".$a.$b, @a, @b ./reg_test/input/abixy

cat ./output-regtest/emitf1/out.ekspan
a=eks,b=pan

cat ./output-regtest/emitf1/out.ekswye
a=eks,b=wye

cat ./output-regtest/emitf1/out.ekszee
a=eks,b=zee

cat ./output-regtest/emitf1/out.hatwye
a=hat,b=wye

cat ./output-regtest/emitf1/out.panpan
a=pan,b=pan

cat ./output-regtest/emitf1/out.panwye
a=pan,b=wye

cat ./output-regtest/emitf1/out.wyepan
a=wye,b=pan

cat ./output-regtest/emitf1/out.wyewye
a=wye,b=wye

cat ./output-regtest/emitf1/out.zeepan
a=zee,b=pan

cat ./output-regtest/emitf1/out.zeewye
a=zee,b=wye

mlr put -q @a=$a; @b=$b; emitf >> "./output-regtest/emitf1/out.".$a.$b, @a, @b ./reg_test/input/abixy

cat ./output-regtest/emitf1/out.ekspan
a=eks,b=pan
a=eks,b=pan

cat ./output-regtest/emitf1/out.ekswye
a=eks,b=wye
a=eks,b=wye

cat ./output-regtest/emitf1/out.ekszee
a=eks,b=zee
a=eks,b=zee

cat ./output-regtest/emitf1/out.hatwye
a=hat,b=wye
a=hat,b=wye

cat ./output-regtest/emitf1/out.panpan
a=pan,b=pan
a=pan,b=pan

cat ./output-regtest/emitf1/out.panwye
a=pan,b=wye
a=pan,b=wye

cat ./output-regtest/emitf1/out.wyepan
a=wye,b=pan
a=wye,b=pan

cat ./output-regtest/emitf1/out.wyewye
a=wye,b=wye
a=wye,b=wye

cat ./output-regtest/emitf1/out.zeepan
a=zee,b=pan
a=zee,b=pan

cat ./output-regtest/emitf1/out.zeewye
a=zee,b=wye
a=zee,b=wye

mlr put -q -o json @a=$a; @b=$b; emitf > "./output-regtest/emitf1/out.".$a.$b, @a, @b ./reg_test/input/abixy

cat ./output-regtest/emitf1/out.ekspan
{ "a": "eks", "b": "pan" }

cat ./output-regtest/emitf1/out.ekswye
{ "a": "eks", "b": "wye" }

cat ./output-regtest/emitf1/out.ekszee
{ "a": "eks", "b": "zee" }

cat ./output-regtest/emitf1/out.hatwye
{ "a": "hat", "b": "wye" }

cat ./output-regtest/emitf1/out.panpan
{ "a": "pan", "b": "pan" }

cat ./output-regtest/emitf1/out.panwye
{ "a": "pan", "b": "wye" }

cat ./output-regtest/emitf1/out.wyepan
{ "a": "wye", "b": "pan" }

cat ./output-regtest/emitf1/out.wyewye
{ "a": "wye", "b": "wye" }

cat ./output-regtest/emitf1/out.zeepan
{ "a": "zee", "b": "pan" }

cat ./output-regtest/emitf1/out.zeewye
{ "a": "zee", "b": "wye" }

mlr put -q @a=$a; @b=$b; emitf | "tr \[a-z\] \[A-Z\]", @a, @b ./reg_test/input/abixy
A=PAN,B=PAN
A=EKS,B=PAN
A=WYE,B=WYE
A=EKS,B=WYE
A=WYE,B=PAN
A=ZEE,B=PAN
A=EKS,B=ZEE
A=ZEE,B=WYE
A=HAT,B=WYE
A=PAN,B=WYE

mlr put -q @a=$a; @b=$b; emitf > stdout, @a, @b ./reg_test/input/abixy
a=pan,b=pan
a=eks,b=pan
a=wye,b=wye
a=eks,b=wye
a=wye,b=pan
a=zee,b=pan
a=eks,b=zee
a=zee,b=wye
a=hat,b=wye
a=pan,b=wye

cat ./output-regtest/emitf1/err1

mlr put -q @a=$a; @b=$b; emitf > stderr, @a, @b ./reg_test/input/abixy

cat ./output-regtest/emitf1/err2
a=pan,b=pan
a=eks,b=pan
a=wye,b=wye
a=eks,b=wye
a=wye,b=pan
a=zee,b=pan
a=eks,b=zee
a=zee,b=wye
a=hat,b=wye
a=pan,b=wye


================================================================
DSL EMITP REDIRECTS

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emitp > "./output-regtest/emitp1/out.".$a.$b, @a ./reg_test/input/abixy

cat ./output-regtest/emitp1/out.ekspan
a:1=pan,a:2=eks

cat ./output-regtest/emitp1/out.ekswye
a:1=pan,a:2=eks,a:3=wye,a:4=eks

cat ./output-regtest/emitp1/out.panpan
a:1=pan

cat ./output-regtest/emitp1/out.wyewye
a:1=pan,a:2=eks,a:3=wye

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emitp > "./output-regtest/emitp1/out.".$a.$b, @a ./reg_test/input/abixy

cat ./output-regtest/emitp1/out.ekspan
a:1=pan,a:2=eks

cat ./output-regtest/emitp1/out.ekswye
a:1=pan,a:2=eks,a:3=wye,a:4=eks

cat ./output-regtest/emitp1/out.panpan
a:1=pan

cat ./output-regtest/emitp1/out.wyewye
a:1=pan,a:2=eks,a:3=wye

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emitp >> "./output-regtest/emitp1/out.".$a.$b, @a ./reg_test/input/abixy

cat ./output-regtest/emitp1/out.ekspan
a:1=pan,a:2=eks
a:1=pan,a:2=eks

cat ./output-regtest/emitp1/out.ekswye
a:1=pan,a:2=eks,a:3=wye,a:4=eks
a:1=pan,a:2=eks,a:3=wye,a:4=eks

cat ./output-regtest/emitp1/out.panpan
a:1=pan
a:1=pan

cat ./output-regtest/emitp1/out.wyewye
a:1=pan,a:2=eks,a:3=wye
a:1=pan,a:2=eks,a:3=wye

mlr head -n 4 then put -q -o json @a[NR]=$a; @b[NR]=$b; emitp > "./output-regtest/emitp1/out.".$a.$b, @a ./reg_test/input/abixy

cat ./output-regtest/emitp1/out.ekspan
{ "a": {"1": "pan", "2": "eks" } }

cat ./output-regtest/emitp1/out.ekswye
{ "a": {"1": "pan", "2": "eks", "3": "wye", "4": "eks" } }

cat ./output-regtest/emitp1/out.panpan
{ "a": {"1": "pan" } }

cat ./output-regtest/emitp1/out.wyewye
{ "a": {"1": "pan", "2": "eks", "3": "wye" } }

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emitp | "tr \[a-z\] \[A-Z\]", @a ./reg_test/input/abixy
A:1=PAN
A:1=PAN,A:2=EKS
A:1=PAN,A:2=EKS,A:3=WYE
A:1=PAN,A:2=EKS,A:3=WYE,A:4=EKS

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emitp > stdout, @a ./reg_test/input/abixy
a:1=pan
a:1=pan,a:2=eks
a:1=pan,a:2=eks,a:3=wye
a:1=pan,a:2=eks,a:3=wye,a:4=eks

cat ./output-regtest/emitp1/err1

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emitp > stderr, @a ./reg_test/input/abixy

cat ./output-regtest/emitp1/err2
a:1=pan
a:1=pan,a:2=eks
a:1=pan,a:2=eks,a:3=wye
a:1=pan,a:2=eks,a:3=wye,a:4=eks

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emitp > "./output-regtest/emitp2/out.".$a.$b, @a, "NR" ./reg_test/input/abixy

cat ./output-regtest/emitp2/out.ekspan
NR=1,a=pan
NR=2,a=eks

cat ./output-regtest/emitp2/out.ekswye
NR=1,a=pan
NR=2,a=eks
NR=3,a=wye
NR=4,a=eks

cat ./output-regtest/emitp2/out.panpan
NR=1,a=pan

cat ./output-regtest/emitp2/out.wyewye
NR=1,a=pan
NR=2,a=eks
NR=3,a=wye

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emitp > "./output-regtest/emitp2/out.".$a.$b, @a, "NR" ./reg_test/input/abixy

cat ./output-regtest/emitp2/out.ekspan
NR=1,a=pan
NR=2,a=eks

cat ./output-regtest/emitp2/out.ekswye
NR=1,a=pan
NR=2,a=eks
NR=3,a=wye
NR=4,a=eks

cat ./output-regtest/emitp2/out.panpan
NR=1,a=pan

cat ./output-regtest/emitp2/out.wyewye
NR=1,a=pan
NR=2,a=eks
NR=3,a=wye

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emitp >> "./output-regtest/emitp2/out.".$a.$b, @a, "NR" ./reg_test/input/abixy

cat ./output-regtest/emitp2/out.ekspan
NR=1,a=pan
NR=2,a=eks
NR=1,a=pan
NR=2,a=eks

cat ./output-regtest/emitp2/out.ekswye
NR=1,a=pan
NR=2,a=eks
NR=3,a=wye
NR=4,a=eks
NR=1,a=pan
NR=2,a=eks
NR=3,a=wye
NR=4,a=eks

cat ./output-regtest/emitp2/out.panpan
NR=1,a=pan
NR=1,a=pan

cat ./output-regtest/emitp2/out.wyewye
NR=1,a=pan
NR=2,a=eks
NR=3,a=wye
NR=1,a=pan
NR=2,a=eks
NR=3,a=wye

mlr head -n 4 then put -q -o json @a[NR]=$a; @b[NR]=$b; emitp > "./output-regtest/emitp2/out.".$a.$b, @a, "NR" ./reg_test/input/abixy

cat ./output-regtest/emitp2/out.ekspan
{ "NR": 1, "a": "pan" }
{ "NR": 2, "a": "eks" }

cat ./output-regtest/emitp2/out.ekswye
{ "NR": 1, "a": "pan" }
{ "NR": 2, "a": "eks" }
{ "NR": 3, "a": "wye" }
{ "NR": 4, "a": "eks" }

cat ./output-regtest/emitp2/out.panpan
{ "NR": 1, "a": "pan" }

cat ./output-regtest/emitp2/out.wyewye
{ "NR": 1, "a": "pan" }
{ "NR": 2, "a": "eks" }
{ "NR": 3, "a": "wye" }

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emitp | "tr \[a-z\] \[A-Z\]", @a, "NR" ./reg_test/input/abixy
NR=1,A=PAN
NR=1,A=PAN
NR=2,A=EKS
NR=1,A=PAN
NR=2,A=EKS
NR=3,A=WYE
NR=1,A=PAN
NR=2,A=EKS
NR=3,A=WYE
NR=4,A=EKS

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emitp > stdout, @a, "NR" ./reg_test/input/abixy
NR=1,a=pan
NR=1,a=pan
NR=2,a=eks
NR=1,a=pan
NR=2,a=eks
NR=3,a=wye
NR=1,a=pan
NR=2,a=eks
NR=3,a=wye
NR=4,a=eks

cat ./output-regtest/emitp2/err1

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emitp > stderr, @a, "NR" ./reg_test/input/abixy

cat ./output-regtest/emitp2/err2
NR=1,a=pan
NR=1,a=pan
NR=2,a=eks
NR=1,a=pan
NR=2,a=eks
NR=3,a=wye
NR=1,a=pan
NR=2,a=eks
NR=3,a=wye
NR=4,a=eks

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emitp > "./output-regtest/emitp3/out.".$a.$b, (@a, @b) ./reg_test/input/abixy

cat ./output-regtest/emitp3/out.ekspan
a:1=pan,b:1=pan,a:2=eks,b:2=pan

cat ./output-regtest/emitp3/out.ekswye
a:1=pan,b:1=pan,a:2=eks,b:2=pan,a:3=wye,b:3=wye,a:4=eks,b:4=wye

cat ./output-regtest/emitp3/out.panpan
a:1=pan,b:1=pan

cat ./output-regtest/emitp3/out.wyewye
a:1=pan,b:1=pan,a:2=eks,b:2=pan,a:3=wye,b:3=wye

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emitp > "./output-regtest/emitp3/out.".$a.$b, (@a, @b) ./reg_test/input/abixy

cat ./output-regtest/emitp3/out.ekspan
a:1=pan,b:1=pan,a:2=eks,b:2=pan

cat ./output-regtest/emitp3/out.ekswye
a:1=pan,b:1=pan,a:2=eks,b:2=pan,a:3=wye,b:3=wye,a:4=eks,b:4=wye

cat ./output-regtest/emitp3/out.panpan
a:1=pan,b:1=pan

cat ./output-regtest/emitp3/out.wyewye
a:1=pan,b:1=pan,a:2=eks,b:2=pan,a:3=wye,b:3=wye

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emitp >> "./output-regtest/emitp3/out.".$a.$b, (@a, @b) ./reg_test/input/abixy

cat ./output-regtest/emitp3/out.ekspan
a:1=pan,b:1=pan,a:2=eks,b:2=pan
a:1=pan,b:1=pan,a:2=eks,b:2=pan

cat ./output-regtest/emitp3/out.ekswye
a:1=pan,b:1=pan,a:2=eks,b:2=pan,a:3=wye,b:3=wye,a:4=eks,b:4=wye
a:1=pan,b:1=pan,a:2=eks,b:2=pan,a:3=wye,b:3=wye,a:4=eks,b:4=wye

cat ./output-regtest/emitp3/out.panpan
a:1=pan,b:1=pan
a:1=pan,b:1=pan

cat ./output-regtest/emitp3/out.wyewye
a:1=pan,b:1=pan,a:2=eks,b:2=pan,a:3=wye,b:3=wye
a:1=pan,b:1=pan,a:2=eks,b:2=pan,a:3=wye,b:3=wye

mlr head -n 4 then put -q -o json @a[NR]=$a; @b[NR]=$b; emitp > "./output-regtest/emitp3/out.".$a.$b, (@a, @b) ./reg_test/input/abixy

cat ./output-regtest/emitp3/out.ekspan
{ "a": {"1": "pan", "2": "eks" },"b": {"1": "pan", "2": "pan" } }

cat ./output-regtest/emitp3/out.ekswye
{ "a": {"1": "pan", "2": "eks", "3": "wye", "4": "eks" },"b": {"1": "pan", "2": "pan", "3": "wye", "4": "wye" } }

cat ./output-regtest/emitp3/out.panpan
{ "a": {"1": "pan" },"b": {"1": "pan" } }

cat ./output-regtest/emitp3/out.wyewye
{ "a": {"1": "pan", "2": "eks", "3": "wye" },"b": {"1": "pan", "2": "pan", "3": "wye" } }

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emitp | "tr \[a-z\] \[A-Z\]", (@a, @b) ./reg_test/input/abixy
A:1=PAN,B:1=PAN
A:1=PAN,B:1=PAN,A:2=EKS,B:2=PAN
A:1=PAN,B:1=PAN,A:2=EKS,B:2=PAN,A:3=WYE,B:3=WYE
A:1=PAN,B:1=PAN,A:2=EKS,B:2=PAN,A:3=WYE,B:3=WYE,A:4=EKS,B:4=WYE

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emitp > stdout, (@a, @b) ./reg_test/input/abixy
a:1=pan,b:1=pan
a:1=pan,b:1=pan,a:2=eks,b:2=pan
a:1=pan,b:1=pan,a:2=eks,b:2=pan,a:3=wye,b:3=wye
a:1=pan,b:1=pan,a:2=eks,b:2=pan,a:3=wye,b:3=wye,a:4=eks,b:4=wye

cat ./output-regtest/emitp3/err1

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emitp > stderr, (@a, @b) ./reg_test/input/abixy

cat ./output-regtest/emitp3/err2
a:1=pan,b:1=pan
a:1=pan,b:1=pan,a:2=eks,b:2=pan
a:1=pan,b:1=pan,a:2=eks,b:2=pan,a:3=wye,b:3=wye
a:1=pan,b:1=pan,a:2=eks,b:2=pan,a:3=wye,b:3=wye,a:4=eks,b:4=wye

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emitp > "./output-regtest/emitp4/out.".$a.$b, (@a, @b), "NR" ./reg_test/input/abixy

cat ./output-regtest/emitp4/out.ekspan
NR=1,a=pan,b=pan
NR=2,a=eks,b=pan

cat ./output-regtest/emitp4/out.ekswye
NR=1,a=pan,b=pan
NR=2,a=eks,b=pan
NR=3,a=wye,b=wye
NR=4,a=eks,b=wye

cat ./output-regtest/emitp4/out.panpan
NR=1,a=pan,b=pan

cat ./output-regtest/emitp4/out.wyewye
NR=1,a=pan,b=pan
NR=2,a=eks,b=pan
NR=3,a=wye,b=wye

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emitp > "./output-regtest/emitp4/out.".$a.$b, (@a, @b), "NR" ./reg_test/input/abixy

cat ./output-regtest/emitp4/out.ekspan
NR=1,a=pan,b=pan
NR=2,a=eks,b=pan

cat ./output-regtest/emitp4/out.ekswye
NR=1,a=pan,b=pan
NR=2,a=eks,b=pan
NR=3,a=wye,b=wye
NR=4,a=eks,b=wye

cat ./output-regtest/emitp4/out.panpan
NR=1,a=pan,b=pan

cat ./output-regtest/emitp4/out.wyewye
NR=1,a=pan,b=pan
NR=2,a=eks,b=pan
NR=3,a=wye,b=wye

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emitp >> "./output-regtest/emitp4/out.".$a.$b, (@a, @b), "NR" ./reg_test/input/abixy

cat ./output-regtest/emitp4/out.ekspan
NR=1,a=pan,b=pan
NR=2,a=eks,b=pan
NR=1,a=pan,b=pan
NR=2,a=eks,b=pan

cat ./output-regtest/emitp4/out.ekswye
NR=1,a=pan,b=pan
NR=2,a=eks,b=pan
NR=3,a=wye,b=wye
NR=4,a=eks,b=wye
NR=1,a=pan,b=pan
NR=2,a=eks,b=pan
NR=3,a=wye,b=wye
NR=4,a=eks,b=wye

cat ./output-regtest/emitp4/out.panpan
NR=1,a=pan,b=pan
NR=1,a=pan,b=pan

cat ./output-regtest/emitp4/out.wyewye
NR=1,a=pan,b=pan
NR=2,a=eks,b=pan
NR=3,a=wye,b=wye
NR=1,a=pan,b=pan
NR=2,a=eks,b=pan
NR=3,a=wye,b=wye

mlr head -n 4 then put -q -o json @a[NR]=$a; @b[NR]=$b; emitp > "./output-regtest/emitp4/out.".$a.$b, (@a, @b), "NR" ./reg_test/input/abixy

cat ./output-regtest/emitp4/out.ekspan
{ "NR": 1, "a": "pan", "b": "pan" }
{ "NR": 2, "a": "eks", "b": "pan" }

cat ./output-regtest/emitp4/out.ekswye
{ "NR": 1, "a": "pan", "b": "pan" }
{ "NR": 2, "a": "eks", "b": "pan" }
{ "NR": 3, "a": "wye", "b": "wye" }
{ "NR": 4, "a": "eks", "b": "wye" }

cat ./output-regtest/emitp4/out.panpan
{ "NR": 1, "a": "pan", "b": "pan" }

cat ./output-regtest/emitp4/out.wyewye
{ "NR": 1, "a": "pan", "b": "pan" }
{ "NR": 2, "a": "eks", "b": "pan" }
{ "NR": 3, "a": "wye", "b": "wye" }

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emitp | "tr \[a-z\] \[A-Z\]", (@a, @b), "NR" ./reg_test/input/abixy
NR=1,A=PAN,B=PAN
NR=1,A=PAN,B=PAN
NR=2,A=EKS,B=PAN
NR=1,A=PAN,B=PAN
NR=2,A=EKS,B=PAN
NR=3,A=WYE,B=WYE
NR=1,A=PAN,B=PAN
NR=2,A=EKS,B=PAN
NR=3,A=WYE,B=WYE
NR=4,A=EKS,B=WYE

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emitp > stdout, (@a, @b), "NR" ./reg_test/input/abixy
NR=1,a=pan,b=pan
NR=1,a=pan,b=pan
NR=2,a=eks,b=pan
NR=1,a=pan,b=pan
NR=2,a=eks,b=pan
NR=3,a=wye,b=wye
NR=1,a=pan,b=pan
NR=2,a=eks,b=pan
NR=3,a=wye,b=wye
NR=4,a=eks,b=wye

cat ./output-regtest/emitp4/err1

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emitp > stderr, (@a, @b), "NR" ./reg_test/input/abixy

cat ./output-regtest/emitp4/err2
NR=1,a=pan,b=pan
NR=1,a=pan,b=pan
NR=2,a=eks,b=pan
NR=1,a=pan,b=pan
NR=2,a=eks,b=pan
NR=3,a=wye,b=wye
NR=1,a=pan,b=pan
NR=2,a=eks,b=pan
NR=3,a=wye,b=wye
NR=4,a=eks,b=wye

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emitp > "./output-regtest/emitp5/out.".$a.$b, @* ./reg_test/input/abixy

cat ./output-regtest/emitp5/out.ekspan
a:1=pan,a:2=eks
b:1=pan,b:2=pan

cat ./output-regtest/emitp5/out.ekswye
a:1=pan,a:2=eks,a:3=wye,a:4=eks
b:1=pan,b:2=pan,b:3=wye,b:4=wye

cat ./output-regtest/emitp5/out.panpan
a:1=pan
b:1=pan

cat ./output-regtest/emitp5/out.wyewye
a:1=pan,a:2=eks,a:3=wye
b:1=pan,b:2=pan,b:3=wye

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emitp | "tr \[a-z\] \[A-Z\]", @* ./reg_test/input/abixy
A:1=PAN
B:1=PAN
A:1=PAN,A:2=EKS
B:1=PAN,B:2=PAN
A:1=PAN,A:2=EKS,A:3=WYE
B:1=PAN,B:2=PAN,B:3=WYE
A:1=PAN,A:2=EKS,A:3=WYE,A:4=EKS
B:1=PAN,B:2=PAN,B:3=WYE,B:4=WYE

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emitp > stdout, @* ./reg_test/input/abixy
a:1=pan
b:1=pan
a:1=pan,a:2=eks
b:1=pan,b:2=pan
a:1=pan,a:2=eks,a:3=wye
b:1=pan,b:2=pan,b:3=wye
a:1=pan,a:2=eks,a:3=wye,a:4=eks
b:1=pan,b:2=pan,b:3=wye,b:4=wye

cat ./output-regtest/emitp5/err1

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emitp > stderr, @* ./reg_test/input/abixy

cat ./output-regtest/emitp5/err2
a:1=pan
b:1=pan
a:1=pan,a:2=eks
b:1=pan,b:2=pan
a:1=pan,a:2=eks,a:3=wye
b:1=pan,b:2=pan,b:3=wye
a:1=pan,a:2=eks,a:3=wye,a:4=eks
b:1=pan,b:2=pan,b:3=wye,b:4=wye

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emitp > "./output-regtest/emitp6/out.".$a.$b, all ./reg_test/input/abixy

cat ./output-regtest/emitp6/out.ekspan
a:1=pan,a:2=eks
b:1=pan,b:2=pan

cat ./output-regtest/emitp6/out.ekswye
a:1=pan,a:2=eks,a:3=wye,a:4=eks
b:1=pan,b:2=pan,b:3=wye,b:4=wye

cat ./output-regtest/emitp6/out.panpan
a:1=pan
b:1=pan

cat ./output-regtest/emitp6/out.wyewye
a:1=pan,a:2=eks,a:3=wye
b:1=pan,b:2=pan,b:3=wye

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emitp | "tr \[a-z\] \[A-Z\]", all ./reg_test/input/abixy
A:1=PAN
B:1=PAN
A:1=PAN,A:2=EKS
B:1=PAN,B:2=PAN
A:1=PAN,A:2=EKS,A:3=WYE
B:1=PAN,B:2=PAN,B:3=WYE
A:1=PAN,A:2=EKS,A:3=WYE,A:4=EKS
B:1=PAN,B:2=PAN,B:3=WYE,B:4=WYE

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emitp > stdout, all ./reg_test/input/abixy
a:1=pan
b:1=pan
a:1=pan,a:2=eks
b:1=pan,b:2=pan
a:1=pan,a:2=eks,a:3=wye
b:1=pan,b:2=pan,b:3=wye
a:1=pan,a:2=eks,a:3=wye,a:4=eks
b:1=pan,b:2=pan,b:3=wye,b:4=wye

cat ./output-regtest/emitp6/err1

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emitp > stderr, all ./reg_test/input/abixy

cat ./output-regtest/emitp6/err2
a:1=pan
b:1=pan
a:1=pan,a:2=eks
b:1=pan,b:2=pan
a:1=pan,a:2=eks,a:3=wye
b:1=pan,b:2=pan,b:3=wye
a:1=pan,a:2=eks,a:3=wye,a:4=eks
b:1=pan,b:2=pan,b:3=wye,b:4=wye

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emitp > "./output-regtest/emitp7/out.".$a.$b, @*, "NR" ./reg_test/input/abixy

cat ./output-regtest/emitp7/out.ekspan
NR=1,a=pan
NR=2,a=eks
NR=1,b=pan
NR=2,b=pan

cat ./output-regtest/emitp7/out.ekswye
NR=1,a=pan
NR=2,a=eks
NR=3,a=wye
NR=4,a=eks
NR=1,b=pan
NR=2,b=pan
NR=3,b=wye
NR=4,b=wye

cat ./output-regtest/emitp7/out.panpan
NR=1,a=pan
NR=1,b=pan

cat ./output-regtest/emitp7/out.wyewye
NR=1,a=pan
NR=2,a=eks
NR=3,a=wye
NR=1,b=pan
NR=2,b=pan
NR=3,b=wye

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emitp | "tr \[a-z\] \[A-Z\]", @*, "NR" ./reg_test/input/abixy
NR=1,A=PAN
NR=1,B=PAN
NR=1,A=PAN
NR=2,A=EKS
NR=1,B=PAN
NR=2,B=PAN
NR=1,A=PAN
NR=2,A=EKS
NR=3,A=WYE
NR=1,B=PAN
NR=2,B=PAN
NR=3,B=WYE
NR=1,A=PAN
NR=2,A=EKS
NR=3,A=WYE
NR=4,A=EKS
NR=1,B=PAN
NR=2,B=PAN
NR=3,B=WYE
NR=4,B=WYE

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emitp > stdout, @*, "NR" ./reg_test/input/abixy
NR=1,a=pan
NR=1,b=pan
NR=1,a=pan
NR=2,a=eks
NR=1,b=pan
NR=2,b=pan
NR=1,a=pan
NR=2,a=eks
NR=3,a=wye
NR=1,b=pan
NR=2,b=pan
NR=3,b=wye
NR=1,a=pan
NR=2,a=eks
NR=3,a=wye
NR=4,a=eks
NR=1,b=pan
NR=2,b=pan
NR=3,b=wye
NR=4,b=wye

cat ./output-regtest/emitp7/err1

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emitp > stderr, @*, "NR" ./reg_test/input/abixy

cat ./output-regtest/emitp7/err2
NR=1,a=pan
NR=1,b=pan
NR=1,a=pan
NR=2,a=eks
NR=1,b=pan
NR=2,b=pan
NR=1,a=pan
NR=2,a=eks
NR=3,a=wye
NR=1,b=pan
NR=2,b=pan
NR=3,b=wye
NR=1,a=pan
NR=2,a=eks
NR=3,a=wye
NR=4,a=eks
NR=1,b=pan
NR=2,b=pan
NR=3,b=wye
NR=4,b=wye

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emitp > "./output-regtest/emitp8/out.".$a.$b, all, "NR" ./reg_test/input/abixy

cat ./output-regtest/emitp8/out.ekspan
NR=1,a=pan
NR=2,a=eks
NR=1,b=pan
NR=2,b=pan

cat ./output-regtest/emitp8/out.ekswye
NR=1,a=pan
NR=2,a=eks
NR=3,a=wye
NR=4,a=eks
NR=1,b=pan
NR=2,b=pan
NR=3,b=wye
NR=4,b=wye

cat ./output-regtest/emitp8/out.panpan
NR=1,a=pan
NR=1,b=pan

cat ./output-regtest/emitp8/out.wyewye
NR=1,a=pan
NR=2,a=eks
NR=3,a=wye
NR=1,b=pan
NR=2,b=pan
NR=3,b=wye

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emitp | "tr \[a-z\] \[A-Z\]", all, "NR" ./reg_test/input/abixy
NR=1,A=PAN
NR=1,B=PAN
NR=1,A=PAN
NR=2,A=EKS
NR=1,B=PAN
NR=2,B=PAN
NR=1,A=PAN
NR=2,A=EKS
NR=3,A=WYE
NR=1,B=PAN
NR=2,B=PAN
NR=3,B=WYE
NR=1,A=PAN
NR=2,A=EKS
NR=3,A=WYE
NR=4,A=EKS
NR=1,B=PAN
NR=2,B=PAN
NR=3,B=WYE
NR=4,B=WYE

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emitp > stdout, all, "NR" ./reg_test/input/abixy
NR=1,a=pan
NR=1,b=pan
NR=1,a=pan
NR=2,a=eks
NR=1,b=pan
NR=2,b=pan
NR=1,a=pan
NR=2,a=eks
NR=3,a=wye
NR=1,b=pan
NR=2,b=pan
NR=3,b=wye
NR=1,a=pan
NR=2,a=eks
NR=3,a=wye
NR=4,a=eks
NR=1,b=pan
NR=2,b=pan
NR=3,b=wye
NR=4,b=wye

cat ./output-regtest/emitp8/err1

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emitp > stderr, all, "NR" ./reg_test/input/abixy

cat ./output-regtest/emitp8/err2
NR=1,a=pan
NR=1,b=pan
NR=1,a=pan
NR=2,a=eks
NR=1,b=pan
NR=2,b=pan
NR=1,a=pan
NR=2,a=eks
NR=3,a=wye
NR=1,b=pan
NR=2,b=pan
NR=3,b=wye
NR=1,a=pan
NR=2,a=eks
NR=3,a=wye
NR=4,a=eks
NR=1,b=pan
NR=2,b=pan
NR=3,b=wye
NR=4,b=wye


================================================================
DSL EMIT REDIRECTS

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emit > "./output-regtest/emit1/out.".$a.$b, @a ./reg_test/input/abixy

cat ./output-regtest/emit1/out.ekspan
1=pan,2=eks

cat ./output-regtest/emit1/out.ekswye
1=pan,2=eks,3=wye,4=eks

cat ./output-regtest/emit1/out.panpan
1=pan

cat ./output-regtest/emit1/out.wyewye
1=pan,2=eks,3=wye

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emit > "./output-regtest/emit1/out.".$a.$b, @a ./reg_test/input/abixy

cat ./output-regtest/emit1/out.ekspan
1=pan,2=eks

cat ./output-regtest/emit1/out.ekswye
1=pan,2=eks,3=wye,4=eks

cat ./output-regtest/emit1/out.panpan
1=pan

cat ./output-regtest/emit1/out.wyewye
1=pan,2=eks,3=wye

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emit >> "./output-regtest/emit1/out.".$a.$b, @a ./reg_test/input/abixy

cat ./output-regtest/emit1/out.ekspan
1=pan,2=eks
1=pan,2=eks

cat ./output-regtest/emit1/out.ekswye
1=pan,2=eks,3=wye,4=eks
1=pan,2=eks,3=wye,4=eks

cat ./output-regtest/emit1/out.panpan
1=pan
1=pan

cat ./output-regtest/emit1/out.wyewye
1=pan,2=eks,3=wye
1=pan,2=eks,3=wye

mlr head -n 4 then put -q -o json @a[NR]=$a; @b[NR]=$b; emit > "./output-regtest/emit1/out.".$a.$b, @a ./reg_test/input/abixy

cat ./output-regtest/emit1/out.ekspan
{ "1": "pan", "2": "eks" }

cat ./output-regtest/emit1/out.ekswye
{ "1": "pan", "2": "eks", "3": "wye", "4": "eks" }

cat ./output-regtest/emit1/out.panpan
{ "1": "pan" }

cat ./output-regtest/emit1/out.wyewye
{ "1": "pan", "2": "eks", "3": "wye" }

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emit | "tr \[a-z\] \[A-Z\]", @a ./reg_test/input/abixy
1=PAN
1=PAN,2=EKS
1=PAN,2=EKS,3=WYE
1=PAN,2=EKS,3=WYE,4=EKS

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emit > stdout, @a ./reg_test/input/abixy
1=pan
1=pan,2=eks
1=pan,2=eks,3=wye
1=pan,2=eks,3=wye,4=eks

cat ./output-regtest/emit1/err1

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emit > stderr, @a ./reg_test/input/abixy

cat ./output-regtest/emit1/err2
1=pan
1=pan,2=eks
1=pan,2=eks,3=wye
1=pan,2=eks,3=wye,4=eks

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emit > "./output-regtest/emit2/out.".$a.$b, @a, "NR" ./reg_test/input/abixy

cat ./output-regtest/emit2/out.ekspan
NR=1,a=pan
NR=2,a=eks

cat ./output-regtest/emit2/out.ekswye
NR=1,a=pan
NR=2,a=eks
NR=3,a=wye
NR=4,a=eks

cat ./output-regtest/emit2/out.panpan
NR=1,a=pan

cat ./output-regtest/emit2/out.wyewye
NR=1,a=pan
NR=2,a=eks
NR=3,a=wye

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emit > "./output-regtest/emit2/out.".$a.$b, @a, "NR" ./reg_test/input/abixy

cat ./output-regtest/emit2/out.ekspan
NR=1,a=pan
NR=2,a=eks

cat ./output-regtest/emit2/out.ekswye
NR=1,a=pan
NR=2,a=eks
NR=3,a=wye
NR=4,a=eks

cat ./output-regtest/emit2/out.panpan
NR=1,a=pan

cat ./output-regtest/emit2/out.wyewye
NR=1,a=pan
NR=2,a=eks
NR=3,a=wye

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emit >> "./output-regtest/emit2/out.".$a.$b, @a, "NR" ./reg_test/input/abixy

cat ./output-regtest/emit2/out.ekspan
NR=1,a=pan
NR=2,a=eks
NR=1,a=pan
NR=2,a=eks

cat ./output-regtest/emit2/out.ekswye
NR=1,a=pan
NR=2,a=eks
NR=3,a=wye
NR=4,a=eks
NR=1,a=pan
NR=2,a=eks
NR=3,a=wye
NR=4,a=eks

cat ./output-regtest/emit2/out.panpan
NR=1,a=pan
NR=1,a=pan

cat ./output-regtest/emit2/out.wyewye
NR=1,a=pan
NR=2,a=eks
NR=3,a=wye
NR=1,a=pan
NR=2,a=eks
NR=3,a=wye

mlr head -n 4 then put -q -o pprint @a[NR]=$a; @b[NR]=$b; emit > "./output-regtest/emit2/out.".$a.$b, @a, "NR" ./reg_test/input/abixy

cat ./output-regtest/emit2/out.ekspan
NR a
1  pan
2  eks

cat ./output-regtest/emit2/out.ekswye
NR a
1  pan
2  eks
3  wye
4  eks

cat ./output-regtest/emit2/out.panpan
NR a
1  pan

cat ./output-regtest/emit2/out.wyewye
NR a
1  pan
2  eks
3  wye

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emit | "tr \[a-z\] \[A-Z\]", @a, "NR" ./reg_test/input/abixy
NR=1,A=PAN
NR=1,A=PAN
NR=2,A=EKS
NR=1,A=PAN
NR=2,A=EKS
NR=3,A=WYE
NR=1,A=PAN
NR=2,A=EKS
NR=3,A=WYE
NR=4,A=EKS

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emit > stdout, @a, "NR" ./reg_test/input/abixy
NR=1,a=pan
NR=1,a=pan
NR=2,a=eks
NR=1,a=pan
NR=2,a=eks
NR=3,a=wye
NR=1,a=pan
NR=2,a=eks
NR=3,a=wye
NR=4,a=eks

cat ./output-regtest/emit2/err1

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emit > stderr, @a, "NR" ./reg_test/input/abixy

cat ./output-regtest/emit2/err2
NR=1,a=pan
NR=1,a=pan
NR=2,a=eks
NR=1,a=pan
NR=2,a=eks
NR=3,a=wye
NR=1,a=pan
NR=2,a=eks
NR=3,a=wye
NR=4,a=eks

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emit > "./output-regtest/emit3/out.".$a.$b, (@a, @b) ./reg_test/input/abixy

cat ./output-regtest/emit3/out.ekspan
1=pan,2=pan

cat ./output-regtest/emit3/out.ekswye
1=pan,2=pan,3=wye,4=wye

cat ./output-regtest/emit3/out.panpan
1=pan

cat ./output-regtest/emit3/out.wyewye
1=pan,2=pan,3=wye

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emit > "./output-regtest/emit3/out.".$a.$b, (@a, @b) ./reg_test/input/abixy

cat ./output-regtest/emit3/out.ekspan
1=pan,2=pan

cat ./output-regtest/emit3/out.ekswye
1=pan,2=pan,3=wye,4=wye

cat ./output-regtest/emit3/out.panpan
1=pan

cat ./output-regtest/emit3/out.wyewye
1=pan,2=pan,3=wye

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emit >> "./output-regtest/emit3/out.".$a.$b, (@a, @b) ./reg_test/input/abixy

cat ./output-regtest/emit3/out.ekspan
1=pan,2=pan
1=pan,2=pan

cat ./output-regtest/emit3/out.ekswye
1=pan,2=pan,3=wye,4=wye
1=pan,2=pan,3=wye,4=wye

cat ./output-regtest/emit3/out.panpan
1=pan
1=pan

cat ./output-regtest/emit3/out.wyewye
1=pan,2=pan,3=wye
1=pan,2=pan,3=wye

mlr head -n 4 then put -q --oxtab @a[NR]=$a; @b[NR]=$b; emit > "./output-regtest/emit3/out.".$a.$b, (@a, @b) ./reg_test/input/abixy

cat ./output-regtest/emit3/out.ekspan
1 pan
2 pan

cat ./output-regtest/emit3/out.ekswye
1 pan
2 pan
3 wye
4 wye

cat ./output-regtest/emit3/out.panpan
1 pan

cat ./output-regtest/emit3/out.wyewye
1 pan
2 pan
3 wye

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emit | "tr \[a-z\] \[A-Z\]", (@a, @b) ./reg_test/input/abixy
1=PAN
1=PAN,2=PAN
1=PAN,2=PAN,3=WYE
1=PAN,2=PAN,3=WYE,4=WYE

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emit > stdout, (@a, @b) ./reg_test/input/abixy
1=pan
1=pan,2=pan
1=pan,2=pan,3=wye
1=pan,2=pan,3=wye,4=wye

cat ./output-regtest/emit3/err1

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emit > stderr, (@a, @b) ./reg_test/input/abixy

cat ./output-regtest/emit3/err2
1=pan
1=pan,2=pan
1=pan,2=pan,3=wye
1=pan,2=pan,3=wye,4=wye

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emit > "./output-regtest/emit4/out.".$a.$b, (@a, @b), "NR" ./reg_test/input/abixy

cat ./output-regtest/emit4/out.ekspan
NR=1,a=pan,b=pan
NR=2,a=eks,b=pan

cat ./output-regtest/emit4/out.ekswye
NR=1,a=pan,b=pan
NR=2,a=eks,b=pan
NR=3,a=wye,b=wye
NR=4,a=eks,b=wye

cat ./output-regtest/emit4/out.panpan
NR=1,a=pan,b=pan

cat ./output-regtest/emit4/out.wyewye
NR=1,a=pan,b=pan
NR=2,a=eks,b=pan
NR=3,a=wye,b=wye

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emit > "./output-regtest/emit4/out.".$a.$b, (@a, @b), "NR" ./reg_test/input/abixy

cat ./output-regtest/emit4/out.ekspan
NR=1,a=pan,b=pan
NR=2,a=eks,b=pan

cat ./output-regtest/emit4/out.ekswye
NR=1,a=pan,b=pan
NR=2,a=eks,b=pan
NR=3,a=wye,b=wye
NR=4,a=eks,b=wye

cat ./output-regtest/emit4/out.panpan
NR=1,a=pan,b=pan

cat ./output-regtest/emit4/out.wyewye
NR=1,a=pan,b=pan
NR=2,a=eks,b=pan
NR=3,a=wye,b=wye

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emit >> "./output-regtest/emit4/out.".$a.$b, (@a, @b), "NR" ./reg_test/input/abixy

cat ./output-regtest/emit4/out.ekspan
NR=1,a=pan,b=pan
NR=2,a=eks,b=pan
NR=1,a=pan,b=pan
NR=2,a=eks,b=pan

cat ./output-regtest/emit4/out.ekswye
NR=1,a=pan,b=pan
NR=2,a=eks,b=pan
NR=3,a=wye,b=wye
NR=4,a=eks,b=wye
NR=1,a=pan,b=pan
NR=2,a=eks,b=pan
NR=3,a=wye,b=wye
NR=4,a=eks,b=wye

cat ./output-regtest/emit4/out.panpan
NR=1,a=pan,b=pan
NR=1,a=pan,b=pan

cat ./output-regtest/emit4/out.wyewye
NR=1,a=pan,b=pan
NR=2,a=eks,b=pan
NR=3,a=wye,b=wye
NR=1,a=pan,b=pan
NR=2,a=eks,b=pan
NR=3,a=wye,b=wye

mlr head -n 4 then put -q --ojson @a[NR]=$a; @b[NR]=$b; emit > "./output-regtest/emit4/out.".$a.$b, (@a, @b), "NR" ./reg_test/input/abixy

cat ./output-regtest/emit4/out.ekspan
{ "NR": 1, "a": "pan", "b": "pan" }
{ "NR": 2, "a": "eks", "b": "pan" }

cat ./output-regtest/emit4/out.ekswye
{ "NR": 1, "a": "pan", "b": "pan" }
{ "NR": 2, "a": "eks", "b": "pan" }
{ "NR": 3, "a": "wye", "b": "wye" }
{ "NR": 4, "a": "eks", "b": "wye" }

cat ./output-regtest/emit4/out.panpan
{ "NR": 1, "a": "pan", "b": "pan" }

cat ./output-regtest/emit4/out.wyewye
{ "NR": 1, "a": "pan", "b": "pan" }
{ "NR": 2, "a": "eks", "b": "pan" }
{ "NR": 3, "a": "wye", "b": "wye" }

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emit | "tr \[a-z\] \[A-Z\]", (@a, @b), "NR" ./reg_test/input/abixy
NR=1,A=PAN,B=PAN
NR=1,A=PAN,B=PAN
NR=2,A=EKS,B=PAN
NR=1,A=PAN,B=PAN
NR=2,A=EKS,B=PAN
NR=3,A=WYE,B=WYE
NR=1,A=PAN,B=PAN
NR=2,A=EKS,B=PAN
NR=3,A=WYE,B=WYE
NR=4,A=EKS,B=WYE

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emit > stdout, (@a, @b), "NR" ./reg_test/input/abixy
NR=1,a=pan,b=pan
NR=1,a=pan,b=pan
NR=2,a=eks,b=pan
NR=1,a=pan,b=pan
NR=2,a=eks,b=pan
NR=3,a=wye,b=wye
NR=1,a=pan,b=pan
NR=2,a=eks,b=pan
NR=3,a=wye,b=wye
NR=4,a=eks,b=wye

cat ./output-regtest/emit4/err1

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emit > stderr, (@a, @b), "NR" ./reg_test/input/abixy

cat ./output-regtest/emit4/err2
NR=1,a=pan,b=pan
NR=1,a=pan,b=pan
NR=2,a=eks,b=pan
NR=1,a=pan,b=pan
NR=2,a=eks,b=pan
NR=3,a=wye,b=wye
NR=1,a=pan,b=pan
NR=2,a=eks,b=pan
NR=3,a=wye,b=wye
NR=4,a=eks,b=wye

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emit > "./output-regtest/emit5/out.".$a.$b, @* ./reg_test/input/abixy

cat ./output-regtest/emit5/out.ekspan
1=pan,2=eks
1=pan,2=pan

cat ./output-regtest/emit5/out.ekswye
1=pan,2=eks,3=wye,4=eks
1=pan,2=pan,3=wye,4=wye

cat ./output-regtest/emit5/out.panpan
1=pan
1=pan

cat ./output-regtest/emit5/out.wyewye
1=pan,2=eks,3=wye
1=pan,2=pan,3=wye

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emit | "tr \[a-z\] \[A-Z\]", @* ./reg_test/input/abixy
1=PAN
1=PAN
1=PAN,2=EKS
1=PAN,2=PAN
1=PAN,2=EKS,3=WYE
1=PAN,2=PAN,3=WYE
1=PAN,2=EKS,3=WYE,4=EKS
1=PAN,2=PAN,3=WYE,4=WYE

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emit > stdout, @* ./reg_test/input/abixy
1=pan
1=pan
1=pan,2=eks
1=pan,2=pan
1=pan,2=eks,3=wye
1=pan,2=pan,3=wye
1=pan,2=eks,3=wye,4=eks
1=pan,2=pan,3=wye,4=wye

cat ./output-regtest/emit5/err1

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emit > stderr, @* ./reg_test/input/abixy

cat ./output-regtest/emit5/err2
1=pan
1=pan
1=pan,2=eks
1=pan,2=pan
1=pan,2=eks,3=wye
1=pan,2=pan,3=wye
1=pan,2=eks,3=wye,4=eks
1=pan,2=pan,3=wye,4=wye

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emit > "./output-regtest/emit6/out.".$a.$b, all ./reg_test/input/abixy

cat ./output-regtest/emit6/out.ekspan
1=pan,2=eks
1=pan,2=pan

cat ./output-regtest/emit6/out.ekswye
1=pan,2=eks,3=wye,4=eks
1=pan,2=pan,3=wye,4=wye

cat ./output-regtest/emit6/out.panpan
1=pan
1=pan

cat ./output-regtest/emit6/out.wyewye
1=pan,2=eks,3=wye
1=pan,2=pan,3=wye

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emit | "tr \[a-z\] \[A-Z\]", all ./reg_test/input/abixy
1=PAN
1=PAN
1=PAN,2=EKS
1=PAN,2=PAN
1=PAN,2=EKS,3=WYE
1=PAN,2=PAN,3=WYE
1=PAN,2=EKS,3=WYE,4=EKS
1=PAN,2=PAN,3=WYE,4=WYE

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emit > stdout, all ./reg_test/input/abixy
1=pan
1=pan
1=pan,2=eks
1=pan,2=pan
1=pan,2=eks,3=wye
1=pan,2=pan,3=wye
1=pan,2=eks,3=wye,4=eks
1=pan,2=pan,3=wye,4=wye

cat ./output-regtest/emit6/err1

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emit > stderr, all ./reg_test/input/abixy

cat ./output-regtest/emit6/err2
1=pan
1=pan
1=pan,2=eks
1=pan,2=pan
1=pan,2=eks,3=wye
1=pan,2=pan,3=wye
1=pan,2=eks,3=wye,4=eks
1=pan,2=pan,3=wye,4=wye

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emit > "./output-regtest/emit7/out.".$a.$b, @*, "NR" ./reg_test/input/abixy

cat ./output-regtest/emit7/out.ekspan
NR=1,a=pan
NR=2,a=eks
NR=1,b=pan
NR=2,b=pan

cat ./output-regtest/emit7/out.ekswye
NR=1,a=pan
NR=2,a=eks
NR=3,a=wye
NR=4,a=eks
NR=1,b=pan
NR=2,b=pan
NR=3,b=wye
NR=4,b=wye

cat ./output-regtest/emit7/out.panpan
NR=1,a=pan
NR=1,b=pan

cat ./output-regtest/emit7/out.wyewye
NR=1,a=pan
NR=2,a=eks
NR=3,a=wye
NR=1,b=pan
NR=2,b=pan
NR=3,b=wye

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emit | "tr \[a-z\] \[A-Z\]", @*, "NR" ./reg_test/input/abixy
NR=1,A=PAN
NR=1,B=PAN
NR=1,A=PAN
NR=2,A=EKS
NR=1,B=PAN
NR=2,B=PAN
NR=1,A=PAN
NR=2,A=EKS
NR=3,A=WYE
NR=1,B=PAN
NR=2,B=PAN
NR=3,B=WYE
NR=1,A=PAN
NR=2,A=EKS
NR=3,A=WYE
NR=4,A=EKS
NR=1,B=PAN
NR=2,B=PAN
NR=3,B=WYE
NR=4,B=WYE

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emit > stdout, @*, "NR" ./reg_test/input/abixy
NR=1,a=pan
NR=1,b=pan
NR=1,a=pan
NR=2,a=eks
NR=1,b=pan
NR=2,b=pan
NR=1,a=pan
NR=2,a=eks
NR=3,a=wye
NR=1,b=pan
NR=2,b=pan
NR=3,b=wye
NR=1,a=pan
NR=2,a=eks
NR=3,a=wye
NR=4,a=eks
NR=1,b=pan
NR=2,b=pan
NR=3,b=wye
NR=4,b=wye

cat ./output-regtest/emit7/err1

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emit > stderr, @*, "NR" ./reg_test/input/abixy

cat ./output-regtest/emit7/err2
NR=1,a=pan
NR=1,b=pan
NR=1,a=pan
NR=2,a=eks
NR=1,b=pan
NR=2,b=pan
NR=1,a=pan
NR=2,a=eks
NR=3,a=wye
NR=1,b=pan
NR=2,b=pan
NR=3,b=wye
NR=1,a=pan
NR=2,a=eks
NR=3,a=wye
NR=4,a=eks
NR=1,b=pan
NR=2,b=pan
NR=3,b=wye
NR=4,b=wye

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emit > "./output-regtest/emit8/out.".$a.$b, all, "NR" ./reg_test/input/abixy

cat ./output-regtest/emit8/out.ekspan
NR=1,a=pan
NR=2,a=eks
NR=1,b=pan
NR=2,b=pan

cat ./output-regtest/emit8/out.ekswye
NR=1,a=pan
NR=2,a=eks
NR=3,a=wye
NR=4,a=eks
NR=1,b=pan
NR=2,b=pan
NR=3,b=wye
NR=4,b=wye

cat ./output-regtest/emit8/out.panpan
NR=1,a=pan
NR=1,b=pan

cat ./output-regtest/emit8/out.wyewye
NR=1,a=pan
NR=2,a=eks
NR=3,a=wye
NR=1,b=pan
NR=2,b=pan
NR=3,b=wye

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emit | "tr \[a-z\] \[A-Z\]", all, "NR" ./reg_test/input/abixy
NR=1,A=PAN
NR=1,B=PAN
NR=1,A=PAN
NR=2,A=EKS
NR=1,B=PAN
NR=2,B=PAN
NR=1,A=PAN
NR=2,A=EKS
NR=3,A=WYE
NR=1,B=PAN
NR=2,B=PAN
NR=3,B=WYE
NR=1,A=PAN
NR=2,A=EKS
NR=3,A=WYE
NR=4,A=EKS
NR=1,B=PAN
NR=2,B=PAN
NR=3,B=WYE
NR=4,B=WYE

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emit > stdout, all, "NR" ./reg_test/input/abixy
NR=1,a=pan
NR=1,b=pan
NR=1,a=pan
NR=2,a=eks
NR=1,b=pan
NR=2,b=pan
NR=1,a=pan
NR=2,a=eks
NR=3,a=wye
NR=1,b=pan
NR=2,b=pan
NR=3,b=wye
NR=1,a=pan
NR=2,a=eks
NR=3,a=wye
NR=4,a=eks
NR=1,b=pan
NR=2,b=pan
NR=3,b=wye
NR=4,b=wye

cat ./output-regtest/emit8/err1

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emit > stderr, all, "NR" ./reg_test/input/abixy

cat ./output-regtest/emit8/err2
NR=1,a=pan
NR=1,b=pan
NR=1,a=pan
NR=2,a=eks
NR=1,b=pan
NR=2,b=pan
NR=1,a=pan
NR=2,a=eks
NR=3,a=wye
NR=1,b=pan
NR=2,b=pan
NR=3,b=wye
NR=1,a=pan
NR=2,a=eks
NR=3,a=wye
NR=4,a=eks
NR=1,b=pan
NR=2,b=pan
NR=3,b=wye
NR=4,b=wye

mlr head -n 4 then put -q emit > "./output-regtest/emit9/out.".$a.$b, $* ./reg_test/input/abixy

cat ./output-regtest/emit9/out.ekspan
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797

cat ./output-regtest/emit9/out.ekswye
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463

cat ./output-regtest/emit9/out.panpan
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533

cat ./output-regtest/emit9/out.wyewye
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emit | "tr \[a-z\] \[A-Z\]", $*, "NR" ./reg_test/input/abixy
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

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emit > stdout, $*, "NR" ./reg_test/input/abixy
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

cat ./output-regtest/emit9/err1

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emit > stderr, $*, "NR" ./reg_test/input/abixy

cat ./output-regtest/emit9/err2
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

mlr head -n 4 then put -q emit > "./output-regtest/emit10/out.".$a.$b, mapexcept($*, "a", "b") ./reg_test/input/abixy

cat ./output-regtest/emit10/out.ekspan
i=2,x=0.7586799647899636,y=0.5221511083334797

cat ./output-regtest/emit10/out.ekswye
i=4,x=0.38139939387114097,y=0.13418874328430463

cat ./output-regtest/emit10/out.panpan
i=1,x=0.3467901443380824,y=0.7268028627434533

cat ./output-regtest/emit10/out.wyewye
i=3,x=0.20460330576630303,y=0.33831852551664776

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emit | "tr \[a-z\] \[A-Z\]", mapexcept($*, "a", "b"), "NR" ./reg_test/input/abixy
NR=I,_=1
NR=X,_=0.3467901443380824
NR=Y,_=0.7268028627434533
NR=I,_=2
NR=X,_=0.7586799647899636
NR=Y,_=0.5221511083334797
NR=I,_=3
NR=X,_=0.20460330576630303
NR=Y,_=0.33831852551664776
NR=I,_=4
NR=X,_=0.38139939387114097
NR=Y,_=0.13418874328430463

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emit > stdout, mapexcept($*, "a", "b"), "NR" ./reg_test/input/abixy
NR=i,_=1
NR=x,_=0.3467901443380824
NR=y,_=0.7268028627434533
NR=i,_=2
NR=x,_=0.7586799647899636
NR=y,_=0.5221511083334797
NR=i,_=3
NR=x,_=0.20460330576630303
NR=y,_=0.33831852551664776
NR=i,_=4
NR=x,_=0.38139939387114097
NR=y,_=0.13418874328430463

cat ./output-regtest/emit10/err1

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emit > stderr, mapexcept($*, "a", "b"), "NR" ./reg_test/input/abixy

cat ./output-regtest/emit10/err2
NR=i,_=1
NR=x,_=0.3467901443380824
NR=y,_=0.7268028627434533
NR=i,_=2
NR=x,_=0.7586799647899636
NR=y,_=0.5221511083334797
NR=i,_=3
NR=x,_=0.20460330576630303
NR=y,_=0.33831852551664776
NR=i,_=4
NR=x,_=0.38139939387114097
NR=y,_=0.13418874328430463


================================================================
USER-DEFINED FUNCTIONS AND SUBROUTINES

mlr --opprint --from ./reg_test/input/abixy put func f(u,v){return u+v} $o=f(NR*1000,$x)
a   b   i  x                   y                   o
pan pan 1  0.3467901443380824  0.7268028627434533  1000.346790
eks pan 2  0.7586799647899636  0.5221511083334797  2000.758680
wye wye 3  0.20460330576630303 0.33831852551664776 3000.204603
eks wye 4  0.38139939387114097 0.13418874328430463 4000.381399
wye pan 5  0.5732889198020006  0.8636244699032729  5000.573289
zee pan 6  0.5271261600918548  0.49322128674835697 6000.527126
eks zee 7  0.6117840605678454  0.1878849191181694  7000.611784
zee wye 8  0.5985540091064224  0.976181385699006   8000.598554
hat wye 9  0.03144187646093577 0.7495507603507059  9000.031442
pan wye 10 0.5026260055412137  0.9526183602969864  10000.502626

mlr --opprint --from ./reg_test/input/abixy put func f(x,y,z){$nnn=999; int n=10; return $y} $o=f($i,$x,$y)
mlr: assignments to $-variables are not valid within func blocks.

mlr --opprint --from ./reg_test/input/abixy put subr s(a,b) { $[a] = b } call s("W", 999)
a   b   i  x                   y                   W
pan pan 1  0.3467901443380824  0.7268028627434533  999
eks pan 2  0.7586799647899636  0.5221511083334797  999
wye wye 3  0.20460330576630303 0.33831852551664776 999
eks wye 4  0.38139939387114097 0.13418874328430463 999
wye pan 5  0.5732889198020006  0.8636244699032729  999
zee pan 6  0.5271261600918548  0.49322128674835697 999
eks zee 7  0.6117840605678454  0.1878849191181694  999
zee wye 8  0.5985540091064224  0.976181385699006   999
hat wye 9  0.03144187646093577 0.7495507603507059  999
pan wye 10 0.5026260055412137  0.9526183602969864  999

mlr --opprint --from ./reg_test/input/abixy put 
  func f(x,y,z) {
    return x + y + z
  }
  subr s(a,b) {
      $[a] = b;
      $DID = "YES";
  }
  $o = f($x, $y, $i);
  call s("W", NR);

a   b   i  x                   y                   o         W  DID
pan pan 1  0.3467901443380824  0.7268028627434533  2.073593  1  YES
eks pan 2  0.7586799647899636  0.5221511083334797  3.280831  2  YES
wye wye 3  0.20460330576630303 0.33831852551664776 3.542922  3  YES
eks wye 4  0.38139939387114097 0.13418874328430463 4.515588  4  YES
wye pan 5  0.5732889198020006  0.8636244699032729  6.436913  5  YES
zee pan 6  0.5271261600918548  0.49322128674835697 7.020347  6  YES
eks zee 7  0.6117840605678454  0.1878849191181694  7.799669  7  YES
zee wye 8  0.5985540091064224  0.976181385699006   9.574735  8  YES
hat wye 9  0.03144187646093577 0.7495507603507059  9.780993  9  YES
pan wye 10 0.5026260055412137  0.9526183602969864  11.455244 10 YES

mlr --opprint --from ./reg_test/input/abixy put 
  func f(x,y,z) {
    return x + y + z
  }
  subr s(a,b) {
      $[a] = b;
      return;
      $DID = "YES";
  }
  $o = f($x, $y, $i);
  call s("W", NR);

a   b   i  x                   y                   o         W
pan pan 1  0.3467901443380824  0.7268028627434533  2.073593  1
eks pan 2  0.7586799647899636  0.5221511083334797  3.280831  2
wye wye 3  0.20460330576630303 0.33831852551664776 3.542922  3
eks wye 4  0.38139939387114097 0.13418874328430463 4.515588  4
wye pan 5  0.5732889198020006  0.8636244699032729  6.436913  5
zee pan 6  0.5271261600918548  0.49322128674835697 7.020347  6
eks zee 7  0.6117840605678454  0.1878849191181694  7.799669  7
zee wye 8  0.5985540091064224  0.976181385699006   9.574735  8
hat wye 9  0.03144187646093577 0.7495507603507059  9.780993  9
pan wye 10 0.5026260055412137  0.9526183602969864  11.455244 10

mlr --from ./reg_test/input/abixy put 
  func f(x,y,z) {
    return x + y + z
  }
  subr s(a,b) {
      $[a] = b;
      return 1 # subr must not return value
  }
  $o = f($x, $y, $i);
  call s("W", NR);

mlr: return statements within user-defined subroutines must not return a value.

mlr --from ./reg_test/input/abixy put 
  func f(x,y,z) {
    return # func must return value
  }
  subr s(a,b) {
      $[a] = b;
  }
  $o = f($x, $y, $i);
  call s("W", NR);

mlr: return statements within user-defined functions must return a value.

mlr --from ./reg_test/input/abixy --opprint put func f(x) {return k} for (k,v in $*) {$o=f($x)}
a   b   i  x                   y
pan pan 1  0.3467901443380824  0.7268028627434533
eks pan 2  0.7586799647899636  0.5221511083334797
wye wye 3  0.20460330576630303 0.33831852551664776
eks wye 4  0.38139939387114097 0.13418874328430463
wye pan 5  0.5732889198020006  0.8636244699032729
zee pan 6  0.5271261600918548  0.49322128674835697
eks zee 7  0.6117840605678454  0.1878849191181694
zee wye 8  0.5985540091064224  0.976181385699006
hat wye 9  0.03144187646093577 0.7495507603507059
pan wye 10 0.5026260055412137  0.9526183602969864

mlr --from ./reg_test/input/abixy --opprint put subr foo() {print "k is [".k."]"} for (k,v in $*) {call foo()}
k is []
k is []
k is []
k is []
k is []
k is []
k is []
k is []
k is []
k is []
k is []
k is []
k is []
k is []
k is []
k is []
k is []
k is []
k is []
k is []
k is []
k is []
k is []
k is []
k is []
k is []
k is []
k is []
k is []
k is []
k is []
k is []
k is []
k is []
k is []
k is []
k is []
k is []
k is []
k is []
k is []
k is []
k is []
k is []
k is []
k is []
k is []
k is []
k is []
k is []
a   b   i  x                   y
pan pan 1  0.3467901443380824  0.7268028627434533
eks pan 2  0.7586799647899636  0.5221511083334797
wye wye 3  0.20460330576630303 0.33831852551664776
eks wye 4  0.38139939387114097 0.13418874328430463
wye pan 5  0.5732889198020006  0.8636244699032729
zee pan 6  0.5271261600918548  0.49322128674835697
eks zee 7  0.6117840605678454  0.1878849191181694
zee wye 8  0.5985540091064224  0.976181385699006
hat wye 9  0.03144187646093577 0.7495507603507059
pan wye 10 0.5026260055412137  0.9526183602969864

mlr --opprint --from ./reg_test/input/abixy put func log(x) { return 0 } $o = log($x)
mlr: function named "log" must not override a built-in function of the same name.

mlr --from ./reg_test/input/abixy put subr log() { print "hello record  ". NR } call log()
hello record  1
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
hello record  2
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
hello record  3
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
hello record  4
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
hello record  5
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
hello record  6
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
hello record  7
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
hello record  8
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
hello record  9
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
hello record  10
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864

mlr --opprint --from ./reg_test/input/abixy put $o1 = a; int a=1000+NR; $o2 = a; a=2000+NR; $o3 = a
a   b   i  x                   y                   o2   o3
pan pan 1  0.3467901443380824  0.7268028627434533  1001 2001
eks pan 2  0.7586799647899636  0.5221511083334797  1002 2002
wye wye 3  0.20460330576630303 0.33831852551664776 1003 2003
eks wye 4  0.38139939387114097 0.13418874328430463 1004 2004
wye pan 5  0.5732889198020006  0.8636244699032729  1005 2005
zee pan 6  0.5271261600918548  0.49322128674835697 1006 2006
eks zee 7  0.6117840605678454  0.1878849191181694  1007 2007
zee wye 8  0.5985540091064224  0.976181385699006   1008 2008
hat wye 9  0.03144187646093577 0.7495507603507059  1009 2009
pan wye 10 0.5026260055412137  0.9526183602969864  1010 2010

mlr --opprint --from ./reg_test/input/abixy put 
    func f(n) {
        if (is_numeric(n)) {
            if (n > 0) {
                return n * f(n-1)
            } else {
                return 1
            }
        }
        # implicitly return absent
    }
    $o = f(NR)

a   b   i  x                   y                   o
pan pan 1  0.3467901443380824  0.7268028627434533  1
eks pan 2  0.7586799647899636  0.5221511083334797  2
wye wye 3  0.20460330576630303 0.33831852551664776 6
eks wye 4  0.38139939387114097 0.13418874328430463 24
wye pan 5  0.5732889198020006  0.8636244699032729  120
zee pan 6  0.5271261600918548  0.49322128674835697 720
eks zee 7  0.6117840605678454  0.1878849191181694  5040
zee wye 8  0.5985540091064224  0.976181385699006   40320
hat wye 9  0.03144187646093577 0.7495507603507059  362880
pan wye 10 0.5026260055412137  0.9526183602969864  3628800

mlr --opprint --from ./reg_test/input/abixy head -n 5 then put 
    subr s(n) {
        print "n = " . n;
        if (is_numeric(n)) {
            if (n > 0) {
                call s(n-1)
            }
        }
    }
    print "";
    call s(NR)


n = 1
n = 0

n = 2
n = 1
n = 0

n = 3
n = 2
n = 1
n = 0

n = 4
n = 3
n = 2
n = 1
n = 0

n = 5
n = 4
n = 3
n = 2
n = 1
n = 0
a   b   i x                   y
pan pan 1 0.3467901443380824  0.7268028627434533
eks pan 2 0.7586799647899636  0.5221511083334797
wye wye 3 0.20460330576630303 0.33831852551664776
eks wye 4 0.38139939387114097 0.13418874328430463
wye pan 5 0.5732889198020006  0.8636244699032729

mlr --from ./reg_test/input/abixy --opprint put 
  func f(n) {
    return n+1;
  }
  $o1 = f(NR);
  $o2 = f(f(NR));
  $o3 = f(f(f(NR)));
  $o4 = f(f(f(f(NR))));
  $o5 = f(f(f(f(f(NR)))));
  $o6 = f(f(f(f(f(f(NR))))));

a   b   i  x                   y                   o1 o2 o3 o4 o5 o6
pan pan 1  0.3467901443380824  0.7268028627434533  2  3  4  5  6  7
eks pan 2  0.7586799647899636  0.5221511083334797  3  4  5  6  7  8
wye wye 3  0.20460330576630303 0.33831852551664776 4  5  6  7  8  9
eks wye 4  0.38139939387114097 0.13418874328430463 5  6  7  8  9  10
wye pan 5  0.5732889198020006  0.8636244699032729  6  7  8  9  10 11
zee pan 6  0.5271261600918548  0.49322128674835697 7  8  9  10 11 12
eks zee 7  0.6117840605678454  0.1878849191181694  8  9  10 11 12 13
zee wye 8  0.5985540091064224  0.976181385699006   9  10 11 12 13 14
hat wye 9  0.03144187646093577 0.7495507603507059  10 11 12 13 14 15
pan wye 10 0.5026260055412137  0.9526183602969864  11 12 13 14 15 16

mlr --from ./reg_test/input/abixy --opprint put 
  func f(n) {
      if (n < 2) {
          return 1
      } else {
          return f(n-1) + f(n-2)
      }
  }
  $o = f(NR)

a   b   i  x                   y                   o
pan pan 1  0.3467901443380824  0.7268028627434533  1
eks pan 2  0.7586799647899636  0.5221511083334797  2
wye wye 3  0.20460330576630303 0.33831852551664776 3
eks wye 4  0.38139939387114097 0.13418874328430463 5
wye pan 5  0.5732889198020006  0.8636244699032729  8
zee pan 6  0.5271261600918548  0.49322128674835697 13
eks zee 7  0.6117840605678454  0.1878849191181694  21
zee wye 8  0.5985540091064224  0.976181385699006   34
hat wye 9  0.03144187646093577 0.7495507603507059  55
pan wye 10 0.5026260055412137  0.9526183602969864  89

mlr --from ./reg_test/input/abixy --opprint put 
  func f(n) {
    if (is_present(@fcache[n])) {
      return @fcache[n]
    } else {
      num rv = 1;
      if (n >= 2) {
        rv = f(n-1) + f(n-2)
      }
      @fcache[n] = rv;
      return rv
    }
  }
  $o = f(NR)

a   b   i  x                   y                   o
pan pan 1  0.3467901443380824  0.7268028627434533  1
eks pan 2  0.7586799647899636  0.5221511083334797  2
wye wye 3  0.20460330576630303 0.33831852551664776 3
eks wye 4  0.38139939387114097 0.13418874328430463 5
wye pan 5  0.5732889198020006  0.8636244699032729  8
zee pan 6  0.5271261600918548  0.49322128674835697 13
eks zee 7  0.6117840605678454  0.1878849191181694  21
zee wye 8  0.5985540091064224  0.976181385699006   34
hat wye 9  0.03144187646093577 0.7495507603507059  55
pan wye 10 0.5026260055412137  0.9526183602969864  89

mlr --from ./reg_test/input/abixy --opprint put func f(x) { begin {} }
mlr: begin statements are only valid at top level.

mlr --from ./reg_test/input/abixy --opprint put func f(x) { end {} }
mlr: end statements are only valid at top level.

mlr --from ./reg_test/input/abixy --opprint put subr s(x) { begin {} }
mlr: begin statements are only valid at top level.

mlr --from ./reg_test/input/abixy --opprint put subr s(x) { end {} }
mlr: end statements are only valid at top level.

mlr --from ./reg_test/input/abixy --opprint put func f(x) { func g(y) {} }
mlr: func statements are only valid at top level.

mlr --from ./reg_test/input/abixy --opprint put func f(x) { subr t(y) {} }
mlr: subr statements are only valid at top level.

mlr --from ./reg_test/input/abixy --opprint put subr s(x) { func g(y) {} }
mlr: func statements are only valid at top level.

mlr --from ./reg_test/input/abixy --opprint put subr s(x) { subr t(y) {} }
mlr: subr statements are only valid at top level.

mlr --from ./reg_test/input/abixy --opprint filter func f(x) { begin {} }; true
mlr: begin statements are only valid at top level.

mlr --from ./reg_test/input/abixy --opprint filter func f(x) { end {} }; true
mlr: end statements are only valid at top level.

mlr --from ./reg_test/input/abixy --opprint filter subr s(x) { begin {} }; true
mlr: begin statements are only valid at top level.

mlr --from ./reg_test/input/abixy --opprint filter subr s(x) { end {} }; true
mlr: end statements are only valid at top level.

mlr --from ./reg_test/input/abixy --opprint filter func f(x) { func g(y) {} }; true
mlr: func statements are only valid at top level.

mlr --from ./reg_test/input/abixy --opprint filter func f(x) { subr t(y) {} }; true
mlr: subr statements are only valid at top level.

mlr --from ./reg_test/input/abixy --opprint filter subr s(x) { func g(y) {} }; true
mlr: func statements are only valid at top level.

mlr --from ./reg_test/input/abixy --opprint filter subr s(x) { subr t(y) {} }; true
mlr: subr statements are only valid at top level.

mlr --from ./reg_test/input/abixy --opprint put func log(x) { return $x + 1 }
mlr: function named "log" must not override a built-in function of the same name.

mlr --from ./reg_test/input/abixy --opprint put func f(x) { return $x + 1 } func f(x) { return $x + 1}
mlr: function named "f" has already been defined.

mlr --from ./reg_test/input/abixy --opprint put subr s() { } subr s() { }
mlr: subroutine named "s" has already been defined.

mlr --from ./reg_test/input/abixy --opprint put subr s() { } subr s(x) { }
mlr: subroutine named "s" has already been defined.

mlr --from ./reg_test/input/abixy --opprint put subr log(text) { print "TEXT IS ".text } call log("NR is ".NR)
TEXT IS NR is 1
TEXT IS NR is 2
TEXT IS NR is 3
TEXT IS NR is 4
TEXT IS NR is 5
TEXT IS NR is 6
TEXT IS NR is 7
TEXT IS NR is 8
TEXT IS NR is 9
TEXT IS NR is 10
a   b   i  x                   y
pan pan 1  0.3467901443380824  0.7268028627434533
eks pan 2  0.7586799647899636  0.5221511083334797
wye wye 3  0.20460330576630303 0.33831852551664776
eks wye 4  0.38139939387114097 0.13418874328430463
wye pan 5  0.5732889198020006  0.8636244699032729
zee pan 6  0.5271261600918548  0.49322128674835697
eks zee 7  0.6117840605678454  0.1878849191181694
zee wye 8  0.5985540091064224  0.976181385699006
hat wye 9  0.03144187646093577 0.7495507603507059
pan wye 10 0.5026260055412137  0.9526183602969864

mlr --from ./reg_test/input/abixy --opprint put subr log(text) { print "TEXT IS ".text } call log("NR is ".NR)
TEXT IS NR is 1
TEXT IS NR is 2
TEXT IS NR is 3
TEXT IS NR is 4
TEXT IS NR is 5
TEXT IS NR is 6
TEXT IS NR is 7
TEXT IS NR is 8
TEXT IS NR is 9
TEXT IS NR is 10
a   b   i  x                   y
pan pan 1  0.3467901443380824  0.7268028627434533
eks pan 2  0.7586799647899636  0.5221511083334797
wye wye 3  0.20460330576630303 0.33831852551664776
eks wye 4  0.38139939387114097 0.13418874328430463
wye pan 5  0.5732889198020006  0.8636244699032729
zee pan 6  0.5271261600918548  0.49322128674835697
eks zee 7  0.6117840605678454  0.1878849191181694
zee wye 8  0.5985540091064224  0.976181385699006
hat wye 9  0.03144187646093577 0.7495507603507059
pan wye 10 0.5026260055412137  0.9526183602969864

mlr --from ./reg_test/input/abixy --opprint put func f(text) { print "TEXT IS ".text; return text.text } $o = f($a)
TEXT IS pan
TEXT IS eks
TEXT IS wye
TEXT IS eks
TEXT IS wye
TEXT IS zee
TEXT IS eks
TEXT IS zee
TEXT IS hat
TEXT IS pan
a   b   i  x                   y                   o
pan pan 1  0.3467901443380824  0.7268028627434533  panpan
eks pan 2  0.7586799647899636  0.5221511083334797  ekseks
wye wye 3  0.20460330576630303 0.33831852551664776 wyewye
eks wye 4  0.38139939387114097 0.13418874328430463 ekseks
wye pan 5  0.5732889198020006  0.8636244699032729  wyewye
zee pan 6  0.5271261600918548  0.49322128674835697 zeezee
eks zee 7  0.6117840605678454  0.1878849191181694  ekseks
zee wye 8  0.5985540091064224  0.976181385699006   zeezee
hat wye 9  0.03144187646093577 0.7495507603507059  hathat
pan wye 10 0.5026260055412137  0.9526183602969864  panpan

mlr --from ./reg_test/input/abixy put begin{@x=1} func f(x) { dump; print "hello"                 } $o=f($i)
{
  "x": 1
}
hello
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
{
  "x": 1
}
hello
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
{
  "x": 1
}
hello
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
{
  "x": 1
}
hello
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
{
  "x": 1
}
hello
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
{
  "x": 1
}
hello
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
{
  "x": 1
}
hello
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
{
  "x": 1
}
hello
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
{
  "x": 1
}
hello
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
{
  "x": 1
}
hello
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864

mlr --from ./reg_test/input/abixy put begin{@x=1} func f(x) { dump; print "hello"; tee  > "x", $* } $o=f($i)
mlr: tee statements are not valid within func blocks.

mlr --from ./reg_test/input/abixy put begin{@x=1} func f(x) { dump; print "hello"; emit > "x", @* } $o=f($i)
mlr: emit statements are not valid within func blocks.

mlr --from ./reg_test/input/abixy put func f(x,y) { return 2*y } $o = f($x,$y) 
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533,o=1.453606
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797,o=1.044302
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776,o=0.676637
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463,o=0.268377
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729,o=1.727249
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697,o=0.986443
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694,o=0.375770
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006,o=1.952363
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059,o=1.499102
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864,o=1.905237

mlr -n put -q -f ./reg_test/input/sieve.mlr
2
3
5
7
11
13
17
19
23
29
31
37
41
43
47
53
59
61
67
71
73
79
83
89
97

mlr -n put -q -f ./reg_test/input/mand.mlr -e begin {@verbose = true}
RCORN     = -2.000000
ICORN     = -2.000000
SIDE      = 4.000000
IHEIGHT   = 50
IWIDTH    = 100
MAXITS    = 100
LEVELSTEP = 5
CHARS     = @X*o-.
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@XXXXXX@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@XXXX.XXXX@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@XXXXXXXooXXXX@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@XXXXX**o..*XXXXX@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@XXXXXX*-....-oXXXXXX@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@XXXXX@XXXXXXXXXX*......o*XXXXXXXXXX@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@XXXXXXXXXX**oo*-.-........oo.XXXXXXXXX@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@XXXXXXXXXXXXX....................X..o-XXX@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@XXXXXXXXXXXXXXX*oo......................oXXXXX@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@XXX*XXXXXXXXXXXX**o........................*X*X@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@XXXXXXooo***o*.*XX**X..........................o-XX@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@XXXXXXXX*-.......-***.............................oXX@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@XXXXXXXX*@..........Xo............................*XX@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@XXXX@XXXXXXXX*o@oX...........@...........................oXXX@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
.........................................................o*XXXXX@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@XXXXXXXXX*-.oX...........@...........................oXXXXX@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@XXXXXXXXXX**@..........*o............................*XXXXXXXX@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@XXXXXXXXXXXXX-........***.............................oXXXXXXXXXX@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@XXXXXXXXXXXXoo****o*.XX***@..........................o-XXXXXXXXXXXXX@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@XXXXX*XXXX*XXXXXXX**-........................***XXXXX@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@XXXXXXXXXXXXX*o*.....................@o*XXXX@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@XXXXXXXXXXXX*....................*..o-XX@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@XXXXX*ooo*-.o........oo.X*XXXXXX@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@XXXXXXXXX**@.....*XXXXXXXXX@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@XXXXXXXXX*o....-o*XXXXXX@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@XXXXXXXXXXo*o..*XXXXXXXX@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@XXXXXXXXXXXXX*o*XXXXXXX@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@XXXXXXXXXXXX@XXXXXXXX@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@XXXXXXXXX@@XXXXX@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@XXXXX@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

mlr --from ./reg_test/input/abixy put -v 
    func f(x) {
        return x**2
    }
    func g(y) {
        return y+1
    }
    subr s(a,b,c) {
        print a.b.c
    }
    begin {
        @a = 0;
        var ell = 1;
        print "local1 = ".ell;
    }
    end {
        emit @a;
        var emm = 2;
        print "local2 = ".emm;
    }
    @a += 1;
    begin {
        @b = 0;
        @c = 0;
        print "local3 = ".ell;
    }
    @b += 2;
    @c += 3;
    end {
        emit @b;
        emit @c;
        print "local4 = ".emm;
    }

RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="f", type=FUNC_DEF:
        text="f", type=NON_SIGIL_NAME:
            text="x", type=UNTYPED_PARAMETER_DEFINITION.
        text="func_block", type=STATEMENT_BLOCK:
            text="return_value", type=RETURN_VALUE:
                text="**", type=OPERATOR:
                    text="x", type=NONINDEXED_LOCAL_VARIABLE.
                    text="2", type=NUMERIC_LITERAL.
    text="g", type=FUNC_DEF:
        text="g", type=NON_SIGIL_NAME:
            text="y", type=UNTYPED_PARAMETER_DEFINITION.
        text="func_block", type=STATEMENT_BLOCK:
            text="return_value", type=RETURN_VALUE:
                text="+", type=OPERATOR:
                    text="y", type=NONINDEXED_LOCAL_VARIABLE.
                    text="1", type=NUMERIC_LITERAL.
    text="s", type=SUBR_DEF:
        text="s", type=NON_SIGIL_NAME:
            text="a", type=UNTYPED_PARAMETER_DEFINITION.
            text="b", type=UNTYPED_PARAMETER_DEFINITION.
            text="c", type=UNTYPED_PARAMETER_DEFINITION.
        text="subr_block", type=STATEMENT_BLOCK:
            text="print", type=PRINT:
                text=".", type=OPERATOR:
                    text=".", type=OPERATOR:
                        text="a", type=NONINDEXED_LOCAL_VARIABLE.
                        text="b", type=NONINDEXED_LOCAL_VARIABLE.
                    text="c", type=NONINDEXED_LOCAL_VARIABLE.
                text=">", type=FILE_WRITE:
                    text="stdout", type=STDOUT:
    text="begin", type=BEGIN:
        text="begin_block", type=STATEMENT_BLOCK:
            text="=", type=OOSVAR_ASSIGNMENT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="a", type=STRING_LITERAL.
                text="0", type=NUMERIC_LITERAL.
            text="var", type=UNTYPED_LOCAL_DEFINITION:
                text="ell", type=NONINDEXED_LOCAL_VARIABLE.
                text="1", type=NUMERIC_LITERAL.
            text="print", type=PRINT:
                text=".", type=OPERATOR:
                    text="local1 = ", type=STRING_LITERAL.
                    text="ell", type=NONINDEXED_LOCAL_VARIABLE.
                text=">", type=FILE_WRITE:
                    text="stdout", type=STDOUT:
    text="end", type=END:
        text="end_block", type=STATEMENT_BLOCK:
            text="emit", type=EMIT:
                text="emit", type=EMIT:
                    text="oosvar_keylist", type=OOSVAR_KEYLIST:
                        text="a", type=STRING_LITERAL.
                text="stream", type=STREAM:
            text="var", type=UNTYPED_LOCAL_DEFINITION:
                text="emm", type=NONINDEXED_LOCAL_VARIABLE.
                text="2", type=NUMERIC_LITERAL.
            text="print", type=PRINT:
                text=".", type=OPERATOR:
                    text="local2 = ", type=STRING_LITERAL.
                    text="emm", type=NONINDEXED_LOCAL_VARIABLE.
                text=">", type=FILE_WRITE:
                    text="stdout", type=STDOUT:
    text="=", type=OOSVAR_ASSIGNMENT:
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="a", type=STRING_LITERAL.
        text="+", type=OPERATOR:
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="a", type=STRING_LITERAL.
            text="1", type=NUMERIC_LITERAL.
    text="begin", type=BEGIN:
        text="begin_block", type=STATEMENT_BLOCK:
            text="=", type=OOSVAR_ASSIGNMENT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="b", type=STRING_LITERAL.
                text="0", type=NUMERIC_LITERAL.
            text="=", type=OOSVAR_ASSIGNMENT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="c", type=STRING_LITERAL.
                text="0", type=NUMERIC_LITERAL.
            text="print", type=PRINT:
                text=".", type=OPERATOR:
                    text="local3 = ", type=STRING_LITERAL.
                    text="ell", type=NONINDEXED_LOCAL_VARIABLE.
                text=">", type=FILE_WRITE:
                    text="stdout", type=STDOUT:
    text="=", type=OOSVAR_ASSIGNMENT:
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="b", type=STRING_LITERAL.
        text="+", type=OPERATOR:
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="b", type=STRING_LITERAL.
            text="2", type=NUMERIC_LITERAL.
    text="=", type=OOSVAR_ASSIGNMENT:
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="c", type=STRING_LITERAL.
        text="+", type=OPERATOR:
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="c", type=STRING_LITERAL.
            text="3", type=NUMERIC_LITERAL.
    text="end", type=END:
        text="end_block", type=STATEMENT_BLOCK:
            text="emit", type=EMIT:
                text="emit", type=EMIT:
                    text="oosvar_keylist", type=OOSVAR_KEYLIST:
                        text="b", type=STRING_LITERAL.
                text="stream", type=STREAM:
            text="emit", type=EMIT:
                text="emit", type=EMIT:
                    text="oosvar_keylist", type=OOSVAR_KEYLIST:
                        text="c", type=STRING_LITERAL.
                text="stream", type=STREAM:
            text="print", type=PRINT:
                text=".", type=OPERATOR:
                    text="local4 = ", type=STRING_LITERAL.
                    text="emm", type=NONINDEXED_LOCAL_VARIABLE.
                text=">", type=FILE_WRITE:
                    text="stdout", type=STDOUT:

BLOCKED AST:

FUNCTION DEFINITION:
text="f", type=FUNC_DEF: subframe_var_count=2 max_subframe_depth=1 max_var_depth=2
    text="f", type=NON_SIGIL_NAME:
        text="x", type=UNTYPED_PARAMETER_DEFINITION. vardef_subframe_relative_index=1 vardef_subframe_index=0 vardef_frame_relative_index=1
    text="func_block", type=STATEMENT_BLOCK:
        text="return_value", type=RETURN_VALUE:
            text="**", type=OPERATOR:
                text="x", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=1 vardef_subframe_index=0 vardef_frame_relative_index=1
                text="2", type=NUMERIC_LITERAL.

FUNCTION DEFINITION:
text="g", type=FUNC_DEF: subframe_var_count=2 max_subframe_depth=1 max_var_depth=2
    text="g", type=NON_SIGIL_NAME:
        text="y", type=UNTYPED_PARAMETER_DEFINITION. vardef_subframe_relative_index=1 vardef_subframe_index=0 vardef_frame_relative_index=1
    text="func_block", type=STATEMENT_BLOCK:
        text="return_value", type=RETURN_VALUE:
            text="+", type=OPERATOR:
                text="y", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=1 vardef_subframe_index=0 vardef_frame_relative_index=1
                text="1", type=NUMERIC_LITERAL.

SUBROUTINE DEFINITION:
text="s", type=SUBR_DEF: subframe_var_count=4 max_subframe_depth=1 max_var_depth=4
    text="s", type=NON_SIGIL_NAME:
        text="a", type=UNTYPED_PARAMETER_DEFINITION. vardef_subframe_relative_index=1 vardef_subframe_index=0 vardef_frame_relative_index=1
        text="b", type=UNTYPED_PARAMETER_DEFINITION. vardef_subframe_relative_index=2 vardef_subframe_index=0 vardef_frame_relative_index=2
        text="c", type=UNTYPED_PARAMETER_DEFINITION. vardef_subframe_relative_index=3 vardef_subframe_index=0 vardef_frame_relative_index=3
    text="subr_block", type=STATEMENT_BLOCK:
        text="print", type=PRINT:
            text=".", type=OPERATOR:
                text=".", type=OPERATOR:
                    text="a", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=1 vardef_subframe_index=0 vardef_frame_relative_index=1
                    text="b", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=2 vardef_subframe_index=0 vardef_frame_relative_index=2
                text="c", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=3 vardef_subframe_index=0 vardef_frame_relative_index=3
            text=">", type=FILE_WRITE:
                text="stdout", type=STDOUT:

BEGIN-BLOCK:
text="begin", type=BEGIN: subframe_var_count=2 max_subframe_depth=1 max_var_depth=2
    text="begin_block", type=STATEMENT_BLOCK:
        text="=", type=OOSVAR_ASSIGNMENT:
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="a", type=STRING_LITERAL.
            text="0", type=NUMERIC_LITERAL.
        text="var", type=UNTYPED_LOCAL_DEFINITION:
            text="ell", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=1 vardef_subframe_index=0 vardef_frame_relative_index=1
            text="1", type=NUMERIC_LITERAL.
        text="print", type=PRINT:
            text=".", type=OPERATOR:
                text="local1 = ", type=STRING_LITERAL.
                text="ell", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=1 vardef_subframe_index=0 vardef_frame_relative_index=1
            text=">", type=FILE_WRITE:
                text="stdout", type=STDOUT:

BEGIN-BLOCK:
text="begin", type=BEGIN: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="begin_block", type=STATEMENT_BLOCK:
        text="=", type=OOSVAR_ASSIGNMENT:
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="b", type=STRING_LITERAL.
            text="0", type=NUMERIC_LITERAL.
        text="=", type=OOSVAR_ASSIGNMENT:
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="c", type=STRING_LITERAL.
            text="0", type=NUMERIC_LITERAL.
        text="print", type=PRINT:
            text=".", type=OPERATOR:
                text="local3 = ", type=STRING_LITERAL.
                text="ell", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=0 vardef_frame_relative_index=0
            text=">", type=FILE_WRITE:
                text="stdout", type=STDOUT:

END-BLOCK:
text="end", type=END: subframe_var_count=2 max_subframe_depth=1 max_var_depth=2
    text="end_block", type=STATEMENT_BLOCK:
        text="emit", type=EMIT:
            text="emit", type=EMIT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="a", type=STRING_LITERAL.
            text="stream", type=STREAM:
        text="var", type=UNTYPED_LOCAL_DEFINITION:
            text="emm", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=1 vardef_subframe_index=0 vardef_frame_relative_index=1
            text="2", type=NUMERIC_LITERAL.
        text="print", type=PRINT:
            text=".", type=OPERATOR:
                text="local2 = ", type=STRING_LITERAL.
                text="emm", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=1 vardef_subframe_index=0 vardef_frame_relative_index=1
            text=">", type=FILE_WRITE:
                text="stdout", type=STDOUT:

END-BLOCK:
text="end", type=END: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="end_block", type=STATEMENT_BLOCK:
        text="emit", type=EMIT:
            text="emit", type=EMIT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="b", type=STRING_LITERAL.
            text="stream", type=STREAM:
        text="emit", type=EMIT:
            text="emit", type=EMIT:
                text="oosvar_keylist", type=OOSVAR_KEYLIST:
                    text="c", type=STRING_LITERAL.
            text="stream", type=STREAM:
        text="print", type=PRINT:
            text=".", type=OPERATOR:
                text="local4 = ", type=STRING_LITERAL.
                text="emm", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=0 vardef_frame_relative_index=0
            text=">", type=FILE_WRITE:
                text="stdout", type=STDOUT:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=OOSVAR_ASSIGNMENT:
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="a", type=STRING_LITERAL.
        text="+", type=OPERATOR:
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="a", type=STRING_LITERAL.
            text="1", type=NUMERIC_LITERAL.
    text="=", type=OOSVAR_ASSIGNMENT:
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="b", type=STRING_LITERAL.
        text="+", type=OPERATOR:
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="b", type=STRING_LITERAL.
            text="2", type=NUMERIC_LITERAL.
    text="=", type=OOSVAR_ASSIGNMENT:
        text="oosvar_keylist", type=OOSVAR_KEYLIST:
            text="c", type=STRING_LITERAL.
        text="+", type=OPERATOR:
            text="oosvar_keylist", type=OOSVAR_KEYLIST:
                text="c", type=STRING_LITERAL.
            text="3", type=NUMERIC_LITERAL.

local1 = 1
local3 = 
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
local2 = 2
local4 = 
a=10
b=20
c=30


================================================================
LOCALVAR SCOPE AND EXTENT

mlr --opprint --from ./reg_test/input/abixy put 
  func f() {
    var a = 1;
    if (NR > 5) {
      a = 2;
    }
    return a;
  }
  func g() {
    var b = 1;
    if (NR > 5) {
      var b = 2;
    }
    return b;
  }
  func h() {
    var a = 1;
    if (NR > 5) {
      a = 2;
      return a;
    }
    return a;
  }
  func i() {
    var b = 1;
    if (NR > 5) {
      var b = 2;
      return b;
    }
    return b;
  }
  $of = f();
  $og = g();
  $oh = h();
  $oi = i();
 
a   b   i  x                   y                   of og oh oi
pan pan 1  0.3467901443380824  0.7268028627434533  1  1  1  1
eks pan 2  0.7586799647899636  0.5221511083334797  1  1  1  1
wye wye 3  0.20460330576630303 0.33831852551664776 1  1  1  1
eks wye 4  0.38139939387114097 0.13418874328430463 1  1  1  1
wye pan 5  0.5732889198020006  0.8636244699032729  1  1  1  1
zee pan 6  0.5271261600918548  0.49322128674835697 2  1  2  2
eks zee 7  0.6117840605678454  0.1878849191181694  2  1  2  2
zee wye 8  0.5985540091064224  0.976181385699006   2  1  2  2
hat wye 9  0.03144187646093577 0.7495507603507059  2  1  2  2
pan wye 10 0.5026260055412137  0.9526183602969864  2  1  2  2

mlr --opprint --from ./reg_test/input/abixy put 
  func f() {
    var a = 2;
    var b = 2;
    if (NR > 5) {
      var a = 3;
      b = 3;
    }
    return 1000 * a + b;
  }
  a = 1;
  b = 1;
  $ab = f();
  $oa = a;
  $ob = b;
 
a   b   i  x                   y                   ab   oa ob
pan pan 1  0.3467901443380824  0.7268028627434533  2002 1  1
eks pan 2  0.7586799647899636  0.5221511083334797  2002 1  1
wye wye 3  0.20460330576630303 0.33831852551664776 2002 1  1
eks wye 4  0.38139939387114097 0.13418874328430463 2002 1  1
wye pan 5  0.5732889198020006  0.8636244699032729  2002 1  1
zee pan 6  0.5271261600918548  0.49322128674835697 2003 1  1
eks zee 7  0.6117840605678454  0.1878849191181694  2003 1  1
zee wye 8  0.5985540091064224  0.976181385699006   2003 1  1
hat wye 9  0.03144187646093577 0.7495507603507059  2003 1  1
pan wye 10 0.5026260055412137  0.9526183602969864  2003 1  1


================================================================
LOCALVAR UNSETS

mlr put -q s=$x; t[$a]=$x; u[$a][$b]=$x; dump s; dump t; dump u; unset s      ; dump s; dump t; dump u ./reg_test/input/unset1.dkvp
9
{
  "1": 9
}
{
  "1": {
    "2": 9
  }
}

{
  "1": 9
}
{
  "1": {
    "2": 9
  }
}

mlr put -q s=$x; t[$a]=$x; u[$a][$b]=$x; dump s; dump t; dump u; unset t      ; dump s; dump t; dump u ./reg_test/input/unset1.dkvp
9
{
  "1": 9
}
{
  "1": {
    "2": 9
  }
}
9

{
  "1": {
    "2": 9
  }
}

mlr put -q s=$x; t[$a]=$x; u[$a][$b]=$x; dump s; dump t; dump u; unset t[1]   ; dump s; dump t; dump u ./reg_test/input/unset1.dkvp
9
{
  "1": 9
}
{
  "1": {
    "2": 9
  }
}
9
{
}
{
  "1": {
    "2": 9
  }
}

mlr put -q s=$x; t[$a]=$x; u[$a][$b]=$x; dump s; dump t; dump u; unset u      ; dump s; dump t; dump u ./reg_test/input/unset1.dkvp
9
{
  "1": 9
}
{
  "1": {
    "2": 9
  }
}
9
{
  "1": 9
}


mlr put -q s=$x; t[$a]=$x; u[$a][$b]=$x; dump s; dump t; dump u; unset u[1]   ; dump s; dump t; dump u ./reg_test/input/unset1.dkvp
9
{
  "1": 9
}
{
  "1": {
    "2": 9
  }
}
9
{
  "1": 9
}
{
}

mlr put -q s=$x; t[$a]=$x; u[$a][$b]=$x; dump s; dump t; dump u; unset u[1][2]; dump s; dump t; dump u ./reg_test/input/unset1.dkvp
9
{
  "1": 9
}
{
  "1": {
    "2": 9
  }
}
9
{
  "1": 9
}
{
  "1": {
  }
}

mlr put -q s=$x; t[$a]=$x; u[$a][$b]=$x; dump s; dump t; dump u; unset s      ; dump s; dump t; dump u ./reg_test/input/unset4.dkvp
9
{
  "1": 9
}
{
  "1": {
    "2": 9
  }
}

{
  "1": 9
}
{
  "1": {
    "2": 9
  }
}
9
{
  "1": 9
}
{
  "1": {
    "3": 9
  }
}

{
  "1": 9
}
{
  "1": {
    "3": 9
  }
}
9
{
  "4": 9
}
{
  "4": {
    "5": 9
  }
}

{
  "4": 9
}
{
  "4": {
    "5": 9
  }
}
9
{
  "4": 9
}
{
  "4": {
    "6": 9
  }
}

{
  "4": 9
}
{
  "4": {
    "6": 9
  }
}

mlr put -q s=$x; t[$a]=$x; u[$a][$b]=$x; dump s; dump t; dump u; unset t      ; dump s; dump t; dump u ./reg_test/input/unset4.dkvp
9
{
  "1": 9
}
{
  "1": {
    "2": 9
  }
}
9

{
  "1": {
    "2": 9
  }
}
9
{
  "1": 9
}
{
  "1": {
    "3": 9
  }
}
9

{
  "1": {
    "3": 9
  }
}
9
{
  "4": 9
}
{
  "4": {
    "5": 9
  }
}
9

{
  "4": {
    "5": 9
  }
}
9
{
  "4": 9
}
{
  "4": {
    "6": 9
  }
}
9

{
  "4": {
    "6": 9
  }
}

mlr put -q s=$x; t[$a]=$x; u[$a][$b]=$x; dump s; dump t; dump u; unset t[1]   ; dump s; dump t; dump u ./reg_test/input/unset4.dkvp
9
{
  "1": 9
}
{
  "1": {
    "2": 9
  }
}
9
{
}
{
  "1": {
    "2": 9
  }
}
9
{
  "1": 9
}
{
  "1": {
    "3": 9
  }
}
9
{
}
{
  "1": {
    "3": 9
  }
}
9
{
  "4": 9
}
{
  "4": {
    "5": 9
  }
}
9
{
  "4": 9
}
{
  "4": {
    "5": 9
  }
}
9
{
  "4": 9
}
{
  "4": {
    "6": 9
  }
}
9
{
  "4": 9
}
{
  "4": {
    "6": 9
  }
}

mlr put -q s=$x; t[$a]=$x; u[$a][$b]=$x; dump s; dump t; dump u; unset u      ; dump s; dump t; dump u ./reg_test/input/unset4.dkvp
9
{
  "1": 9
}
{
  "1": {
    "2": 9
  }
}
9
{
  "1": 9
}

9
{
  "1": 9
}
{
  "1": {
    "3": 9
  }
}
9
{
  "1": 9
}

9
{
  "4": 9
}
{
  "4": {
    "5": 9
  }
}
9
{
  "4": 9
}

9
{
  "4": 9
}
{
  "4": {
    "6": 9
  }
}
9
{
  "4": 9
}


mlr put -q s=$x; t[$a]=$x; u[$a][$b]=$x; dump s; dump t; dump u; unset u[1]   ; dump s; dump t; dump u ./reg_test/input/unset4.dkvp
9
{
  "1": 9
}
{
  "1": {
    "2": 9
  }
}
9
{
  "1": 9
}
{
}
9
{
  "1": 9
}
{
  "1": {
    "3": 9
  }
}
9
{
  "1": 9
}
{
}
9
{
  "4": 9
}
{
  "4": {
    "5": 9
  }
}
9
{
  "4": 9
}
{
  "4": {
    "5": 9
  }
}
9
{
  "4": 9
}
{
  "4": {
    "6": 9
  }
}
9
{
  "4": 9
}
{
  "4": {
    "6": 9
  }
}

mlr put -q s=$x; t[$a]=$x; u[$a][$b]=$x; dump s; dump t; dump u; unset u[1][2]; dump s; dump t; dump u ./reg_test/input/unset4.dkvp
9
{
  "1": 9
}
{
  "1": {
    "2": 9
  }
}
9
{
  "1": 9
}
{
  "1": {
  }
}
9
{
  "1": 9
}
{
  "1": {
    "3": 9
  }
}
9
{
  "1": 9
}
{
  "1": {
    "3": 9
  }
}
9
{
  "4": 9
}
{
  "4": {
    "5": 9
  }
}
9
{
  "4": 9
}
{
  "4": {
    "5": 9
  }
}
9
{
  "4": 9
}
{
  "4": {
    "6": 9
  }
}
9
{
  "4": 9
}
{
  "4": {
    "6": 9
  }
}


================================================================
LOCALVAR TYPEDECLs

mlr --from ./reg_test/input/abixy put 
  str a = $a;
  a = "a:".NR;
  $c = a;

a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533,c=a:1
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797,c=a:2
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776,c=a:3
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463,c=a:4
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729,c=a:5
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697,c=a:6
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694,c=a:7
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006,c=a:8
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059,c=a:9
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864,c=a:10

mlr --from ./reg_test/input/abixy put 
  str a = $a;
  a = NR;
  $c = a;

mlr: string type assertion for variable a unmet by value 1 with type int.

mlr --from ./reg_test/input/abixy put 
  int a = $a;
  a = NR;
  $c = a;

mlr: int type assertion for variable a unmet by value "pan" with type string.

mlr --from ./reg_test/input/abixy put 
  int i = $i;
  i = NR;
  $c = a;

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


================================================================
FORBIND TYPEDECLs

mlr --from ./reg_test/input/abixy put 
  for (int i = 0; i < $i; i += 1) {
    $c = i * 10;
  }

a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533,c=0
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797,c=10
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776,c=20
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463,c=30
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729,c=40
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697,c=50
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694,c=60
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006,c=70
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059,c=80
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864,c=90

mlr --from ./reg_test/input/abixy put 
  for (float i = 0; i < $i; i += 1) {
    $c = i * 10;
  }

mlr: float type assertion for variable i unmet by value 0 with type int.

mlr --from ./reg_test/input/abixy put 
  for (int i = 0; i < $i; i += 1) {
    i += 2;
    $c = i;
  }

a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533,c=2
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797,c=2
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776,c=2
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463,c=5
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729,c=5
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697,c=5
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694,c=8
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006,c=8
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059,c=8
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864,c=11

mlr --from ./reg_test/input/abixy put 
  for (int i = 0; i < $i; i += 1) {
    i += 1.5;
    $c = i;
  }

mlr: int type assertion for variable i unmet by value 1.500000 with type float.

mlr --from ./reg_test/input/abixy put 
  for (int i = 0; i < $i; i += 1) {
    i += 1.0;
    $c = i;
  }

mlr: int type assertion for variable i unmet by value 1.000000 with type float.

mlr --from ./reg_test/input/abixy put 
  for (num i = 0; i < $i; i += 1) {
    i += 1.0;
    $c = i;
  }

a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533,c=1.000000
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797,c=1.000000
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776,c=3.000000
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463,c=3.000000
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729,c=5.000000
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697,c=5.000000
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694,c=7.000000
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006,c=7.000000
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059,c=9.000000
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864,c=9.000000


================================================================
ARGPASS TYPEDECLs

mlr --from ./reg_test/input/abixy put 
  func f(int i) {
    return i+3;
  }
  $c = f($i);

a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533,c=4
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797,c=5
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776,c=6
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463,c=7
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729,c=8
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697,c=9
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694,c=10
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006,c=11
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059,c=12
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864,c=13

mlr --from ./reg_test/input/abixy put 
  func f(int i) {
    return i+3;
  }
  $c = f($x);

mlr: int type assertion for variable i unmet by value 0.346790 with type float.

mlr --from ./reg_test/input/abixy put 
  func f(num i): int {
    return i+3.45;
  }
  $c = f($x);

mlr: function f returned type float, not matching typedecl int.

mlr --from ./reg_test/input/abixy put 
  func f(num i): int {
    return i+3.45;
  }
  $c = f($i);

mlr: function f returned type float, not matching typedecl int.

mlr --from ./reg_test/input/abixy put 
  func f(num i): int {
    i = "a";
    return 2;
  }
  $c = f($x);

mlr: numeric type assertion for variable i unmet by value "a" with type string.

mlr --from ./reg_test/input/abixy put 
  subr s(int i) {
    print i+3;
  }
  call s($i);

4
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
5
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
6
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
7
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
8
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
9
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
10
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
11
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
12
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
13
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864

mlr --from ./reg_test/input/abixy put 
  subr s(int i) {
    print i+3;
  }
  call s($x);

mlr: int type assertion for variable i unmet by value 0.346790 with type float.

mlr --from ./reg_test/input/abixy put 
  subr s(num i) {
    i = "a";
    print 2;
  }
  call s($x);

mlr: numeric type assertion for variable i unmet by value "a" with type string.


================================================================
LOCAL MAP-VARIABLE WRITE/READ

mlr --from ./reg_test/input/xyz345 put -v -a 
    $s = a;
    $t = b[$x];
    $u = c[$x][$y];
    $v = d[$x][$y][$z];

RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=SREC_ASSIGNMENT:
        text="s", type=FIELD_NAME.
        text="a", type=NONINDEXED_LOCAL_VARIABLE.
    text="=", type=SREC_ASSIGNMENT:
        text="t", type=FIELD_NAME.
        text="b", type=INDEXED_LOCAL_VARIABLE:
            text="x", type=FIELD_NAME.
    text="=", type=SREC_ASSIGNMENT:
        text="u", type=FIELD_NAME.
        text="c", type=INDEXED_LOCAL_VARIABLE:
            text="x", type=FIELD_NAME.
            text="y", type=FIELD_NAME.
    text="=", type=SREC_ASSIGNMENT:
        text="v", type=FIELD_NAME.
        text="d", type=INDEXED_LOCAL_VARIABLE:
            text="x", type=FIELD_NAME.
            text="y", type=FIELD_NAME.
            text="z", type=FIELD_NAME.

ALLOCATING RELATIVE (PASS-1) LOCALS FOR MAIN BLOCK
    ADD FOR ABSENT s @ 0u0
    READ a ABSENT @ 0s0
    READ b ABSENT @ 0s0
    READ c ABSENT @ 0s0
    READ d ABSENT @ 0s0
BLOCK main_block subframe_var_count=1 max_subframe_depth=1

ALLOCATING ABSOLUTE (PASS-2) LOCALS FOR DEFINITION BLOCK [main_block]
SUBFRAME [main_block] var_count_below=0 var_count_at=1 max_var_depth_so_far=1 subframe_depth=0
    NODE a 0s0 (0:0) -> 0
    NODE b 0s0 (0:0) -> 0
    NODE c 0s0 (0:0) -> 0
    NODE d 0s0 (0:0) -> 0

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth=1 max_var_depth=1
    text="=", type=SREC_ASSIGNMENT:
        text="s", type=FIELD_NAME.
        text="a", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=0 vardef_subframe_index=0 vardef_frame_relative_index=0
    text="=", type=SREC_ASSIGNMENT:
        text="t", type=FIELD_NAME.
        text="b", type=INDEXED_LOCAL_VARIABLE: vardef_subframe_relative_index=0 vardef_subframe_index=0 vardef_frame_relative_index=0
            text="x", type=FIELD_NAME.
    text="=", type=SREC_ASSIGNMENT:
        text="u", type=FIELD_NAME.
        text="c", type=INDEXED_LOCAL_VARIABLE: vardef_subframe_relative_index=0 vardef_subframe_index=0 vardef_frame_relative_index=0
            text="x", type=FIELD_NAME.
            text="y", type=FIELD_NAME.
    text="=", type=SREC_ASSIGNMENT:
        text="v", type=FIELD_NAME.
        text="d", type=INDEXED_LOCAL_VARIABLE: vardef_subframe_relative_index=0 vardef_subframe_index=0 vardef_frame_relative_index=0
            text="x", type=FIELD_NAME.
            text="y", type=FIELD_NAME.
            text="z", type=FIELD_NAME.

x=3,y=4,z=5

mlr --from ./reg_test/input/xyz345 put -v -a 
    d[$x][$y][$z] = 9;
    $d = d[$x][$y][$z];

RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=INDEXED_LOCAL_ASSIGNMENT:
        text="d", type=INDEXED_LOCAL_VARIABLE:
            text="x", type=FIELD_NAME.
            text="y", type=FIELD_NAME.
            text="z", type=FIELD_NAME.
        text="9", type=NUMERIC_LITERAL.
    text="=", type=SREC_ASSIGNMENT:
        text="d", type=FIELD_NAME.
        text="d", type=INDEXED_LOCAL_VARIABLE:
            text="x", type=FIELD_NAME.
            text="y", type=FIELD_NAME.
            text="z", type=FIELD_NAME.

ALLOCATING RELATIVE (PASS-1) LOCALS FOR MAIN BLOCK
    ADD FOR ABSENT s @ 0u0
    ADD WRITE d @ 1s0
    READ d PRESENT @ 1s0
BLOCK main_block subframe_var_count=2 max_subframe_depth=1

ALLOCATING ABSOLUTE (PASS-2) LOCALS FOR DEFINITION BLOCK [main_block]
SUBFRAME [main_block] var_count_below=0 var_count_at=2 max_var_depth_so_far=2 subframe_depth=0
    NODE d 1s0 (0:0) -> 1
    NODE d 1s0 (0:0) -> 1

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=2 max_subframe_depth=1 max_var_depth=2
    text="=", type=INDEXED_LOCAL_ASSIGNMENT:
        text="d", type=INDEXED_LOCAL_VARIABLE: vardef_subframe_relative_index=1 vardef_subframe_index=0 vardef_frame_relative_index=1
            text="x", type=FIELD_NAME.
            text="y", type=FIELD_NAME.
            text="z", type=FIELD_NAME.
        text="9", type=NUMERIC_LITERAL.
    text="=", type=SREC_ASSIGNMENT:
        text="d", type=FIELD_NAME.
        text="d", type=INDEXED_LOCAL_VARIABLE: vardef_subframe_relative_index=1 vardef_subframe_index=0 vardef_frame_relative_index=1
            text="x", type=FIELD_NAME.
            text="y", type=FIELD_NAME.
            text="z", type=FIELD_NAME.

x=3,y=4,z=5,d=9

mlr --from ./reg_test/input/xyz345 put -v -a 
    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];

RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=NONINDEXED_LOCAL_ASSIGNMENT:
        text="a", type=NONINDEXED_LOCAL_VARIABLE.
        text="6", type=NUMERIC_LITERAL.
    text="=", type=INDEXED_LOCAL_ASSIGNMENT:
        text="b", type=INDEXED_LOCAL_VARIABLE:
            text="x", type=FIELD_NAME.
        text="7", type=NUMERIC_LITERAL.
    text="=", type=INDEXED_LOCAL_ASSIGNMENT:
        text="c", type=INDEXED_LOCAL_VARIABLE:
            text="x", type=FIELD_NAME.
            text="y", type=FIELD_NAME.
        text="8", type=NUMERIC_LITERAL.
    text="=", type=INDEXED_LOCAL_ASSIGNMENT:
        text="d", type=INDEXED_LOCAL_VARIABLE:
            text="x", type=FIELD_NAME.
            text="y", type=FIELD_NAME.
            text="z", type=FIELD_NAME.
        text="9", type=NUMERIC_LITERAL.
    text="=", type=SREC_ASSIGNMENT:
        text="a", type=FIELD_NAME.
        text="a", type=NONINDEXED_LOCAL_VARIABLE.
    text="=", type=SREC_ASSIGNMENT:
        text="b", type=FIELD_NAME.
        text="b", type=INDEXED_LOCAL_VARIABLE:
            text="x", type=FIELD_NAME.
    text="=", type=SREC_ASSIGNMENT:
        text="c", type=FIELD_NAME.
        text="c", type=INDEXED_LOCAL_VARIABLE:
            text="x", type=FIELD_NAME.
            text="y", type=FIELD_NAME.
    text="=", type=SREC_ASSIGNMENT:
        text="d", type=FIELD_NAME.
        text="d", type=INDEXED_LOCAL_VARIABLE:
            text="x", type=FIELD_NAME.
            text="y", type=FIELD_NAME.
            text="z", type=FIELD_NAME.

ALLOCATING RELATIVE (PASS-1) LOCALS FOR MAIN BLOCK
    ADD FOR ABSENT s @ 0u0
    ADD WRITE a @ 1s0
    ADD WRITE b @ 2s0
    ADD WRITE c @ 3s0
    ADD WRITE d @ 4s0
    READ a PRESENT @ 1s0
    READ b PRESENT @ 2s0
    READ c PRESENT @ 3s0
    READ d PRESENT @ 4s0
BLOCK main_block subframe_var_count=5 max_subframe_depth=1

ALLOCATING ABSOLUTE (PASS-2) LOCALS FOR DEFINITION BLOCK [main_block]
SUBFRAME [main_block] var_count_below=0 var_count_at=5 max_var_depth_so_far=5 subframe_depth=0
    NODE a 1s0 (0:0) -> 1
    NODE b 2s0 (0:0) -> 2
    NODE c 3s0 (0:0) -> 3
    NODE d 4s0 (0:0) -> 4
    NODE a 1s0 (0:0) -> 1
    NODE b 2s0 (0:0) -> 2
    NODE c 3s0 (0:0) -> 3
    NODE d 4s0 (0:0) -> 4

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=5 max_subframe_depth=1 max_var_depth=5
    text="=", type=NONINDEXED_LOCAL_ASSIGNMENT:
        text="a", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=1 vardef_subframe_index=0 vardef_frame_relative_index=1
        text="6", type=NUMERIC_LITERAL.
    text="=", type=INDEXED_LOCAL_ASSIGNMENT:
        text="b", type=INDEXED_LOCAL_VARIABLE: vardef_subframe_relative_index=2 vardef_subframe_index=0 vardef_frame_relative_index=2
            text="x", type=FIELD_NAME.
        text="7", type=NUMERIC_LITERAL.
    text="=", type=INDEXED_LOCAL_ASSIGNMENT:
        text="c", type=INDEXED_LOCAL_VARIABLE: vardef_subframe_relative_index=3 vardef_subframe_index=0 vardef_frame_relative_index=3
            text="x", type=FIELD_NAME.
            text="y", type=FIELD_NAME.
        text="8", type=NUMERIC_LITERAL.
    text="=", type=INDEXED_LOCAL_ASSIGNMENT:
        text="d", type=INDEXED_LOCAL_VARIABLE: vardef_subframe_relative_index=4 vardef_subframe_index=0 vardef_frame_relative_index=4
            text="x", type=FIELD_NAME.
            text="y", type=FIELD_NAME.
            text="z", type=FIELD_NAME.
        text="9", type=NUMERIC_LITERAL.
    text="=", type=SREC_ASSIGNMENT:
        text="a", type=FIELD_NAME.
        text="a", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=1 vardef_subframe_index=0 vardef_frame_relative_index=1
    text="=", type=SREC_ASSIGNMENT:
        text="b", type=FIELD_NAME.
        text="b", type=INDEXED_LOCAL_VARIABLE: vardef_subframe_relative_index=2 vardef_subframe_index=0 vardef_frame_relative_index=2
            text="x", type=FIELD_NAME.
    text="=", type=SREC_ASSIGNMENT:
        text="c", type=FIELD_NAME.
        text="c", type=INDEXED_LOCAL_VARIABLE: vardef_subframe_relative_index=3 vardef_subframe_index=0 vardef_frame_relative_index=3
            text="x", type=FIELD_NAME.
            text="y", type=FIELD_NAME.
    text="=", type=SREC_ASSIGNMENT:
        text="d", type=FIELD_NAME.
        text="d", type=INDEXED_LOCAL_VARIABLE: vardef_subframe_relative_index=4 vardef_subframe_index=0 vardef_frame_relative_index=4
            text="x", type=FIELD_NAME.
            text="y", type=FIELD_NAME.
            text="z", type=FIELD_NAME.

x=3,y=4,z=5,a=6,b=7,c=8,d=9

mlr --from ./reg_test/input/xyz345 put -v -a 
    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];

RAW AST:

AST ROOT:
text="block", type=STATEMENT_BLOCK:
    text="=", type=NONINDEXED_LOCAL_ASSIGNMENT:
        text="a", type=NONINDEXED_LOCAL_VARIABLE.
        text="6", type=NUMERIC_LITERAL.
    text="=", type=INDEXED_LOCAL_ASSIGNMENT:
        text="b", type=INDEXED_LOCAL_VARIABLE:
            text="x", type=FIELD_NAME.
        text="7", type=NUMERIC_LITERAL.
    text="=", type=INDEXED_LOCAL_ASSIGNMENT:
        text="c", type=INDEXED_LOCAL_VARIABLE:
            text="x", type=FIELD_NAME.
            text="y", type=FIELD_NAME.
        text="8", type=NUMERIC_LITERAL.
    text="=", type=INDEXED_LOCAL_ASSIGNMENT:
        text="d", type=INDEXED_LOCAL_VARIABLE:
            text="x", type=FIELD_NAME.
            text="y", type=FIELD_NAME.
            text="z", type=FIELD_NAME.
        text="9", type=NUMERIC_LITERAL.
    text="=", type=SREC_ASSIGNMENT:
        text="a0", type=FIELD_NAME.
        text="a", type=NONINDEXED_LOCAL_VARIABLE.
    text="=", type=SREC_ASSIGNMENT:
        text="a1", type=FIELD_NAME.
        text="a", type=INDEXED_LOCAL_VARIABLE:
            text="x", type=FIELD_NAME.
    text="=", type=SREC_ASSIGNMENT:
        text="a2", type=FIELD_NAME.
        text="a", type=INDEXED_LOCAL_VARIABLE:
            text="x", type=FIELD_NAME.
            text="y", type=FIELD_NAME.
    text="=", type=SREC_ASSIGNMENT:
        text="a3", type=FIELD_NAME.
        text="a", type=INDEXED_LOCAL_VARIABLE:
            text="x", type=FIELD_NAME.
            text="y", type=FIELD_NAME.
            text="z", type=FIELD_NAME.
    text="=", type=SREC_ASSIGNMENT:
        text="b0", type=FIELD_NAME.
        text="b", type=NONINDEXED_LOCAL_VARIABLE.
    text="=", type=SREC_ASSIGNMENT:
        text="b1", type=FIELD_NAME.
        text="b", type=INDEXED_LOCAL_VARIABLE:
            text="x", type=FIELD_NAME.
    text="=", type=SREC_ASSIGNMENT:
        text="b2", type=FIELD_NAME.
        text="b", type=INDEXED_LOCAL_VARIABLE:
            text="x", type=FIELD_NAME.
            text="y", type=FIELD_NAME.
    text="=", type=SREC_ASSIGNMENT:
        text="b3", type=FIELD_NAME.
        text="b", type=INDEXED_LOCAL_VARIABLE:
            text="x", type=FIELD_NAME.
            text="y", type=FIELD_NAME.
            text="z", type=FIELD_NAME.
    text="=", type=SREC_ASSIGNMENT:
        text="c0", type=FIELD_NAME.
        text="c", type=NONINDEXED_LOCAL_VARIABLE.
    text="=", type=SREC_ASSIGNMENT:
        text="c1", type=FIELD_NAME.
        text="c", type=INDEXED_LOCAL_VARIABLE:
            text="x", type=FIELD_NAME.
    text="=", type=SREC_ASSIGNMENT:
        text="c2", type=FIELD_NAME.
        text="c", type=INDEXED_LOCAL_VARIABLE:
            text="x", type=FIELD_NAME.
            text="y", type=FIELD_NAME.
    text="=", type=SREC_ASSIGNMENT:
        text="c3", type=FIELD_NAME.
        text="c", type=INDEXED_LOCAL_VARIABLE:
            text="x", type=FIELD_NAME.
            text="y", type=FIELD_NAME.
            text="z", type=FIELD_NAME.
    text="=", type=SREC_ASSIGNMENT:
        text="d0", type=FIELD_NAME.
        text="d", type=NONINDEXED_LOCAL_VARIABLE.
    text="=", type=SREC_ASSIGNMENT:
        text="d1", type=FIELD_NAME.
        text="d", type=INDEXED_LOCAL_VARIABLE:
            text="x", type=FIELD_NAME.
    text="=", type=SREC_ASSIGNMENT:
        text="d2", type=FIELD_NAME.
        text="d", type=INDEXED_LOCAL_VARIABLE:
            text="x", type=FIELD_NAME.
            text="y", type=FIELD_NAME.
    text="=", type=SREC_ASSIGNMENT:
        text="d3", type=FIELD_NAME.
        text="d", type=INDEXED_LOCAL_VARIABLE:
            text="x", type=FIELD_NAME.
            text="y", type=FIELD_NAME.
            text="z", type=FIELD_NAME.

ALLOCATING RELATIVE (PASS-1) LOCALS FOR MAIN BLOCK
    ADD FOR ABSENT s @ 0u0
    ADD WRITE a @ 1s0
    ADD WRITE b @ 2s0
    ADD WRITE c @ 3s0
    ADD WRITE d @ 4s0
    READ a PRESENT @ 1s0
    READ a PRESENT @ 1s0
    READ a PRESENT @ 1s0
    READ a PRESENT @ 1s0
    READ b PRESENT @ 2s0
    READ b PRESENT @ 2s0
    READ b PRESENT @ 2s0
    READ b PRESENT @ 2s0
    READ c PRESENT @ 3s0
    READ c PRESENT @ 3s0
    READ c PRESENT @ 3s0
    READ c PRESENT @ 3s0
    READ d PRESENT @ 4s0
    READ d PRESENT @ 4s0
    READ d PRESENT @ 4s0
    READ d PRESENT @ 4s0
BLOCK main_block subframe_var_count=5 max_subframe_depth=1

ALLOCATING ABSOLUTE (PASS-2) LOCALS FOR DEFINITION BLOCK [main_block]
SUBFRAME [main_block] var_count_below=0 var_count_at=5 max_var_depth_so_far=5 subframe_depth=0
    NODE a 1s0 (0:0) -> 1
    NODE b 2s0 (0:0) -> 2
    NODE c 3s0 (0:0) -> 3
    NODE d 4s0 (0:0) -> 4
    NODE a 1s0 (0:0) -> 1
    NODE a 1s0 (0:0) -> 1
    NODE a 1s0 (0:0) -> 1
    NODE a 1s0 (0:0) -> 1
    NODE b 2s0 (0:0) -> 2
    NODE b 2s0 (0:0) -> 2
    NODE b 2s0 (0:0) -> 2
    NODE b 2s0 (0:0) -> 2
    NODE c 3s0 (0:0) -> 3
    NODE c 3s0 (0:0) -> 3
    NODE c 3s0 (0:0) -> 3
    NODE c 3s0 (0:0) -> 3
    NODE d 4s0 (0:0) -> 4
    NODE d 4s0 (0:0) -> 4
    NODE d 4s0 (0:0) -> 4
    NODE d 4s0 (0:0) -> 4

BLOCKED AST:

MAIN BLOCK:
text="main_block", type=STATEMENT_BLOCK: subframe_var_count=5 max_subframe_depth=1 max_var_depth=5
    text="=", type=NONINDEXED_LOCAL_ASSIGNMENT:
        text="a", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=1 vardef_subframe_index=0 vardef_frame_relative_index=1
        text="6", type=NUMERIC_LITERAL.
    text="=", type=INDEXED_LOCAL_ASSIGNMENT:
        text="b", type=INDEXED_LOCAL_VARIABLE: vardef_subframe_relative_index=2 vardef_subframe_index=0 vardef_frame_relative_index=2
            text="x", type=FIELD_NAME.
        text="7", type=NUMERIC_LITERAL.
    text="=", type=INDEXED_LOCAL_ASSIGNMENT:
        text="c", type=INDEXED_LOCAL_VARIABLE: vardef_subframe_relative_index=3 vardef_subframe_index=0 vardef_frame_relative_index=3
            text="x", type=FIELD_NAME.
            text="y", type=FIELD_NAME.
        text="8", type=NUMERIC_LITERAL.
    text="=", type=INDEXED_LOCAL_ASSIGNMENT:
        text="d", type=INDEXED_LOCAL_VARIABLE: vardef_subframe_relative_index=4 vardef_subframe_index=0 vardef_frame_relative_index=4
            text="x", type=FIELD_NAME.
            text="y", type=FIELD_NAME.
            text="z", type=FIELD_NAME.
        text="9", type=NUMERIC_LITERAL.
    text="=", type=SREC_ASSIGNMENT:
        text="a0", type=FIELD_NAME.
        text="a", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=1 vardef_subframe_index=0 vardef_frame_relative_index=1
    text="=", type=SREC_ASSIGNMENT:
        text="a1", type=FIELD_NAME.
        text="a", type=INDEXED_LOCAL_VARIABLE: vardef_subframe_relative_index=1 vardef_subframe_index=0 vardef_frame_relative_index=1
            text="x", type=FIELD_NAME.
    text="=", type=SREC_ASSIGNMENT:
        text="a2", type=FIELD_NAME.
        text="a", type=INDEXED_LOCAL_VARIABLE: vardef_subframe_relative_index=1 vardef_subframe_index=0 vardef_frame_relative_index=1
            text="x", type=FIELD_NAME.
            text="y", type=FIELD_NAME.
    text="=", type=SREC_ASSIGNMENT:
        text="a3", type=FIELD_NAME.
        text="a", type=INDEXED_LOCAL_VARIABLE: vardef_subframe_relative_index=1 vardef_subframe_index=0 vardef_frame_relative_index=1
            text="x", type=FIELD_NAME.
            text="y", type=FIELD_NAME.
            text="z", type=FIELD_NAME.
    text="=", type=SREC_ASSIGNMENT:
        text="b0", type=FIELD_NAME.
        text="b", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=2 vardef_subframe_index=0 vardef_frame_relative_index=2
    text="=", type=SREC_ASSIGNMENT:
        text="b1", type=FIELD_NAME.
        text="b", type=INDEXED_LOCAL_VARIABLE: vardef_subframe_relative_index=2 vardef_subframe_index=0 vardef_frame_relative_index=2
            text="x", type=FIELD_NAME.
    text="=", type=SREC_ASSIGNMENT:
        text="b2", type=FIELD_NAME.
        text="b", type=INDEXED_LOCAL_VARIABLE: vardef_subframe_relative_index=2 vardef_subframe_index=0 vardef_frame_relative_index=2
            text="x", type=FIELD_NAME.
            text="y", type=FIELD_NAME.
    text="=", type=SREC_ASSIGNMENT:
        text="b3", type=FIELD_NAME.
        text="b", type=INDEXED_LOCAL_VARIABLE: vardef_subframe_relative_index=2 vardef_subframe_index=0 vardef_frame_relative_index=2
            text="x", type=FIELD_NAME.
            text="y", type=FIELD_NAME.
            text="z", type=FIELD_NAME.
    text="=", type=SREC_ASSIGNMENT:
        text="c0", type=FIELD_NAME.
        text="c", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=3 vardef_subframe_index=0 vardef_frame_relative_index=3
    text="=", type=SREC_ASSIGNMENT:
        text="c1", type=FIELD_NAME.
        text="c", type=INDEXED_LOCAL_VARIABLE: vardef_subframe_relative_index=3 vardef_subframe_index=0 vardef_frame_relative_index=3
            text="x", type=FIELD_NAME.
    text="=", type=SREC_ASSIGNMENT:
        text="c2", type=FIELD_NAME.
        text="c", type=INDEXED_LOCAL_VARIABLE: vardef_subframe_relative_index=3 vardef_subframe_index=0 vardef_frame_relative_index=3
            text="x", type=FIELD_NAME.
            text="y", type=FIELD_NAME.
    text="=", type=SREC_ASSIGNMENT:
        text="c3", type=FIELD_NAME.
        text="c", type=INDEXED_LOCAL_VARIABLE: vardef_subframe_relative_index=3 vardef_subframe_index=0 vardef_frame_relative_index=3
            text="x", type=FIELD_NAME.
            text="y", type=FIELD_NAME.
            text="z", type=FIELD_NAME.
    text="=", type=SREC_ASSIGNMENT:
        text="d0", type=FIELD_NAME.
        text="d", type=NONINDEXED_LOCAL_VARIABLE. vardef_subframe_relative_index=4 vardef_subframe_index=0 vardef_frame_relative_index=4
    text="=", type=SREC_ASSIGNMENT:
        text="d1", type=FIELD_NAME.
        text="d", type=INDEXED_LOCAL_VARIABLE: vardef_subframe_relative_index=4 vardef_subframe_index=0 vardef_frame_relative_index=4
            text="x", type=FIELD_NAME.
    text="=", type=SREC_ASSIGNMENT:
        text="d2", type=FIELD_NAME.
        text="d", type=INDEXED_LOCAL_VARIABLE: vardef_subframe_relative_index=4 vardef_subframe_index=0 vardef_frame_relative_index=4
            text="x", type=FIELD_NAME.
            text="y", type=FIELD_NAME.
    text="=", type=SREC_ASSIGNMENT:
        text="d3", type=FIELD_NAME.
        text="d", type=INDEXED_LOCAL_VARIABLE: vardef_subframe_relative_index=4 vardef_subframe_index=0 vardef_frame_relative_index=4
            text="x", type=FIELD_NAME.
            text="y", type=FIELD_NAME.
            text="z", type=FIELD_NAME.

x=3,y=4,z=5,a0=6,b1=7,c2=8,d3=9


================================================================
LOCAL MAP-VARIABLE TYPE-DECL

mlr --from ./reg_test/input/xyz345 put 
    map a = {};

x=3,y=4,z=5

mlr --from ./reg_test/input/xyz345 put 
    map a = {};
    a[1]=2;
    a[3][4]=5;

x=3,y=4,z=5

mlr --from ./reg_test/input/xyz345 put 
    map a = {};
    a=2;
    a[3][4]=5;

mlr: map type assertion for variable a unmet by value 2 with type int.

mlr --from ./reg_test/input/xyz345 put 
    map a = {};
    a[3][4]=5;
    a=2;

mlr: map type assertion for variable a unmet by value 2 with type int.


================================================================
TRIPLE-FORs

mlr --opprint --from ./reg_test/input/abixy put 
  num sum = 0;
  num a = 1;
  for (;;) {
    if (a > NR) {
        break;
    }
    sum += a;
    a += 1
  }
  $z = sum

a   b   i  x                   y                   z
pan pan 1  0.3467901443380824  0.7268028627434533  1
eks pan 2  0.7586799647899636  0.5221511083334797  3
wye wye 3  0.20460330576630303 0.33831852551664776 6
eks wye 4  0.38139939387114097 0.13418874328430463 10
wye pan 5  0.5732889198020006  0.8636244699032729  15
zee pan 6  0.5271261600918548  0.49322128674835697 21
eks zee 7  0.6117840605678454  0.1878849191181694  28
zee wye 8  0.5985540091064224  0.976181385699006   36
hat wye 9  0.03144187646093577 0.7495507603507059  45
pan wye 10 0.5026260055412137  0.9526183602969864  55

mlr --opprint --from ./reg_test/input/abixy put 
  num sum = 0;
  num a = 1;
  for (;;) {
    if (a > NR) {
        break;
    }
    sum += a;
    a += 1
  }
  $z = sum

a   b   i  x                   y                   z
pan pan 1  0.3467901443380824  0.7268028627434533  1
eks pan 2  0.7586799647899636  0.5221511083334797  3
wye wye 3  0.20460330576630303 0.33831852551664776 6
eks wye 4  0.38139939387114097 0.13418874328430463 10
wye pan 5  0.5732889198020006  0.8636244699032729  15
zee pan 6  0.5271261600918548  0.49322128674835697 21
eks zee 7  0.6117840605678454  0.1878849191181694  28
zee wye 8  0.5985540091064224  0.976181385699006   36
hat wye 9  0.03144187646093577 0.7495507603507059  45
pan wye 10 0.5026260055412137  0.9526183602969864  55

mlr --opprint --from ./reg_test/input/abixy put 
  num sum = 0;
  for (num a = 1; ;) {
    if (a > NR) {
        break;
    }
    sum += a;
    a += 1
  }
  $z = sum

a   b   i  x                   y                   z
pan pan 1  0.3467901443380824  0.7268028627434533  1
eks pan 2  0.7586799647899636  0.5221511083334797  3
wye wye 3  0.20460330576630303 0.33831852551664776 6
eks wye 4  0.38139939387114097 0.13418874328430463 10
wye pan 5  0.5732889198020006  0.8636244699032729  15
zee pan 6  0.5271261600918548  0.49322128674835697 21
eks zee 7  0.6117840605678454  0.1878849191181694  28
zee wye 8  0.5985540091064224  0.976181385699006   36
hat wye 9  0.03144187646093577 0.7495507603507059  45
pan wye 10 0.5026260055412137  0.9526183602969864  55

mlr --opprint --from ./reg_test/input/abixy put 
  num sum = 0;
  num a = 1;
  for (; ; a += 1) {
    if (a > NR) {
        break;
    }
    sum += a;
  }
  $z = sum

a   b   i  x                   y                   z
pan pan 1  0.3467901443380824  0.7268028627434533  1
eks pan 2  0.7586799647899636  0.5221511083334797  3
wye wye 3  0.20460330576630303 0.33831852551664776 6
eks wye 4  0.38139939387114097 0.13418874328430463 10
wye pan 5  0.5732889198020006  0.8636244699032729  15
zee pan 6  0.5271261600918548  0.49322128674835697 21
eks zee 7  0.6117840605678454  0.1878849191181694  28
zee wye 8  0.5985540091064224  0.976181385699006   36
hat wye 9  0.03144187646093577 0.7495507603507059  45
pan wye 10 0.5026260055412137  0.9526183602969864  55

mlr --opprint --from ./reg_test/input/abixy put 
  num sum = 0;
  for (num a=1; ; a += 1) {
    if (a > NR) {
        break;
    }
    sum += a;
  }
  $z = sum

a   b   i  x                   y                   z
pan pan 1  0.3467901443380824  0.7268028627434533  1
eks pan 2  0.7586799647899636  0.5221511083334797  3
wye wye 3  0.20460330576630303 0.33831852551664776 6
eks wye 4  0.38139939387114097 0.13418874328430463 10
wye pan 5  0.5732889198020006  0.8636244699032729  15
zee pan 6  0.5271261600918548  0.49322128674835697 21
eks zee 7  0.6117840605678454  0.1878849191181694  28
zee wye 8  0.5985540091064224  0.976181385699006   36
hat wye 9  0.03144187646093577 0.7495507603507059  45
pan wye 10 0.5026260055412137  0.9526183602969864  55

mlr --opprint --from ./reg_test/input/abixy put 
  num sum = 0;
  for (num a=1; a <= NR; a += 1) {
    sum += a;
  }
  $z = sum

a   b   i  x                   y                   z
pan pan 1  0.3467901443380824  0.7268028627434533  1
eks pan 2  0.7586799647899636  0.5221511083334797  3
wye wye 3  0.20460330576630303 0.33831852551664776 6
eks wye 4  0.38139939387114097 0.13418874328430463 10
wye pan 5  0.5732889198020006  0.8636244699032729  15
zee pan 6  0.5271261600918548  0.49322128674835697 21
eks zee 7  0.6117840605678454  0.1878849191181694  28
zee wye 8  0.5985540091064224  0.976181385699006   36
hat wye 9  0.03144187646093577 0.7495507603507059  45
pan wye 10 0.5026260055412137  0.9526183602969864  55

mlr put 
  num a = 100;
  num b = 100;
  for (num a = 200, b = 300; a <= 210; a += 1, b += 1) {
    print "a:".a.",b:".b
  }
  $oa = a;
  $ob = b;

a:200,b:300
a:201,b:301
a:202,b:302
a:203,b:303
a:204,b:304
a:205,b:305
a:206,b:306
a:207,b:307
a:208,b:308
a:209,b:309
a:210,b:310
x=1,oa=100,ob=311

mlr --from ./reg_test/input/abixy put 
  for ( ; $x <= 10; $x += 1) {
  }

a=pan,b=pan,i=1,x=10.346790,y=0.7268028627434533
a=eks,b=pan,i=2,x=10.758680,y=0.5221511083334797
a=wye,b=wye,i=3,x=10.204603,y=0.33831852551664776
a=eks,b=wye,i=4,x=10.381399,y=0.13418874328430463
a=wye,b=pan,i=5,x=10.573289,y=0.8636244699032729
a=zee,b=pan,i=6,x=10.527126,y=0.49322128674835697
a=eks,b=zee,i=7,x=10.611784,y=0.1878849191181694
a=zee,b=wye,i=8,x=10.598554,y=0.976181385699006
a=hat,b=wye,i=9,x=10.031442,y=0.7495507603507059
a=pan,b=wye,i=10,x=10.502626,y=0.9526183602969864

mlr --opprint --from ./reg_test/input/abixy put 
  num a = 100;
  b  = 200;
  @c = 300;
  $d = 400;
  for (num i = 1; i < 1024; i *= 2) {
    a  += 1;
    b  += 1;
    @c += 1;
    $d += 1;
    $oa = a;
    $ob = b;
    $oc = @c;
    $od = $d;
  }

a   b   i  x                   y                   d   oa  ob  oc  od
pan pan 1  0.3467901443380824  0.7268028627434533  410 110 210 310 410
eks pan 2  0.7586799647899636  0.5221511083334797  410 110 210 310 410
wye wye 3  0.20460330576630303 0.33831852551664776 410 110 210 310 410
eks wye 4  0.38139939387114097 0.13418874328430463 410 110 210 310 410
wye pan 5  0.5732889198020006  0.8636244699032729  410 110 210 310 410
zee pan 6  0.5271261600918548  0.49322128674835697 410 110 210 310 410
eks zee 7  0.6117840605678454  0.1878849191181694  410 110 210 310 410
zee wye 8  0.5985540091064224  0.976181385699006   410 110 210 310 410
hat wye 9  0.03144187646093577 0.7495507603507059  410 110 210 310 410
pan wye 10 0.5026260055412137  0.9526183602969864  410 110 210 310 410

mlr --opprint --from ./reg_test/input/abixy put 
  num sum = 0;
  for (num a = 1; a <= 10; a += 1) {
    continue;
    sum += a;
  }
  $z = sum

a   b   i  x                   y                   z
pan pan 1  0.3467901443380824  0.7268028627434533  0
eks pan 2  0.7586799647899636  0.5221511083334797  0
wye wye 3  0.20460330576630303 0.33831852551664776 0
eks wye 4  0.38139939387114097 0.13418874328430463 0
wye pan 5  0.5732889198020006  0.8636244699032729  0
zee pan 6  0.5271261600918548  0.49322128674835697 0
eks zee 7  0.6117840605678454  0.1878849191181694  0
zee wye 8  0.5985540091064224  0.976181385699006   0
hat wye 9  0.03144187646093577 0.7495507603507059  0
pan wye 10 0.5026260055412137  0.9526183602969864  0

mlr --opprint --from ./reg_test/input/abixy put 
  num sum = 0;
  for (num a = 1; a <= 10; a += 1) {
    sum += a;
    break;
  }
  $z = sum

a   b   i  x                   y                   z
pan pan 1  0.3467901443380824  0.7268028627434533  1
eks pan 2  0.7586799647899636  0.5221511083334797  1
wye wye 3  0.20460330576630303 0.33831852551664776 1
eks wye 4  0.38139939387114097 0.13418874328430463 1
wye pan 5  0.5732889198020006  0.8636244699032729  1
zee pan 6  0.5271261600918548  0.49322128674835697 1
eks zee 7  0.6117840605678454  0.1878849191181694  1
zee wye 8  0.5985540091064224  0.976181385699006   1
hat wye 9  0.03144187646093577 0.7495507603507059  1
pan wye 10 0.5026260055412137  0.9526183602969864  1

mlr --opprint --from ./reg_test/input/abixy put 
  num sum = 0;
  for (num a = 1; a <= NR; a += 1) {
    if (a == 4 || a == 5) {
      continue;
    }
    if (a == 8) {
        break;
    }
    sum += a;
  }
  $z = sum

a   b   i  x                   y                   z
pan pan 1  0.3467901443380824  0.7268028627434533  1
eks pan 2  0.7586799647899636  0.5221511083334797  3
wye wye 3  0.20460330576630303 0.33831852551664776 6
eks wye 4  0.38139939387114097 0.13418874328430463 6
wye pan 5  0.5732889198020006  0.8636244699032729  6
zee pan 6  0.5271261600918548  0.49322128674835697 12
eks zee 7  0.6117840605678454  0.1878849191181694  19
zee wye 8  0.5985540091064224  0.976181385699006   19
hat wye 9  0.03144187646093577 0.7495507603507059  19
pan wye 10 0.5026260055412137  0.9526183602969864  19

mlr --opprint --from ./reg_test/input/abixy put 
    for ($o1 = 1; ; $o3 = 3) {
        break;
    }

a   b   i  x                   y                   o1
pan pan 1  0.3467901443380824  0.7268028627434533  1
eks pan 2  0.7586799647899636  0.5221511083334797  1
wye wye 3  0.20460330576630303 0.33831852551664776 1
eks wye 4  0.38139939387114097 0.13418874328430463 1
wye pan 5  0.5732889198020006  0.8636244699032729  1
zee pan 6  0.5271261600918548  0.49322128674835697 1
eks zee 7  0.6117840605678454  0.1878849191181694  1
zee wye 8  0.5985540091064224  0.976181385699006   1
hat wye 9  0.03144187646093577 0.7495507603507059  1
pan wye 10 0.5026260055412137  0.9526183602969864  1

mlr --opprint --from ./reg_test/input/abixy put 
    for ($o1 = 1; $o1 < NR; $o1 += 1) {
    }

a   b   i  x                   y                   o1
pan pan 1  0.3467901443380824  0.7268028627434533  1
eks pan 2  0.7586799647899636  0.5221511083334797  2
wye wye 3  0.20460330576630303 0.33831852551664776 3
eks wye 4  0.38139939387114097 0.13418874328430463 4
wye pan 5  0.5732889198020006  0.8636244699032729  5
zee pan 6  0.5271261600918548  0.49322128674835697 6
eks zee 7  0.6117840605678454  0.1878849191181694  7
zee wye 8  0.5985540091064224  0.976181385699006   8
hat wye 9  0.03144187646093577 0.7495507603507059  9
pan wye 10 0.5026260055412137  0.9526183602969864  10

mlr --opprint --from ./reg_test/input/abixy put 
    for ($o1 = 1, $o2 = 2; $o3 = 3; $o4 = 4) {
    }

mlr: the final triple-for continutation statement must be a bare boolean.

mlr --opprint --from ./reg_test/input/abixy put 
    for ($o1 = 1, $o2 = 2; $o3 < 3, $o4 = 4; $o5 = 5) {
        break;
    }

mlr: the final triple-for continutation statement must be a bare boolean.

mlr --opprint --from ./reg_test/input/abixy put 
    $o4 = 0;
    for ($o1 = 1, $o2 = 2; $o3 = 3, $o4 < 4; $o5 = 5) {
        break;
    }

a   b   i  x                   y                   o4 o1 o2 o3
pan pan 1  0.3467901443380824  0.7268028627434533  0  1  2  3
eks pan 2  0.7586799647899636  0.5221511083334797  0  1  2  3
wye wye 3  0.20460330576630303 0.33831852551664776 0  1  2  3
eks wye 4  0.38139939387114097 0.13418874328430463 0  1  2  3
wye pan 5  0.5732889198020006  0.8636244699032729  0  1  2  3
zee pan 6  0.5271261600918548  0.49322128674835697 0  1  2  3
eks zee 7  0.6117840605678454  0.1878849191181694  0  1  2  3
zee wye 8  0.5985540091064224  0.976181385699006   0  1  2  3
hat wye 9  0.03144187646093577 0.7495507603507059  0  1  2  3
pan wye 10 0.5026260055412137  0.9526183602969864  0  1  2  3


================================================================
MAPVARS IN SCALAR FUNCTION-CALL CONTEXTS

mlr --from ./reg_test/input/abixy put $z=strlen($*)
mlr: $* is not valid within scalar contexts.

mlr --from ./reg_test/input/abixy put $z=strlen({})
mlr: map-literals are not valid within scalar contexts.

mlr --from ./reg_test/input/abixy put a={}; $z=strlen(a)
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


================================================================
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

mlr --from ./reg_test/input/xyz2 put $* = $*
x=3,y=4,z=5
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



mlr --from ./reg_test/input/xyz2 put @a = 1; $* = @*
a=1
a=1

mlr --from ./reg_test/input/xyz2 put @b[1] = 2; $* = @*



mlr --from ./reg_test/input/xyz2 put @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



mlr --from ./reg_test/input/xyz2 put $* = 3



mlr --from ./reg_test/input/xyz2 put 
  func map_valued_func() {
    return {"a":1,"b":2}
  }
  map m = map_valued_func();
  $* = m;

a=1,b=2
a=1,b=2

mlr --from ./reg_test/input/xyz2 put 
  func map_valued_func() {
    return {"a":1,"b":2}
  }
  $* = map_valued_func();

a=1,b=2
a=1,b=2


================================================================
MAPVAR ASSIGNMENTS TO FULL OOSVAR

mlr --from ./reg_test/input/xyz2 put @* = {"a":1, "b": {"x":8,"y":9}, "c":3}; dump
{
  "a": 1,
  "b": {
    "x": 8,
    "y": 9
  },
  "c": 3
}
x=3,y=4,z=5
{
  "a": 1,
  "b": {
    "x": 8,
    "y": 9
  },
  "c": 3
}
x=6,y=7,u=8

mlr --from ./reg_test/input/xyz2 put @* = $*; dump
{
  "x": 3,
  "y": 4,
  "z": 5
}
x=3,y=4,z=5
{
  "x": 6,
  "y": 7,
  "u": 8
}
x=6,y=7,u=8

mlr --from ./reg_test/input/xyz2 put @* = {"a":1, "b": {"x":8,"y":9}, "c":3}; dump; @* = @*; dump
{
  "a": 1,
  "b": {
    "x": 8,
    "y": 9
  },
  "c": 3
}
{
  "a": 1,
  "b": {
    "x": 8,
    "y": 9
  },
  "c": 3
}
x=3,y=4,z=5
{
  "a": 1,
  "b": {
    "x": 8,
    "y": 9
  },
  "c": 3
}
{
  "a": 1,
  "b": {
    "x": 8,
    "y": 9
  },
  "c": 3
}
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
{
  "1": 2
}
x=3,y=4,z=5
{
  "1": 2
}
x=6,y=7,u=8

mlr --from ./reg_test/input/xyz2 put @c[1][2] = 3; @* = @c; dump
{
  "1": {
    "2": 3
  }
}
x=3,y=4,z=5
{
  "1": {
    "2": 3
  }
}
x=6,y=7,u=8

mlr --from ./reg_test/input/xyz2 put @a = 1; @* = @*; dump
{
  "a": 1
}
x=3,y=4,z=5
{
  "a": 1
}
x=6,y=7,u=8

mlr --from ./reg_test/input/xyz2 put @b[1] = 2; @* = @*; dump
{
  "b": {
    "1": 2
  }
}
x=3,y=4,z=5
{
  "b": {
    "1": 2
  }
}
x=6,y=7,u=8

mlr --from ./reg_test/input/xyz2 put @c[1][2] = 3; @* = @*; dump
{
  "c": {
    "1": {
      "2": 3
    }
  }
}
x=3,y=4,z=5
{
  "c": {
    "1": {
      "2": 3
    }
  }
}
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
{
  "1": 2
}
x=3,y=4,z=5
{
  "1": 2
}
x=6,y=7,u=8

mlr --from ./reg_test/input/xyz2 put c[1][2] = 3; @* = c; dump
{
  "1": {
    "2": 3
  }
}
x=3,y=4,z=5
{
  "1": {
    "2": 3
  }
}
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() {
    return {"a":1,"b":2}
  }
  map m = map_valued_func();
  @* = m;
  dump

{
  "a": 1,
  "b": 2
}
x=3,y=4,z=5
{
  "a": 1,
  "b": 2
}
x=6,y=7,u=8

mlr --from ./reg_test/input/xyz2 put 
  func map_valued_func() {
    return {"a":1,"b":2}
  }
  @* = map_valued_func();
  dump

{
  "a": 1,
  "b": 2
}
x=3,y=4,z=5
{
  "a": 1,
  "b": 2
}
x=6,y=7,u=8


================================================================
MAPVAR ASSIGNMENTS TO OOSVAR

mlr --from ./reg_test/input/xyz2 put -q @o = {"a":1, "b": {"x":8,"y":9}, "c":3}; dump @o
{
  "a": 1,
  "b": {
    "x": 8,
    "y": 9
  },
  "c": 3
}
{
  "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": {
    "a": 1,
    "b": {
      "x": 8,
      "y": 9
    },
    "c": 3
  }
}
{
  "o": {
    "o": {
      "a": 1,
      "b": {
        "x": 8,
        "y": 9
      },
      "c": 3
    }
  }
}
{
  "o": {
    "a": 1,
    "b": {
      "x": 8,
      "y": 9
    },
    "c": 3
  }
}
{
  "o": {
    "o": {
      "a": 1,
      "b": {
        "x": 8,
        "y": 9
      },
      "c": 3
    }
  }
}

mlr --from ./reg_test/input/xyz2 put -q @o = $*; dump @o
{
  "x": 3,
  "y": 4,
  "z": 5
}
{
  "x": 6,
  "y": 7,
  "u": 8
}

mlr --from ./reg_test/input/xyz2 put -q @o = {"a":1, "b": {"x":8,"y":9}, "c":3}; dump @o; @o = @o; dump @o
{
  "a": 1,
  "b": {
    "x": 8,
    "y": 9
  },
  "c": 3
}
{
  "a": 1,
  "b": {
    "x": 8,
    "y": 9
  },
  "c": 3
}
{
  "a": 1,
  "b": {
    "x": 8,
    "y": 9
  },
  "c": 3
}
{
  "a": 1,
  "b": {
    "x": 8,
    "y": 9
  },
  "c": 3
}

mlr --from ./reg_test/input/xyz2 put -q @o = {"a":1, "b": {"x":8,"y":9}, "c":3}; @o = @o; dump @o
{
  "a": 1,
  "b": {
    "x": 8,
    "y": 9
  },
  "c": 3
}
{
  "a": 1,
  "b": {
    "x": 8,
    "y": 9
  },
  "c": 3
}

mlr --from ./reg_test/input/xyz2 put -q @a = 1; @o = @a; dump @o
1
1

mlr --from ./reg_test/input/xyz2 put -q @b[1] = 2; @o = @b; dump @o
{
  "1": 2
}
{
  "1": 2
}

mlr --from ./reg_test/input/xyz2 put -q @c[1][2] = 3; @o = @c; dump @o
{
  "1": {
    "2": 3
  }
}
{
  "1": {
    "2": 3
  }
}

mlr --from ./reg_test/input/xyz2 put -q @a = 1; @o = @*; dump @o
{
  "a": 1
}
{
  "a": 1,
  "o": {
    "a": 1
  }
}

mlr --from ./reg_test/input/xyz2 put -q @b[1] = 2; @o = @*; dump @o
{
  "b": {
    "1": 2
  }
}
{
  "b": {
    "1": 2
  },
  "o": {
    "b": {
      "1": 2
    }
  }
}

mlr --from ./reg_test/input/xyz2 put -q @c[1][2] = 3; @o = @*; dump @o
{
  "c": {
    "1": {
      "2": 3
    }
  }
}
{
  "c": {
    "1": {
      "2": 3
    }
  },
  "o": {
    "c": {
      "1": {
        "2": 3
      }
    }
  }
}

mlr --from ./reg_test/input/xyz2 put -q a = 1; @o = a; dump @o
1
1

mlr --from ./reg_test/input/xyz2 put -q b[1] = 2; @o = b; dump @o
{
  "1": 2
}
{
  "1": 2
}

mlr --from ./reg_test/input/xyz2 put -q c[1][2] = 3; @o = c; dump @o
{
  "1": {
    "2": 3
  }
}
{
  "1": {
    "2": 3
  }
}

mlr --from ./reg_test/input/xyz2 put -q func map_valued_func() { return {"a":1,"b":2}} @o = map_valued_func(); dump @o
{
  "a": 1,
  "b": 2
}
{
  "a": 1,
  "b": 2
}


================================================================
MAPVAR ASSIGNMENTS TO MAP-TYPED LOCAL

mlr --from ./reg_test/input/xyz2 put -q map o = {"a":1, "b": {"x":8,"y":9}, "c":3}; dump o
{
  "a": 1,
  "b": {
    "x": 8,
    "y": 9
  },
  "c": 3
}
{
  "a": 1,
  "b": {
    "x": 8,
    "y": 9
  },
  "c": 3
}

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
{
  "x": 3,
  "y": 4,
  "z": 5
}
{
  "x": 6,
  "y": 7,
  "u": 8
}

mlr --from ./reg_test/input/xyz2 put -q map o = {"a":1, "b": {"x":8,"y":9}, "c":3}; o = o; dump o
{
  "a": 1,
  "b": {
    "x": 8,
    "y": 9
  },
  "c": 3
}
{
  "a": 1,
  "b": {
    "x": 8,
    "y": 9
  },
  "c": 3
}

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
{
  "1": 2
}
{
  "1": 2
}

mlr --from ./reg_test/input/xyz2 put -q @c[1][2] = 3; map o = @c; dump o
{
  "1": {
    "2": 3
  }
}
{
  "1": {
    "2": 3
  }
}

mlr --from ./reg_test/input/xyz2 put -q @a = 1; map o = @*; dump o
{
  "a": 1
}
{
  "a": 1
}

mlr --from ./reg_test/input/xyz2 put -q @b[1] = 2; map o = @*; dump o
{
  "b": {
    "1": 2
  }
}
{
  "b": {
    "1": 2
  }
}

mlr --from ./reg_test/input/xyz2 put -q @c[1][2] = 3; map o = @*; dump o
{
  "c": {
    "1": {
      "2": 3
    }
  }
}
{
  "c": {
    "1": {
      "2": 3
    }
  }
}

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
{
  "1": 2
}
{
  "1": 2
}

mlr --from ./reg_test/input/xyz2 put -q c[1][2] = 3; map o = c; dump o
{
  "1": {
    "2": 3
  }
}
{
  "1": {
    "2": 3
  }
}

mlr --from ./reg_test/input/xyz2 put -q func map_valued_func() { return {"a":1,"b":2}} map o = map_valued_func(); dump o
{
  "a": 1,
  "b": 2
}
{
  "a": 1,
  "b": 2
}


================================================================
MAPVAR ASSIGNMENTS TO VAR-TYPED LOCAL

mlr --from ./reg_test/input/xyz2 put -q var o = {"a":1, "b": {"x":8,"y":9}, "c":3}; dump o
{
  "a": 1,
  "b": {
    "x": 8,
    "y": 9
  },
  "c": 3
}
{
  "a": 1,
  "b": {
    "x": 8,
    "y": 9
  },
  "c": 3
}

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,
  "y": 4,
  "z": 5
}
{
  "x": 6,
  "y": 7,
  "u": 8
}

mlr --from ./reg_test/input/xyz2 put -q var o = {"a":1, "b": {"x":8,"y":9}, "c":3}; o = o; dump o
{
  "a": 1,
  "b": {
    "x": 8,
    "y": 9
  },
  "c": 3
}
{
  "a": 1,
  "b": {
    "x": 8,
    "y": 9
  },
  "c": 3
}

mlr --from ./reg_test/input/xyz2 put -q @a = 1; var o = @a; dump o
1
1

mlr --from ./reg_test/input/xyz2 put -q @b[1] = 2; var o = @b; dump o
{
  "1": 2
}
{
  "1": 2
}

mlr --from ./reg_test/input/xyz2 put -q @c[1][2] = 3; var o = @c; dump o
{
  "1": {
    "2": 3
  }
}
{
  "1": {
    "2": 3
  }
}

mlr --from ./reg_test/input/xyz2 put -q @a = 1; var o = @*; dump o
{
  "a": 1
}
{
  "a": 1
}

mlr --from ./reg_test/input/xyz2 put -q @b[1] = 2; var o = @*; dump o
{
  "b": {
    "1": 2
  }
}
{
  "b": {
    "1": 2
  }
}

mlr --from ./reg_test/input/xyz2 put -q @c[1][2] = 3; var o = @*; dump o
{
  "c": {
    "1": {
      "2": 3
    }
  }
}
{
  "c": {
    "1": {
      "2": 3
    }
  }
}

mlr --from ./reg_test/input/xyz2 put -q a = 1; var o = a; dump o
1
1

mlr --from ./reg_test/input/xyz2 put -q b[1] = 2; var o = b; dump o
{
  "1": 2
}
{
  "1": 2
}

mlr --from ./reg_test/input/xyz2 put -q c[1][2] = 3; var o = c; dump o
{
  "1": {
    "2": 3
  }
}
{
  "1": {
    "2": 3
  }
}

mlr --from ./reg_test/input/xyz2 put -q func map_valued_func() { return {"a":1,"b":2}} var o = map_valued_func(); dump o
{
  "a": 1,
  "b": 2
}
{
  "a": 1,
  "b": 2
}


================================================================
MAPVAR ASSIGNMENTS TO UNTYPED LOCAL

mlr --from ./reg_test/input/xyz2 put -q o = {"a":1, "b": {"x":8,"y":9}, "c":3}; dump o
{
  "a": 1,
  "b": {
    "x": 8,
    "y": 9
  },
  "c": 3
}
{
  "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,
  "y": 4,
  "z": 5
}
{
  "x": 6,
  "y": 7,
  "u": 8
}

mlr --from ./reg_test/input/xyz2 put -q o = {"a":1, "b": {"x":8,"y":9}, "c":3}; o = o; dump o
{
  "a": 1,
  "b": {
    "x": 8,
    "y": 9
  },
  "c": 3
}
{
  "a": 1,
  "b": {
    "x": 8,
    "y": 9
  },
  "c": 3
}

mlr --from ./reg_test/input/xyz2 put -q @a = 1; o = @a; dump o
1
1

mlr --from ./reg_test/input/xyz2 put -q @b[1] = 2; o = @b; dump o
{
  "1": 2
}
{
  "1": 2
}

mlr --from ./reg_test/input/xyz2 put -q @c[1][2] = 3; o = @c; dump o
{
  "1": {
    "2": 3
  }
}
{
  "1": {
    "2": 3
  }
}

mlr --from ./reg_test/input/xyz2 put -q @a = 1; o = @*; dump o
{
  "a": 1
}
{
  "a": 1
}

mlr --from ./reg_test/input/xyz2 put -q @b[1] = 2; o = @*; dump o
{
  "b": {
    "1": 2
  }
}
{
  "b": {
    "1": 2
  }
}

mlr --from ./reg_test/input/xyz2 put -q @c[1][2] = 3; o = @*; dump o
{
  "c": {
    "1": {
      "2": 3
    }
  }
}
{
  "c": {
    "1": {
      "2": 3
    }
  }
}

mlr --from ./reg_test/input/xyz2 put -q a = 1; o = a; dump o
1
1

mlr --from ./reg_test/input/xyz2 put -q b[1] = 2; o = b; dump o
{
  "1": 2
}
{
  "1": 2
}

mlr --from ./reg_test/input/xyz2 put -q c[1][2] = 3; o = c; dump o
{
  "1": {
    "2": 3
  }
}
{
  "1": {
    "2": 3
  }
}

mlr --from ./reg_test/input/xyz2 put -q func map_valued_func() { return {"a":1,"b":2}} o = map_valued_func(); dump o
{
  "a": 1,
  "b": 2
}
{
  "a": 1,
  "b": 2
}


================================================================
SPLIT/JOIN

mlr --from ./reg_test/input/abixy-het put -q o = joink($*, ":"); print o
a:b:i:x:y
a:b:i:x:y
aaa:b:i:x:y
a:bbb:i:x:y
a:b:i:xxx:y
a:b:i:x:y
a:b:iii:x:y
a:b:i:x:yyy
aaa:bbb:i:x:y
a:b:i:x:y

mlr --from ./reg_test/input/abixy-het put -q o = joinv($*, ":"); print o
pan:pan:1:0.3467901443380824:0.7268028627434533
eks:pan:2:0.7586799647899636:0.5221511083334797
wye:wye:3:0.20460330576630303:0.33831852551664776
eks:wye:4:0.38139939387114097:0.13418874328430463
wye:pan:5:0.5732889198020006:0.8636244699032729
zee:pan:6:0.5271261600918548:0.49322128674835697
eks:zee:7:0.6117840605678454:0.1878849191181694
zee:wye:8:0.5985540091064224:0.976181385699006
hat:wye:9:0.03144187646093577:0.7495507603507059
pan:wye:10:0.5026260055412137:0.9526183602969864

mlr --from ./reg_test/input/abixy-het put -q o = joinkv($*, ":", ";"); print o
a:pan;b:pan;i:1;x:0.3467901443380824;y:0.7268028627434533
a:eks;b:pan;i:2;x:0.7586799647899636;y:0.5221511083334797
aaa:wye;b:wye;i:3;x:0.20460330576630303;y:0.33831852551664776
a:eks;bbb:wye;i:4;x:0.38139939387114097;y:0.13418874328430463
a:wye;b:pan;i:5;xxx:0.5732889198020006;y:0.8636244699032729
a:zee;b:pan;i:6;x:0.5271261600918548;y:0.49322128674835697
a:eks;b:zee;iii:7;x:0.6117840605678454;y:0.1878849191181694
a:zee;b:wye;i:8;x:0.5985540091064224;yyy:0.976181385699006
aaa:hat;bbb: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-het put -q o = joink({1:2,  "abc":4, 5:"xyz"}, ":"); print o
1:abc:5
1:abc:5
1:abc:5
1:abc:5
1:abc:5
1:abc:5
1:abc:5
1:abc:5
1:abc:5
1:abc:5

mlr --from ./reg_test/input/abixy-het put -q o = joinv({1:2,  "abc":4, 5:"xyz"}, ":"); print o
2:4:xyz
2:4:xyz
2:4:xyz
2:4:xyz
2:4:xyz
2:4:xyz
2:4:xyz
2:4:xyz
2:4:xyz
2:4:xyz

mlr --from ./reg_test/input/abixy-het put -q o = joinkv({1:2, "abc":4, 5:"xyz"}, ":", ";"); print o
1:2;abc:4;5:xyz
1:2;abc:4;5:xyz
1:2;abc:4;5:xyz
1:2;abc:4;5:xyz
1:2;abc:4;5:xyz
1:2;abc:4;5:xyz
1:2;abc:4;5:xyz
1:2;abc:4;5:xyz
1:2;abc:4;5:xyz
1:2;abc:4;5:xyz

mlr --from ./reg_test/input/abixy-het put $* = splitnv("a,b,c" , ","); for (k,v in $*) { print k.":".typeof(k)." ".v.":".typeof(v)}
1:string a:string
2:string b:string
3:string c:string
1=a,2=b,3=c
1:string a:string
2:string b:string
3:string c:string
1=a,2=b,3=c
1:string a:string
2:string b:string
3:string c:string
1=a,2=b,3=c
1:string a:string
2:string b:string
3:string c:string
1=a,2=b,3=c
1:string a:string
2:string b:string
3:string c:string
1=a,2=b,3=c
1:string a:string
2:string b:string
3:string c:string
1=a,2=b,3=c
1:string a:string
2:string b:string
3:string c:string
1=a,2=b,3=c
1:string a:string
2:string b:string
3:string c:string
1=a,2=b,3=c
1:string a:string
2:string b:string
3:string c:string
1=a,2=b,3=c
1:string a:string
2:string b:string
3:string c:string
1=a,2=b,3=c

mlr --from ./reg_test/input/abixy-het put $* = splitkv("a=1,b=2,c", "=", ","); for (k, v in $*) {print k.":".typeof(k)." ".v.":".typeof(v)}
a:string 1:int
b:string 2:int
3:string c:string
a=1,b=2,3=c
a:string 1:int
b:string 2:int
3:string c:string
a=1,b=2,3=c
a:string 1:int
b:string 2:int
3:string c:string
a=1,b=2,3=c
a:string 1:int
b:string 2:int
3:string c:string
a=1,b=2,3=c
a:string 1:int
b:string 2:int
3:string c:string
a=1,b=2,3=c
a:string 1:int
b:string 2:int
3:string c:string
a=1,b=2,3=c
a:string 1:int
b:string 2:int
3:string c:string
a=1,b=2,3=c
a:string 1:int
b:string 2:int
3:string c:string
a=1,b=2,3=c
a:string 1:int
b:string 2:int
3:string c:string
a=1,b=2,3=c
a:string 1:int
b:string 2:int
3:string c:string
a=1,b=2,3=c

mlr --from ./reg_test/input/abixy-het put $* = splitnv("a,b,c", IFS); print ">>".IRS."<<"; for (k, v in $*) {print k.":".typeof(k)." ".v.":".typeof(v)}
>>
<<
1:string a:string
2:string b:string
3:string c:string
1=a,2=b,3=c
>>
<<
1:string a:string
2:string b:string
3:string c:string
1=a,2=b,3=c
>>
<<
1:string a:string
2:string b:string
3:string c:string
1=a,2=b,3=c
>>
<<
1:string a:string
2:string b:string
3:string c:string
1=a,2=b,3=c
>>
<<
1:string a:string
2:string b:string
3:string c:string
1=a,2=b,3=c
>>
<<
1:string a:string
2:string b:string
3:string c:string
1=a,2=b,3=c
>>
<<
1:string a:string
2:string b:string
3:string c:string
1=a,2=b,3=c
>>
<<
1:string a:string
2:string b:string
3:string c:string
1=a,2=b,3=c
>>
<<
1:string a:string
2:string b:string
3:string c:string
1=a,2=b,3=c
>>
<<
1:string a:string
2:string b:string
3:string c:string
1=a,2=b,3=c

mlr --from ./reg_test/input/abixy-het put $* = splitkv("a=1,b=2,c", IPS, IFS); print ">>".IRS."<<"; for (k, v in $*) {print k.":".typeof(k)." ".v.":".typeof(v)}
>>
<<
a:string 1:int
b:string 2:int
3:string c:string
a=1,b=2,3=c
>>
<<
a:string 1:int
b:string 2:int
3:string c:string
a=1,b=2,3=c
>>
<<
a:string 1:int
b:string 2:int
3:string c:string
a=1,b=2,3=c
>>
<<
a:string 1:int
b:string 2:int
3:string c:string
a=1,b=2,3=c
>>
<<
a:string 1:int
b:string 2:int
3:string c:string
a=1,b=2,3=c
>>
<<
a:string 1:int
b:string 2:int
3:string c:string
a=1,b=2,3=c
>>
<<
a:string 1:int
b:string 2:int
3:string c:string
a=1,b=2,3=c
>>
<<
a:string 1:int
b:string 2:int
3:string c:string
a=1,b=2,3=c
>>
<<
a:string 1:int
b:string 2:int
3:string c:string
a=1,b=2,3=c
>>
<<
a:string 1:int
b:string 2:int
3:string c:string
a=1,b=2,3=c

mlr --from ./reg_test/input/abixy-het put $* = splitnv("a,b,c", OFS); print ">>".ORS."<<"; for (k, v in $*) {print k.":".typeof(k)." ".v.":".typeof(v)}
>>
<<
1:string a:string
2:string b:string
3:string c:string
1=a,2=b,3=c
>>
<<
1:string a:string
2:string b:string
3:string c:string
1=a,2=b,3=c
>>
<<
1:string a:string
2:string b:string
3:string c:string
1=a,2=b,3=c
>>
<<
1:string a:string
2:string b:string
3:string c:string
1=a,2=b,3=c
>>
<<
1:string a:string
2:string b:string
3:string c:string
1=a,2=b,3=c
>>
<<
1:string a:string
2:string b:string
3:string c:string
1=a,2=b,3=c
>>
<<
1:string a:string
2:string b:string
3:string c:string
1=a,2=b,3=c
>>
<<
1:string a:string
2:string b:string
3:string c:string
1=a,2=b,3=c
>>
<<
1:string a:string
2:string b:string
3:string c:string
1=a,2=b,3=c
>>
<<
1:string a:string
2:string b:string
3:string c:string
1=a,2=b,3=c

mlr --from ./reg_test/input/abixy-het put $* = splitkv("a=1,b=2,c", OPS, OFS); print ">>".ORS."<<"; for (k, v in $*) {print k.":".typeof(k)." ".v.":".typeof(v)}
>>
<<
a:string 1:int
b:string 2:int
3:string c:string
a=1,b=2,3=c
>>
<<
a:string 1:int
b:string 2:int
3:string c:string
a=1,b=2,3=c
>>
<<
a:string 1:int
b:string 2:int
3:string c:string
a=1,b=2,3=c
>>
<<
a:string 1:int
b:string 2:int
3:string c:string
a=1,b=2,3=c
>>
<<
a:string 1:int
b:string 2:int
3:string c:string
a=1,b=2,3=c
>>
<<
a:string 1:int
b:string 2:int
3:string c:string
a=1,b=2,3=c
>>
<<
a:string 1:int
b:string 2:int
3:string c:string
a=1,b=2,3=c
>>
<<
a:string 1:int
b:string 2:int
3:string c:string
a=1,b=2,3=c
>>
<<
a:string 1:int
b:string 2:int
3:string c:string
a=1,b=2,3=c
>>
<<
a:string 1:int
b:string 2:int
3:string c:string
a=1,b=2,3=c

mlr --from ./reg_test/input/abixy-het put $* = splitnvx("a,b,c" , ","); for (k, v in $*) {print k.":".typeof(k)." ".v.":".typeof(v)}
1:string a:string
2:string b:string
3:string c:string
1=a,2=b,3=c
1:string a:string
2:string b:string
3:string c:string
1=a,2=b,3=c
1:string a:string
2:string b:string
3:string c:string
1=a,2=b,3=c
1:string a:string
2:string b:string
3:string c:string
1=a,2=b,3=c
1:string a:string
2:string b:string
3:string c:string
1=a,2=b,3=c
1:string a:string
2:string b:string
3:string c:string
1=a,2=b,3=c
1:string a:string
2:string b:string
3:string c:string
1=a,2=b,3=c
1:string a:string
2:string b:string
3:string c:string
1=a,2=b,3=c
1:string a:string
2:string b:string
3:string c:string
1=a,2=b,3=c
1:string a:string
2:string b:string
3:string c:string
1=a,2=b,3=c

mlr --from ./reg_test/input/abixy-het put $* = splitkvx("a=1,b=2,c", "=", ","); for (k, v in $*) {print k.":".typeof(k)." ".v.":".typeof(v)}
a:string 1:string
b:string 2:string
3:string c:string
a=1,b=2,3=c
a:string 1:string
b:string 2:string
3:string c:string
a=1,b=2,3=c
a:string 1:string
b:string 2:string
3:string c:string
a=1,b=2,3=c
a:string 1:string
b:string 2:string
3:string c:string
a=1,b=2,3=c
a:string 1:string
b:string 2:string
3:string c:string
a=1,b=2,3=c
a:string 1:string
b:string 2:string
3:string c:string
a=1,b=2,3=c
a:string 1:string
b:string 2:string
3:string c:string
a=1,b=2,3=c
a:string 1:string
b:string 2:string
3:string c:string
a=1,b=2,3=c
a:string 1:string
b:string 2:string
3:string c:string
a=1,b=2,3=c
a:string 1:string
b:string 2:string
3:string c:string
a=1,b=2,3=c

mlr --from ./reg_test/input/abixy-het put $* = splitnvx("a,b,c", IFS); print ">>".IRS."<<"; for (k, v in $*) {print k.":".typeof(k)." ".v.":".typeof(v)}
>>
<<
1:string a:string
2:string b:string
3:string c:string
1=a,2=b,3=c
>>
<<
1:string a:string
2:string b:string
3:string c:string
1=a,2=b,3=c
>>
<<
1:string a:string
2:string b:string
3:string c:string
1=a,2=b,3=c
>>
<<
1:string a:string
2:string b:string
3:string c:string
1=a,2=b,3=c
>>
<<
1:string a:string
2:string b:string
3:string c:string
1=a,2=b,3=c
>>
<<
1:string a:string
2:string b:string
3:string c:string
1=a,2=b,3=c
>>
<<
1:string a:string
2:string b:string
3:string c:string
1=a,2=b,3=c
>>
<<
1:string a:string
2:string b:string
3:string c:string
1=a,2=b,3=c
>>
<<
1:string a:string
2:string b:string
3:string c:string
1=a,2=b,3=c
>>
<<
1:string a:string
2:string b:string
3:string c:string
1=a,2=b,3=c

mlr --from ./reg_test/input/abixy-het put $* = splitkvx("a=1,b=2,c", IPS, IFS); print ">>".IRS."<<"; for (k, v in $*) {print k.":".typeof(k)." ".v.":".typeof(v)}
>>
<<
a:string 1:string
b:string 2:string
3:string c:string
a=1,b=2,3=c
>>
<<
a:string 1:string
b:string 2:string
3:string c:string
a=1,b=2,3=c
>>
<<
a:string 1:string
b:string 2:string
3:string c:string
a=1,b=2,3=c
>>
<<
a:string 1:string
b:string 2:string
3:string c:string
a=1,b=2,3=c
>>
<<
a:string 1:string
b:string 2:string
3:string c:string
a=1,b=2,3=c
>>
<<
a:string 1:string
b:string 2:string
3:string c:string
a=1,b=2,3=c
>>
<<
a:string 1:string
b:string 2:string
3:string c:string
a=1,b=2,3=c
>>
<<
a:string 1:string
b:string 2:string
3:string c:string
a=1,b=2,3=c
>>
<<
a:string 1:string
b:string 2:string
3:string c:string
a=1,b=2,3=c
>>
<<
a:string 1:string
b:string 2:string
3:string c:string
a=1,b=2,3=c

mlr --from ./reg_test/input/abixy-het put $* = splitnvx("a,b,c", OFS); print ">>".ORS."<<"; for (k, v in $*) {print k.":".typeof(k)." ".v.":".typeof(v)}
>>
<<
1:string a:string
2:string b:string
3:string c:string
1=a,2=b,3=c
>>
<<
1:string a:string
2:string b:string
3:string c:string
1=a,2=b,3=c
>>
<<
1:string a:string
2:string b:string
3:string c:string
1=a,2=b,3=c
>>
<<
1:string a:string
2:string b:string
3:string c:string
1=a,2=b,3=c
>>
<<
1:string a:string
2:string b:string
3:string c:string
1=a,2=b,3=c
>>
<<
1:string a:string
2:string b:string
3:string c:string
1=a,2=b,3=c
>>
<<
1:string a:string
2:string b:string
3:string c:string
1=a,2=b,3=c
>>
<<
1:string a:string
2:string b:string
3:string c:string
1=a,2=b,3=c
>>
<<
1:string a:string
2:string b:string
3:string c:string
1=a,2=b,3=c
>>
<<
1:string a:string
2:string b:string
3:string c:string
1=a,2=b,3=c

mlr --from ./reg_test/input/abixy-het put $* = splitkvx("a=1,b=2,c", OPS, OFS); print ">>".ORS."<<"; for (k, v in $*) {print k.":".typeof(k)." ".v.":".typeof(v)}
>>
<<
a:string 1:string
b:string 2:string
3:string c:string
a=1,b=2,3=c
>>
<<
a:string 1:string
b:string 2:string
3:string c:string
a=1,b=2,3=c
>>
<<
a:string 1:string
b:string 2:string
3:string c:string
a=1,b=2,3=c
>>
<<
a:string 1:string
b:string 2:string
3:string c:string
a=1,b=2,3=c
>>
<<
a:string 1:string
b:string 2:string
3:string c:string
a=1,b=2,3=c
>>
<<
a:string 1:string
b:string 2:string
3:string c:string
a=1,b=2,3=c
>>
<<
a:string 1:string
b:string 2:string
3:string c:string
a=1,b=2,3=c
>>
<<
a:string 1:string
b:string 2:string
3:string c:string
a=1,b=2,3=c
>>
<<
a:string 1:string
b:string 2:string
3:string c:string
a=1,b=2,3=c
>>
<<
a:string 1:string
b:string 2:string
3:string c:string
a=1,b=2,3=c

mlr --oxtab --from ./reg_test/input/abixy-het put s = joink($*, ":"); $* = splitnv(s, ":")
1 a
2 b
3 i
4 x
5 y

1 a
2 b
3 i
4 x
5 y

1 aaa
2 b
3 i
4 x
5 y

1 a
2 bbb
3 i
4 x
5 y

1 a
2 b
3 i
4 xxx
5 y

1 a
2 b
3 i
4 x
5 y

1 a
2 b
3 iii
4 x
5 y

1 a
2 b
3 i
4 x
5 yyy

1 aaa
2 bbb
3 i
4 x
5 y

1 a
2 b
3 i
4 x
5 y

mlr --oxtab --from ./reg_test/input/abixy-het put s = joinv($*, ":"); $* = splitnv(s, ":")
1 pan
2 pan
3 1
4 0.346790
5 0.726803

1 eks
2 pan
3 2
4 0.758680
5 0.522151

1 wye
2 wye
3 3
4 0.204603
5 0.338319

1 eks
2 wye
3 4
4 0.381399
5 0.134189

1 wye
2 pan
3 5
4 0.573289
5 0.863624

1 zee
2 pan
3 6
4 0.527126
5 0.493221

1 eks
2 zee
3 7
4 0.611784
5 0.187885

1 zee
2 wye
3 8
4 0.598554
5 0.976181

1 hat
2 wye
3 9
4 0.031442
5 0.749551

1 pan
2 wye
3 10
4 0.502626
5 0.952618

mlr --oxtab --from ./reg_test/input/abixy-het put s = joinkv($*, ":", ";"); $* = splitkv(s, ":", ";"); for (k,v in $*) { print k.":".typeof(k)." ".v.":".typeof(v)}
a:string pan:string
b:string pan:string
i:string 1:int
x:string 0.346790:float
y:string 0.726803:float
a pan
b pan
i 1
x 0.346790
y 0.726803
a:string eks:string
b:string pan:string
i:string 2:int
x:string 0.758680:float
y:string 0.522151:float

a eks
b pan
i 2
x 0.758680
y 0.522151
aaa:string wye:string
b:string wye:string
i:string 3:int
x:string 0.204603:float
y:string 0.338319:float

aaa wye
b   wye
i   3
x   0.204603
y   0.338319
a:string eks:string
bbb:string wye:string
i:string 4:int
x:string 0.381399:float
y:string 0.134189:float

a   eks
bbb wye
i   4
x   0.381399
y   0.134189
a:string wye:string
b:string pan:string
i:string 5:int
xxx:string 0.573289:float
y:string 0.863624:float

a   wye
b   pan
i   5
xxx 0.573289
y   0.863624
a:string zee:string
b:string pan:string
i:string 6:int
x:string 0.527126:float
y:string 0.493221:float

a zee
b pan
i 6
x 0.527126
y 0.493221
a:string eks:string
b:string zee:string
iii:string 7:int
x:string 0.611784:float
y:string 0.187885:float

a   eks
b   zee
iii 7
x   0.611784
y   0.187885
a:string zee:string
b:string wye:string
i:string 8:int
x:string 0.598554:float
yyy:string 0.976181:float

a   zee
b   wye
i   8
x   0.598554
yyy 0.976181
aaa:string hat:string
bbb:string wye:string
i:string 9:int
x:string 0.031442:float
y:string 0.749551:float

aaa hat
bbb wye
i   9
x   0.031442
y   0.749551
a:string pan:string
b:string wye:string
i:string 10:int
x:string 0.502626:float
y:string 0.952618:float

a pan
b wye
i 10
x 0.502626
y 0.952618

mlr --oxtab --from ./reg_test/input/abixy-het put s = joinkv($*, ":", ";"); $* = splitkvx(s, ":", ";"); for (k,v in $*) { print k.":".typeof(k)." ".v.":".typeof(v)}
a:string pan:string
b:string pan:string
i:string 1:string
x:string 0.3467901443380824:string
y:string 0.7268028627434533:string
a pan
b pan
i 1
x 0.3467901443380824
y 0.7268028627434533
a:string eks:string
b:string pan:string
i:string 2:string
x:string 0.7586799647899636:string
y:string 0.5221511083334797:string

a eks
b pan
i 2
x 0.7586799647899636
y 0.5221511083334797
aaa:string wye:string
b:string wye:string
i:string 3:string
x:string 0.20460330576630303:string
y:string 0.33831852551664776:string

aaa wye
b   wye
i   3
x   0.20460330576630303
y   0.33831852551664776
a:string eks:string
bbb:string wye:string
i:string 4:string
x:string 0.38139939387114097:string
y:string 0.13418874328430463:string

a   eks
bbb wye
i   4
x   0.38139939387114097
y   0.13418874328430463
a:string wye:string
b:string pan:string
i:string 5:string
xxx:string 0.5732889198020006:string
y:string 0.8636244699032729:string

a   wye
b   pan
i   5
xxx 0.5732889198020006
y   0.8636244699032729
a:string zee:string
b:string pan:string
i:string 6:string
x:string 0.5271261600918548:string
y:string 0.49322128674835697:string

a zee
b pan
i 6
x 0.5271261600918548
y 0.49322128674835697
a:string eks:string
b:string zee:string
iii:string 7:string
x:string 0.6117840605678454:string
y:string 0.1878849191181694:string

a   eks
b   zee
iii 7
x   0.6117840605678454
y   0.1878849191181694
a:string zee:string
b:string wye:string
i:string 8:string
x:string 0.5985540091064224:string
yyy:string 0.976181385699006:string

a   zee
b   wye
i   8
x   0.5985540091064224
yyy 0.976181385699006
aaa:string hat:string
bbb:string wye:string
i:string 9:string
x:string 0.03144187646093577:string
y:string 0.7495507603507059:string

aaa hat
bbb wye
i   9
x   0.03144187646093577
y   0.7495507603507059
a:string pan:string
b:string wye:string
i:string 10:string
x:string 0.5026260055412137:string
y:string 0.9526183602969864:string

a pan
b wye
i 10
x 0.5026260055412137
y 0.9526183602969864

mlr --oxtab --from ./reg_test/input/abixy-het put s = joink({1:2, "abc":4, 5:"xyz"}, ":"); $* = splitnv(s, ":")
1 1
2 abc
3 5

1 1
2 abc
3 5

1 1
2 abc
3 5

1 1
2 abc
3 5

1 1
2 abc
3 5

1 1
2 abc
3 5

1 1
2 abc
3 5

1 1
2 abc
3 5

1 1
2 abc
3 5

1 1
2 abc
3 5

mlr --oxtab --from ./reg_test/input/abixy-het put s = joinv({1:2, "abc":4, 5:"xyz"}, ":"); $* = splitnv(s, ":")
1 2
2 4
3 xyz

1 2
2 4
3 xyz

1 2
2 4
3 xyz

1 2
2 4
3 xyz

1 2
2 4
3 xyz

1 2
2 4
3 xyz

1 2
2 4
3 xyz

1 2
2 4
3 xyz

1 2
2 4
3 xyz

1 2
2 4
3 xyz

mlr --oxtab --from ./reg_test/input/abixy-het put s = joinkv({1:2, "abc":4, 5:"xyz"}, ":", ";"); $* = splitkv(s, ":", ";"); for (k,v in $*) { print k.":".typeof(k)." ".v.":".typeof(v)}
1:string 2:int
abc:string 4:int
5:string xyz:string
1   2
abc 4
5   xyz
1:string 2:int
abc:string 4:int
5:string xyz:string

1   2
abc 4
5   xyz
1:string 2:int
abc:string 4:int
5:string xyz:string

1   2
abc 4
5   xyz
1:string 2:int
abc:string 4:int
5:string xyz:string

1   2
abc 4
5   xyz
1:string 2:int
abc:string 4:int
5:string xyz:string

1   2
abc 4
5   xyz
1:string 2:int
abc:string 4:int
5:string xyz:string

1   2
abc 4
5   xyz
1:string 2:int
abc:string 4:int
5:string xyz:string

1   2
abc 4
5   xyz
1:string 2:int
abc:string 4:int
5:string xyz:string

1   2
abc 4
5   xyz
1:string 2:int
abc:string 4:int
5:string xyz:string

1   2
abc 4
5   xyz
1:string 2:int
abc:string 4:int
5:string xyz:string

1   2
abc 4
5   xyz

mlr --oxtab --from ./reg_test/input/abixy-het put s = joinkv({1:2, "abc":4, 5:"xyz"}, ":", ";"); $* = splitkvx(s, ":", ";"); for (k,v in $*) { print k.":".typeof(k)." ".v.":".typeof(v)}
1:string 2:string
abc:string 4:string
5:string xyz:string
1   2
abc 4
5   xyz
1:string 2:string
abc:string 4:string
5:string xyz:string

1   2
abc 4
5   xyz
1:string 2:string
abc:string 4:string
5:string xyz:string

1   2
abc 4
5   xyz
1:string 2:string
abc:string 4:string
5:string xyz:string

1   2
abc 4
5   xyz
1:string 2:string
abc:string 4:string
5:string xyz:string

1   2
abc 4
5   xyz
1:string 2:string
abc:string 4:string
5:string xyz:string

1   2
abc 4
5   xyz
1:string 2:string
abc:string 4:string
5:string xyz:string

1   2
abc 4
5   xyz
1:string 2:string
abc:string 4:string
5:string xyz:string

1   2
abc 4
5   xyz
1:string 2:string
abc:string 4:string
5:string xyz:string

1   2
abc 4
5   xyz
1:string 2:string
abc:string 4:string
5:string xyz:string

1   2
abc 4
5   xyz


================================================================
MAPSUM/MAPDIFF/MAPEXCEPT

mlr --from ./reg_test/input/abixy-het put -q o = mapsum(); dump o
{
}
{
}
{
}
{
}
{
}
{
}
{
}
{
}
{
}
{
}

mlr --from ./reg_test/input/abixy-het put -q o = mapdiff(); dump o
{
}
{
}
{
}
{
}
{
}
{
}
{
}
{
}
{
}
{
}

mlr --from ./reg_test/input/abixy-het put -q o = mapexcept(); dump o
mlr: Function named "mapexcept" takes at least 1 argument; got 0.

mlr --from ./reg_test/input/abixy-het put -q o = mapselect(); dump o
mlr: Function named "mapselect" takes at least 1 argument; got 0.

mlr --from ./reg_test/input/abixy-het put -q o = mapsum($*); dump o
{
  "a": "pan",
  "b": "pan",
  "i": 1,
  "x": 0.3467901443380824,
  "y": 0.7268028627434533
}
{
  "a": "eks",
  "b": "pan",
  "i": 2,
  "x": 0.7586799647899636,
  "y": 0.5221511083334797
}
{
  "aaa": "wye",
  "b": "wye",
  "i": 3,
  "x": 0.20460330576630303,
  "y": 0.33831852551664776
}
{
  "a": "eks",
  "bbb": "wye",
  "i": 4,
  "x": 0.38139939387114097,
  "y": 0.13418874328430463
}
{
  "a": "wye",
  "b": "pan",
  "i": 5,
  "xxx": 0.5732889198020006,
  "y": 0.8636244699032729
}
{
  "a": "zee",
  "b": "pan",
  "i": 6,
  "x": 0.5271261600918548,
  "y": 0.49322128674835697
}
{
  "a": "eks",
  "b": "zee",
  "iii": 7,
  "x": 0.6117840605678454,
  "y": 0.1878849191181694
}
{
  "a": "zee",
  "b": "wye",
  "i": 8,
  "x": 0.5985540091064224,
  "yyy": 0.976181385699006
}
{
  "aaa": "hat",
  "bbb": "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-het put -q o = mapsum({"a":999}); dump o
{
  "a": 999
}
{
  "a": 999
}
{
  "a": 999
}
{
  "a": 999
}
{
  "a": 999
}
{
  "a": 999
}
{
  "a": 999
}
{
  "a": 999
}
{
  "a": 999
}
{
  "a": 999
}

mlr --from ./reg_test/input/abixy-het put -q o = mapdiff($*); dump o
{
  "a": "pan",
  "b": "pan",
  "i": 1,
  "x": 0.3467901443380824,
  "y": 0.7268028627434533
}
{
  "a": "eks",
  "b": "pan",
  "i": 2,
  "x": 0.7586799647899636,
  "y": 0.5221511083334797
}
{
  "aaa": "wye",
  "b": "wye",
  "i": 3,
  "x": 0.20460330576630303,
  "y": 0.33831852551664776
}
{
  "a": "eks",
  "bbb": "wye",
  "i": 4,
  "x": 0.38139939387114097,
  "y": 0.13418874328430463
}
{
  "a": "wye",
  "b": "pan",
  "i": 5,
  "xxx": 0.5732889198020006,
  "y": 0.8636244699032729
}
{
  "a": "zee",
  "b": "pan",
  "i": 6,
  "x": 0.5271261600918548,
  "y": 0.49322128674835697
}
{
  "a": "eks",
  "b": "zee",
  "iii": 7,
  "x": 0.6117840605678454,
  "y": 0.1878849191181694
}
{
  "a": "zee",
  "b": "wye",
  "i": 8,
  "x": 0.5985540091064224,
  "yyy": 0.976181385699006
}
{
  "aaa": "hat",
  "bbb": "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-het put -q o = mapdiff({"a":999}); dump o
{
  "a": 999
}
{
  "a": 999
}
{
  "a": 999
}
{
  "a": 999
}
{
  "a": 999
}
{
  "a": 999
}
{
  "a": 999
}
{
  "a": 999
}
{
  "a": 999
}
{
  "a": 999
}

mlr --from ./reg_test/input/abixy-het put -q o = mapexcept($*); dump o
{
  "a": "pan",
  "b": "pan",
  "i": 1,
  "x": 0.3467901443380824,
  "y": 0.7268028627434533
}
{
  "a": "eks",
  "b": "pan",
  "i": 2,
  "x": 0.7586799647899636,
  "y": 0.5221511083334797
}
{
  "aaa": "wye",
  "b": "wye",
  "i": 3,
  "x": 0.20460330576630303,
  "y": 0.33831852551664776
}
{
  "a": "eks",
  "bbb": "wye",
  "i": 4,
  "x": 0.38139939387114097,
  "y": 0.13418874328430463
}
{
  "a": "wye",
  "b": "pan",
  "i": 5,
  "xxx": 0.5732889198020006,
  "y": 0.8636244699032729
}
{
  "a": "zee",
  "b": "pan",
  "i": 6,
  "x": 0.5271261600918548,
  "y": 0.49322128674835697
}
{
  "a": "eks",
  "b": "zee",
  "iii": 7,
  "x": 0.6117840605678454,
  "y": 0.1878849191181694
}
{
  "a": "zee",
  "b": "wye",
  "i": 8,
  "x": 0.5985540091064224,
  "yyy": 0.976181385699006
}
{
  "aaa": "hat",
  "bbb": "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-het put -q o = mapexcept({"a":999}); dump o
{
  "a": 999
}
{
  "a": 999
}
{
  "a": 999
}
{
  "a": 999
}
{
  "a": 999
}
{
  "a": 999
}
{
  "a": 999
}
{
  "a": 999
}
{
  "a": 999
}
{
  "a": 999
}

mlr --from ./reg_test/input/abixy-het put -q o = mapselect($*); dump o
{
}
{
}
{
}
{
}
{
}
{
}
{
}
{
}
{
}
{
}

mlr --from ./reg_test/input/abixy-het put -q o = mapselect({"a":999}); dump o
{
}
{
}
{
}
{
}
{
}
{
}
{
}
{
}
{
}
{
}

mlr --from ./reg_test/input/abixy-het put -q o = mapsum($*, {"a":999}); dump o
{
  "a": 999,
  "b": "pan",
  "i": 1,
  "x": 0.3467901443380824,
  "y": 0.7268028627434533
}
{
  "a": 999,
  "b": "pan",
  "i": 2,
  "x": 0.7586799647899636,
  "y": 0.5221511083334797
}
{
  "aaa": "wye",
  "b": "wye",
  "i": 3,
  "x": 0.20460330576630303,
  "y": 0.33831852551664776,
  "a": 999
}
{
  "a": 999,
  "bbb": "wye",
  "i": 4,
  "x": 0.38139939387114097,
  "y": 0.13418874328430463
}
{
  "a": 999,
  "b": "pan",
  "i": 5,
  "xxx": 0.5732889198020006,
  "y": 0.8636244699032729
}
{
  "a": 999,
  "b": "pan",
  "i": 6,
  "x": 0.5271261600918548,
  "y": 0.49322128674835697
}
{
  "a": 999,
  "b": "zee",
  "iii": 7,
  "x": 0.6117840605678454,
  "y": 0.1878849191181694
}
{
  "a": 999,
  "b": "wye",
  "i": 8,
  "x": 0.5985540091064224,
  "yyy": 0.976181385699006
}
{
  "aaa": "hat",
  "bbb": "wye",
  "i": 9,
  "x": 0.03144187646093577,
  "y": 0.7495507603507059,
  "a": 999
}
{
  "a": 999,
  "b": "wye",
  "i": 10,
  "x": 0.5026260055412137,
  "y": 0.9526183602969864
}

mlr --from ./reg_test/input/abixy-het put -q o = mapsum({"a":999}, $*); dump o
{
  "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": 999,
  "aaa": "wye",
  "b": "wye",
  "i": 3,
  "x": 0.20460330576630303,
  "y": 0.33831852551664776
}
{
  "a": "eks",
  "bbb": "wye",
  "i": 4,
  "x": 0.38139939387114097,
  "y": 0.13418874328430463
}
{
  "a": "wye",
  "b": "pan",
  "i": 5,
  "xxx": 0.5732889198020006,
  "y": 0.8636244699032729
}
{
  "a": "zee",
  "b": "pan",
  "i": 6,
  "x": 0.5271261600918548,
  "y": 0.49322128674835697
}
{
  "a": "eks",
  "b": "zee",
  "iii": 7,
  "x": 0.6117840605678454,
  "y": 0.1878849191181694
}
{
  "a": "zee",
  "b": "wye",
  "i": 8,
  "x": 0.5985540091064224,
  "yyy": 0.976181385699006
}
{
  "a": 999,
  "aaa": "hat",
  "bbb": "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-het put -q o = mapdiff($*, {"a":999}); dump o
{
  "b": "pan",
  "i": 1,
  "x": 0.3467901443380824,
  "y": 0.7268028627434533
}
{
  "b": "pan",
  "i": 2,
  "x": 0.7586799647899636,
  "y": 0.5221511083334797
}
{
  "aaa": "wye",
  "b": "wye",
  "i": 3,
  "x": 0.20460330576630303,
  "y": 0.33831852551664776
}
{
  "bbb": "wye",
  "i": 4,
  "x": 0.38139939387114097,
  "y": 0.13418874328430463
}
{
  "b": "pan",
  "i": 5,
  "xxx": 0.5732889198020006,
  "y": 0.8636244699032729
}
{
  "b": "pan",
  "i": 6,
  "x": 0.5271261600918548,
  "y": 0.49322128674835697
}
{
  "b": "zee",
  "iii": 7,
  "x": 0.6117840605678454,
  "y": 0.1878849191181694
}
{
  "b": "wye",
  "i": 8,
  "x": 0.5985540091064224,
  "yyy": 0.976181385699006
}
{
  "aaa": "hat",
  "bbb": "wye",
  "i": 9,
  "x": 0.03144187646093577,
  "y": 0.7495507603507059
}
{
  "b": "wye",
  "i": 10,
  "x": 0.5026260055412137,
  "y": 0.9526183602969864
}

mlr --from ./reg_test/input/abixy-het put -q o = mapdiff({"a":999}, $*); dump o
{
}
{
}
{
  "a": 999
}
{
}
{
}
{
}
{
}
{
}
{
  "a": 999
}
{
}

mlr --from ./reg_test/input/abixy-het put -q o = mapexcept($*, "a"); dump o
{
  "b": "pan",
  "i": 1,
  "x": 0.3467901443380824,
  "y": 0.7268028627434533
}
{
  "b": "pan",
  "i": 2,
  "x": 0.7586799647899636,
  "y": 0.5221511083334797
}
{
  "aaa": "wye",
  "b": "wye",
  "i": 3,
  "x": 0.20460330576630303,
  "y": 0.33831852551664776
}
{
  "bbb": "wye",
  "i": 4,
  "x": 0.38139939387114097,
  "y": 0.13418874328430463
}
{
  "b": "pan",
  "i": 5,
  "xxx": 0.5732889198020006,
  "y": 0.8636244699032729
}
{
  "b": "pan",
  "i": 6,
  "x": 0.5271261600918548,
  "y": 0.49322128674835697
}
{
  "b": "zee",
  "iii": 7,
  "x": 0.6117840605678454,
  "y": 0.1878849191181694
}
{
  "b": "wye",
  "i": 8,
  "x": 0.5985540091064224,
  "yyy": 0.976181385699006
}
{
  "aaa": "hat",
  "bbb": "wye",
  "i": 9,
  "x": 0.03144187646093577,
  "y": 0.7495507603507059
}
{
  "b": "wye",
  "i": 10,
  "x": 0.5026260055412137,
  "y": 0.9526183602969864
}

mlr --from ./reg_test/input/abixy-het put -q o = mapexcept({"a":999}, "a"); dump o
{
}
{
}
{
}
{
}
{
}
{
}
{
}
{
}
{
}
{
}

mlr --from ./reg_test/input/abixy-het put -q o = mapexcept({"a":999}, "nonesuch"); dump o
{
  "a": 999
}
{
  "a": 999
}
{
  "a": 999
}
{
  "a": 999
}
{
  "a": 999
}
{
  "a": 999
}
{
  "a": 999
}
{
  "a": 999
}
{
  "a": 999
}
{
  "a": 999
}

mlr --from ./reg_test/input/abixy-het put -q o = mapselect($*, "a"); dump o
{
  "a": "pan"
}
{
  "a": "eks"
}
{
}
{
  "a": "eks"
}
{
  "a": "wye"
}
{
  "a": "zee"
}
{
  "a": "eks"
}
{
  "a": "zee"
}
{
}
{
  "a": "pan"
}

mlr --from ./reg_test/input/abixy-het put -q o = mapselect({"a":999}, "a"); dump o
{
  "a": 999
}
{
  "a": 999
}
{
  "a": 999
}
{
  "a": 999
}
{
  "a": 999
}
{
  "a": 999
}
{
  "a": 999
}
{
  "a": 999
}
{
  "a": 999
}
{
  "a": 999
}

mlr --from ./reg_test/input/abixy-het put -q o = mapselect({"a":999}, "nonesuch"); dump o
{
}
{
}
{
}
{
}
{
}
{
}
{
}
{
}
{
}
{
}

mlr --from ./reg_test/input/abixy-het put -q o = mapsum($*, {"a":999}, {"b": 444}); dump o
{
  "a": 999,
  "b": 444,
  "i": 1,
  "x": 0.3467901443380824,
  "y": 0.7268028627434533
}
{
  "a": 999,
  "b": 444,
  "i": 2,
  "x": 0.7586799647899636,
  "y": 0.5221511083334797
}
{
  "aaa": "wye",
  "b": 444,
  "i": 3,
  "x": 0.20460330576630303,
  "y": 0.33831852551664776,
  "a": 999
}
{
  "a": 999,
  "bbb": "wye",
  "i": 4,
  "x": 0.38139939387114097,
  "y": 0.13418874328430463,
  "b": 444
}
{
  "a": 999,
  "b": 444,
  "i": 5,
  "xxx": 0.5732889198020006,
  "y": 0.8636244699032729
}
{
  "a": 999,
  "b": 444,
  "i": 6,
  "x": 0.5271261600918548,
  "y": 0.49322128674835697
}
{
  "a": 999,
  "b": 444,
  "iii": 7,
  "x": 0.6117840605678454,
  "y": 0.1878849191181694
}
{
  "a": 999,
  "b": 444,
  "i": 8,
  "x": 0.5985540091064224,
  "yyy": 0.976181385699006
}
{
  "aaa": "hat",
  "bbb": "wye",
  "i": 9,
  "x": 0.03144187646093577,
  "y": 0.7495507603507059,
  "a": 999,
  "b": 444
}
{
  "a": 999,
  "b": 444,
  "i": 10,
  "x": 0.5026260055412137,
  "y": 0.9526183602969864
}

mlr --from ./reg_test/input/abixy-het put -q o = mapsum({"a":999}, $*, {"b": 444}); dump o
{
  "a": "pan",
  "b": 444,
  "i": 1,
  "x": 0.3467901443380824,
  "y": 0.7268028627434533
}
{
  "a": "eks",
  "b": 444,
  "i": 2,
  "x": 0.7586799647899636,
  "y": 0.5221511083334797
}
{
  "a": 999,
  "aaa": "wye",
  "b": 444,
  "i": 3,
  "x": 0.20460330576630303,
  "y": 0.33831852551664776
}
{
  "a": "eks",
  "bbb": "wye",
  "i": 4,
  "x": 0.38139939387114097,
  "y": 0.13418874328430463,
  "b": 444
}
{
  "a": "wye",
  "b": 444,
  "i": 5,
  "xxx": 0.5732889198020006,
  "y": 0.8636244699032729
}
{
  "a": "zee",
  "b": 444,
  "i": 6,
  "x": 0.5271261600918548,
  "y": 0.49322128674835697
}
{
  "a": "eks",
  "b": 444,
  "iii": 7,
  "x": 0.6117840605678454,
  "y": 0.1878849191181694
}
{
  "a": "zee",
  "b": 444,
  "i": 8,
  "x": 0.5985540091064224,
  "yyy": 0.976181385699006
}
{
  "a": 999,
  "aaa": "hat",
  "bbb": "wye",
  "i": 9,
  "x": 0.03144187646093577,
  "y": 0.7495507603507059,
  "b": 444
}
{
  "a": "pan",
  "b": 444,
  "i": 10,
  "x": 0.5026260055412137,
  "y": 0.9526183602969864
}

mlr --from ./reg_test/input/abixy-het put -q o = mapdiff($*, {"a":999}, {"b": 444}); dump o
{
  "i": 1,
  "x": 0.3467901443380824,
  "y": 0.7268028627434533
}
{
  "i": 2,
  "x": 0.7586799647899636,
  "y": 0.5221511083334797
}
{
  "aaa": "wye",
  "i": 3,
  "x": 0.20460330576630303,
  "y": 0.33831852551664776
}
{
  "bbb": "wye",
  "i": 4,
  "x": 0.38139939387114097,
  "y": 0.13418874328430463
}
{
  "i": 5,
  "xxx": 0.5732889198020006,
  "y": 0.8636244699032729
}
{
  "i": 6,
  "x": 0.5271261600918548,
  "y": 0.49322128674835697
}
{
  "iii": 7,
  "x": 0.6117840605678454,
  "y": 0.1878849191181694
}
{
  "i": 8,
  "x": 0.5985540091064224,
  "yyy": 0.976181385699006
}
{
  "aaa": "hat",
  "bbb": "wye",
  "i": 9,
  "x": 0.03144187646093577,
  "y": 0.7495507603507059
}
{
  "i": 10,
  "x": 0.5026260055412137,
  "y": 0.9526183602969864
}

mlr --from ./reg_test/input/abixy-het put -q o = mapdiff({"a":999}, $*, {"b": 444}); dump o
{
}
{
}
{
  "a": 999
}
{
}
{
}
{
}
{
}
{
}
{
  "a": 999
}
{
}

mlr --from ./reg_test/input/abixy-het put -q o = mapexcept($*, "a", "b"); dump o
{
  "i": 1,
  "x": 0.3467901443380824,
  "y": 0.7268028627434533
}
{
  "i": 2,
  "x": 0.7586799647899636,
  "y": 0.5221511083334797
}
{
  "aaa": "wye",
  "i": 3,
  "x": 0.20460330576630303,
  "y": 0.33831852551664776
}
{
  "bbb": "wye",
  "i": 4,
  "x": 0.38139939387114097,
  "y": 0.13418874328430463
}
{
  "i": 5,
  "xxx": 0.5732889198020006,
  "y": 0.8636244699032729
}
{
  "i": 6,
  "x": 0.5271261600918548,
  "y": 0.49322128674835697
}
{
  "iii": 7,
  "x": 0.6117840605678454,
  "y": 0.1878849191181694
}
{
  "i": 8,
  "x": 0.5985540091064224,
  "yyy": 0.976181385699006
}
{
  "aaa": "hat",
  "bbb": "wye",
  "i": 9,
  "x": 0.03144187646093577,
  "y": 0.7495507603507059
}
{
  "i": 10,
  "x": 0.5026260055412137,
  "y": 0.9526183602969864
}

mlr --from ./reg_test/input/abixy-het put -q o = mapselect({"a":999}, "b", "nonesuch"); dump o
{
}
{
}
{
}
{
}
{
}
{
}
{
}
{
}
{
}
{
}

mlr --from ./reg_test/input/abixy-het put -q o = mapselect($*, "a", "b"); dump o
{
  "a": "pan",
  "b": "pan"
}
{
  "a": "eks",
  "b": "pan"
}
{
  "b": "wye"
}
{
  "a": "eks"
}
{
  "a": "wye",
  "b": "pan"
}
{
  "a": "zee",
  "b": "pan"
}
{
  "a": "eks",
  "b": "zee"
}
{
  "a": "zee",
  "b": "wye"
}
{
}
{
  "a": "pan",
  "b": "wye"
}

mlr --from ./reg_test/input/abixy-het put -q o = mapselect({"a":999}, "b", "nonesuch"); dump o
{
}
{
}
{
}
{
}
{
}
{
}
{
}
{
}
{
}
{
}


================================================================
EXTENDED TYPEOF

mlr --from ./reg_test/input/xyz2 --oxtab put 
  a = {1:2, 3:4};
  b = {1: {2:3, 4:5}};
  @c = {1:2, 3:4};
  @d = {1: {2:3, 4:5}};

  $ta  = typeof(a);
  $ta1 = typeof(a[1]);
  $ta7 = typeof(a[7]);

  $tb  = typeof(b);
  $tb1 = typeof(b[1]);
  $tb7 = typeof(b[7]);

  $tc  = typeof(@c);
  $tc1 = typeof(@c[1]);
  $tc7 = typeof(@c[7]);

  $td  = typeof(@d);
  $td1 = typeof(@d[1]);
  $td7 = typeof(@d[7]);

  $te1 = typeof(6);
  $te2 = typeof({6:4});

  $tsa = typeof($a);
  $tsx = typeof($x);
  $ts  = typeof($*);

x   3
y   4
z   5
ta  map
ta1 int
ta7 absent
tb  map
tb1 map
tb7 absent
tc  map
tc1 int
tc7 absent
td  map
td1 map
td7 absent
te1 int
te2 map
tsa absent
tsx int
ts  map

x   6
y   7
u   8
ta  map
ta1 int
ta7 absent
tb  map
tb1 map
tb7 absent
tc  map
tc1 int
tc7 absent
td  map
td1 map
td7 absent
te1 int
te2 map
tsa absent
tsx int
ts  map


================================================================
HASKEY

mlr --from ./reg_test/input/abixy-het put $haskeya = haskey($*, "a")
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533,haskeya=true
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797,haskeya=true
aaa=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776,haskeya=false
a=eks,bbb=wye,i=4,x=0.38139939387114097,y=0.13418874328430463,haskeya=true
a=wye,b=pan,i=5,xxx=0.5732889198020006,y=0.8636244699032729,haskeya=true
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697,haskeya=true
a=eks,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694,haskeya=true
a=zee,b=wye,i=8,x=0.5985540091064224,yyy=0.976181385699006,haskeya=true
aaa=hat,bbb=wye,i=9,x=0.03144187646093577,y=0.7495507603507059,haskeya=false
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864,haskeya=true

mlr --from ./reg_test/input/abixy-het put $haskey3 = haskey($*, 3)
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533,haskey3=false
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797,haskey3=false
aaa=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776,haskey3=false
a=eks,bbb=wye,i=4,x=0.38139939387114097,y=0.13418874328430463,haskey3=false
a=wye,b=pan,i=5,xxx=0.5732889198020006,y=0.8636244699032729,haskey3=false
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697,haskey3=false
a=eks,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694,haskey3=false
a=zee,b=wye,i=8,x=0.5985540091064224,yyy=0.976181385699006,haskey3=false
aaa=hat,bbb=wye,i=9,x=0.03144187646093577,y=0.7495507603507059,haskey3=false
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864,haskey3=false

mlr --from ./reg_test/input/xyz2 put $haskeya = haskey({3:4}, "a")
x=3,y=4,z=5,haskeya=false
x=6,y=7,u=8,haskeya=false

mlr --from ./reg_test/input/xyz2 put $haskey3 = haskey({3:4}, 3)
x=3,y=4,z=5,haskey3=true
x=6,y=7,u=8,haskey3=true

mlr --from ./reg_test/input/xyz2 put $haskey3 = haskey({3:4}, 4)
x=3,y=4,z=5,haskey3=false
x=6,y=7,u=8,haskey3=false

mlr --from ./reg_test/input/xyz2 put o = {3:4}; $haskeya = haskey(o, "a")
x=3,y=4,z=5,haskeya=false
x=6,y=7,u=8,haskeya=false

mlr --from ./reg_test/input/xyz2 put o = {3:4}; $haskey3 = haskey(o, 3)
x=3,y=4,z=5,haskey3=true
x=6,y=7,u=8,haskey3=true

mlr --from ./reg_test/input/xyz2 put o = {3:4}; $haskey3 = haskey(o, 4)
x=3,y=4,z=5,haskey3=false
x=6,y=7,u=8,haskey3=false

mlr --from ./reg_test/input/xyz2 put @o = {3:4}; $haskeya = haskey(@o, "a")
x=3,y=4,z=5,haskeya=false
x=6,y=7,u=8,haskeya=false

mlr --from ./reg_test/input/xyz2 put @o = {3:4}; $haskey3 = haskey(@o, 3)
x=3,y=4,z=5,haskey3=true
x=6,y=7,u=8,haskey3=true

mlr --from ./reg_test/input/xyz2 put @o = {3:4}; $haskey3 = haskey(@o, 4)
x=3,y=4,z=5,haskey3=false
x=6,y=7,u=8,haskey3=false

mlr --from ./reg_test/input/xyz2 put o = "3:4"; $haskeya = haskey(@o, "a")
x=3,y=4,z=5,haskeya=(error)
x=6,y=7,u=8,haskeya=(error)

mlr --from ./reg_test/input/xyz2 put o = "3:4"; $haskey3 = haskey(@o, 3)
x=3,y=4,z=5,haskey3=(error)
x=6,y=7,u=8,haskey3=(error)

mlr --from ./reg_test/input/xyz2 put o = "3:4"; $haskey3 = haskey(@o, 4)
x=3,y=4,z=5,haskey3=(error)
x=6,y=7,u=8,haskey3=(error)


================================================================
LENGTH/DEPTH/LEAFCOUNT

mlr --from ./reg_test/input/abixy-het put $length = length($a)
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533,length=1
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797,length=1
aaa=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776,length=1
a=eks,bbb=wye,i=4,x=0.38139939387114097,y=0.13418874328430463,length=1
a=wye,b=pan,i=5,xxx=0.5732889198020006,y=0.8636244699032729,length=1
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697,length=1
a=eks,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694,length=1
a=zee,b=wye,i=8,x=0.5985540091064224,yyy=0.976181385699006,length=1
aaa=hat,bbb=wye,i=9,x=0.03144187646093577,y=0.7495507603507059,length=1
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864,length=1

mlr --from ./reg_test/input/abixy-het put $length = length($*)
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533,length=5
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797,length=5
aaa=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776,length=5
a=eks,bbb=wye,i=4,x=0.38139939387114097,y=0.13418874328430463,length=5
a=wye,b=pan,i=5,xxx=0.5732889198020006,y=0.8636244699032729,length=5
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697,length=5
a=eks,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694,length=5
a=zee,b=wye,i=8,x=0.5985540091064224,yyy=0.976181385699006,length=5
aaa=hat,bbb=wye,i=9,x=0.03144187646093577,y=0.7495507603507059,length=5
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864,length=5

mlr --from ./reg_test/input/xyz2 put $length= length({3:4, 5:{6:7}, 8:{9:{10:11}}})
x=3,y=4,z=5,length=3
x=6,y=7,u=8,length=3

mlr --from ./reg_test/input/xyz2 put o = {3:4, 5:{6:7}, 8:{9:{10:11}}}; $length = length(o)
x=3,y=4,z=5,length=3
x=6,y=7,u=8,length=3

mlr --from ./reg_test/input/xyz2 put @o = {3:4, 5:{6:7}, 8:{9:{10:11}}}; $length = length(@o)
x=3,y=4,z=5,length=3
x=6,y=7,u=8,length=3

mlr --from ./reg_test/input/abixy-het put $depth = depth($a)
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533,depth=0
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797,depth=0
aaa=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776,depth=0
a=eks,bbb=wye,i=4,x=0.38139939387114097,y=0.13418874328430463,depth=0
a=wye,b=pan,i=5,xxx=0.5732889198020006,y=0.8636244699032729,depth=0
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697,depth=0
a=eks,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694,depth=0
a=zee,b=wye,i=8,x=0.5985540091064224,yyy=0.976181385699006,depth=0
aaa=hat,bbb=wye,i=9,x=0.03144187646093577,y=0.7495507603507059,depth=0
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864,depth=0

mlr --from ./reg_test/input/abixy-het put $depth = depth($*)
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533,depth=1
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797,depth=1
aaa=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776,depth=1
a=eks,bbb=wye,i=4,x=0.38139939387114097,y=0.13418874328430463,depth=1
a=wye,b=pan,i=5,xxx=0.5732889198020006,y=0.8636244699032729,depth=1
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697,depth=1
a=eks,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694,depth=1
a=zee,b=wye,i=8,x=0.5985540091064224,yyy=0.976181385699006,depth=1
aaa=hat,bbb=wye,i=9,x=0.03144187646093577,y=0.7495507603507059,depth=1
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864,depth=1

mlr --from ./reg_test/input/xyz2 put $depth= depth({3:4, 5:{6:7}, 8:{9:{10:11}}})
x=3,y=4,z=5,depth=3
x=6,y=7,u=8,depth=3

mlr --from ./reg_test/input/xyz2 put o = {3:4, 5:{6:7}, 8:{9:{10:11}}}; $depth = depth(o)
x=3,y=4,z=5,depth=3
x=6,y=7,u=8,depth=3

mlr --from ./reg_test/input/xyz2 put @o = {3:4, 5:{6:7}, 8:{9:{10:11}}}; $depth = depth(@o)
x=3,y=4,z=5,depth=3
x=6,y=7,u=8,depth=3

mlr --from ./reg_test/input/abixy-het put $leafcount = leafcount($a)
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533,leafcount=1
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797,leafcount=1
aaa=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776,leafcount=1
a=eks,bbb=wye,i=4,x=0.38139939387114097,y=0.13418874328430463,leafcount=1
a=wye,b=pan,i=5,xxx=0.5732889198020006,y=0.8636244699032729,leafcount=1
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697,leafcount=1
a=eks,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694,leafcount=1
a=zee,b=wye,i=8,x=0.5985540091064224,yyy=0.976181385699006,leafcount=1
aaa=hat,bbb=wye,i=9,x=0.03144187646093577,y=0.7495507603507059,leafcount=1
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864,leafcount=1

mlr --from ./reg_test/input/abixy-het put $leafcount = leafcount($*)
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533,leafcount=5
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797,leafcount=5
aaa=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776,leafcount=5
a=eks,bbb=wye,i=4,x=0.38139939387114097,y=0.13418874328430463,leafcount=5
a=wye,b=pan,i=5,xxx=0.5732889198020006,y=0.8636244699032729,leafcount=5
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697,leafcount=5
a=eks,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694,leafcount=5
a=zee,b=wye,i=8,x=0.5985540091064224,yyy=0.976181385699006,leafcount=5
aaa=hat,bbb=wye,i=9,x=0.03144187646093577,y=0.7495507603507059,leafcount=5
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864,leafcount=5

mlr --from ./reg_test/input/xyz2 put $leafcount= leafcount({3:4, 5:{6:7}, 8:{9:{10:11}}})
x=3,y=4,z=5,leafcount=3
x=6,y=7,u=8,leafcount=3

mlr --from ./reg_test/input/xyz2 put o = {3:4, 5:{6:7}, 8:{9:{10:11}}}; $leafcount = leafcount(o)
x=3,y=4,z=5,leafcount=3
x=6,y=7,u=8,leafcount=3

mlr --from ./reg_test/input/xyz2 put @o = {3:4, 5:{6:7}, 8:{9:{10:11}}}; $leafcount = leafcount(@o)
x=3,y=4,z=5,leafcount=3
x=6,y=7,u=8,leafcount=3


================================================================
MAPVAR EMIT

mlr -n put end {
  @a[2][3] = 4;
  b[2][3] = 8;
  emit  (@a, b, {2:{3:12}});
  emitp (@a, b, {2:{3:12}});
  emit {};
  emit  (@a, b, {2:{3:12}}), "t";
  emitp (@a, b, {2:{3:12}}), "t";
  emit {};
  emit  (@a, b, {2:{3:12}}), "t", "u";
  emitp (@a, b, {2:{3:12}}), "t", "u";
}
3=12
a:2:3=4,b:2:3=8,_:2:3=12

t=2,3=12
t=2,a:3=4,b:3=8,_:3=12

t=2,u=3,a=4,b=8,_=12
t=2,u=3,a=4,b=8,_=12

mlr -n put end {
  @a[2][3] = 4;
  b[2][3] = 8;
  emitp (@a, b, {2:{3:12}});
  emit  (@a, b, {2:{3:12}});
  emit {};
  emitp (@a, b, {2:{3:12}}), "t";
  emit  (@a, b, {2:{3:12}}), "t";
  emit {};
  emitp (@a, b, {2:{3:12}}), "t", "u";
  emit  (@a, b, {2:{3:12}}), "t", "u";
}
a:2:3=4,b:2:3=8,_:2:3=12
3=12

t=2,a:3=4,b:3=8,_:3=12
t=2,3=12

t=2,u=3,a=4,b=8,_=12
t=2,u=3,a=4,b=8,_=12


================================================================
MAPVAR FOR-LOOPS

mlr --from ./reg_test/input/abixy put -q 
  func f() {
    return {
      "a:".$a: $i,
      "b:".$b: $y,
      NR: NF,
    }
  }
  for (k,v in f()) {
    print "k=".k;
    print "v=".v;
  }
  print

k=a:pan
v=1
k=b:pan
v=0.726803
k=1
v=5

k=a:eks
v=2
k=b:pan
v=0.522151
k=2
v=5

k=a:wye
v=3
k=b:wye
v=0.338319
k=3
v=5

k=a:eks
v=4
k=b:wye
v=0.134189
k=4
v=5

k=a:wye
v=5
k=b:pan
v=0.863624
k=5
v=5

k=a:zee
v=6
k=b:pan
v=0.493221
k=6
v=5

k=a:eks
v=7
k=b:zee
v=0.187885
k=7
v=5

k=a:zee
v=8
k=b:wye
v=0.976181
k=8
v=5

k=a:hat
v=9
k=b:wye
v=0.749551
k=9
v=5

k=a:pan
v=10
k=b:wye
v=0.952618
k=10
v=5



================================================================
TRAILING COMMAS

mlr --from ./reg_test/input/abixy put 
  $* = {
    "a": $a,
    "x": $x,
  }

a=pan,x=0.346790
a=eks,x=0.758680
a=wye,x=0.204603
a=eks,x=0.381399
a=wye,x=0.573289
a=zee,x=0.527126
a=eks,x=0.611784
a=zee,x=0.598554
a=hat,x=0.031442
a=pan,x=0.502626

mlr --from ./reg_test/input/xyz345 put func f(): int { return 999 } $y=f()
x=3,y=999,z=5

mlr --from ./reg_test/input/xyz345 put func f(): int { return 999 } $y=f(,)
mlr DSL: syntax error at ","
mlr put: syntax error on DSL parse of 'func f(): int { return 999 } $y=f(,)'

mlr --from ./reg_test/input/xyz345 put func f(a,):  int { return a*2 } $y=f(NR)
x=3,y=2,z=5

mlr --from ./reg_test/input/xyz345 put func f(a,,): int { return a*2 } $y=f(NR)
mlr DSL: syntax error at ","
mlr put: syntax error on DSL parse of 'func f(a,,): int { return a*2 } $y=f(NR)'

mlr --from ./reg_test/input/xyz345 put func f(int a,):  int { return a*2 } $y=f(NR)
x=3,y=2,z=5

mlr --from ./reg_test/input/xyz345 put func f(int a,,): int { return a*2 } $y=f(NR)
mlr DSL: syntax error at ","
mlr put: syntax error on DSL parse of 'func f(int a,,): int { return a*2 } $y=f(NR)'

mlr --from ./reg_test/input/xyz345 put subr s()      { print 999  } call s()
999
x=3,y=4,z=5

mlr --from ./reg_test/input/xyz345 put subr s()      { print 999  } call s(,)
mlr DSL: syntax error at ","
mlr put: syntax error on DSL parse of 'subr s()      { print 999  } call s(,)'

mlr --from ./reg_test/input/xyz345 put subr s(a,)   { print a*2 } call s(NR)
2
x=3,y=4,z=5

mlr --from ./reg_test/input/xyz345 put subr s(a,,)  { print a*2 } call s(NR)
mlr DSL: syntax error at ","
mlr put: syntax error on DSL parse of 'subr s(a,,)  { print a*2 } call s(NR)'

mlr --from ./reg_test/input/xyz345 put subr s(int a,)   { print a*2 } call s(NR)
2
x=3,y=4,z=5

mlr --from ./reg_test/input/xyz345 put subr s(int a,,)  { print a*2 } call s(NR)
mlr DSL: syntax error at ","
mlr put: syntax error on DSL parse of 'subr s(int a,,)  { print a*2 } call s(NR)'

mlr --from ./reg_test/input/xyz345 put $y=log10($x)
x=3,y=0.477121,z=5

mlr --from ./reg_test/input/xyz345 put $y=log10($x,)
x=3,y=0.477121,z=5

mlr --from ./reg_test/input/xyz345 put $y=log10($x,,)
mlr DSL: syntax error at ","
mlr put: syntax error on DSL parse of '$y=log10($x,,)'

mlr --from ./reg_test/input/xyz345 put $y=log10(,$x)
mlr DSL: syntax error at ","
mlr put: syntax error on DSL parse of '$y=log10(,$x)'

mlr --from ./reg_test/input/xyz345 put $y=pow($x,2)
x=3,y=9.000000,z=5

mlr --from ./reg_test/input/xyz345 put $y=pow($x,2,)
x=3,y=9.000000,z=5


================================================================
MAPVARS/UDFs/SUBROUTINES

mlr --from ./reg_test/input/abixy put 
  func f(m) {
    dump m;
    sum = 0;
    for (k, v in m) {
      sum += k
    }
    return sum
  }
  @v[$i] = $a;
  $y = f(@v)

{
  "1": "pan"
}
a=pan,b=pan,i=1,x=0.3467901443380824,y=1
{
  "1": "pan",
  "2": "eks"
}
a=eks,b=pan,i=2,x=0.7586799647899636,y=3
{
  "1": "pan",
  "2": "eks",
  "3": "wye"
}
a=wye,b=wye,i=3,x=0.20460330576630303,y=6
{
  "1": "pan",
  "2": "eks",
  "3": "wye",
  "4": "eks"
}
a=eks,b=wye,i=4,x=0.38139939387114097,y=10
{
  "1": "pan",
  "2": "eks",
  "3": "wye",
  "4": "eks",
  "5": "wye"
}
a=wye,b=pan,i=5,x=0.5732889198020006,y=15
{
  "1": "pan",
  "2": "eks",
  "3": "wye",
  "4": "eks",
  "5": "wye",
  "6": "zee"
}
a=zee,b=pan,i=6,x=0.5271261600918548,y=21
{
  "1": "pan",
  "2": "eks",
  "3": "wye",
  "4": "eks",
  "5": "wye",
  "6": "zee",
  "7": "eks"
}
a=eks,b=zee,i=7,x=0.6117840605678454,y=28
{
  "1": "pan",
  "2": "eks",
  "3": "wye",
  "4": "eks",
  "5": "wye",
  "6": "zee",
  "7": "eks",
  "8": "zee"
}
a=zee,b=wye,i=8,x=0.5985540091064224,y=36
{
  "1": "pan",
  "2": "eks",
  "3": "wye",
  "4": "eks",
  "5": "wye",
  "6": "zee",
  "7": "eks",
  "8": "zee",
  "9": "hat"
}
a=hat,b=wye,i=9,x=0.03144187646093577,y=45
{
  "1": "pan",
  "2": "eks",
  "3": "wye",
  "4": "eks",
  "5": "wye",
  "6": "zee",
  "7": "eks",
  "8": "zee",
  "9": "hat",
  "10": "pan"
}
a=pan,b=wye,i=10,x=0.5026260055412137,y=55

mlr --from ./reg_test/input/abixy put 
  subr s(m) {
    dump m;
    sum = 0;
    for (k, v in m) {
      sum += k
    }
    @sum = sum;
  }
  @v[$i] = $a;
  call s(@v);
  $y = @sum;

{
  "1": "pan"
}
a=pan,b=pan,i=1,x=0.3467901443380824,y=1
{
  "1": "pan",
  "2": "eks"
}
a=eks,b=pan,i=2,x=0.7586799647899636,y=3
{
  "1": "pan",
  "2": "eks",
  "3": "wye"
}
a=wye,b=wye,i=3,x=0.20460330576630303,y=6
{
  "1": "pan",
  "2": "eks",
  "3": "wye",
  "4": "eks"
}
a=eks,b=wye,i=4,x=0.38139939387114097,y=10
{
  "1": "pan",
  "2": "eks",
  "3": "wye",
  "4": "eks",
  "5": "wye"
}
a=wye,b=pan,i=5,x=0.5732889198020006,y=15
{
  "1": "pan",
  "2": "eks",
  "3": "wye",
  "4": "eks",
  "5": "wye",
  "6": "zee"
}
a=zee,b=pan,i=6,x=0.5271261600918548,y=21
{
  "1": "pan",
  "2": "eks",
  "3": "wye",
  "4": "eks",
  "5": "wye",
  "6": "zee",
  "7": "eks"
}
a=eks,b=zee,i=7,x=0.6117840605678454,y=28
{
  "1": "pan",
  "2": "eks",
  "3": "wye",
  "4": "eks",
  "5": "wye",
  "6": "zee",
  "7": "eks",
  "8": "zee"
}
a=zee,b=wye,i=8,x=0.5985540091064224,y=36
{
  "1": "pan",
  "2": "eks",
  "3": "wye",
  "4": "eks",
  "5": "wye",
  "6": "zee",
  "7": "eks",
  "8": "zee",
  "9": "hat"
}
a=hat,b=wye,i=9,x=0.03144187646093577,y=45
{
  "1": "pan",
  "2": "eks",
  "3": "wye",
  "4": "eks",
  "5": "wye",
  "6": "zee",
  "7": "eks",
  "8": "zee",
  "9": "hat",
  "10": "pan"
}
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

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

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
}
{
  "2": 0.522151
}
{
  "3": 0.338319
}
{
  "4": 0.134189
}
{
  "5": 0.863624
}
{
  "6": 0.493221
}
{
  "7": 0.187885
}
{
  "8": 
}
{
  "9": 0.749551
}
{
  "10": 0.952618
}

mlr --from ./reg_test/input/abixy put 
  func f(int x): map {
    if (NR==2) {
      return 2
    } else {
      return {}
    }
  }
  $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 {
    if (NR==200) {
      return 2
    } else {
      return {}
    }
  }
  $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

mlr --from ./reg_test/input/abixy put 
  func f(int x): map {
    if (NR==200) {
      return 2
    } else {
      return {}
    }
  }
  $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 {
    if (NR==2) {
      return 2
    } else {
      return {}
    }
  }
  $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=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

mlr --from ./reg_test/input/abixy put 
  func f(int x): var {
    if (NR==2) {
      return 2
    } else {
      return {}
    }
  }
  $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 {
    # fall-through return value is absent-null
  }
  $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(
   mapsum($*, {"a": "newval"}),
   {"b": "nonesuch"},
 )

a newval
i 1
x 0.3467901443380824
y 0.7268028627434533

a newval
i 2
x 0.7586799647899636
y 0.5221511083334797

aaa wye
i   3
x   0.20460330576630303
y   0.33831852551664776
a   newval

a   newval
bbb wye
i   4
x   0.38139939387114097
y   0.13418874328430463

a   newval
i   5
xxx 0.5732889198020006
y   0.8636244699032729

a newval
i 6
x 0.5271261600918548
y 0.49322128674835697

a   newval
iii 7
x   0.6117840605678454
y   0.1878849191181694

a   newval
i   8
x   0.5985540091064224
yyy 0.976181385699006

aaa hat
bbb wye
i   9
x   0.03144187646093577
y   0.7495507603507059
a   newval

a newval
i 10
x 0.5026260055412137
y 0.9526183602969864


================================================================
NUMBER FORMATTING

mlr --opprint stats1 -a sum -f x ./reg_test/input/ofmt.dat
x_sum
6

mlr --ofmt %.3lf --opprint stats1 -a sum -f x ./reg_test/input/ofmt.dat
x_sum
6

mlr --opprint --ofmt %.3lf stats1 -a sum -f x ./reg_test/input/ofmt.dat
x_sum
6


================================================================
IMPLICIT-HEADER-CSV INPUT

mlr --irs crlf --icsvlite --ifs , --opprint cut -x -f b/ ./reg_test/input/multi-sep.csv-crlf
a/   i/ x/                    y/
wye/ 0/ 0.641593543645736508/ 0.262688053894177098
eks/ 1/ 0.827614412562742041/ 0.715431942006308552
zee/ 2/ 0.923068348748175560/ 0.009737410587136359
zee/ 3/ 0.000047786161325772/ 0.803142013402256216
zee/ 4/ 0.676537984365847889/ 0.573903236805416328

mlr --irs crlf --implicit-csv-header --icsvlite --ifs , --opprint cut -x -f 2 ./reg_test/input/multi-sep.csv-crlf
1    3  4                     5
a/   i/ x/                    y/
wye/ 0/ 0.641593543645736508/ 0.262688053894177098
eks/ 1/ 0.827614412562742041/ 0.715431942006308552
zee/ 2/ 0.923068348748175560/ 0.009737410587136359
zee/ 3/ 0.000047786161325772/ 0.803142013402256216
zee/ 4/ 0.676537984365847889/ 0.573903236805416328

mlr --irs crlf --icsvlite --ifs /, --opprint cut -x -f b ./reg_test/input/multi-sep.csv-crlf
a   i x                    y/
wye 0 0.641593543645736508 0.262688053894177098
eks 1 0.827614412562742041 0.715431942006308552
zee 2 0.923068348748175560 0.009737410587136359
zee 3 0.000047786161325772 0.803142013402256216
zee 4 0.676537984365847889 0.573903236805416328

mlr --irs crlf --implicit-csv-header --icsvlite --ifs /, --opprint cut -x -f 2 ./reg_test/input/multi-sep.csv-crlf
1   3 4                    5
a   i x                    y/
wye 0 0.641593543645736508 0.262688053894177098
eks 1 0.827614412562742041 0.715431942006308552
zee 2 0.923068348748175560 0.009737410587136359
zee 3 0.000047786161325772 0.803142013402256216
zee 4 0.676537984365847889 0.573903236805416328

mlr --icsv --ifs , --opprint cut -x -f b/ ./reg_test/input/multi-sep.csv-crlf
a/   i/ x/                    y/
wye/ 0/ 0.641593543645736508/ 0.262688053894177098
eks/ 1/ 0.827614412562742041/ 0.715431942006308552
zee/ 2/ 0.923068348748175560/ 0.009737410587136359
zee/ 3/ 0.000047786161325772/ 0.803142013402256216
zee/ 4/ 0.676537984365847889/ 0.573903236805416328

mlr --implicit-csv-header --icsv --ifs , --opprint cut -x -f 2 ./reg_test/input/multi-sep.csv-crlf
1    3  4                     5
a/   i/ x/                    y/
wye/ 0/ 0.641593543645736508/ 0.262688053894177098
eks/ 1/ 0.827614412562742041/ 0.715431942006308552
zee/ 2/ 0.923068348748175560/ 0.009737410587136359
zee/ 3/ 0.000047786161325772/ 0.803142013402256216
zee/ 4/ 0.676537984365847889/ 0.573903236805416328

mlr --icsv --ifs /, --opprint cut -x -f b ./reg_test/input/multi-sep.csv-crlf
a   i x                    y/
wye 0 0.641593543645736508 0.262688053894177098
eks 1 0.827614412562742041 0.715431942006308552
zee 2 0.923068348748175560 0.009737410587136359
zee 3 0.000047786161325772 0.803142013402256216
zee 4 0.676537984365847889 0.573903236805416328

mlr --implicit-csv-header --icsv --ifs /, --opprint cut -x -f 2 ./reg_test/input/multi-sep.csv-crlf
1   3 4                    5
a   i x                    y/
wye 0 0.641593543645736508 0.262688053894177098
eks 1 0.827614412562742041 0.715431942006308552
zee 2 0.923068348748175560 0.009737410587136359
zee 3 0.000047786161325772 0.803142013402256216
zee 4 0.676537984365847889 0.573903236805416328

mlr --csv -N reorder -f 1,3,2,5,4 ./reg_test/input/multi-sep.csv-crlf
a/,i/,b/,y/,x/
wye/,0/,eks/,0.262688053894177098,0.641593543645736508/
eks/,1/,zee/,0.715431942006308552,0.827614412562742041/
zee/,2/,zee/,0.009737410587136359,0.923068348748175560/
zee/,3/,pan/,0.803142013402256216,0.000047786161325772/
zee/,4/,hat/,0.573903236805416328,0.676537984365847889/

mlr --csv -N reorder -f 5,4,3,2,1 ./reg_test/input/multi-sep.csv-crlf
y/,x/,i/,b/,a/
0.262688053894177098,0.641593543645736508/,0/,eks/,wye/
0.715431942006308552,0.827614412562742041/,1/,zee/,eks/
0.009737410587136359,0.923068348748175560/,2/,zee/,zee/
0.803142013402256216,0.000047786161325772/,3/,pan/,zee/
0.573903236805416328,0.676537984365847889/,4/,hat/,zee/

mlr --icsv --otsv -N cat
a	b	c
1	2	3
4	5	6

mlr --ixtab --opprint -N cat
1 2 3
4 5 6

mlr --icsv --pprint -N cat
1,2,3
4,5,6


================================================================
HET-CSV INPUT

mlr --icsvlite --odkvp cat ./reg_test/input/a.csv
a=1,b=2,c=3
a=4,b=5,c=6

mlr --icsvlite --odkvp cat ./reg_test/input/b.csv
d=5,e=6,f=7

mlr --icsvlite --odkvp cat ./reg_test/input/c.csv
a=1,b=2,c=3
a=4,b=5,c=6
a=7,b=8,c=9

mlr --icsvlite --odkvp cat ./reg_test/input/d.csv
h=3,i=4,j=5
m=8,n=9,o=10

mlr --icsvlite --odkvp cat ./reg_test/input/e.csv
a=1,b=2,c=3
a=4,b=5,c=6

mlr --icsvlite --odkvp cat ./reg_test/input/f.csv

mlr --icsvlite --odkvp cat ./reg_test/input/g.csv

mlr --icsvlite --odkvp cat ./reg_test/input/a.csv ./reg_test/input/a.csv
a=1,b=2,c=3
a=4,b=5,c=6
a=1,b=2,c=3
a=4,b=5,c=6

mlr --icsvlite --odkvp cat ./reg_test/input/b.csv ./reg_test/input/b.csv
d=5,e=6,f=7
d=5,e=6,f=7

mlr --icsvlite --odkvp cat ./reg_test/input/c.csv ./reg_test/input/c.csv
a=1,b=2,c=3
a=4,b=5,c=6
a=7,b=8,c=9
a=1,b=2,c=3
a=4,b=5,c=6
a=7,b=8,c=9

mlr --icsvlite --odkvp cat ./reg_test/input/d.csv ./reg_test/input/d.csv
h=3,i=4,j=5
m=8,n=9,o=10
h=3,i=4,j=5
m=8,n=9,o=10

mlr --icsvlite --odkvp cat ./reg_test/input/e.csv ./reg_test/input/e.csv
a=1,b=2,c=3
a=4,b=5,c=6
a=1,b=2,c=3
a=4,b=5,c=6

mlr --icsvlite --odkvp cat ./reg_test/input/f.csv ./reg_test/input/f.csv

mlr --icsvlite --odkvp cat ./reg_test/input/g.csv ./reg_test/input/g.csv

mlr --icsvlite --odkvp cat ./reg_test/input/a.csv ./reg_test/input/b.csv
a=1,b=2,c=3
a=4,b=5,c=6
d=5,e=6,f=7

mlr --icsvlite --odkvp cat ./reg_test/input/b.csv ./reg_test/input/c.csv
d=5,e=6,f=7
a=1,b=2,c=3
a=4,b=5,c=6
a=7,b=8,c=9

mlr --icsvlite --odkvp cat ./reg_test/input/c.csv ./reg_test/input/d.csv
a=1,b=2,c=3
a=4,b=5,c=6
a=7,b=8,c=9
h=3,i=4,j=5
m=8,n=9,o=10

mlr --icsvlite --odkvp cat ./reg_test/input/d.csv ./reg_test/input/e.csv
h=3,i=4,j=5
m=8,n=9,o=10
a=1,b=2,c=3
a=4,b=5,c=6

mlr --icsvlite --odkvp cat ./reg_test/input/e.csv ./reg_test/input/f.csv
a=1,b=2,c=3
a=4,b=5,c=6

mlr --icsvlite --odkvp cat ./reg_test/input/f.csv ./reg_test/input/g.csv

mlr --icsvlite --odkvp cat ./reg_test/input/a.csv ./reg_test/input/b.csv ./reg_test/input/c.csv ./reg_test/input/d.csv ./reg_test/input/e.csv ./reg_test/input/f.csv ./reg_test/input/g.csv
a=1,b=2,c=3
a=4,b=5,c=6
d=5,e=6,f=7
a=1,b=2,c=3
a=4,b=5,c=6
a=7,b=8,c=9
h=3,i=4,j=5
m=8,n=9,o=10
a=1,b=2,c=3
a=4,b=5,c=6

mlr --icsvlite --odkvp tac ./reg_test/input/het.csv
resource=/some/other/path,loadsec=0.97,ok=false
record_count=150,resource=/path/to/second/file
resource=/path/to/second/file,loadsec=0.32,ok=true
record_count=100,resource=/path/to/file
resource=/path/to/file,loadsec=0.45,ok=true

mlr --headerless-csv-output --csvlite tac ./reg_test/input/a.csv
4,5,6
1,2,3

mlr --headerless-csv-output --csvlite tac ./reg_test/input/c.csv
7,8,9
4,5,6
1,2,3

mlr --headerless-csv-output --csvlite tac ./reg_test/input/a.csv ./reg_test/input/c.csv
7,8,9
4,5,6
1,2,3
4,5,6
1,2,3

mlr --headerless-csv-output --csvlite tac ./reg_test/input/het.csv
/some/other/path,0.97,false

150,/path/to/second/file

/path/to/second/file,0.32,true

100,/path/to/file

/path/to/file,0.45,true

mlr --headerless-csv-output --csvlite group-like ./reg_test/input/het.csv
/path/to/file,0.45,true
/path/to/second/file,0.32,true
/some/other/path,0.97,false

100,/path/to/file
150,/path/to/second/file


================================================================
HET-PPRINT INPUT

mlr --ipprint --odkvp cat ./reg_test/input/a.pprint
a=1,b=2,c=3
a=4,b=5,c=6

mlr --ipprint --odkvp cat ./reg_test/input/b.pprint
d=5,e=6,f=7

mlr --ipprint --odkvp cat ./reg_test/input/c.pprint
a=1,b=2,c=3
a=4,b=5,c=6
a=7,b=8,c=9

mlr --ipprint --odkvp cat ./reg_test/input/d.pprint
h=3,i=4,j=5
m=8,n=9,o=10

mlr --ipprint --odkvp cat ./reg_test/input/e.pprint
a=1,b=2,c=3
a=4,b=5,c=6

mlr --ipprint --odkvp cat ./reg_test/input/f.pprint

mlr --ipprint --odkvp cat ./reg_test/input/g.pprint

mlr --ipprint --odkvp cat ./reg_test/input/a.pprint ./reg_test/input/a.pprint
a=1,b=2,c=3
a=4,b=5,c=6
a=1,b=2,c=3
a=4,b=5,c=6

mlr --ipprint --odkvp cat ./reg_test/input/b.pprint ./reg_test/input/b.pprint
d=5,e=6,f=7
d=5,e=6,f=7

mlr --ipprint --odkvp cat ./reg_test/input/c.pprint ./reg_test/input/c.pprint
a=1,b=2,c=3
a=4,b=5,c=6
a=7,b=8,c=9
a=1,b=2,c=3
a=4,b=5,c=6
a=7,b=8,c=9

mlr --ipprint --odkvp cat ./reg_test/input/d.pprint ./reg_test/input/d.pprint
h=3,i=4,j=5
m=8,n=9,o=10
h=3,i=4,j=5
m=8,n=9,o=10

mlr --ipprint --odkvp cat ./reg_test/input/e.pprint ./reg_test/input/e.pprint
a=1,b=2,c=3
a=4,b=5,c=6
a=1,b=2,c=3
a=4,b=5,c=6

mlr --ipprint --odkvp cat ./reg_test/input/f.pprint ./reg_test/input/f.pprint

mlr --ipprint --odkvp cat ./reg_test/input/g.pprint ./reg_test/input/g.pprint

mlr --ipprint --odkvp cat ./reg_test/input/a.pprint ./reg_test/input/b.pprint
a=1,b=2,c=3
a=4,b=5,c=6
d=5,e=6,f=7

mlr --ipprint --odkvp cat ./reg_test/input/b.pprint ./reg_test/input/c.pprint
d=5,e=6,f=7
a=1,b=2,c=3
a=4,b=5,c=6
a=7,b=8,c=9

mlr --ipprint --odkvp cat ./reg_test/input/c.pprint ./reg_test/input/d.pprint
a=1,b=2,c=3
a=4,b=5,c=6
a=7,b=8,c=9
h=3,i=4,j=5
m=8,n=9,o=10

mlr --ipprint --odkvp cat ./reg_test/input/d.pprint ./reg_test/input/e.pprint
h=3,i=4,j=5
m=8,n=9,o=10
a=1,b=2,c=3
a=4,b=5,c=6

mlr --ipprint --odkvp cat ./reg_test/input/e.pprint ./reg_test/input/f.pprint
a=1,b=2,c=3
a=4,b=5,c=6

mlr --ipprint --odkvp cat ./reg_test/input/f.pprint ./reg_test/input/g.pprint

mlr --ipprint --odkvp cat ./reg_test/input/a.pprint ./reg_test/input/b.pprint ./reg_test/input/c.pprint ./reg_test/input/d.pprint ./reg_test/input/e.pprint ./reg_test/input/f.pprint ./reg_test/input/g.pprint
a=1,b=2,c=3
a=4,b=5,c=6
d=5,e=6,f=7
a=1,b=2,c=3
a=4,b=5,c=6
a=7,b=8,c=9
h=3,i=4,j=5
m=8,n=9,o=10
a=1,b=2,c=3
a=4,b=5,c=6


================================================================
NULL-FIELD INPUT

mlr --icsvlite --odkvp cat ./reg_test/input/null-fields.csv
a=1,b=2,c=3,d=4,e=5
a=6,b=,c=,d=,e=10
a=,b=,c=,d=11,e=12
a=13,b=14,c=,d=,e=
a=,b=,c=,d=,e=

mlr --inidx --ifs comma --odkvp cat ./reg_test/input/null-fields.nidx
1=a,2=b,3=c,4=d,5=e
1=f,2=,3=,4=,5=g
1=,2=,3=,4=h,5=i
1=j,2=k,3=,4=,5=
1=,2=,3=,4=,5=

mlr --idkvp --oxtab cat ./reg_test/input/missings.dkvp
a 1
b 2
c 3
d 4
e 5
f 6

1 a
b 
x 4
c 3
5 d
6 e
7 f

1 a
b 
x 4
c 3
5 d
6 e
f 6

mlr --oxtab stats1 -a sum,min,max,antimode,mode -f x ./reg_test/input/nullvals.dkvp
x_sum      9
x_min      1
x_max      5
x_antimode 1
x_mode     1

mlr --oxtab stats1 -a sum,min,max,antimode,mode -f y ./reg_test/input/nullvals.dkvp
y_sum      12
y_min      2
y_max      6
y_antimode 2
y_mode     2

mlr --oxtab stats1 -a sum,min,max,antimode,mode -f z ./reg_test/input/nullvals.dkvp
z_sum      0
z_min      
z_max      
z_antimode 
z_mode     

mlr --oxtab stats1 -a sum,min,max,antimode,mode -f x,y,z ./reg_test/input/nullvals.dkvp
x_sum      9
x_min      1
x_max      5
x_antimode 1
x_mode     1
y_sum      12
y_min      2
y_max      6
y_antimode 2
y_mode     2
z_sum      0
z_min      
z_max      
z_antimode 
z_mode     

mlr --oxtab stats1 -a sum,min,max,antimode,mode -f x -g a ./reg_test/input/nullvals.dkvp
a          b
x_sum      9
x_min      1
x_max      5
x_antimode 1
x_mode     1

mlr --oxtab stats1 -a sum,min,max,antimode,mode -f y -g a ./reg_test/input/nullvals.dkvp
a          b
y_sum      12
y_min      2
y_max      6
y_antimode 2
y_mode     2

mlr --oxtab stats1 -a sum,min,max,antimode,mode -f z -g a ./reg_test/input/nullvals.dkvp
a          b
z_sum      0
z_min      
z_max      
z_antimode 
z_mode     

mlr --oxtab stats1 -a sum,min,max,antimode,mode -f x,y,z -g a ./reg_test/input/nullvals.dkvp
a          b
x_sum      9
x_min      1
x_max      5
x_antimode 1
x_mode     1
y_sum      12
y_min      2
y_max      6
y_antimode 2
y_mode     2
z_sum      0
z_min      
z_max      
z_antimode 
z_mode     

mlr --opprint merge-fields -a sum,min,max,antimode,mode -f x,y,z -o xyz ./reg_test/input/nullvals.dkvp
a xyz_sum xyz_min xyz_max xyz_antimode xyz_mode
b 3       1       2       1            1
b 7       3       4       3            3
b 5       5       5       5            5
b 6       6       6       6            6
b 0       -       -       -            -

mlr --opprint merge-fields -a sum,min,max,antimode,mode -r x,y,z -o xyz ./reg_test/input/nullvals.dkvp
a xyz_sum xyz_min xyz_max xyz_antimode xyz_mode
b 3       1       2       1            1
b 7       3       4       3            3
b 5       5       5       5            5
b 6       6       6       6            6
b 0       -       -       -            -

mlr --opprint merge-fields -a sum,min,max,antimode,mode -c x,y,z ./reg_test/input/nullvals.dkvp
a _sum _min _max _antimode _mode
b 3    1    2    1         1
b 7    3    4    3         3
b 5    5    5    5         5
b 6    6    6    6         6
b 0    -    -    -         -

mlr --oxtab stats2 -a cov -f x,y ./reg_test/input/nullvals.dkvp
x_y_cov 2.000000

mlr --oxtab stats2 -a cov -f x,z ./reg_test/input/nullvals.dkvp

mlr --oxtab stats2 -a cov -f y,z ./reg_test/input/nullvals.dkvp

mlr --oxtab stats2 -a cov -f x,y -g a ./reg_test/input/nullvals.dkvp
a       b
x_y_cov 2.000000

mlr --oxtab stats2 -a cov -f x,z -g a ./reg_test/input/nullvals.dkvp
a b

mlr --oxtab stats2 -a cov -f y,z -g a ./reg_test/input/nullvals.dkvp
a b

mlr --opprint top -n 5 -f x ./reg_test/input/nullvals.dkvp
top_idx x_top
1       5
2       3
3       1
4       -
5       -

mlr --opprint top -n 5 -f y ./reg_test/input/nullvals.dkvp
top_idx y_top
1       6
2       4
3       2
4       -
5       -

mlr --opprint top -n 5 -f z ./reg_test/input/nullvals.dkvp
top_idx z_top
1       -
2       -
3       -
4       -
5       -

mlr --opprint top -n 5 -f x,y,z ./reg_test/input/nullvals.dkvp
top_idx x_top y_top z_top
1       5     6     -
2       3     4     -
3       1     2     -
4       -     -     -
5       -     -     -

mlr --opprint top -n 5 -f x -g a ./reg_test/input/nullvals.dkvp
a top_idx x_top
b 1       5
b 2       3
b 3       1
b 4       -
b 5       -

mlr --opprint top -n 5 -f y -g a ./reg_test/input/nullvals.dkvp
a top_idx y_top
b 1       6
b 2       4
b 3       2
b 4       -
b 5       -

mlr --opprint top -n 5 -f z -g a ./reg_test/input/nullvals.dkvp
a top_idx z_top
b 1       -
b 2       -
b 3       -
b 4       -
b 5       -

mlr --opprint top -n 5 -f x,y,z -g a ./reg_test/input/nullvals.dkvp
a top_idx x_top y_top z_top
b 1       5     6     -
b 2       3     4     -
b 3       1     2     -
b 4       -     -     -
b 5       -     -     -

mlr --opprint top -a -n 5 -f x ./reg_test/input/nullvals.dkvp
a x y z
b 5 - -
b 3 4 -
b 1 2 -

mlr --opprint top -a -n 5 -f y ./reg_test/input/nullvals.dkvp
a x y z
b - 6 -
b 3 4 -
b 1 2 -

mlr --opprint top -a -n 5 -f z ./reg_test/input/nullvals.dkvp

mlr --opprint top -a -n 5 -f x -g a ./reg_test/input/nullvals.dkvp
a x y z
b 5 - -
b 3 4 -
b 1 2 -

mlr --opprint top -a -n 5 -f y -g a ./reg_test/input/nullvals.dkvp
a x y z
b - 6 -
b 3 4 -
b 1 2 -

mlr --opprint top -a -n 5 -f z -g a ./reg_test/input/nullvals.dkvp

mlr --opprint top -n 5 -f x -o foo ./reg_test/input/nullvals.dkvp
foo x_top
1   5
2   3
3   1
4   -
5   -

mlr --opprint top -n 5 -f x -g a -o foo ./reg_test/input/nullvals.dkvp
a foo x_top
b 1   5
b 2   3
b 3   1
b 4   -
b 5   -

mlr --opprint top -a -n 5 -f x -o foo ./reg_test/input/nullvals.dkvp
a x y z
b 5 - -
b 3 4 -
b 1 2 -

mlr --opprint top -a -n 5 -f z -o foo -g a ./reg_test/input/nullvals.dkvp

mlr --opprint step -a counter,rsum -f x ./reg_test/input/nullvals.dkvp
a x y z x_counter x_rsum
b 1 2 - 1         1
b 3 4 - 2         4
b 5 - - 3         9
b - 6 - -         -
b - - - -         -

mlr --opprint step -a counter,rsum -f y ./reg_test/input/nullvals.dkvp
a x y z y_counter y_rsum
b 1 2 - 1         2
b 3 4 - 2         6
b 5 - - -         -
b - 6 - 3         12
b - - - -         -

mlr --opprint step -a counter,rsum -f z ./reg_test/input/nullvals.dkvp
a x y z z_counter z_rsum
b 1 2 - -         -
b 3 4 - -         -
b 5 - - -         -
b - 6 - -         -
b - - - -         -

mlr --opprint step -a counter,rsum -f x,y,z ./reg_test/input/nullvals.dkvp
a x y z x_counter x_rsum y_counter y_rsum z_counter z_rsum
b 1 2 - 1         1      1         2      -         -
b 3 4 - 2         4      2         6      -         -
b 5 - - 3         9      -         -      -         -
b - 6 - -         -      3         12     -         -
b - - - -         -      -         -      -         -

mlr --opprint step -a counter,rsum -f x -g a ./reg_test/input/nullvals.dkvp
a x y z x_counter x_rsum
b 1 2 - 1         1
b 3 4 - 2         4
b 5 - - 3         9
b - 6 - -         -
b - - - -         -

mlr --opprint step -a counter,rsum -f y -g a ./reg_test/input/nullvals.dkvp
a x y z y_counter y_rsum
b 1 2 - 1         2
b 3 4 - 2         6
b 5 - - -         -
b - 6 - 3         12
b - - - -         -

mlr --opprint step -a counter,rsum -f z -g a ./reg_test/input/nullvals.dkvp
a x y z z_counter z_rsum
b 1 2 - -         -
b 3 4 - -         -
b 5 - - -         -
b - 6 - -         -
b - - - -         -

mlr --opprint step -a counter,rsum -f x,y,z -g a ./reg_test/input/nullvals.dkvp
a x y z x_counter x_rsum y_counter y_rsum z_counter z_rsum
b 1 2 - 1         1      1         2      -         -
b 3 4 - 2         4      2         6      -         -
b 5 - - 3         9      -         -      -         -
b - 6 - -         -      3         12     -         -
b - - - -         -      -         -      -         -


================================================================
SPACE-PADDING

mlr --idkvp --odkvp --ifs space --repifs cat ./reg_test/input/space-pad.dkvp
a=1,b=2
c=3

mlr --inidx --odkvp --ifs space --repifs cat ./reg_test/input/space-pad.nidx
1=a,2=b,3=c
1=d,2=e,3=f

mlr --icsvlite --odkvp --ifs space --repifs cat ./reg_test/input/space-pad.pprint
a=1,b=2,c=3


================================================================
DOUBLE PS

mlr --opprint cat ./reg_test/input/double-ps.dkvp
a   b    c
pan wy.e 3
pan wy=e 3


================================================================
MISSING FINAL LF

mlr --csvlite cat ./reg_test/input/truncated.csv
a,b,c
1,2,3
4,5,6
7,8,9

mlr --dkvp cat ./reg_test/input/truncated.dkvp
a=1,b=2
c=3

mlr --nidx cat ./reg_test/input/truncated.nidx
1 2 3
4 5

mlr --pprint cat ./reg_test/input/truncated.pprint
a b c
1 2 3
4 5 6
7 8 9

mlr --xtab cat ./reg_test/input/truncated.xtab-crlf
a 1
b 2
c 3

d 4
e 5


================================================================
UTF-8 alignment

mlr --icsvlite --opprint cat ./reg_test/input/utf8-1.csv
langue   nom      jour
français françois vendredi
žusz     éloignée -

mlr --icsvlite --opprint cat ./reg_test/input/utf8-2.csv
français françois vendredi
langue   nom      jour

mlr --icsvlite --oxtab cat ./reg_test/input/utf8-1.csv
langue français
nom    françois
jour   vendredi

langue žusz
nom    éloignée
jour   

mlr --icsvlite --oxtab cat ./reg_test/input/utf8-2.csv
français langue
françois nom
vendredi jour

mlr --inidx --ifs space --opprint cat ./reg_test/input/utf8-align.nidx
1        2
191º     test
191      test2
francois français
françois francais

mlr --inidx --ifs space --opprint --right cat ./reg_test/input/utf8-align.nidx
       1        2
    191º     test
     191    test2
francois français
françois francais

mlr --oxtab cat ./reg_test/input/utf8-align.dkvp
191º test
1912 test2
cois çais
çois cais

191º test
1912 test2
ois  çais
çois cais

191º  test
1912  test2
coise çais
çois  cais

mlr --inidx --ifs space --oxtab --xvright cat ./reg_test/input/utf8-align.nidx
1 191º
2 test

1   191
2 test2

1 francois
2 français

1 françois
2 francais


================================================================
UTF-8 BOM

mlr --icsv --opprint cat ./reg_test/input/bom.csv
a b c
1 2 3
4 5 6

mlr --icsv --opprint cat
a b c
1 2 3
4 5 6

mlr --icsv --opprint cat ./reg_test/input/bom-dquote-header.csv
a b c
1 2 3
4 5 6

mlr --icsv --opprint cat
a b c
1 2 3
4 5 6


================================================================
UTF-8 UPPERCASE/LOWERCASE

mlr --icsvlite --opprint put $langue = toupper($langue) ./reg_test/input/utf8-1.csv
langue   nom      jour
FRANÇAIS françois vendredi
ŽUSZ     éloignée -

mlr --icsvlite --opprint put $nom    = toupper($nom) ./reg_test/input/utf8-1.csv
langue   nom      jour
français FRANÇOIS vendredi
žusz     ÉLOIGNÉE -

mlr --icsvlite --opprint put $jour   = toupper($jour) ./reg_test/input/utf8-1.csv
langue   nom      jour
français françois VENDREDI
žusz     éloignée -

mlr --icsvlite --opprint put $langue = capitalize($langue) ./reg_test/input/utf8-1.csv
langue   nom      jour
Français françois vendredi
Žusz     éloignée -

mlr --icsvlite --opprint put $nom    = capitalize($nom) ./reg_test/input/utf8-1.csv
langue   nom      jour
français François vendredi
žusz     Éloignée -

mlr --icsvlite --opprint put $jour   = capitalize($jour) ./reg_test/input/utf8-1.csv
langue   nom      jour
français françois Vendredi
žusz     éloignée -


================================================================
SKIP/PASS COMMENTS DKVP


---------------------------------------------------------------- input comments1.dkvp
cat ./reg_test/input/comments/comments1.dkvp
# hello world 1
a=1,b=2,c=3
a=4,b=5,c=6


---------------------------------------------------------------- skip comments1.dkvp
mlr --skip-comments --idkvp --oxtab cat
a 1
b 2
c 3

a 4
b 5
c 6

mlr --skip-comments --idkvp --oxtab cat ./reg_test/input/comments/comments1.dkvp
a 1
b 2
c 3

a 4
b 5
c 6


---------------------------------------------------------------- pass comments1.dkvp
mlr --pass-comments --idkvp --oxtab cat
# hello world 1
a 1
b 2
c 3

a 4
b 5
c 6

mlr --pass-comments --idkvp --oxtab cat ./reg_test/input/comments/comments1.dkvp
# hello world 1
a 1
b 2
c 3

a 4
b 5
c 6


---------------------------------------------------------------- input comments2.dkvp
cat ./reg_test/input/comments/comments2.dkvp
a=1,b=2,c=3
# hello world 2
a=4,b=5,c=6


---------------------------------------------------------------- skip comments2.dkvp
mlr --skip-comments --idkvp --oxtab cat
a 1
b 2
c 3

a 4
b 5
c 6

mlr --skip-comments --idkvp --oxtab cat ./reg_test/input/comments/comments2.dkvp
a 1
b 2
c 3

a 4
b 5
c 6


---------------------------------------------------------------- pass comments2.dkvp
mlr --pass-comments --idkvp --oxtab cat
a 1
b 2
c 3
# hello world 2

a 4
b 5
c 6

mlr --pass-comments --idkvp --oxtab cat ./reg_test/input/comments/comments2.dkvp
a 1
b 2
c 3
# hello world 2

a 4
b 5
c 6


---------------------------------------------------------------- input comments3.dkvp
cat ./reg_test/input/comments/comments3.dkvp
a=1,b=2,c=3
a=4,b=5,c=6
# hello world 3


---------------------------------------------------------------- skip comments3.dkvp
mlr --skip-comments --idkvp --oxtab cat
a 1
b 2
c 3

a 4
b 5
c 6

mlr --skip-comments --idkvp --oxtab cat ./reg_test/input/comments/comments3.dkvp
a 1
b 2
c 3

a 4
b 5
c 6


---------------------------------------------------------------- pass comments3.dkvp
mlr --pass-comments --idkvp --oxtab cat
a 1
b 2
c 3

a 4
b 5
c 6
# hello world 3

mlr --pass-comments --idkvp --oxtab cat ./reg_test/input/comments/comments3.dkvp
a 1
b 2
c 3

a 4
b 5
c 6
# hello world 3

mlr termcvt --lf2crlf

---------------------------------------------------------------- input comments1-crlf.dkvp
cat /Users/kerl/pub_http_internet/miller-releases/miller-head/c/output-regtest/comments1-crlf.dkvp
# hello world 1
a=1,b=2,c=3
a=4,b=5,c=6


---------------------------------------------------------------- skip comments1-crlf.dkvp
mlr --skip-comments --idkvp --oxtab cat
a 1
b 2
c 3

a 4
b 5
c 6

mlr --skip-comments --idkvp --oxtab cat /Users/kerl/pub_http_internet/miller-releases/miller-head/c/output-regtest/comments1-crlf.dkvp
a 1
b 2
c 3

a 4
b 5
c 6


---------------------------------------------------------------- pass comments1-crlf.dkvp
mlr --pass-comments --idkvp --oxtab cat
# hello world 1
a 1
b 2
c 3

a 4
b 5
c 6

mlr --pass-comments --idkvp --oxtab cat /Users/kerl/pub_http_internet/miller-releases/miller-head/c/output-regtest/comments1-crlf.dkvp
# hello world 1
a 1
b 2
c 3

a 4
b 5
c 6


================================================================
SKIP/PASS COMMENTS DKVP WITH ALTERNATE PREFIX


---------------------------------------------------------------- input comments1-atat.dkvp
cat ./reg_test/input/comments/comments1-atat.dkvp
@@ hello world 1
a=1,b=2,c=3
a=4,b=5,c=6


---------------------------------------------------------------- skip comments1-atat.dkvp
mlr --skip-comments-with @@ --idkvp --oxtab cat
a 1
b 2
c 3

a 4
b 5
c 6

mlr --skip-comments-with @@ --idkvp --oxtab cat ./reg_test/input/comments/comments1-atat.dkvp
a 1
b 2
c 3

a 4
b 5
c 6


---------------------------------------------------------------- pass comments1-atat.dkvp
mlr --pass-comments-with @@ --idkvp --oxtab cat
@@ hello world 1
a 1
b 2
c 3

a 4
b 5
c 6

mlr --pass-comments-with @@ --idkvp --oxtab cat ./reg_test/input/comments/comments1-atat.dkvp
@@ hello world 1
a 1
b 2
c 3

a 4
b 5
c 6


---------------------------------------------------------------- input comments2-atat.dkvp
cat ./reg_test/input/comments/comments2-atat.dkvp
a=1,b=2,c=3
@@ hello world 2
a=4,b=5,c=6


---------------------------------------------------------------- skip comments2-atat.dkvp
mlr --skip-comments-with @@ --idkvp --oxtab cat
a 1
b 2
c 3

a 4
b 5
c 6

mlr --skip-comments-with @@ --idkvp --oxtab cat ./reg_test/input/comments/comments2-atat.dkvp
a 1
b 2
c 3

a 4
b 5
c 6


---------------------------------------------------------------- pass comments2-atat.dkvp
mlr --pass-comments-with @@ --idkvp --oxtab cat
a 1
b 2
c 3
@@ hello world 2

a 4
b 5
c 6

mlr --pass-comments-with @@ --idkvp --oxtab cat ./reg_test/input/comments/comments2-atat.dkvp
a 1
b 2
c 3
@@ hello world 2

a 4
b 5
c 6


---------------------------------------------------------------- input comments3-atat.dkvp
cat ./reg_test/input/comments/comments3-atat.dkvp
a=1,b=2,c=3
a=4,b=5,c=6
@@ hello world 3


---------------------------------------------------------------- skip comments3-atat.dkvp
mlr --skip-comments-with @@ --idkvp --oxtab cat
a 1
b 2
c 3

a 4
b 5
c 6

mlr --skip-comments-with @@ --idkvp --oxtab cat ./reg_test/input/comments/comments3-atat.dkvp
a 1
b 2
c 3

a 4
b 5
c 6


---------------------------------------------------------------- pass comments3-atat.dkvp
mlr --pass-comments-with @@ --idkvp --oxtab cat
a 1
b 2
c 3

a 4
b 5
c 6
@@ hello world 3

mlr --pass-comments-with @@ --idkvp --oxtab cat ./reg_test/input/comments/comments3-atat.dkvp
a 1
b 2
c 3

a 4
b 5
c 6
@@ hello world 3


================================================================
SKIP/PASS COMMENTS NIDX


---------------------------------------------------------------- input comments1.nidx
cat ./reg_test/input/comments/comments1.nidx
# hello world 1
aX1 bX2 cX3
aX4 bX5 cX6


---------------------------------------------------------------- skip comments1.nidx
mlr --skip-comments --inidx --oxtab cat
1 aX1
2 bX2
3 cX3

1 aX4
2 bX5
3 cX6

mlr --skip-comments --inidx --oxtab cat ./reg_test/input/comments/comments1.nidx
1 aX1
2 bX2
3 cX3

1 aX4
2 bX5
3 cX6


---------------------------------------------------------------- pass comments1.nidx
mlr --pass-comments --inidx --oxtab cat
# hello world 1
1 aX1
2 bX2
3 cX3

1 aX4
2 bX5
3 cX6

mlr --pass-comments --inidx --oxtab cat ./reg_test/input/comments/comments1.nidx
# hello world 1
1 aX1
2 bX2
3 cX3

1 aX4
2 bX5
3 cX6


---------------------------------------------------------------- input comments2.nidx
cat ./reg_test/input/comments/comments2.nidx
aX1 bX2 cX3
# hello world 2
aX4 bX5 cX6


---------------------------------------------------------------- skip comments2.nidx
mlr --skip-comments --inidx --oxtab cat
1 aX1
2 bX2
3 cX3

1 aX4
2 bX5
3 cX6

mlr --skip-comments --inidx --oxtab cat ./reg_test/input/comments/comments2.nidx
1 aX1
2 bX2
3 cX3

1 aX4
2 bX5
3 cX6


---------------------------------------------------------------- pass comments2.nidx
mlr --pass-comments --inidx --oxtab cat
1 aX1
2 bX2
3 cX3
# hello world 2

1 aX4
2 bX5
3 cX6

mlr --pass-comments --inidx --oxtab cat ./reg_test/input/comments/comments2.nidx
1 aX1
2 bX2
3 cX3
# hello world 2

1 aX4
2 bX5
3 cX6


---------------------------------------------------------------- input comments3.nidx
cat ./reg_test/input/comments/comments3.nidx
aX1 bX2 cX3
aX4 bX5 cX6
# hello world 3


---------------------------------------------------------------- skip comments3.nidx
mlr --skip-comments --inidx --oxtab cat
1 aX1
2 bX2
3 cX3

1 aX4
2 bX5
3 cX6

mlr --skip-comments --inidx --oxtab cat ./reg_test/input/comments/comments3.nidx
1 aX1
2 bX2
3 cX3

1 aX4
2 bX5
3 cX6


---------------------------------------------------------------- pass comments3.nidx
mlr --pass-comments --inidx --oxtab cat
1 aX1
2 bX2
3 cX3

1 aX4
2 bX5
3 cX6
# hello world 3

mlr --pass-comments --inidx --oxtab cat ./reg_test/input/comments/comments3.nidx
1 aX1
2 bX2
3 cX3

1 aX4
2 bX5
3 cX6
# hello world 3

mlr termcvt --lf2crlf

---------------------------------------------------------------- input comments1-crlf.nidx
cat /Users/kerl/pub_http_internet/miller-releases/miller-head/c/output-regtest/comments1-crlf.nidx
# hello world 1
aX1 bX2 cX3
aX4 bX5 cX6


---------------------------------------------------------------- skip comments1-crlf.nidx
mlr --skip-comments --inidx --oxtab cat
1 aX1
2 bX2
3 cX3

1 aX4
2 bX5
3 cX6

mlr --skip-comments --inidx --oxtab cat /Users/kerl/pub_http_internet/miller-releases/miller-head/c/output-regtest/comments1-crlf.nidx
1 aX1
2 bX2
3 cX3

1 aX4
2 bX5
3 cX6


---------------------------------------------------------------- pass comments1-crlf.nidx
mlr --pass-comments --inidx --oxtab cat
# hello world 1
1 aX1
2 bX2
3 cX3

1 aX4
2 bX5
3 cX6

mlr --pass-comments --inidx --oxtab cat /Users/kerl/pub_http_internet/miller-releases/miller-head/c/output-regtest/comments1-crlf.nidx
# hello world 1
1 aX1
2 bX2
3 cX3

1 aX4
2 bX5
3 cX6


================================================================
SKIP/PASS COMMENTS JSON


---------------------------------------------------------------- input comments1.json
cat ./reg_test/input/comments/comments1.json
# hello world 1
{ "a":1, "b":2, "c":3 }
{ "a":4, "b":5, "c":6 }


---------------------------------------------------------------- skip comments1.json
mlr --skip-comments --ijson --odkvp cat
a=1,b=2,c=3
a=4,b=5,c=6

mlr --skip-comments --ijson --odkvp cat ./reg_test/input/comments/comments1.json
a=1,b=2,c=3
a=4,b=5,c=6


---------------------------------------------------------------- pass comments1.json
mlr --pass-comments --ijson --odkvp cat
# hello world 1
a=1,b=2,c=3
a=4,b=5,c=6

mlr --pass-comments --ijson --odkvp cat ./reg_test/input/comments/comments1.json
# hello world 1
a=1,b=2,c=3
a=4,b=5,c=6


---------------------------------------------------------------- input comments2.json
cat ./reg_test/input/comments/comments2.json
{ "a":1, "b":2, "c":3 }
# hello world 2
{ "a":4, "b":5, "c":6 }


---------------------------------------------------------------- skip comments2.json
mlr --skip-comments --ijson --odkvp cat
a=1,b=2,c=3
a=4,b=5,c=6

mlr --skip-comments --ijson --odkvp cat ./reg_test/input/comments/comments2.json
a=1,b=2,c=3
a=4,b=5,c=6


---------------------------------------------------------------- pass comments2.json
mlr --pass-comments --ijson --odkvp cat
# hello world 2
a=1,b=2,c=3
a=4,b=5,c=6

mlr --pass-comments --ijson --odkvp cat ./reg_test/input/comments/comments2.json
# hello world 2
a=1,b=2,c=3
a=4,b=5,c=6


---------------------------------------------------------------- input comments3.json
cat ./reg_test/input/comments/comments3.json
{ "a":1, "b":2, "c":3 }
{ "a":4, "b":5, "c":6 }
# hello world 3


---------------------------------------------------------------- skip comments3.json
mlr --skip-comments --ijson --odkvp cat
a=1,b=2,c=3
a=4,b=5,c=6

mlr --skip-comments --ijson --odkvp cat ./reg_test/input/comments/comments3.json
a=1,b=2,c=3
a=4,b=5,c=6


---------------------------------------------------------------- pass comments3.json
mlr --pass-comments --ijson --odkvp cat
# hello world 3
a=1,b=2,c=3
a=4,b=5,c=6

mlr --pass-comments --ijson --odkvp cat ./reg_test/input/comments/comments3.json
# hello world 3
a=1,b=2,c=3
a=4,b=5,c=6

mlr termcvt --lf2crlf

---------------------------------------------------------------- input comments1-crlf.json
cat /Users/kerl/pub_http_internet/miller-releases/miller-head/c/output-regtest/comments1-crlf.json
# hello world 1
{ "a":1, "b":2, "c":3 }
{ "a":4, "b":5, "c":6 }


---------------------------------------------------------------- skip comments1-crlf.json
mlr --skip-comments --ijson --odkvp cat
a=1,b=2,c=3
a=4,b=5,c=6

mlr --skip-comments --ijson --odkvp cat /Users/kerl/pub_http_internet/miller-releases/miller-head/c/output-regtest/comments1-crlf.json
a=1,b=2,c=3
a=4,b=5,c=6


---------------------------------------------------------------- pass comments1-crlf.json
mlr --pass-comments --ijson --odkvp cat
# hello world 1
a=1,b=2,c=3
a=4,b=5,c=6

mlr --pass-comments --ijson --odkvp cat /Users/kerl/pub_http_internet/miller-releases/miller-head/c/output-regtest/comments1-crlf.json
# hello world 1
a=1,b=2,c=3
a=4,b=5,c=6


================================================================
SKIP/PASS COMMENTS XTAB


---------------------------------------------------------------- input comments1.xtab
cat ./reg_test/input/comments/comments1.xtab
x 1
#hello world3
z 3

x 2
#hello world4
z 5



---------------------------------------------------------------- skip comments1.xtab
mlr --skip-comments --ixtab --odkvp cat
x=1,z=3
x=2,z=5

mlr --skip-comments --ixtab --odkvp cat ./reg_test/input/comments/comments1.xtab
x=1,z=3
x=2,z=5


---------------------------------------------------------------- pass comments1.xtab
mlr --pass-comments --ixtab --odkvp cat
#hello world3
x=1,z=3
#hello world4
x=2,z=5

mlr --pass-comments --ixtab --odkvp cat ./reg_test/input/comments/comments1.xtab
#hello world3
x=1,z=3
#hello world4
x=2,z=5


---------------------------------------------------------------- input comments2.xtab
cat ./reg_test/input/comments/comments2.xtab
#hello world1

#hello world2
x 1
#hello world3
z 3

x 2
#hello world4
z 5
#hello world5

#hello world6


---------------------------------------------------------------- skip comments2.xtab
mlr --skip-comments --ixtab --odkvp cat
x=1,z=3
x=2,z=5

mlr --skip-comments --ixtab --odkvp cat ./reg_test/input/comments/comments2.xtab
x=1,z=3
x=2,z=5


---------------------------------------------------------------- pass comments2.xtab
mlr --pass-comments --ixtab --odkvp cat
#hello world1
#hello world2
#hello world3
x=1,z=3
#hello world4
#hello world5
x=2,z=5
#hello world6

mlr --pass-comments --ixtab --odkvp cat ./reg_test/input/comments/comments2.xtab
#hello world1
#hello world2
#hello world3
x=1,z=3
#hello world4
#hello world5
x=2,z=5
#hello world6

mlr termcvt --lf2crlf

---------------------------------------------------------------- input comments1-crlf.xtab
cat /Users/kerl/pub_http_internet/miller-releases/miller-head/c/output-regtest/comments1-crlf.xtab
x 1
#hello world3
z 3

x 2
#hello world4
z 5



---------------------------------------------------------------- skip comments1-crlf.xtab
mlr --skip-comments --ixtab --odkvp cat
x=1,z=3
x=2,z=5

mlr --skip-comments --ixtab --odkvp cat /Users/kerl/pub_http_internet/miller-releases/miller-head/c/output-regtest/comments1-crlf.xtab
x=1,z=3
x=2,z=5


---------------------------------------------------------------- pass comments1-crlf.xtab
mlr --pass-comments --ixtab --odkvp cat
#hello world3
x=1,z=3
#hello world4
x=2,z=5

mlr --pass-comments --ixtab --odkvp cat /Users/kerl/pub_http_internet/miller-releases/miller-head/c/output-regtest/comments1-crlf.xtab
#hello world3
x=1,z=3
#hello world4
x=2,z=5


================================================================
SKIP/PASS COMMENTS CSVLITE


---------------------------------------------------------------- input comments1.csv
cat ./reg_test/input/comments/comments1.csv
# hello
a,b,c
1,2,3
4,5,6


---------------------------------------------------------------- skip comments1.csv
mlr --skip-comments --icsvlite --odkvp cat
a=1,b=2,c=3
a=4,b=5,c=6

mlr --skip-comments --icsvlite --odkvp cat ./reg_test/input/comments/comments1.csv
a=1,b=2,c=3
a=4,b=5,c=6


---------------------------------------------------------------- pass comments1.csv
mlr --pass-comments --icsvlite --odkvp cat
# hello
a=1,b=2,c=3
a=4,b=5,c=6

mlr --pass-comments --icsvlite --odkvp cat ./reg_test/input/comments/comments1.csv
# hello
a=1,b=2,c=3
a=4,b=5,c=6


---------------------------------------------------------------- input comments2.csv
cat ./reg_test/input/comments/comments2.csv
# hello
a,b,c
# hi
1,2,3
# there
4,5,6
# haha


---------------------------------------------------------------- skip comments2.csv
mlr --skip-comments --icsvlite --odkvp cat
a=1,b=2,c=3
a=4,b=5,c=6

mlr --skip-comments --icsvlite --odkvp cat ./reg_test/input/comments/comments2.csv
a=1,b=2,c=3
a=4,b=5,c=6


---------------------------------------------------------------- pass comments2.csv
mlr --pass-comments --icsvlite --odkvp cat
# hello
# hi
a=1,b=2,c=3
# there
a=4,b=5,c=6
# haha

mlr --pass-comments --icsvlite --odkvp cat ./reg_test/input/comments/comments2.csv
# hello
# hi
a=1,b=2,c=3
# there
a=4,b=5,c=6
# haha

mlr termcvt --lf2crlf

---------------------------------------------------------------- input comments1-crlf.csv
cat /Users/kerl/pub_http_internet/miller-releases/miller-head/c/output-regtest/comments1-crlf.csv
# hello
a,b,c
1,2,3
4,5,6


---------------------------------------------------------------- skip comments1-crlf.csv
mlr --skip-comments --icsvlite --odkvp cat
a=1,b=2,c=3
a=4,b=5,c=6

mlr --skip-comments --icsvlite --odkvp cat /Users/kerl/pub_http_internet/miller-releases/miller-head/c/output-regtest/comments1-crlf.csv
a=1,b=2,c=3
a=4,b=5,c=6


---------------------------------------------------------------- pass comments1-crlf.csv
mlr --pass-comments --icsvlite --odkvp cat
# hello
a=1,b=2,c=3
a=4,b=5,c=6

mlr --pass-comments --icsvlite --odkvp cat /Users/kerl/pub_http_internet/miller-releases/miller-head/c/output-regtest/comments1-crlf.csv
# hello
a=1,b=2,c=3
a=4,b=5,c=6


================================================================
SKIP/PASS COMMENTS CSV


---------------------------------------------------------------- input comments1.csv
cat ./reg_test/input/comments/comments1.csv
# hello
a,b,c
1,2,3
4,5,6


---------------------------------------------------------------- skip comments1.csv
mlr --skip-comments --icsv --odkvp cat
a=1,b=2,c=3
a=4,b=5,c=6

mlr --skip-comments --icsv --odkvp cat ./reg_test/input/comments/comments1.csv
a=1,b=2,c=3
a=4,b=5,c=6


---------------------------------------------------------------- pass comments1.csv
mlr --pass-comments --icsv --odkvp cat
# hello
a=1,b=2,c=3
a=4,b=5,c=6

mlr --pass-comments --icsv --odkvp cat ./reg_test/input/comments/comments1.csv
# hello
a=1,b=2,c=3
a=4,b=5,c=6


---------------------------------------------------------------- input comments2.csv
cat ./reg_test/input/comments/comments2.csv
# hello
a,b,c
# hi
1,2,3
# there
4,5,6
# haha


---------------------------------------------------------------- skip comments2.csv
mlr --skip-comments --icsv --odkvp cat
a=1,b=2,c=3
a=4,b=5,c=6

mlr --skip-comments --icsv --odkvp cat ./reg_test/input/comments/comments2.csv
a=1,b=2,c=3
a=4,b=5,c=6


---------------------------------------------------------------- pass comments2.csv
mlr --pass-comments --icsv --odkvp cat
# hello
# hi
a=1,b=2,c=3
# there
a=4,b=5,c=6
# haha

mlr --pass-comments --icsv --odkvp cat ./reg_test/input/comments/comments2.csv
# hello
# hi
a=1,b=2,c=3
# there
a=4,b=5,c=6
# haha

mlr termcvt --lf2crlf

---------------------------------------------------------------- input comments1-crlf.csv
cat /Users/kerl/pub_http_internet/miller-releases/miller-head/c/output-regtest/comments1-crlf.csv
# hello
a,b,c
1,2,3
4,5,6


---------------------------------------------------------------- skip comments1-crlf.csv
mlr --skip-comments --icsv --odkvp cat
a=1,b=2,c=3
a=4,b=5,c=6

mlr --skip-comments --icsv --odkvp cat /Users/kerl/pub_http_internet/miller-releases/miller-head/c/output-regtest/comments1-crlf.csv
a=1,b=2,c=3
a=4,b=5,c=6


---------------------------------------------------------------- pass comments1-crlf.csv
mlr --pass-comments --icsv --odkvp cat
# hello
a=1,b=2,c=3
a=4,b=5,c=6

mlr --pass-comments --icsv --odkvp cat /Users/kerl/pub_http_internet/miller-releases/miller-head/c/output-regtest/comments1-crlf.csv
# hello
a=1,b=2,c=3
a=4,b=5,c=6


================================================================
INT64 I/O

mlr --oxtab put $c=$a;$d=$b;$e=hexfmt($a);$f=hexfmt($b) ./reg_test/input/int64io.dkvp
a 0x1
b 1
c 1
d 1
e 0x1
f 0x1

a 0x7ffffffffffffffe
b 9223372036854775806
c 9223372036854775806
d 9223372036854775806
e 0x7ffffffffffffffe
f 0x7ffffffffffffffe

a 0x7fffffffffffffff
b 9223372036854775807
c 9223372036854775807
d 9223372036854775807
e 0x7fffffffffffffff
f 0x7fffffffffffffff

a 0x8000000000000000
b -9223372036854775808
c -9223372036854775808
d -9223372036854775808
e 0x8000000000000000
f 0x8000000000000000

a 0xffffffffffffffff
b -1
c -1
d -1
e 0xffffffffffffffff
f 0xffffffffffffffff

mlr --oxtab --ofmt %.8g put $p0=$p+0;$p1=$p+1;$p2=$p+2;$p3=$p+3 ./reg_test/input/int64arith.dkvp
p  0x7ffffffffffff9ff
n  0x8000000000000000
p0 9223372036854774271
p1 9223372036854774272
p2 9223372036854774273
p3 9223372036854774274

p  0x7ffffffffffffa00
n  0x8000000000000001
p0 9223372036854774272
p1 9223372036854774273
p2 9223372036854774274
p3 9223372036854774275

p  0x7ffffffffffffbff
n  0x8000000000000200
p0 9223372036854774783
p1 9223372036854774784
p2 9223372036854774785
p3 9223372036854774786

p  0x7ffffffffffffc00
n  0x8000000000000400
p0 9223372036854774784
p1 9223372036854774785
p2 9223372036854774786
p3 9223372036854774787

p  0x7ffffffffffffe00
n  0x8000000000000401
p0 9223372036854775296
p1 9223372036854775297
p2 9223372036854775298
p3 9223372036854775299

p  0x7ffffffffffffffe
n  0x8000000000000600
p0 9223372036854775806
p1 9223372036854775807
p2 9.223372e+18
p3 9.223372e+18

p  0x7fffffffffffffff
n  0x8000000000000601
p0 9223372036854775807
p1 9.223372e+18
p2 9.223372e+18
p3 9.223372e+18

mlr --oxtab --ofmt %.8g put $p0=$p-0;$p1=$p-1;$p2=$p-2;$p3=$p-3 ./reg_test/input/int64arith.dkvp
p  0x7ffffffffffff9ff
n  0x8000000000000000
p0 9223372036854774271
p1 9223372036854774270
p2 9223372036854774269
p3 9223372036854774268

p  0x7ffffffffffffa00
n  0x8000000000000001
p0 9223372036854774272
p1 9223372036854774271
p2 9223372036854774270
p3 9223372036854774269

p  0x7ffffffffffffbff
n  0x8000000000000200
p0 9223372036854774783
p1 9223372036854774782
p2 9223372036854774781
p3 9223372036854774780

p  0x7ffffffffffffc00
n  0x8000000000000400
p0 9223372036854774784
p1 9223372036854774783
p2 9223372036854774782
p3 9223372036854774781

p  0x7ffffffffffffe00
n  0x8000000000000401
p0 9223372036854775296
p1 9223372036854775295
p2 9223372036854775294
p3 9223372036854775293

p  0x7ffffffffffffffe
n  0x8000000000000600
p0 9223372036854775806
p1 9223372036854775805
p2 9223372036854775804
p3 9223372036854775803

p  0x7fffffffffffffff
n  0x8000000000000601
p0 9223372036854775807
p1 9223372036854775806
p2 9223372036854775805
p3 9223372036854775804

mlr --oxtab --ofmt %.8g put $p0=$p*0;$p1=$p*1;$p2=$p*2;$p3=$p*3 ./reg_test/input/int64arith.dkvp
p  0x7ffffffffffff9ff
n  0x8000000000000000
p0 0
p1 9223372036854774271
p2 1.8446744e+19
p3 2.7670116e+19

p  0x7ffffffffffffa00
n  0x8000000000000001
p0 0
p1 9223372036854774272
p2 1.8446744e+19
p3 2.7670116e+19

p  0x7ffffffffffffbff
n  0x8000000000000200
p0 0
p1 9223372036854774783
p2 1.8446744e+19
p3 2.7670116e+19

p  0x7ffffffffffffc00
n  0x8000000000000400
p0 0
p1 9223372036854774784
p2 1.8446744e+19
p3 2.7670116e+19

p  0x7ffffffffffffe00
n  0x8000000000000401
p0 0
p1 9.223372e+18
p2 1.8446744e+19
p3 2.7670116e+19

p  0x7ffffffffffffffe
n  0x8000000000000600
p0 0
p1 9.223372e+18
p2 1.8446744e+19
p3 2.7670116e+19

p  0x7fffffffffffffff
n  0x8000000000000601
p0 0
p1 9.223372e+18
p2 1.8446744e+19
p3 2.7670116e+19

mlr --oxtab --ofmt %.8g put $n0=$n+0;$n1=$n+1;$n2=$n+2;$n3=$n+3 ./reg_test/input/int64arith.dkvp
p  0x7ffffffffffff9ff
n  0x8000000000000000
n0 -9223372036854775808
n1 -9223372036854775807
n2 -9223372036854775806
n3 -9223372036854775805

p  0x7ffffffffffffa00
n  0x8000000000000001
n0 -9223372036854775807
n1 -9223372036854775806
n2 -9223372036854775805
n3 -9223372036854775804

p  0x7ffffffffffffbff
n  0x8000000000000200
n0 -9223372036854775296
n1 -9223372036854775295
n2 -9223372036854775294
n3 -9223372036854775293

p  0x7ffffffffffffc00
n  0x8000000000000400
n0 -9223372036854774784
n1 -9223372036854774783
n2 -9223372036854774782
n3 -9223372036854774781

p  0x7ffffffffffffe00
n  0x8000000000000401
n0 -9223372036854774783
n1 -9223372036854774782
n2 -9223372036854774781
n3 -9223372036854774780

p  0x7ffffffffffffffe
n  0x8000000000000600
n0 -9223372036854774272
n1 -9223372036854774271
n2 -9223372036854774270
n3 -9223372036854774269

p  0x7fffffffffffffff
n  0x8000000000000601
n0 -9223372036854774271
n1 -9223372036854774270
n2 -9223372036854774269
n3 -9223372036854774268

mlr --oxtab --ofmt %.8g put $n0=$n-0;$n1=$n-1;$n2=$n-2;$n3=$n-3 ./reg_test/input/int64arith.dkvp
p  0x7ffffffffffff9ff
n  0x8000000000000000
n0 -9223372036854775808
n1 -9.223372e+18
n2 -9.223372e+18
n3 -9.223372e+18

p  0x7ffffffffffffa00
n  0x8000000000000001
n0 -9223372036854775807
n1 -9223372036854775808
n2 -9.223372e+18
n3 -9.223372e+18

p  0x7ffffffffffffbff
n  0x8000000000000200
n0 -9223372036854775296
n1 -9223372036854775297
n2 -9223372036854775298
n3 -9223372036854775299

p  0x7ffffffffffffc00
n  0x8000000000000400
n0 -9223372036854774784
n1 -9223372036854774785
n2 -9223372036854774786
n3 -9223372036854774787

p  0x7ffffffffffffe00
n  0x8000000000000401
n0 -9223372036854774783
n1 -9223372036854774784
n2 -9223372036854774785
n3 -9223372036854774786

p  0x7ffffffffffffffe
n  0x8000000000000600
n0 -9223372036854774272
n1 -9223372036854774273
n2 -9223372036854774274
n3 -9223372036854774275

p  0x7fffffffffffffff
n  0x8000000000000601
n0 -9223372036854774271
n1 -9223372036854774272
n2 -9223372036854774273
n3 -9223372036854774274

mlr --oxtab --ofmt %.8g put $n0=$n*0;$n1=$n*1;$n2=$n*2;$n3=$n*3 ./reg_test/input/int64arith.dkvp
p  0x7ffffffffffff9ff
n  0x8000000000000000
n0 0
n1 -9.223372e+18
n2 -1.8446744e+19
n3 -2.7670116e+19

p  0x7ffffffffffffa00
n  0x8000000000000001
n0 0
n1 -9.223372e+18
n2 -1.8446744e+19
n3 -2.7670116e+19

p  0x7ffffffffffffbff
n  0x8000000000000200
n0 0
n1 -9.223372e+18
n2 -1.8446744e+19
n3 -2.7670116e+19

p  0x7ffffffffffffc00
n  0x8000000000000400
n0 0
n1 -9223372036854774784
n2 -1.8446744e+19
n3 -2.7670116e+19

p  0x7ffffffffffffe00
n  0x8000000000000401
n0 0
n1 -9223372036854774783
n2 -1.8446744e+19
n3 -2.7670116e+19

p  0x7ffffffffffffffe
n  0x8000000000000600
n0 0
n1 -9223372036854774272
n2 -1.8446744e+19
n3 -2.7670116e+19

p  0x7fffffffffffffff
n  0x8000000000000601
n0 0
n1 -9223372036854774271
n2 -1.8446744e+19
n3 -2.7670116e+19


================================================================
COMPRESSED INPUT

mlr --csv --prepipe cat cat ./reg_test/input/rfc-csv/simple.csv-crlf
a,b,c
1,x,3
4,5,6
x,"y""yy",z

mlr --dkvp --prepipe cat cat ./reg_test/input/abixy
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 --csv --prepipe cat cat
a,b,c
1,x,3
4,5,6
x,"y""yy",z

mlr --dkvp --prepipe cat cat
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


================================================================
STDIN

mlr --csv cat
a,b,c
1,x,3
4,5,6
x,"y""yy",z


================================================================
RFC-CSV

mlr --csv cat ./reg_test/input/rfc-csv/simple.csv-crlf
a,b,c
1,x,3
4,5,6
x,"y""yy",z

mlr --csv cat ./reg_test/input/rfc-csv/simple-truncated.csv
a,b,c
1,x,3
4,5,6

mlr --csv cat ./reg_test/input/rfc-csv/narrow.csv
a
1
2
3
4

mlr --csv cat ./reg_test/input/rfc-csv/narrow-truncated.csv
a
1
2
3
4

mlr --csv cat ./reg_test/input/rfc-csv/quoted-comma.csv
a,b,c
1,"x,3",y
4,5,6

mlr --csv cat ./reg_test/input/rfc-csv/quoted-comma-truncated.csv
a,b,c
1,"x,3",y
4,5,6

mlr --csv cat ./reg_test/input/rfc-csv/quoted-crlf.csv
a,b,c
1,"x
3",y
4,5,6

mlr --csv cat ./reg_test/input/rfc-csv/quoted-crlf-truncated.csv
a,b,c
1,"x
3",y
4,5,6

mlr --csv cat ./reg_test/input/rfc-csv/simple-truncated.csv ./reg_test/input/rfc-csv/simple.csv-crlf
a,b,c
1,x,3
4,5,6
1,x,3
4,5,6
x,"y""yy",z

mlr --csv --ifs semicolon --ofs pipe --irs lf --ors lflf cut -x -f b ./reg_test/input/rfc-csv/modify-defaults.csv
a|c

1|3

4|6


mlr --csv --rs lf --quote-original cut -o -f c,b,a ./reg_test/input/quote-original.csv
c,b,a
3,2,1
6,"5",4
"9",8,"7"

mlr --icsv --oxtab cat ./reg_test/input/comma-at-eof.csv
a 1
b 2
c 3

a 4
b 5
c 

mlr --csv --quote-all cat ./reg_test/input/rfc-csv/simple.csv-crlf
"a","b","c"
"1","x","3"
"4","5","6"
"x","y""yy","z"

mlr --csv --quote-original cat ./reg_test/input/rfc-csv/simple.csv-crlf
a,b,c
1,x,3
4,5,6
"x","y""yy","z"

mlr --itsv --rs lf --oxtab cat ./reg_test/input/simple.tsv
a pan
b pan
i 1
x 2
y 0.989945

a eks
b pan
i 2
x 1
y 0.775159

a wye
b wye
i 3
x 1
y 0.761642

a eks
b wye
i 4
x 5
y 0.322934

a wye
b pan
i 5
x 5
y 0.448283

mlr --iusv --oxtab cat ./reg_test/input/example.usv
a d
b e
c f

a g
b h
c i


================================================================
RAGGED NON-RFC CSV

mlr --icsv --oxtab --ragged cat ./reg_test/input/ragged.csv
a 1
b 2
c 3

a 4
b 5
c 

a 6
b 7
c 8
4 9

mlr --icsvlite --oxtab --ragged cat ./reg_test/input/ragged.csv
a 1
b 2
c 3

a 4
b 5
c 

a 6
b 7
c 8
4 9


================================================================
MARKDOWN OUTPUT

mlr --itsv --rs lf --omd cat ./reg_test/input/simple.tsv
| a | b | i | x | y |
| --- | --- | --- | --- | --- |
| pan | pan | 1 | 2 | 0.989945 |
| eks | pan | 2 | 1 | 0.775159 |
| wye | wye | 3 | 1 | 0.761642 |
| eks | wye | 4 | 5 | 0.322934 |
| wye | pan | 5 | 5 | 0.448283 |


================================================================
CSV/RS ENVIRONMENT DEFAULTS

mlr --csv cut -f a ./reg_test/input/rfc-csv/simple.csv-crlf
a
1
4
x

mlr --csv --rs crlf cut -f a ./reg_test/input/rfc-csv/simple.csv-crlf
a
1
4
x

mlr --csv --rs lf cut -f a ./reg_test/input/rfc-csv/simple.csv-crlf
a
1
4
mlr: unmatched double quote at line 3.


================================================================
MULTI-CHARACTER IRS/IFS/IPS FOR DKVP

mlr --oxtab --idkvp --irs lf --ifs , --ips = cut -o -f x,a,i ./reg_test/input/multi-sep.dkvp-crlf
x :0.641593543645736508/
a :wye/
i :0/

x :0.827614412562742041/
a :eks/
i :1/

x :0.923068348748175560/
a :zee/
i :2/

x :0.000047786161325772/
a :zee/
i :3/

x :0.676537984365847889/
a :zee/
i :4/

mlr --oxtab --idkvp --irs lf --ifs /, --ips =: cut -o -f x,a,i ./reg_test/input/multi-sep.dkvp-crlf
x 0.641593543645736508
a wye
i 0

x 0.827614412562742041
a eks
i 1

x 0.923068348748175560
a zee
i 2

x 0.000047786161325772
a zee
i 3

x 0.676537984365847889
a zee
i 4

mlr --oxtab --idkvp --irs crlf --ifs , --ips = cut -o -f x,a,i ./reg_test/input/multi-sep.dkvp-crlf
x :0.641593543645736508/
a :wye/
i :0/

x :0.827614412562742041/
a :eks/
i :1/

x :0.923068348748175560/
a :zee/
i :2/

x :0.000047786161325772/
a :zee/
i :3/

x :0.676537984365847889/
a :zee/
i :4/

mlr --oxtab --idkvp --irs crlf --ifs /, --ips =: cut -o -f x,a,i ./reg_test/input/multi-sep.dkvp-crlf
x 0.641593543645736508
a wye
i 0

x 0.827614412562742041
a eks
i 1

x 0.923068348748175560
a zee
i 2

x 0.000047786161325772
a zee
i 3

x 0.676537984365847889
a zee
i 4


================================================================
MULTI-CHARACTER IRS/IFS FOR NIDX

mlr --oxtab --inidx --irs lf --ifs , cut -o -f 4,1,3 ./reg_test/input/multi-sep.dkvp-crlf
4 x=:0.641593543645736508/
1 a=:wye/
3 i=:0/

4 x=:0.827614412562742041/
1 a=:eks/
3 i=:1/

4 x=:0.923068348748175560/
1 a=:zee/
3 i=:2/

4 x=:0.000047786161325772/
1 a=:zee/
3 i=:3/

4 x=:0.676537984365847889/
1 a=:zee/
3 i=:4/

mlr --oxtab --inidx --irs lf --ifs /, cut -o -f 4,1,3 ./reg_test/input/multi-sep.dkvp-crlf
4 x=:0.641593543645736508
1 a=:wye
3 i=:0

4 x=:0.827614412562742041
1 a=:eks
3 i=:1

4 x=:0.923068348748175560
1 a=:zee
3 i=:2

4 x=:0.000047786161325772
1 a=:zee
3 i=:3

4 x=:0.676537984365847889
1 a=:zee
3 i=:4

mlr --oxtab --inidx --irs crlf --ifs , cut -o -f 4,1,3 ./reg_test/input/multi-sep.dkvp-crlf
4 x=:0.641593543645736508/
1 a=:wye/
3 i=:0/

4 x=:0.827614412562742041/
1 a=:eks/
3 i=:1/

4 x=:0.923068348748175560/
1 a=:zee/
3 i=:2/

4 x=:0.000047786161325772/
1 a=:zee/
3 i=:3/

4 x=:0.676537984365847889/
1 a=:zee/
3 i=:4/

mlr --oxtab --inidx --irs crlf --ifs /, cut -o -f 4,1,3 ./reg_test/input/multi-sep.dkvp-crlf
4 x=:0.641593543645736508
1 a=:wye
3 i=:0

4 x=:0.827614412562742041
1 a=:eks
3 i=:1

4 x=:0.923068348748175560
1 a=:zee
3 i=:2

4 x=:0.000047786161325772
1 a=:zee
3 i=:3

4 x=:0.676537984365847889
1 a=:zee
3 i=:4


================================================================
MULTI-CHARACTER IRS/IFS FOR CSVLITE

mlr --oxtab --icsvlite --irs lf --ifs , cut -o -f x/,a/,i/ ./reg_test/input/multi-sep.csv-crlf
x/ 0.641593543645736508/
a/ wye/
i/ 0/

x/ 0.827614412562742041/
a/ eks/
i/ 1/

x/ 0.923068348748175560/
a/ zee/
i/ 2/

x/ 0.000047786161325772/
a/ zee/
i/ 3/

x/ 0.676537984365847889/
a/ zee/
i/ 4/

mlr --oxtab --icsvlite --irs lf --ifs /, cut -o -f x,a,i ./reg_test/input/multi-sep.csv-crlf
x 0.641593543645736508
a wye
i 0

x 0.827614412562742041
a eks
i 1

x 0.923068348748175560
a zee
i 2

x 0.000047786161325772
a zee
i 3

x 0.676537984365847889
a zee
i 4

mlr --oxtab --icsvlite --irs crlf --ifs , cut -o -f x/,a/,i/ ./reg_test/input/multi-sep.csv-crlf
x/ 0.641593543645736508/
a/ wye/
i/ 0/

x/ 0.827614412562742041/
a/ eks/
i/ 1/

x/ 0.923068348748175560/
a/ zee/
i/ 2/

x/ 0.000047786161325772/
a/ zee/
i/ 3/

x/ 0.676537984365847889/
a/ zee/
i/ 4/

mlr --oxtab --icsvlite --irs crlf --ifs /, cut -o -f x,a,i ./reg_test/input/multi-sep.csv-crlf
x 0.641593543645736508
a wye
i 0

x 0.827614412562742041
a eks
i 1

x 0.923068348748175560
a zee
i 2

x 0.000047786161325772
a zee
i 3

x 0.676537984365847889
a zee
i 4


================================================================
MULTI-CHARACTER SEPARATORS FOR XTAB

mlr --xtab --ifs crlf --ofs Z cut -x -f b ./reg_test/input/truncated.xtab-crlf
a 1Zc 3ZZd 4Ze 5Z
mlr --xtab --ips . --ops @ cut -x -f b ./reg_test/input/dots.xtab
a@1
c@345

defg@6
hi@@@78

mlr --xtab --ips :  --ops @@@@ put $sum=int($a+$b) ./reg_test/input/multi-ips.dkvp
a@@@@1
b@@@@2
sum@@@@3


================================================================
EMBEDDED IPS FOR XTAB

mlr --xtab cat ./reg_test/input/embedded-ips.xtab
a 1
b 2
c 3 4 5


================================================================
MULTI-CHARACTER IRS FOR PPRINT

mlr --pprint --irs crlf --ifs / --ofs @ cut -x -f b ./reg_test/input/dots.pprint-crlf
a@@@i@@x@@@@@@@@@@@@@@@@@@@y
pan@1@@0.3467901443380824@@0.7268028627434533
eks@2@@0.7586799647899636@@0.5221511083334797
wye@3@@0.20460330576630303@0.33831852551664776
eks@4@@0.38139939387114097@0.13418874328430463
wye@5@@0.5732889198020006@@0.8636244699032729
zee@6@@0.5271261600918548@@0.49322128674835697
eks@7@@0.6117840605678454@@0.1878849191181694
zee@8@@0.5985540091064224@@0.976181385699006
hat@9@@0.03144187646093577@0.7495507603507059
pan@10@0.5026260055412137@@0.9526183602969864


================================================================
BARRED PPRINT

mlr --opprint --barred cat ./reg_test/input/abixy
+-----+-----+----+---------------------+---------------------+
| a   | b   | i  | x                   | y                   |
+-----+-----+----+---------------------+---------------------+
| pan | pan | 1  | 0.3467901443380824  | 0.7268028627434533  |
| eks | pan | 2  | 0.7586799647899636  | 0.5221511083334797  |
| wye | wye | 3  | 0.20460330576630303 | 0.33831852551664776 |
| eks | wye | 4  | 0.38139939387114097 | 0.13418874328430463 |
| wye | pan | 5  | 0.5732889198020006  | 0.8636244699032729  |
| zee | pan | 6  | 0.5271261600918548  | 0.49322128674835697 |
| eks | zee | 7  | 0.6117840605678454  | 0.1878849191181694  |
| zee | wye | 8  | 0.5985540091064224  | 0.976181385699006   |
| hat | wye | 9  | 0.03144187646093577 | 0.7495507603507059  |
| pan | wye | 10 | 0.5026260055412137  | 0.9526183602969864  |
+-----+-----+----+---------------------+---------------------+

mlr --opprint --barred --right cat ./reg_test/input/abixy
+-----+-----+----+---------------------+---------------------+
|   a |   b |  i |                   x |                   y |
+-----+-----+----+---------------------+---------------------+
| pan | pan |  1 |  0.3467901443380824 |  0.7268028627434533 |
| eks | pan |  2 |  0.7586799647899636 |  0.5221511083334797 |
| wye | wye |  3 | 0.20460330576630303 | 0.33831852551664776 |
| eks | wye |  4 | 0.38139939387114097 | 0.13418874328430463 |
| wye | pan |  5 |  0.5732889198020006 |  0.8636244699032729 |
| zee | pan |  6 |  0.5271261600918548 | 0.49322128674835697 |
| eks | zee |  7 |  0.6117840605678454 |  0.1878849191181694 |
| zee | wye |  8 |  0.5985540091064224 |   0.976181385699006 |
| hat | wye |  9 | 0.03144187646093577 |  0.7495507603507059 |
| pan | wye | 10 |  0.5026260055412137 |  0.9526183602969864 |
+-----+-----+----+---------------------+---------------------+

mlr --opprint --barred cat ./reg_test/input/abixy-het
+-----+-----+---+--------------------+--------------------+
| a   | b   | i | x                  | y                  |
+-----+-----+---+--------------------+--------------------+
| pan | pan | 1 | 0.3467901443380824 | 0.7268028627434533 |
| eks | pan | 2 | 0.7586799647899636 | 0.5221511083334797 |
+-----+-----+---+--------------------+--------------------+

+-----+-----+---+---------------------+---------------------+
| aaa | b   | i | x                   | y                   |
+-----+-----+---+---------------------+---------------------+
| wye | wye | 3 | 0.20460330576630303 | 0.33831852551664776 |
+-----+-----+---+---------------------+---------------------+

+-----+-----+---+---------------------+---------------------+
| a   | bbb | i | x                   | y                   |
+-----+-----+---+---------------------+---------------------+
| eks | wye | 4 | 0.38139939387114097 | 0.13418874328430463 |
+-----+-----+---+---------------------+---------------------+

+-----+-----+---+--------------------+--------------------+
| a   | b   | i | xxx                | y                  |
+-----+-----+---+--------------------+--------------------+
| wye | pan | 5 | 0.5732889198020006 | 0.8636244699032729 |
+-----+-----+---+--------------------+--------------------+

+-----+-----+---+--------------------+---------------------+
| a   | b   | i | x                  | y                   |
+-----+-----+---+--------------------+---------------------+
| zee | pan | 6 | 0.5271261600918548 | 0.49322128674835697 |
+-----+-----+---+--------------------+---------------------+

+-----+-----+-----+--------------------+--------------------+
| a   | b   | iii | x                  | y                  |
+-----+-----+-----+--------------------+--------------------+
| eks | zee | 7   | 0.6117840605678454 | 0.1878849191181694 |
+-----+-----+-----+--------------------+--------------------+

+-----+-----+---+--------------------+-------------------+
| a   | b   | i | x                  | yyy               |
+-----+-----+---+--------------------+-------------------+
| zee | wye | 8 | 0.5985540091064224 | 0.976181385699006 |
+-----+-----+---+--------------------+-------------------+

+-----+-----+---+---------------------+--------------------+
| aaa | bbb | i | x                   | y                  |
+-----+-----+---+---------------------+--------------------+
| hat | wye | 9 | 0.03144187646093577 | 0.7495507603507059 |
+-----+-----+---+---------------------+--------------------+

+-----+-----+----+--------------------+--------------------+
| a   | b   | i  | x                  | y                  |
+-----+-----+----+--------------------+--------------------+
| pan | wye | 10 | 0.5026260055412137 | 0.9526183602969864 |
+-----+-----+----+--------------------+--------------------+

mlr --opprint --barred --right cat ./reg_test/input/abixy-het
+-----+-----+---+--------------------+--------------------+
|   a |   b | i |                  x |                  y |
+-----+-----+---+--------------------+--------------------+
| pan | pan | 1 | 0.3467901443380824 | 0.7268028627434533 |
| eks | pan | 2 | 0.7586799647899636 | 0.5221511083334797 |
+-----+-----+---+--------------------+--------------------+

+-----+-----+---+---------------------+---------------------+
| aaa |   b | i |                   x |                   y |
+-----+-----+---+---------------------+---------------------+
| wye | wye | 3 | 0.20460330576630303 | 0.33831852551664776 |
+-----+-----+---+---------------------+---------------------+

+-----+-----+---+---------------------+---------------------+
|   a | bbb | i |                   x |                   y |
+-----+-----+---+---------------------+---------------------+
| eks | wye | 4 | 0.38139939387114097 | 0.13418874328430463 |
+-----+-----+---+---------------------+---------------------+

+-----+-----+---+--------------------+--------------------+
|   a |   b | i |                xxx |                  y |
+-----+-----+---+--------------------+--------------------+
| wye | pan | 5 | 0.5732889198020006 | 0.8636244699032729 |
+-----+-----+---+--------------------+--------------------+

+-----+-----+---+--------------------+---------------------+
|   a |   b | i |                  x |                   y |
+-----+-----+---+--------------------+---------------------+
| zee | pan | 6 | 0.5271261600918548 | 0.49322128674835697 |
+-----+-----+---+--------------------+---------------------+

+-----+-----+-----+--------------------+--------------------+
|   a |   b | iii |                  x |                  y |
+-----+-----+-----+--------------------+--------------------+
| eks | zee |   7 | 0.6117840605678454 | 0.1878849191181694 |
+-----+-----+-----+--------------------+--------------------+

+-----+-----+---+--------------------+-------------------+
|   a |   b | i |                  x |               yyy |
+-----+-----+---+--------------------+-------------------+
| zee | wye | 8 | 0.5985540091064224 | 0.976181385699006 |
+-----+-----+---+--------------------+-------------------+

+-----+-----+---+---------------------+--------------------+
| aaa | bbb | i |                   x |                  y |
+-----+-----+---+---------------------+--------------------+
| hat | wye | 9 | 0.03144187646093577 | 0.7495507603507059 |
+-----+-----+---+---------------------+--------------------+

+-----+-----+----+--------------------+--------------------+
|   a |   b |  i |                  x |                  y |
+-----+-----+----+--------------------+--------------------+
| pan | wye | 10 | 0.5026260055412137 | 0.9526183602969864 |
+-----+-----+----+--------------------+--------------------+


================================================================
MULTI-CHARACTER IXS SPECIFIERS

mlr --oxtab --idkvp --irs lf --ifs , --ips = cut -o -f x,a,i ./reg_test/input/multi-sep.dkvp-crlf
x :0.641593543645736508/
a :wye/
i :0/

x :0.827614412562742041/
a :eks/
i :1/

x :0.923068348748175560/
a :zee/
i :2/

x :0.000047786161325772/
a :zee/
i :3/

x :0.676537984365847889/
a :zee/
i :4/

mlr --oxtab --idkvp --irs lf --ifs /, --ips =: cut -o -f x,a,i ./reg_test/input/multi-sep.dkvp-crlf
x 0.641593543645736508
a wye
i 0

x 0.827614412562742041
a eks
i 1

x 0.923068348748175560
a zee
i 2

x 0.000047786161325772
a zee
i 3

x 0.676537984365847889
a zee
i 4


================================================================
JSON I/O

mlr --ijson --opprint cat ./reg_test/input/small-non-nested.json
a   b   i  x                   y
pan pan 1  0.3467901443380824  0.7268028627434533
eks pan 2  0.7586799647899636  0.5221511083334797
wye wye 3  0.20460330576630303 0.33831852551664776
eks wye 4  0.38139939387114097 0.13418874328430463
wye pan 5  0.5732889198020006  0.8636244699032729
zee pan 6  0.5271261600918548  0.49322128674835697
eks zee 7  0.6117840605678454  0.1878849191181694
zee wye 8  0.5985540091064224  0.976181385699006
hat wye 9  0.03144187646093577 0.7495507603507059
pan wye 10 0.5026260055412137  0.9526183602969864

mlr --ijson --opprint cat ./reg_test/input/small-non-nested-wrapped.json
a   b   i  x                   y
pan pan 1  0.3467901443380824  0.7268028627434533
eks pan 2  0.7586799647899636  0.5221511083334797
wye wye 3  0.20460330576630303 0.33831852551664776
eks wye 4  0.38139939387114097 0.13418874328430463
wye pan 5  0.5732889198020006  0.8636244699032729
zee pan 6  0.5271261600918548  0.49322128674835697
eks zee 7  0.6117840605678454  0.1878849191181694
zee wye 8  0.5985540091064224  0.976181385699006
hat wye 9  0.03144187646093577 0.7495507603507059
pan wye 10 0.5026260055412137  0.9526183602969864

mlr --ijson --oxtab cat ./reg_test/input/small-nested.json
z:pan:1 0.726803
z:pan:0 0.952618
z:eks:0 0.134189
z:eks:1 0.187885
z:wye:1 0.863624
z:zee:0 0.976181
z:hat:1 0.749551

mlr --ojson cat ./reg_test/input/json-output-options.dkvp
{ "a": 1, "b": "x", "c": 3 }
{ "d": 4 }
{ "1": 5, "f": 6 }

mlr --ojson --jvstack cat ./reg_test/input/json-output-options.dkvp
{
  "a": 1,
  "b": "x",
  "c": 3
}
{
  "d": 4
}
{
  "1": 5,
  "f": 6
}

mlr --ojson --jlistwrap cat ./reg_test/input/json-output-options.dkvp
[
{ "a": 1, "b": "x", "c": 3 }
,{ "d": 4 }
,{ "1": 5, "f": 6 }
]

mlr --ojson --jvstack --jlistwrap cat ./reg_test/input/json-output-options.dkvp
[
{
  "a": 1,
  "b": "x",
  "c": 3
}
,{
  "d": 4
}
,{
  "1": 5,
  "f": 6
}
]

mlr --ojson --jquoteall cat ./reg_test/input/json-output-options.dkvp
{ "a": "1", "b": "x", "c": "3" }
{ "d": "4" }
{ "1": "5", "f": "6" }

mlr --ojson --jvstack --jquoteall cat ./reg_test/input/json-output-options.dkvp
{
  "a": "1",
  "b": "x",
  "c": "3"
}
{
  "d": "4"
}
{
  "1": "5",
  "f": "6"
}

mlr --ojson --jlistwrap --jquoteall cat ./reg_test/input/json-output-options.dkvp
[
{ "a": "1", "b": "x", "c": "3" }
,{ "d": "4" }
,{ "1": "5", "f": "6" }
]

mlr --ojson --jvstack --jlistwrap --jquoteall cat ./reg_test/input/json-output-options.dkvp
[
{
  "a": "1",
  "b": "x",
  "c": "3"
}
,{
  "d": "4"
}
,{
  "1": "5",
  "f": "6"
}
]

mlr --ojson --jvquoteall cat ./reg_test/input/json-output-options.dkvp
{ "a": "1", "b": "x", "c": "3" }
{ "d": "4" }
{ "1": "5", "f": "6" }

mlr --ojson --jvstack --jvquoteall cat ./reg_test/input/json-output-options.dkvp
{
  "a": "1",
  "b": "x",
  "c": "3"
}
{
  "d": "4"
}
{
  "1": "5",
  "f": "6"
}

mlr --ojson --jlistwrap --jvquoteall cat ./reg_test/input/json-output-options.dkvp
[
{ "a": "1", "b": "x", "c": "3" }
,{ "d": "4" }
,{ "1": "5", "f": "6" }
]

mlr --ojson --jvstack --jlistwrap --jvquoteall cat ./reg_test/input/json-output-options.dkvp
[
{
  "a": "1",
  "b": "x",
  "c": "3"
}
,{
  "d": "4"
}
,{
  "1": "5",
  "f": "6"
}
]

mlr --ojson --jknquoteint cat ./reg_test/input/json-output-options.dkvp
{ "a": 1, "b": "x", "c": 3 }
{ "d": 4 }
{ "1": 5, "f": 6 }

mlr --ojson --jvstack --jknquoteint cat ./reg_test/input/json-output-options.dkvp
{
  "a": 1,
  "b": "x",
  "c": 3
}
{
  "d": 4
}
{
  "1": 5,
  "f": 6
}

mlr --ojson --jlistwrap --jknquoteint cat ./reg_test/input/json-output-options.dkvp
[
{ "a": 1, "b": "x", "c": 3 }
,{ "d": 4 }
,{ "1": 5, "f": 6 }
]

mlr --ojson --jvstack --jlistwrap --jknquoteint cat ./reg_test/input/json-output-options.dkvp
[
{
  "a": 1,
  "b": "x",
  "c": 3
}
,{
  "d": 4
}
,{
  "1": 5,
  "f": 6
}
]

mlr put -q --jvquoteall dump $* ./reg_test/input/json-output-options.dkvp
{
  "a": "1",
  "b": "x",
  "c": "3"
}
{
  "d": "4"
}
{
  "1": "5",
  "f": "6"
}

mlr put -q --jvquoteall o = $*; o[7] = 8; dump o ./reg_test/input/json-output-options.dkvp
{
  "a": "1",
  "b": "x",
  "c": "3",
  "7": "8"
}
{
  "d": "4",
  "7": "8"
}
{
  "1": "5",
  "f": "6",
  "7": "8"
}

mlr put -q --jknquoteint dump $* ./reg_test/input/json-output-options.dkvp
{
  "a": 1,
  "b": "x",
  "c": 3
}
{
  "d": 4
}
{
  "1": 5,
  "f": 6
}

mlr put -q --jknquoteint o = $*; o[7] = 8; dump o ./reg_test/input/json-output-options.dkvp
{
  "a": 1,
  "b": "x",
  "c": 3,
  7: 8
}
{
  "d": 4,
  7: 8
}
{
  "1": 5,
  "f": 6,
  7: 8
}

mlr --ijson --opprint cat ./reg_test/input/small-non-nested-wrapped.json ./reg_test/input/small-non-nested-wrapped.json
a   b   i  x                   y
pan pan 1  0.3467901443380824  0.7268028627434533
eks pan 2  0.7586799647899636  0.5221511083334797
wye wye 3  0.20460330576630303 0.33831852551664776
eks wye 4  0.38139939387114097 0.13418874328430463
wye pan 5  0.5732889198020006  0.8636244699032729
zee pan 6  0.5271261600918548  0.49322128674835697
eks zee 7  0.6117840605678454  0.1878849191181694
zee wye 8  0.5985540091064224  0.976181385699006
hat wye 9  0.03144187646093577 0.7495507603507059
pan wye 10 0.5026260055412137  0.9526183602969864
pan pan 1  0.3467901443380824  0.7268028627434533
eks pan 2  0.7586799647899636  0.5221511083334797
wye wye 3  0.20460330576630303 0.33831852551664776
eks wye 4  0.38139939387114097 0.13418874328430463
wye pan 5  0.5732889198020006  0.8636244699032729
zee pan 6  0.5271261600918548  0.49322128674835697
eks zee 7  0.6117840605678454  0.1878849191181694
zee wye 8  0.5985540091064224  0.976181385699006
hat wye 9  0.03144187646093577 0.7495507603507059
pan wye 10 0.5026260055412137  0.9526183602969864

mlr --icsv --ojson --rs lf cat
{ "col": "abc \"def\" \\ghi" }

mlr --icsv --ojson --jvquoteall --rs lf cat
{ "col": "abc \"def\" \\ghi" }

mlr --ijson --oxtab cat ./reg_test/input/arrays.json
a 1
b 1

a   2
b:0 2
b:1 3

a     3
b:c:0 4
b:c:1 5

a       4
b:c:d:0 4
b:c:d:1 5

a     5
b:0   6
b:1   7
b:2:0 8
b:2:1 9

a       6
b:0:0:0 11

mlr --ijson --oxtab --json-map-arrays-on-input cat ./reg_test/input/arrays.json
a 1
b 1

a   2
b:0 2
b:1 3

a     3
b:c:0 4
b:c:1 5

a       4
b:c:d:0 4
b:c:d:1 5

a     5
b:0   6
b:1   7
b:2:0 8
b:2:1 9

a       6
b:0:0:0 11

mlr --ijson --oxtab --json-skip-arrays-on-input cat ./reg_test/input/arrays.json
a 1
b 1

a 2

a 3

a 4

a 5

a 6

mlr --ijson --oxtab --json-fatal-arrays-on-input cat ./reg_test/input/arrays.json
mlr: found array item within JSON object. This is valid but unmillerable JSON.
Use --json-skip-arrays-on-input to exclude these from input without fataling.
Or, --json-map-arrays-on-input to convert them to integer-indexed maps.
mlr: Unable to parse JSON data.

mlr --json cat ./reg_test/input/escapes.json
{ "abc\bdef\fghi": "jkl\nmno\rpqr\tstu\"vw\\xyz" }
{ "abc\bdef\fghi": "jkl\nmno\rpqr\tstu\"vw\\\\xyz" }


================================================================
FORMAT-CONVERSION KEYSTROKE-SAVERS

mlr --d2t cat ./reg_test/input/abixy.dkvp
a	b	i	x	y
pan	pan	1	0.3467901443380824	0.7268028627434533
eks	pan	2	0.7586799647899636	0.5221511083334797
wye	wye	3	0.20460330576630303	0.33831852551664776
eks	wye	4	0.38139939387114097	0.13418874328430463
wye	pan	5	0.5732889198020006	0.8636244699032729
zee	pan	6	0.5271261600918548	0.49322128674835697
eks	zee	7	0.6117840605678454	0.1878849191181694
zee	wye	8	0.5985540091064224	0.976181385699006
hat	wye	9	0.03144187646093577	0.7495507603507059
pan	wye	10	0.5026260055412137	0.9526183602969864

mlr --d2n cat ./reg_test/input/abixy.dkvp
pan pan 1 0.3467901443380824 0.7268028627434533
eks pan 2 0.7586799647899636 0.5221511083334797
wye wye 3 0.20460330576630303 0.33831852551664776
eks wye 4 0.38139939387114097 0.13418874328430463
wye pan 5 0.5732889198020006 0.8636244699032729
zee pan 6 0.5271261600918548 0.49322128674835697
eks zee 7 0.6117840605678454 0.1878849191181694
zee wye 8 0.5985540091064224 0.976181385699006
hat wye 9 0.03144187646093577 0.7495507603507059
pan wye 10 0.5026260055412137 0.9526183602969864

mlr --d2j cat ./reg_test/input/abixy.dkvp
{ "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 --d2p cat ./reg_test/input/abixy.dkvp
a   b   i  x                   y
pan pan 1  0.3467901443380824  0.7268028627434533
eks pan 2  0.7586799647899636  0.5221511083334797
wye wye 3  0.20460330576630303 0.33831852551664776
eks wye 4  0.38139939387114097 0.13418874328430463
wye pan 5  0.5732889198020006  0.8636244699032729
zee pan 6  0.5271261600918548  0.49322128674835697
eks zee 7  0.6117840605678454  0.1878849191181694
zee wye 8  0.5985540091064224  0.976181385699006
hat wye 9  0.03144187646093577 0.7495507603507059
pan wye 10 0.5026260055412137  0.9526183602969864

mlr --d2x cat ./reg_test/input/abixy.dkvp
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 --d2m cat ./reg_test/input/abixy.dkvp
| a | b | i | x | y |
| --- | --- | --- | --- | --- |
| pan | pan | 1 | 0.3467901443380824 | 0.7268028627434533 |
| eks | pan | 2 | 0.7586799647899636 | 0.5221511083334797 |
| wye | wye | 3 | 0.20460330576630303 | 0.33831852551664776 |
| eks | wye | 4 | 0.38139939387114097 | 0.13418874328430463 |
| wye | pan | 5 | 0.5732889198020006 | 0.8636244699032729 |
| zee | pan | 6 | 0.5271261600918548 | 0.49322128674835697 |
| eks | zee | 7 | 0.6117840605678454 | 0.1878849191181694 |
| zee | wye | 8 | 0.5985540091064224 | 0.976181385699006 |
| hat | wye | 9 | 0.03144187646093577 | 0.7495507603507059 |
| pan | wye | 10 | 0.5026260055412137 | 0.9526183602969864 |

mlr --c2t cat ./reg_test/input/abixy.csv
a	b	i	x	y
pan	pan	1	0.3467901443380824	0.7268028627434533
eks	pan	2	0.7586799647899636	0.5221511083334797
wye	wye	3	0.20460330576630303	0.33831852551664776
eks	wye	4	0.38139939387114097	0.13418874328430463
wye	pan	5	0.5732889198020006	0.8636244699032729
zee	pan	6	0.5271261600918548	0.49322128674835697
eks	zee	7	0.6117840605678454	0.1878849191181694
zee	wye	8	0.5985540091064224	0.976181385699006
hat	wye	9	0.03144187646093577	0.7495507603507059
pan	wye	10	0.5026260055412137	0.9526183602969864

mlr --c2d cat ./reg_test/input/abixy.csv
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 --c2n cat ./reg_test/input/abixy.csv
pan pan 1 0.3467901443380824 0.7268028627434533
eks pan 2 0.7586799647899636 0.5221511083334797
wye wye 3 0.20460330576630303 0.33831852551664776
eks wye 4 0.38139939387114097 0.13418874328430463
wye pan 5 0.5732889198020006 0.8636244699032729
zee pan 6 0.5271261600918548 0.49322128674835697
eks zee 7 0.6117840605678454 0.1878849191181694
zee wye 8 0.5985540091064224 0.976181385699006
hat wye 9 0.03144187646093577 0.7495507603507059
pan wye 10 0.5026260055412137 0.9526183602969864

mlr --c2j cat ./reg_test/input/abixy.csv
{ "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 --c2p cat ./reg_test/input/abixy.csv
a   b   i  x                   y
pan pan 1  0.3467901443380824  0.7268028627434533
eks pan 2  0.7586799647899636  0.5221511083334797
wye wye 3  0.20460330576630303 0.33831852551664776
eks wye 4  0.38139939387114097 0.13418874328430463
wye pan 5  0.5732889198020006  0.8636244699032729
zee pan 6  0.5271261600918548  0.49322128674835697
eks zee 7  0.6117840605678454  0.1878849191181694
zee wye 8  0.5985540091064224  0.976181385699006
hat wye 9  0.03144187646093577 0.7495507603507059
pan wye 10 0.5026260055412137  0.9526183602969864

mlr --c2x cat ./reg_test/input/abixy.csv
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 --c2m cat ./reg_test/input/abixy.csv
| a | b | i | x | y |
| --- | --- | --- | --- | --- |
| pan | pan | 1 | 0.3467901443380824 | 0.7268028627434533 |
| eks | pan | 2 | 0.7586799647899636 | 0.5221511083334797 |
| wye | wye | 3 | 0.20460330576630303 | 0.33831852551664776 |
| eks | wye | 4 | 0.38139939387114097 | 0.13418874328430463 |
| wye | pan | 5 | 0.5732889198020006 | 0.8636244699032729 |
| zee | pan | 6 | 0.5271261600918548 | 0.49322128674835697 |
| eks | zee | 7 | 0.6117840605678454 | 0.1878849191181694 |
| zee | wye | 8 | 0.5985540091064224 | 0.976181385699006 |
| hat | wye | 9 | 0.03144187646093577 | 0.7495507603507059 |
| pan | wye | 10 | 0.5026260055412137 | 0.9526183602969864 |

mlr --t2c cat ./reg_test/input/abixy.tsv
a,b,i,x,y
pan,pan,1,0.3467901443380824,0.7268028627434533
eks,pan,2,0.7586799647899636,0.5221511083334797
wye,wye,3,0.20460330576630303,0.33831852551664776
eks,wye,4,0.38139939387114097,0.13418874328430463
wye,pan,5,0.5732889198020006,0.8636244699032729
zee,pan,6,0.5271261600918548,0.49322128674835697
eks,zee,7,0.6117840605678454,0.1878849191181694
zee,wye,8,0.5985540091064224,0.976181385699006
hat,wye,9,0.03144187646093577,0.7495507603507059
pan,wye,10,0.5026260055412137,0.9526183602969864

mlr --t2d cat ./reg_test/input/abixy.tsv
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 --t2n cat ./reg_test/input/abixy.tsv
pan pan 1 0.3467901443380824 0.7268028627434533
eks pan 2 0.7586799647899636 0.5221511083334797
wye wye 3 0.20460330576630303 0.33831852551664776
eks wye 4 0.38139939387114097 0.13418874328430463
wye pan 5 0.5732889198020006 0.8636244699032729
zee pan 6 0.5271261600918548 0.49322128674835697
eks zee 7 0.6117840605678454 0.1878849191181694
zee wye 8 0.5985540091064224 0.976181385699006
hat wye 9 0.03144187646093577 0.7495507603507059
pan wye 10 0.5026260055412137 0.9526183602969864

mlr --t2j cat ./reg_test/input/abixy.tsv
{ "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 --t2p cat ./reg_test/input/abixy.tsv
a   b   i  x                   y
pan pan 1  0.3467901443380824  0.7268028627434533
eks pan 2  0.7586799647899636  0.5221511083334797
wye wye 3  0.20460330576630303 0.33831852551664776
eks wye 4  0.38139939387114097 0.13418874328430463
wye pan 5  0.5732889198020006  0.8636244699032729
zee pan 6  0.5271261600918548  0.49322128674835697
eks zee 7  0.6117840605678454  0.1878849191181694
zee wye 8  0.5985540091064224  0.976181385699006
hat wye 9  0.03144187646093577 0.7495507603507059
pan wye 10 0.5026260055412137  0.9526183602969864

mlr --t2x cat ./reg_test/input/abixy.tsv
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 --t2m cat ./reg_test/input/abixy.tsv
| a | b | i | x | y |
| --- | --- | --- | --- | --- |
| pan | pan | 1 | 0.3467901443380824 | 0.7268028627434533 |
| eks | pan | 2 | 0.7586799647899636 | 0.5221511083334797 |
| wye | wye | 3 | 0.20460330576630303 | 0.33831852551664776 |
| eks | wye | 4 | 0.38139939387114097 | 0.13418874328430463 |
| wye | pan | 5 | 0.5732889198020006 | 0.8636244699032729 |
| zee | pan | 6 | 0.5271261600918548 | 0.49322128674835697 |
| eks | zee | 7 | 0.6117840605678454 | 0.1878849191181694 |
| zee | wye | 8 | 0.5985540091064224 | 0.976181385699006 |
| hat | wye | 9 | 0.03144187646093577 | 0.7495507603507059 |
| pan | wye | 10 | 0.5026260055412137 | 0.9526183602969864 |

mlr --n2c cat ./reg_test/input/abixy.nidx
1,2,3,4,5
pan,pan,1,0.3467901443380824,0.7268028627434533
eks,pan,2,0.7586799647899636,0.5221511083334797
wye,wye,3,0.20460330576630303,0.33831852551664776
eks,wye,4,0.38139939387114097,0.13418874328430463
wye,pan,5,0.5732889198020006,0.8636244699032729
zee,pan,6,0.5271261600918548,0.49322128674835697
eks,zee,7,0.6117840605678454,0.1878849191181694
zee,wye,8,0.5985540091064224,0.976181385699006
hat,wye,9,0.03144187646093577,0.7495507603507059
pan,wye,10,0.5026260055412137,0.9526183602969864

mlr --n2t cat ./reg_test/input/abixy.nidx
1	2	3	4	5
pan	pan	1	0.3467901443380824	0.7268028627434533
eks	pan	2	0.7586799647899636	0.5221511083334797
wye	wye	3	0.20460330576630303	0.33831852551664776
eks	wye	4	0.38139939387114097	0.13418874328430463
wye	pan	5	0.5732889198020006	0.8636244699032729
zee	pan	6	0.5271261600918548	0.49322128674835697
eks	zee	7	0.6117840605678454	0.1878849191181694
zee	wye	8	0.5985540091064224	0.976181385699006
hat	wye	9	0.03144187646093577	0.7495507603507059
pan	wye	10	0.5026260055412137	0.9526183602969864

mlr --n2d cat ./reg_test/input/abixy.nidx
1=pan,2=pan,3=1,4=0.3467901443380824,5=0.7268028627434533
1=eks,2=pan,3=2,4=0.7586799647899636,5=0.5221511083334797
1=wye,2=wye,3=3,4=0.20460330576630303,5=0.33831852551664776
1=eks,2=wye,3=4,4=0.38139939387114097,5=0.13418874328430463
1=wye,2=pan,3=5,4=0.5732889198020006,5=0.8636244699032729
1=zee,2=pan,3=6,4=0.5271261600918548,5=0.49322128674835697
1=eks,2=zee,3=7,4=0.6117840605678454,5=0.1878849191181694
1=zee,2=wye,3=8,4=0.5985540091064224,5=0.976181385699006
1=hat,2=wye,3=9,4=0.03144187646093577,5=0.7495507603507059
1=pan,2=wye,3=10,4=0.5026260055412137,5=0.9526183602969864

mlr --n2j cat ./reg_test/input/abixy.nidx
{ "1": "pan", "2": "pan", "3": 1, "4": 0.3467901443380824, "5": 0.7268028627434533 }
{ "1": "eks", "2": "pan", "3": 2, "4": 0.7586799647899636, "5": 0.5221511083334797 }
{ "1": "wye", "2": "wye", "3": 3, "4": 0.20460330576630303, "5": 0.33831852551664776 }
{ "1": "eks", "2": "wye", "3": 4, "4": 0.38139939387114097, "5": 0.13418874328430463 }
{ "1": "wye", "2": "pan", "3": 5, "4": 0.5732889198020006, "5": 0.8636244699032729 }
{ "1": "zee", "2": "pan", "3": 6, "4": 0.5271261600918548, "5": 0.49322128674835697 }
{ "1": "eks", "2": "zee", "3": 7, "4": 0.6117840605678454, "5": 0.1878849191181694 }
{ "1": "zee", "2": "wye", "3": 8, "4": 0.5985540091064224, "5": 0.976181385699006 }
{ "1": "hat", "2": "wye", "3": 9, "4": 0.03144187646093577, "5": 0.7495507603507059 }
{ "1": "pan", "2": "wye", "3": 10, "4": 0.5026260055412137, "5": 0.9526183602969864 }

mlr --n2p cat ./reg_test/input/abixy.nidx
1   2   3  4                   5
pan pan 1  0.3467901443380824  0.7268028627434533
eks pan 2  0.7586799647899636  0.5221511083334797
wye wye 3  0.20460330576630303 0.33831852551664776
eks wye 4  0.38139939387114097 0.13418874328430463
wye pan 5  0.5732889198020006  0.8636244699032729
zee pan 6  0.5271261600918548  0.49322128674835697
eks zee 7  0.6117840605678454  0.1878849191181694
zee wye 8  0.5985540091064224  0.976181385699006
hat wye 9  0.03144187646093577 0.7495507603507059
pan wye 10 0.5026260055412137  0.9526183602969864

mlr --n2x cat ./reg_test/input/abixy.nidx
1 pan
2 pan
3 1
4 0.3467901443380824
5 0.7268028627434533

1 eks
2 pan
3 2
4 0.7586799647899636
5 0.5221511083334797

1 wye
2 wye
3 3
4 0.20460330576630303
5 0.33831852551664776

1 eks
2 wye
3 4
4 0.38139939387114097
5 0.13418874328430463

1 wye
2 pan
3 5
4 0.5732889198020006
5 0.8636244699032729

1 zee
2 pan
3 6
4 0.5271261600918548
5 0.49322128674835697

1 eks
2 zee
3 7
4 0.6117840605678454
5 0.1878849191181694

1 zee
2 wye
3 8
4 0.5985540091064224
5 0.976181385699006

1 hat
2 wye
3 9
4 0.03144187646093577
5 0.7495507603507059

1 pan
2 wye
3 10
4 0.5026260055412137
5 0.9526183602969864

mlr --n2m cat ./reg_test/input/abixy.nidx
| 1 | 2 | 3 | 4 | 5 |
| --- | --- | --- | --- | --- |
| pan | pan | 1 | 0.3467901443380824 | 0.7268028627434533 |
| eks | pan | 2 | 0.7586799647899636 | 0.5221511083334797 |
| wye | wye | 3 | 0.20460330576630303 | 0.33831852551664776 |
| eks | wye | 4 | 0.38139939387114097 | 0.13418874328430463 |
| wye | pan | 5 | 0.5732889198020006 | 0.8636244699032729 |
| zee | pan | 6 | 0.5271261600918548 | 0.49322128674835697 |
| eks | zee | 7 | 0.6117840605678454 | 0.1878849191181694 |
| zee | wye | 8 | 0.5985540091064224 | 0.976181385699006 |
| hat | wye | 9 | 0.03144187646093577 | 0.7495507603507059 |
| pan | wye | 10 | 0.5026260055412137 | 0.9526183602969864 |

mlr --j2c cat ./reg_test/input/abixy.json
a,b,i,x,y
pan,pan,1,0.3467901443380824,0.7268028627434533
eks,pan,2,0.7586799647899636,0.5221511083334797
wye,wye,3,0.20460330576630303,0.33831852551664776
eks,wye,4,0.38139939387114097,0.13418874328430463
wye,pan,5,0.5732889198020006,0.8636244699032729
zee,pan,6,0.5271261600918548,0.49322128674835697
eks,zee,7,0.6117840605678454,0.1878849191181694
zee,wye,8,0.5985540091064224,0.976181385699006
hat,wye,9,0.03144187646093577,0.7495507603507059
pan,wye,10,0.5026260055412137,0.9526183602969864

mlr --j2t cat ./reg_test/input/abixy.json
a	b	i	x	y
pan	pan	1	0.3467901443380824	0.7268028627434533
eks	pan	2	0.7586799647899636	0.5221511083334797
wye	wye	3	0.20460330576630303	0.33831852551664776
eks	wye	4	0.38139939387114097	0.13418874328430463
wye	pan	5	0.5732889198020006	0.8636244699032729
zee	pan	6	0.5271261600918548	0.49322128674835697
eks	zee	7	0.6117840605678454	0.1878849191181694
zee	wye	8	0.5985540091064224	0.976181385699006
hat	wye	9	0.03144187646093577	0.7495507603507059
pan	wye	10	0.5026260055412137	0.9526183602969864

mlr --j2d cat ./reg_test/input/abixy.json
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 --j2n cat ./reg_test/input/abixy.json
pan pan 1 0.3467901443380824 0.7268028627434533
eks pan 2 0.7586799647899636 0.5221511083334797
wye wye 3 0.20460330576630303 0.33831852551664776
eks wye 4 0.38139939387114097 0.13418874328430463
wye pan 5 0.5732889198020006 0.8636244699032729
zee pan 6 0.5271261600918548 0.49322128674835697
eks zee 7 0.6117840605678454 0.1878849191181694
zee wye 8 0.5985540091064224 0.976181385699006
hat wye 9 0.03144187646093577 0.7495507603507059
pan wye 10 0.5026260055412137 0.9526183602969864

mlr --j2p cat ./reg_test/input/abixy.json
a   b   i  x                   y
pan pan 1  0.3467901443380824  0.7268028627434533
eks pan 2  0.7586799647899636  0.5221511083334797
wye wye 3  0.20460330576630303 0.33831852551664776
eks wye 4  0.38139939387114097 0.13418874328430463
wye pan 5  0.5732889198020006  0.8636244699032729
zee pan 6  0.5271261600918548  0.49322128674835697
eks zee 7  0.6117840605678454  0.1878849191181694
zee wye 8  0.5985540091064224  0.976181385699006
hat wye 9  0.03144187646093577 0.7495507603507059
pan wye 10 0.5026260055412137  0.9526183602969864

mlr --j2x cat ./reg_test/input/abixy.json
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 --j2m cat ./reg_test/input/abixy.json
| a | b | i | x | y |
| --- | --- | --- | --- | --- |
| pan | pan | 1 | 0.3467901443380824 | 0.7268028627434533 |
| eks | pan | 2 | 0.7586799647899636 | 0.5221511083334797 |
| wye | wye | 3 | 0.20460330576630303 | 0.33831852551664776 |
| eks | wye | 4 | 0.38139939387114097 | 0.13418874328430463 |
| wye | pan | 5 | 0.5732889198020006 | 0.8636244699032729 |
| zee | pan | 6 | 0.5271261600918548 | 0.49322128674835697 |
| eks | zee | 7 | 0.6117840605678454 | 0.1878849191181694 |
| zee | wye | 8 | 0.5985540091064224 | 0.976181385699006 |
| hat | wye | 9 | 0.03144187646093577 | 0.7495507603507059 |
| pan | wye | 10 | 0.5026260055412137 | 0.9526183602969864 |

mlr --p2c cat ./reg_test/input/abixy.pprint
a,b,i,x,y
pan,pan,1,0.3467901443380824,0.7268028627434533
eks,pan,2,0.7586799647899636,0.5221511083334797
wye,wye,3,0.20460330576630303,0.33831852551664776
eks,wye,4,0.38139939387114097,0.13418874328430463
wye,pan,5,0.5732889198020006,0.8636244699032729
zee,pan,6,0.5271261600918548,0.49322128674835697
eks,zee,7,0.6117840605678454,0.1878849191181694
zee,wye,8,0.5985540091064224,0.976181385699006
hat,wye,9,0.03144187646093577,0.7495507603507059
pan,wye,10,0.5026260055412137,0.9526183602969864

mlr --p2t cat ./reg_test/input/abixy.pprint
a	b	i	x	y
pan	pan	1	0.3467901443380824	0.7268028627434533
eks	pan	2	0.7586799647899636	0.5221511083334797
wye	wye	3	0.20460330576630303	0.33831852551664776
eks	wye	4	0.38139939387114097	0.13418874328430463
wye	pan	5	0.5732889198020006	0.8636244699032729
zee	pan	6	0.5271261600918548	0.49322128674835697
eks	zee	7	0.6117840605678454	0.1878849191181694
zee	wye	8	0.5985540091064224	0.976181385699006
hat	wye	9	0.03144187646093577	0.7495507603507059
pan	wye	10	0.5026260055412137	0.9526183602969864

mlr --p2d cat ./reg_test/input/abixy.pprint
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 --p2n cat ./reg_test/input/abixy.pprint
pan pan 1 0.3467901443380824 0.7268028627434533
eks pan 2 0.7586799647899636 0.5221511083334797
wye wye 3 0.20460330576630303 0.33831852551664776
eks wye 4 0.38139939387114097 0.13418874328430463
wye pan 5 0.5732889198020006 0.8636244699032729
zee pan 6 0.5271261600918548 0.49322128674835697
eks zee 7 0.6117840605678454 0.1878849191181694
zee wye 8 0.5985540091064224 0.976181385699006
hat wye 9 0.03144187646093577 0.7495507603507059
pan wye 10 0.5026260055412137 0.9526183602969864

mlr --p2j cat ./reg_test/input/abixy.pprint
{ "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 --p2x cat ./reg_test/input/abixy.pprint
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 --p2m cat ./reg_test/input/abixy.pprint
| a | b | i | x | y |
| --- | --- | --- | --- | --- |
| pan | pan | 1 | 0.3467901443380824 | 0.7268028627434533 |
| eks | pan | 2 | 0.7586799647899636 | 0.5221511083334797 |
| wye | wye | 3 | 0.20460330576630303 | 0.33831852551664776 |
| eks | wye | 4 | 0.38139939387114097 | 0.13418874328430463 |
| wye | pan | 5 | 0.5732889198020006 | 0.8636244699032729 |
| zee | pan | 6 | 0.5271261600918548 | 0.49322128674835697 |
| eks | zee | 7 | 0.6117840605678454 | 0.1878849191181694 |
| zee | wye | 8 | 0.5985540091064224 | 0.976181385699006 |
| hat | wye | 9 | 0.03144187646093577 | 0.7495507603507059 |
| pan | wye | 10 | 0.5026260055412137 | 0.9526183602969864 |

mlr --x2c cat ./reg_test/input/abixy.xtab
a,b,i,x,y
pan,pan,1,0.3467901443380824,0.7268028627434533
eks,pan,2,0.7586799647899636,0.5221511083334797
wye,wye,3,0.20460330576630303,0.33831852551664776
eks,wye,4,0.38139939387114097,0.13418874328430463
wye,pan,5,0.5732889198020006,0.8636244699032729
zee,pan,6,0.5271261600918548,0.49322128674835697
eks,zee,7,0.6117840605678454,0.1878849191181694
zee,wye,8,0.5985540091064224,0.976181385699006
hat,wye,9,0.03144187646093577,0.7495507603507059
pan,wye,10,0.5026260055412137,0.9526183602969864

mlr --x2t cat ./reg_test/input/abixy.xtab
a	b	i	x	y
pan	pan	1	0.3467901443380824	0.7268028627434533
eks	pan	2	0.7586799647899636	0.5221511083334797
wye	wye	3	0.20460330576630303	0.33831852551664776
eks	wye	4	0.38139939387114097	0.13418874328430463
wye	pan	5	0.5732889198020006	0.8636244699032729
zee	pan	6	0.5271261600918548	0.49322128674835697
eks	zee	7	0.6117840605678454	0.1878849191181694
zee	wye	8	0.5985540091064224	0.976181385699006
hat	wye	9	0.03144187646093577	0.7495507603507059
pan	wye	10	0.5026260055412137	0.9526183602969864

mlr --x2d cat ./reg_test/input/abixy.xtab
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 --x2n cat ./reg_test/input/abixy.xtab
pan pan 1 0.3467901443380824 0.7268028627434533
eks pan 2 0.7586799647899636 0.5221511083334797
wye wye 3 0.20460330576630303 0.33831852551664776
eks wye 4 0.38139939387114097 0.13418874328430463
wye pan 5 0.5732889198020006 0.8636244699032729
zee pan 6 0.5271261600918548 0.49322128674835697
eks zee 7 0.6117840605678454 0.1878849191181694
zee wye 8 0.5985540091064224 0.976181385699006
hat wye 9 0.03144187646093577 0.7495507603507059
pan wye 10 0.5026260055412137 0.9526183602969864

mlr --x2j cat ./reg_test/input/abixy.xtab
{ "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 --x2p cat ./reg_test/input/abixy.xtab
a   b   i  x                   y
pan pan 1  0.3467901443380824  0.7268028627434533
eks pan 2  0.7586799647899636  0.5221511083334797
wye wye 3  0.20460330576630303 0.33831852551664776
eks wye 4  0.38139939387114097 0.13418874328430463
wye pan 5  0.5732889198020006  0.8636244699032729
zee pan 6  0.5271261600918548  0.49322128674835697
eks zee 7  0.6117840605678454  0.1878849191181694
zee wye 8  0.5985540091064224  0.976181385699006
hat wye 9  0.03144187646093577 0.7495507603507059
pan wye 10 0.5026260055412137  0.9526183602969864

mlr --x2m cat ./reg_test/input/abixy.xtab
| a | b | i | x | y |
| --- | --- | --- | --- | --- |
| pan | pan | 1 | 0.3467901443380824 | 0.7268028627434533 |
| eks | pan | 2 | 0.7586799647899636 | 0.5221511083334797 |
| wye | wye | 3 | 0.20460330576630303 | 0.33831852551664776 |
| eks | wye | 4 | 0.38139939387114097 | 0.13418874328430463 |
| wye | pan | 5 | 0.5732889198020006 | 0.8636244699032729 |
| zee | pan | 6 | 0.5271261600918548 | 0.49322128674835697 |
| eks | zee | 7 | 0.6117840605678454 | 0.1878849191181694 |
| zee | wye | 8 | 0.5985540091064224 | 0.976181385699006 |
| hat | wye | 9 | 0.03144187646093577 | 0.7495507603507059 |
| pan | wye | 10 | 0.5026260055412137 | 0.9526183602969864 |


================================================================
LF/CRLF AND AUTODETECT

mlr --irs auto --ors lf cat ./reg_test/input/line-term-lf.dkvp
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 --irs auto --ors lf cat ./reg_test/input/line-term-crlf.dkvp
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 cat ./reg_test/input/line-term-lf.dkvp
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 cat ./reg_test/input/line-term-crlf.dkvp
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


---------------------------------------------------------------- nidx
mlr --irs auto --ors lf --nidx --fs comma cat ./reg_test/input/line-term-lf.dkvp
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 --irs auto --ors lf --nidx --fs comma cat ./reg_test/input/line-term-crlf.dkvp
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 --nidx --fs comma cat ./reg_test/input/line-term-lf.dkvp
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 --nidx --fs comma cat ./reg_test/input/line-term-crlf.dkvp
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


---------------------------------------------------------------- csvlite
mlr --irs auto --ors lf --csvlite cat ./reg_test/input/line-term-lf.csv
a,b,i,x,y
pan,pan,1,0.3467901443380824,0.7268028627434533
eks,pan,2,0.7586799647899636,0.5221511083334797
wye,wye,3,0.20460330576630303,0.33831852551664776
eks,wye,4,0.38139939387114097,0.13418874328430463
wye,pan,5,0.5732889198020006,0.8636244699032729
zee,pan,6,0.5271261600918548,0.49322128674835697
eks,zee,7,0.6117840605678454,0.1878849191181694
zee,wye,8,0.5985540091064224,0.976181385699006
hat,wye,9,0.03144187646093577,0.7495507603507059
pan,wye,10,0.5026260055412137,0.9526183602969864

mlr --irs auto --ors lf --csvlite cat ./reg_test/input/line-term-crlf.csv
a,b,i,x,y
pan,pan,1,0.3467901443380824,0.7268028627434533
eks,pan,2,0.7586799647899636,0.5221511083334797
wye,wye,3,0.20460330576630303,0.33831852551664776
eks,wye,4,0.38139939387114097,0.13418874328430463
wye,pan,5,0.5732889198020006,0.8636244699032729
zee,pan,6,0.5271261600918548,0.49322128674835697
eks,zee,7,0.6117840605678454,0.1878849191181694
zee,wye,8,0.5985540091064224,0.976181385699006
hat,wye,9,0.03144187646093577,0.7495507603507059
pan,wye,10,0.5026260055412137,0.9526183602969864

mlr --csvlite cat ./reg_test/input/line-term-lf.csv
a,b,i,x,y
pan,pan,1,0.3467901443380824,0.7268028627434533
eks,pan,2,0.7586799647899636,0.5221511083334797
wye,wye,3,0.20460330576630303,0.33831852551664776
eks,wye,4,0.38139939387114097,0.13418874328430463
wye,pan,5,0.5732889198020006,0.8636244699032729
zee,pan,6,0.5271261600918548,0.49322128674835697
eks,zee,7,0.6117840605678454,0.1878849191181694
zee,wye,8,0.5985540091064224,0.976181385699006
hat,wye,9,0.03144187646093577,0.7495507603507059
pan,wye,10,0.5026260055412137,0.9526183602969864

mlr --csvlite cat ./reg_test/input/line-term-crlf.csv
a,b,i,x,y
pan,pan,1,0.3467901443380824,0.7268028627434533
eks,pan,2,0.7586799647899636,0.5221511083334797
wye,wye,3,0.20460330576630303,0.33831852551664776
eks,wye,4,0.38139939387114097,0.13418874328430463
wye,pan,5,0.5732889198020006,0.8636244699032729
zee,pan,6,0.5271261600918548,0.49322128674835697
eks,zee,7,0.6117840605678454,0.1878849191181694
zee,wye,8,0.5985540091064224,0.976181385699006
hat,wye,9,0.03144187646093577,0.7495507603507059
pan,wye,10,0.5026260055412137,0.9526183602969864


---------------------------------------------------------------- pprint
mlr --irs auto --ors lf --pprint cat ./reg_test/input/line-term-lf.csv
a,b,i,x,y
pan,pan,1,0.3467901443380824,0.7268028627434533
eks,pan,2,0.7586799647899636,0.5221511083334797
wye,wye,3,0.20460330576630303,0.33831852551664776
eks,wye,4,0.38139939387114097,0.13418874328430463
wye,pan,5,0.5732889198020006,0.8636244699032729
zee,pan,6,0.5271261600918548,0.49322128674835697
eks,zee,7,0.6117840605678454,0.1878849191181694
zee,wye,8,0.5985540091064224,0.976181385699006
hat,wye,9,0.03144187646093577,0.7495507603507059
pan,wye,10,0.5026260055412137,0.9526183602969864

mlr --irs auto --ors lf --pprint cat ./reg_test/input/line-term-crlf.csv
a,b,i,x,y
pan,pan,1,0.3467901443380824,0.7268028627434533
eks,pan,2,0.7586799647899636,0.5221511083334797
wye,wye,3,0.20460330576630303,0.33831852551664776
eks,wye,4,0.38139939387114097,0.13418874328430463
wye,pan,5,0.5732889198020006,0.8636244699032729
zee,pan,6,0.5271261600918548,0.49322128674835697
eks,zee,7,0.6117840605678454,0.1878849191181694
zee,wye,8,0.5985540091064224,0.976181385699006
hat,wye,9,0.03144187646093577,0.7495507603507059
pan,wye,10,0.5026260055412137,0.9526183602969864

mlr --pprint cat ./reg_test/input/line-term-lf.csv
a,b,i,x,y
pan,pan,1,0.3467901443380824,0.7268028627434533
eks,pan,2,0.7586799647899636,0.5221511083334797
wye,wye,3,0.20460330576630303,0.33831852551664776
eks,wye,4,0.38139939387114097,0.13418874328430463
wye,pan,5,0.5732889198020006,0.8636244699032729
zee,pan,6,0.5271261600918548,0.49322128674835697
eks,zee,7,0.6117840605678454,0.1878849191181694
zee,wye,8,0.5985540091064224,0.976181385699006
hat,wye,9,0.03144187646093577,0.7495507603507059
pan,wye,10,0.5026260055412137,0.9526183602969864

mlr --pprint cat ./reg_test/input/line-term-crlf.csv
a,b,i,x,y
pan,pan,1,0.3467901443380824,0.7268028627434533
eks,pan,2,0.7586799647899636,0.5221511083334797
wye,wye,3,0.20460330576630303,0.33831852551664776
eks,wye,4,0.38139939387114097,0.13418874328430463
wye,pan,5,0.5732889198020006,0.8636244699032729
zee,pan,6,0.5271261600918548,0.49322128674835697
eks,zee,7,0.6117840605678454,0.1878849191181694
zee,wye,8,0.5985540091064224,0.976181385699006
hat,wye,9,0.03144187646093577,0.7495507603507059
pan,wye,10,0.5026260055412137,0.9526183602969864


---------------------------------------------------------------- xtab
mlr --ifs auto --xtab cat ./reg_test/input/line-term-lf.xtab
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 --ifs auto --xtab cat ./reg_test/input/line-term-crlf.xtab
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 --fs auto --xtab cat ./reg_test/input/line-term-lf.xtab
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 --fs auto --xtab cat ./reg_test/input/line-term-crlf.xtab
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


---------------------------------------------------------------- xtab
mlr --ifs auto --xtab cat ./reg_test/input/line-term-lf.xtab
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 --ifs auto --xtab cat ./reg_test/input/line-term-crlf.xtab
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 --fs auto --xtab cat ./reg_test/input/line-term-lf.xtab
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 --fs auto --xtab cat ./reg_test/input/line-term-crlf.xtab
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


---------------------------------------------------------------- csv
mlr --irs auto --ors lf --csv cat ./reg_test/input/line-term-lf.csv
a,b,i,x,y
pan,pan,1,0.3467901443380824,0.7268028627434533
eks,pan,2,0.7586799647899636,0.5221511083334797
wye,wye,3,0.20460330576630303,0.33831852551664776
eks,wye,4,0.38139939387114097,0.13418874328430463
wye,pan,5,0.5732889198020006,0.8636244699032729
zee,pan,6,0.5271261600918548,0.49322128674835697
eks,zee,7,0.6117840605678454,0.1878849191181694
zee,wye,8,0.5985540091064224,0.976181385699006
hat,wye,9,0.03144187646093577,0.7495507603507059
pan,wye,10,0.5026260055412137,0.9526183602969864

mlr --irs auto --ors lf --csv cat ./reg_test/input/line-term-crlf.csv
a,b,i,x,y
pan,pan,1,0.3467901443380824,0.7268028627434533
eks,pan,2,0.7586799647899636,0.5221511083334797
wye,wye,3,0.20460330576630303,0.33831852551664776
eks,wye,4,0.38139939387114097,0.13418874328430463
wye,pan,5,0.5732889198020006,0.8636244699032729
zee,pan,6,0.5271261600918548,0.49322128674835697
eks,zee,7,0.6117840605678454,0.1878849191181694
zee,wye,8,0.5985540091064224,0.976181385699006
hat,wye,9,0.03144187646093577,0.7495507603507059
pan,wye,10,0.5026260055412137,0.9526183602969864

mlr --csv cat ./reg_test/input/line-term-lf.csv
a,b,i,x,y
pan,pan,1,0.3467901443380824,0.7268028627434533
eks,pan,2,0.7586799647899636,0.5221511083334797
wye,wye,3,0.20460330576630303,0.33831852551664776
eks,wye,4,0.38139939387114097,0.13418874328430463
wye,pan,5,0.5732889198020006,0.8636244699032729
zee,pan,6,0.5271261600918548,0.49322128674835697
eks,zee,7,0.6117840605678454,0.1878849191181694
zee,wye,8,0.5985540091064224,0.976181385699006
hat,wye,9,0.03144187646093577,0.7495507603507059
pan,wye,10,0.5026260055412137,0.9526183602969864

mlr --csv cat ./reg_test/input/line-term-crlf.csv
a,b,i,x,y
pan,pan,1,0.3467901443380824,0.7268028627434533
eks,pan,2,0.7586799647899636,0.5221511083334797
wye,wye,3,0.20460330576630303,0.33831852551664776
eks,wye,4,0.38139939387114097,0.13418874328430463
wye,pan,5,0.5732889198020006,0.8636244699032729
zee,pan,6,0.5271261600918548,0.49322128674835697
eks,zee,7,0.6117840605678454,0.1878849191181694
zee,wye,8,0.5985540091064224,0.976181385699006
hat,wye,9,0.03144187646093577,0.7495507603507059
pan,wye,10,0.5026260055412137,0.9526183602969864


---------------------------------------------------------------- json nowrap nostack
mlr --irs auto --ors lf --json cat ./reg_test/input/line-term-lf.json
{ "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 --irs auto --ors lf --json cat ./reg_test/input/line-term-crlf.json
{ "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 --json cat ./reg_test/input/line-term-lf.json
{ "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 --json cat ./reg_test/input/line-term-crlf.json
{ "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 }


---------------------------------------------------------------- json yeswrap nostack
mlr --irs auto --ors lf --jlistwrap --json cat ./reg_test/input/line-term-lf-wrap.json
[
{ "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 --irs auto --ors lf --jlistwrap --json cat ./reg_test/input/line-term-crlf-wrap.json
[
{ "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 --jlistwrap --json cat ./reg_test/input/line-term-lf-wrap.json
[
{ "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 --jlistwrap --json cat ./reg_test/input/line-term-crlf-wrap.json
[
{ "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 }
]


---------------------------------------------------------------- json nowrap yesstack
mlr --irs auto --json --jvstack cat ./reg_test/input/line-term-lf.json
{
  "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 --irs auto --ors lf --json --jvstack cat ./reg_test/input/line-term-crlf.json
{
  "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 --json --jvstack cat ./reg_test/input/line-term-lf.json
{
  "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 --json --jvstack cat ./reg_test/input/line-term-crlf.json
{
  "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
}


---------------------------------------------------------------- json yeswrap yesstack
mlr --irs auto --ors lf --jlistwrap --json --jvstack cat ./reg_test/input/line-term-lf-wrap.json
[
{
  "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 --irs auto --ors lf --jlistwrap --json --jvstack cat ./reg_test/input/line-term-crlf-wrap.json
[
{
  "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 --jlistwrap --json --jvstack cat ./reg_test/input/line-term-lf-wrap.json
[
{
  "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 --jlistwrap --json --jvstack cat ./reg_test/input/line-term-crlf-wrap.json
[
{
  "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
}
]


---------------------------------------------------------------- json nowrap nostack
mlr --irs auto --ors lf --json cat ./reg_test/input/line-term-lf.json
{ "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 --irs auto --ors lf --json cat ./reg_test/input/line-term-crlf.json
{ "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 --json cat ./reg_test/input/line-term-lf.json
{ "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 --json cat ./reg_test/input/line-term-crlf.json
{ "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 }


---------------------------------------------------------------- json yeswrap nostack
mlr --irs auto --ors lf --jlistwrap --json cat ./reg_test/input/line-term-lf-wrap.json
[
{ "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 --irs auto --ors lf --jlistwrap --json cat ./reg_test/input/line-term-crlf-wrap.json
[
{ "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 --jlistwrap --json cat ./reg_test/input/line-term-lf-wrap.json
[
{ "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 --jlistwrap --json cat ./reg_test/input/line-term-crlf-wrap.json
[
{ "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 }
]


---------------------------------------------------------------- json nowrap yesstack
mlr --irs auto --ors lf --json --jvstack cat ./reg_test/input/line-term-lf.json
{
  "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 --irs auto --ors lf --json --jvstack cat ./reg_test/input/line-term-crlf.json
{
  "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 --json --jvstack cat ./reg_test/input/line-term-lf.json
{
  "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 --json --jvstack cat ./reg_test/input/line-term-crlf.json
{
  "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
}


---------------------------------------------------------------- json yeswrap yesstack
mlr --irs auto --ors lf --jlistwrap --json --jvstack cat ./reg_test/input/line-term-lf-wrap.json
[
{
  "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 --irs auto --ors lf --jlistwrap --json --jvstack cat ./reg_test/input/line-term-crlf-wrap.json
[
{
  "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 --jlistwrap --json --jvstack cat ./reg_test/input/line-term-lf-wrap.json
[
{
  "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 --jlistwrap --json --jvstack cat ./reg_test/input/line-term-crlf-wrap.json
[
{
  "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 lecat --mono
hello[CR]there[CR]how[CR]are[CR]you[CR]mlr lecat --mono
hello[LF]
there[LF]
how[LF]
are[LF]
you[LF]
mlr lecat --mono
hello[CR][LF]
there[CR][LF]
how[CR][LF]
are[CR][LF]
you[CR][LF]
mlr termcvt --cr2lf
mlr termcvt --cr2crlf
mlr termcvt --lf2cr
mlr termcvt --lf2crlf
mlr termcvt --crlf2cr
mlr termcvt --crlf2lf
mlr hex
00000000: 68 65 6c 6c  6f 0a 74 68  65 72 65 0a  68 6f 77 0a |hello.there.how.|
00000010: 61 72 65 0a  79 6f 75 0a                           |are.you.|
mlr hex
00000000: 68 65 6c 6c  6f 0d 0a 74  68 65 72 65  0d 0a 68 6f |hello..there..ho|
00000010: 77 0d 0a 61  72 65 0d 0a  79 6f 75 0d  0a          |w..are..you..|
mlr hex
00000000: 68 65 6c 6c  6f 0d 74 68  65 72 65 0d  68 6f 77 0d |hello.there.how.|
00000010: 61 72 65 0d  79 6f 75 0d                           |are.you.|
mlr hex
00000000: 68 65 6c 6c  6f 0d 0a 74  68 65 72 65  0d 0a 68 6f |hello..there..ho|
00000010: 77 0d 0a 61  72 65 0d 0a  79 6f 75 0d  0a          |w..are..you..|
mlr hex
00000000: 68 65 6c 6c  6f 0d 74 68  65 72 65 0d  68 6f 77 0d |hello.there.how.|
00000010: 61 72 65 0d  79 6f 75 0d                           |are.you.|
mlr hex
00000000: 68 65 6c 6c  6f 0a 74 68  65 72 65 0a  68 6f 77 0a |hello.there.how.|
00000010: 61 72 65 0a  79 6f 75 0a                           |are.you.|
