oosvar/emit/unset/$* UT iterate

This commit is contained in:
John Kerl 2016-03-11 11:04:11 -08:00
parent 0ff828504c
commit d485125c21
3 changed files with 368 additions and 4 deletions

View file

@ -121,6 +121,8 @@ md_cond_block_statements(A) ::= md_cond_block_statements(B) MD_TOKEN_SEMICOLON m
md_cond_block_statement ::= md_cond_block_srec_assignment.
md_cond_block_statement ::= md_cond_block_oosvar_assignment.
md_cond_block_statement ::= md_cond_block_oosvar_from_full_srec_assignment.
md_cond_block_statement ::= md_cond_block_full_srec_from_oosvar_assignment.
md_cond_block_statement ::= md_cond_block_emitf.
md_cond_block_statement ::= md_cond_block_emit.
md_cond_block_statement ::= md_cond_block_dump.
@ -209,6 +211,12 @@ md_cond_block_srec_assignment(A) ::= md_srec_assignment(B). {
md_cond_block_oosvar_assignment(A) ::= md_oosvar_assignment(B). {
A = B;
}
md_cond_block_oosvar_from_full_srec_assignment(A) ::= md_oosvar_from_full_srec_assignment(B). {
A = B;
}
md_cond_block_full_srec_from_oosvar_assignment(A) ::= md_full_srec_from_oosvar_assignment(B). {
A = B;
}
md_cond_block_emitf(A) ::= md_emitf(B). {
A = B;
}

View file

@ -13519,6 +13519,74 @@ a=hat,b=wye,sum=
================================================================
OOSVAR-FROM-SREC ASSIGNMENT
mlr put -v @v = $* /dev/null
AST BEGIN STATEMENTS (0):
AST MAIN STATEMENTS (1):
= (oosvar_from_full_srec_assignment):
v (oosvar_name).
$* (full_srec).
AST END STATEMENTS (0):
mlr put -v @v[1] = $* /dev/null
AST BEGIN STATEMENTS (0):
AST MAIN STATEMENTS (1):
= (oosvar_from_full_srec_assignment):
[] (oosvar_level_key):
v (oosvar_name).
1 (strnum_literal).
$* (full_srec).
AST END STATEMENTS (0):
mlr put -v @v[$2] = $* /dev/null
AST BEGIN STATEMENTS (0):
AST MAIN STATEMENTS (1):
= (oosvar_from_full_srec_assignment):
[] (oosvar_level_key):
v (oosvar_name).
2 (field_name).
$* (full_srec).
AST END STATEMENTS (0):
mlr put -v NR == 3 {@v = $*} /dev/null
AST BEGIN STATEMENTS (0):
AST MAIN STATEMENTS (1):
cond (conditional_block):
== (operator):
NR (context_variable).
3 (strnum_literal).
= (oosvar_from_full_srec_assignment):
v (oosvar_name).
$* (full_srec).
AST END STATEMENTS (0):
mlr put -v NR == 3 {@v[1] = $*} /dev/null
AST BEGIN STATEMENTS (0):
AST MAIN STATEMENTS (1):
cond (conditional_block):
== (operator):
NR (context_variable).
3 (strnum_literal).
= (oosvar_from_full_srec_assignment):
[] (oosvar_level_key):
v (oosvar_name).
1 (strnum_literal).
$* (full_srec).
AST END STATEMENTS (0):
mlr put -v NR == 3 {@v[$2] = $*} /dev/null
AST BEGIN STATEMENTS (0):
AST MAIN STATEMENTS (1):
cond (conditional_block):
== (operator):
NR (context_variable).
3 (strnum_literal).
= (oosvar_from_full_srec_assignment):
[] (oosvar_level_key):
v (oosvar_name).
2 (field_name).
$* (full_srec).
AST END STATEMENTS (0):
mlr --oxtab put -q @v = $*; end {emit @v } ./reg_test/input/abixy-het
v:a pan
v:b wye
@ -13730,10 +13798,266 @@ v:yyy 0.976181385699006
================================================================
SREC-FROM-OOSVAR ASSIGNMENT
mlr put -v $* = @v /dev/null
AST BEGIN STATEMENTS (0):
AST MAIN STATEMENTS (1):
= (full_srec_from_oosvar_assignment):
$* (full_srec).
v (oosvar_name).
AST END STATEMENTS (0):
mlr put -v $* = @v[1] /dev/null
AST BEGIN STATEMENTS (0):
AST MAIN STATEMENTS (1):
= (full_srec_from_oosvar_assignment):
$* (full_srec).
[] (oosvar_level_key):
v (oosvar_name).
1 (strnum_literal).
AST END STATEMENTS (0):
mlr put -v $* = @v[$2] /dev/null
AST BEGIN STATEMENTS (0):
AST MAIN STATEMENTS (1):
= (full_srec_from_oosvar_assignment):
$* (full_srec).
[] (oosvar_level_key):
v (oosvar_name).
2 (field_name).
AST END STATEMENTS (0):
mlr put -v NR == 3 {$* = @v } /dev/null
AST BEGIN STATEMENTS (0):
AST MAIN STATEMENTS (1):
cond (conditional_block):
== (operator):
NR (context_variable).
3 (strnum_literal).
= (full_srec_from_oosvar_assignment):
$* (full_srec).
v (oosvar_name).
AST END STATEMENTS (0):
mlr put -v NR == 3 {$* = @v[1] } /dev/null
AST BEGIN STATEMENTS (0):
AST MAIN STATEMENTS (1):
cond (conditional_block):
== (operator):
NR (context_variable).
3 (strnum_literal).
= (full_srec_from_oosvar_assignment):
$* (full_srec).
[] (oosvar_level_key):
v (oosvar_name).
1 (strnum_literal).
AST END STATEMENTS (0):
mlr put -v NR == 3 {$* = @v[$2]} /dev/null
AST BEGIN STATEMENTS (0):
AST MAIN STATEMENTS (1):
cond (conditional_block):
== (operator):
NR (context_variable).
3 (strnum_literal).
= (full_srec_from_oosvar_assignment):
$* (full_srec).
[] (oosvar_level_key):
v (oosvar_name).
2 (field_name).
AST END STATEMENTS (0):
mlr put @v[NR] = $a; NR == 7 { @v = $*} ; $* = @v ./reg_test/input/abixy-het
1=pan
1=pan,2=eks
1=pan,2=eks,3=
1=pan,2=eks,3=,4=eks
1=pan,2=eks,3=,4=eks,5=wye
1=pan,2=eks,3=,4=eks,5=wye,6=zee
1=pan,2=eks,3=,4=eks,5=wye,6=zee,7=eks,a=eks,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694
1=pan,2=eks,3=,4=eks,5=wye,6=zee,7=eks,a=eks,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694,8=zee
1=pan,2=eks,3=,4=eks,5=wye,6=zee,7=eks,a=eks,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694,8=zee,9=
1=pan,2=eks,3=,4=eks,5=wye,6=zee,7=eks,a=eks,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694,8=zee,9=,10=pan
================================================================
OOSVAR-FROM-OOSVAR ASSIGNMENT
mlr put -v @u = @v /dev/null
AST BEGIN STATEMENTS (0):
AST MAIN STATEMENTS (1):
= (oosvar_assignment):
u (oosvar_name).
v (oosvar_name).
AST END STATEMENTS (0):
mlr put -v @u = @v[1] /dev/null
AST BEGIN STATEMENTS (0):
AST MAIN STATEMENTS (1):
= (oosvar_assignment):
u (oosvar_name).
[] (oosvar_level_key):
v (oosvar_name).
1 (strnum_literal).
AST END STATEMENTS (0):
mlr put -v @u[2] = @v /dev/null
AST BEGIN STATEMENTS (0):
AST MAIN STATEMENTS (1):
= (oosvar_assignment):
[] (oosvar_level_key):
u (oosvar_name).
2 (strnum_literal).
v (oosvar_name).
AST END STATEMENTS (0):
mlr put -v @u[2] = @v[1] /dev/null
AST BEGIN STATEMENTS (0):
AST MAIN STATEMENTS (1):
= (oosvar_assignment):
[] (oosvar_level_key):
u (oosvar_name).
2 (strnum_literal).
[] (oosvar_level_key):
v (oosvar_name).
1 (strnum_literal).
AST END STATEMENTS (0):
mlr put -v begin { @u = @v } /dev/null
AST BEGIN STATEMENTS (1):
= (oosvar_assignment):
u (oosvar_name).
v (oosvar_name).
AST MAIN STATEMENTS (0):
AST END STATEMENTS (0):
mlr put -v begin { @u = @v[1] } /dev/null
AST BEGIN STATEMENTS (1):
= (oosvar_assignment):
u (oosvar_name).
[] (oosvar_level_key):
v (oosvar_name).
1 (strnum_literal).
AST MAIN STATEMENTS (0):
AST END STATEMENTS (0):
mlr put -v begin { @u[2] = @v } /dev/null
AST BEGIN STATEMENTS (1):
= (oosvar_assignment):
[] (oosvar_level_key):
u (oosvar_name).
2 (strnum_literal).
v (oosvar_name).
AST MAIN STATEMENTS (0):
AST END STATEMENTS (0):
mlr put -v begin { @u[2] = @v[1] } /dev/null
AST BEGIN STATEMENTS (1):
= (oosvar_assignment):
[] (oosvar_level_key):
u (oosvar_name).
2 (strnum_literal).
[] (oosvar_level_key):
v (oosvar_name).
1 (strnum_literal).
AST MAIN STATEMENTS (0):
AST END STATEMENTS (0):
mlr put -v NR == 3 { @u = @v } /dev/null
AST BEGIN STATEMENTS (0):
AST MAIN STATEMENTS (1):
cond (conditional_block):
== (operator):
NR (context_variable).
3 (strnum_literal).
= (oosvar_assignment):
u (oosvar_name).
v (oosvar_name).
AST END STATEMENTS (0):
mlr put -v NR == 3 { @u = @v[1] } /dev/null
AST BEGIN STATEMENTS (0):
AST MAIN STATEMENTS (1):
cond (conditional_block):
== (operator):
NR (context_variable).
3 (strnum_literal).
= (oosvar_assignment):
u (oosvar_name).
[] (oosvar_level_key):
v (oosvar_name).
1 (strnum_literal).
AST END STATEMENTS (0):
mlr put -v NR == 3 { @u[2] = @v } /dev/null
AST BEGIN STATEMENTS (0):
AST MAIN STATEMENTS (1):
cond (conditional_block):
== (operator):
NR (context_variable).
3 (strnum_literal).
= (oosvar_assignment):
[] (oosvar_level_key):
u (oosvar_name).
2 (strnum_literal).
v (oosvar_name).
AST END STATEMENTS (0):
mlr put -v NR == 3 { @u[2] = @v[1] } /dev/null
AST BEGIN STATEMENTS (0):
AST MAIN STATEMENTS (1):
cond (conditional_block):
== (operator):
NR (context_variable).
3 (strnum_literal).
= (oosvar_assignment):
[] (oosvar_level_key):
u (oosvar_name).
2 (strnum_literal).
[] (oosvar_level_key):
v (oosvar_name).
1 (strnum_literal).
AST END STATEMENTS (0):
mlr put -v end { @u = @v } /dev/null
AST BEGIN STATEMENTS (0):
AST MAIN STATEMENTS (0):
AST END STATEMENTS (1):
= (oosvar_assignment):
u (oosvar_name).
v (oosvar_name).
mlr put -v end { @u = @v[1] } /dev/null
AST BEGIN STATEMENTS (0):
AST MAIN STATEMENTS (0):
AST END STATEMENTS (1):
= (oosvar_assignment):
u (oosvar_name).
[] (oosvar_level_key):
v (oosvar_name).
1 (strnum_literal).
mlr put -v end { @u[2] = @v } /dev/null
AST BEGIN STATEMENTS (0):
AST MAIN STATEMENTS (0):
AST END STATEMENTS (1):
= (oosvar_assignment):
[] (oosvar_level_key):
u (oosvar_name).
2 (strnum_literal).
v (oosvar_name).
mlr put -v end { @u[2] = @v[1] } /dev/null
AST BEGIN STATEMENTS (0):
AST MAIN STATEMENTS (0):
AST END STATEMENTS (1):
= (oosvar_assignment):
[] (oosvar_level_key):
u (oosvar_name).
2 (strnum_literal).
[] (oosvar_level_key):
v (oosvar_name).
1 (strnum_literal).
mlr put -q @s += $i; @t=@s; end{dump; emit@s; emit @t} ./reg_test/input/abixy
{
"s": 55,

View file

@ -1346,6 +1346,13 @@ run_mlr put -q '@sum[$a][$b] += $nonesuch; end {emit @sum, "a", "b", "extra" }'
# ----------------------------------------------------------------
announce OOSVAR-FROM-SREC ASSIGNMENT
run_mlr put -v '@v = $*' /dev/null
run_mlr put -v '@v[1] = $*' /dev/null
run_mlr put -v '@v[$2] = $*' /dev/null
run_mlr put -v 'NR == 3 {@v = $*}' /dev/null
run_mlr put -v 'NR == 3 {@v[1] = $*}' /dev/null
run_mlr put -v 'NR == 3 {@v[$2] = $*}' /dev/null
run_mlr --oxtab put -q '@v = $*; end {emit @v }' $indir/abixy-het
run_mlr --oxtab put -q '@v[$a] = $*; end {emit @v }' $indir/abixy-het
@ -1358,13 +1365,40 @@ run_mlr --oxtab put -q '@v[$a][$b] = $*; end {emit @v, "a", "b"}' $indir/abixy-h
# ----------------------------------------------------------------
announce SREC-FROM-OOSVAR ASSIGNMENT
#run_mlr --oxtab put -q 'begin { @v[1] = "nonesuch" }; NR == 3 { @v = $*} ; $* = @v' $indir/abixy-het
run_mlr put -v '$* = @v ' /dev/null
run_mlr put -v '$* = @v[1] ' /dev/null
run_mlr put -v '$* = @v[$2]' /dev/null
run_mlr put -v 'NR == 3 {$* = @v }' /dev/null
run_mlr put -v 'NR == 3 {$* = @v[1] }' /dev/null
run_mlr put -v 'NR == 3 {$* = @v[$2]}' /dev/null
run_mlr put '@v[NR] = $a; NR == 7 { @v = $*} ; $* = @v' $indir/abixy-het
# ----------------------------------------------------------------
announce OOSVAR-FROM-OOSVAR ASSIGNMENT
run_mlr put -q '@s += $i; @t=@s; end{dump; emit@s; emit @t}' $indir/abixy
run_mlr put -v '@u = @v' /dev/null
run_mlr put -v '@u = @v[1]' /dev/null
run_mlr put -v '@u[2] = @v' /dev/null
run_mlr put -v '@u[2] = @v[1]' /dev/null
run_mlr put -v 'begin { @u = @v }' /dev/null
run_mlr put -v 'begin { @u = @v[1] }' /dev/null
run_mlr put -v 'begin { @u[2] = @v }' /dev/null
run_mlr put -v 'begin { @u[2] = @v[1] }' /dev/null
run_mlr put -v 'NR == 3 { @u = @v }' /dev/null
run_mlr put -v 'NR == 3 { @u = @v[1] }' /dev/null
run_mlr put -v 'NR == 3 { @u[2] = @v }' /dev/null
run_mlr put -v 'NR == 3 { @u[2] = @v[1] }' /dev/null
run_mlr put -v 'end { @u = @v }' /dev/null
run_mlr put -v 'end { @u = @v[1] }' /dev/null
run_mlr put -v 'end { @u[2] = @v }' /dev/null
run_mlr put -v 'end { @u[2] = @v[1] }' /dev/null
run_mlr put -q '@s += $i; @t=@s; end{dump; emit@s; emit @t}' $indir/abixy
run_mlr put -q '@s[1] += $i; @t=@s; end{dump; emit@s; emit @t}' $indir/abixy
run_mlr put -q '@s[1] += $i; @t=@s[1]; end{dump; emit@s; emit @t}' $indir/abixy
@ -1372,7 +1406,6 @@ run_mlr put -q '@s[1] += $i; @t=@s[1]; end{dump; emit@s; emit @t}' $ind
run_mlr put -q '@s[1] += $i; @t[3]=@s; end{dump; emit@s; emit @t}' $indir/abixy
run_mlr put -q '@s[1] += $i; @t[3]=@s[1]; end{dump; emit@s; emit @t}' $indir/abixy
run_mlr put -q '@s[1][2] += $i; @t=@s; end{dump; emit@s; emit @t}' $indir/abixy
run_mlr put -q '@s[1][2] += $i; @t=@s[1]; end{dump; emit@s; emit @t}' $indir/abixy
run_mlr put -q '@s[1][2] += $i; @t=@s[1][2]; end{dump; emit@s; emit @t}' $indir/abixy
@ -1387,7 +1420,6 @@ run_mlr put -q '@s[1][2] += $i; @t[3][4]=@s[1][2]; end{dump; emit@s; emit @t}' $
run_mlr --opprint put -q '@s[NR][NR] = $i/100; @t[NR*10]=@s; end{emit@s,"A","B"; emit @t,"C","D","E"}' $indir/abixy
# ----------------------------------------------------------------
announce CHAINING