mirror of
https://github.com/johnkerl/miller.git
synced 2026-07-22 07:30:43 +00:00
parameterized-emit iterate: first light
This commit is contained in:
parent
8e532f432d
commit
f87a823b07
4 changed files with 86 additions and 3 deletions
|
|
@ -617,7 +617,6 @@ static void mlr_dsl_cst_node_evaluate_emit2temp(
|
|||
// xxx temp
|
||||
#define TEMP_FLATTEN_SEP ":"
|
||||
|
||||
// xxx handle too-short, too-long, just-right cases
|
||||
static void mlr_dsl_cst_node_evaluate_emit2temp_aux(
|
||||
mlhmmv_level_t* plevel,
|
||||
char* oosvar_name,
|
||||
|
|
@ -636,7 +635,7 @@ static void mlr_dsl_cst_node_evaluate_emit2temp_aux(
|
|||
if (plevel_value->is_terminal) {
|
||||
lrec_put(pnextrec, oosvar_name,
|
||||
mv_alloc_format_val(&plevel_value->u.mlrval), FREE_ENTRY_VALUE);
|
||||
sllv_append(poutrecs, pnextrec); // xxx temp
|
||||
sllv_append(poutrecs, pnextrec);
|
||||
} else {
|
||||
|
||||
mlr_dsl_cst_node_evaluate_emit2temp_aux(pe->level_value.u.pnext_level, oosvar_name,
|
||||
|
|
|
|||
|
|
@ -12762,6 +12762,67 @@ AST END STATEMENTS (1):
|
|||
9 (strnum_literal).
|
||||
|
||||
|
||||
================================================================
|
||||
PARAMETERIZED EMIT
|
||||
|
||||
mlr put @sum[$a] = $x; filter false; end{ emit(@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 @sum[$a] = $x; filter false; end{ emit(@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 @sum[$a] = $x; filter false; end{ emit(@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 @sum[$a][$b] = $x; filter false; end{ emit(@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 @sum[$a][$b] = $x; filter false; end{ emit(@sum,"a"); } ./reg_test/input/abixy
|
||||
a=pan,sum:pan=0.346790
|
||||
a=pan,sum:wye=0.502626
|
||||
a=eks,sum:pan=0.758680
|
||||
a=eks,sum:wye=0.381399
|
||||
a=eks,sum:zee=0.611784
|
||||
a=wye,sum:wye=0.204603
|
||||
a=wye,sum:pan=0.573289
|
||||
a=zee,sum:pan=0.527126
|
||||
a=zee,sum:wye=0.598554
|
||||
a=hat,sum:wye=0.031442
|
||||
|
||||
mlr put @sum[$a][$b] = $x; filter false; end{ emit(@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
|
||||
|
||||
|
||||
================================================================
|
||||
CHAINING
|
||||
|
||||
|
|
|
|||
|
|
@ -1227,6 +1227,17 @@ run_mlr put -v 'begin{@a=1}; $e=2; $f==$g||$h==$i {$s=1;$t=2}; $x=6; end{@z
|
|||
run_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
|
||||
run_mlr put -v 'begin{@a=1}; $e=2; $f==$g||$h==$i {$s=1;@t["u".$5]=2;emit @v,@w;dump}; $x=6; end{@z=9}' /dev/null
|
||||
|
||||
# ----------------------------------------------------------------
|
||||
announce PARAMETERIZED EMIT
|
||||
|
||||
run_mlr put '@sum[$a] = $x; filter false; end{ emit(@sum); }' $indir/abixy
|
||||
run_mlr put '@sum[$a] = $x; filter false; end{ emit(@sum,"a"); }' $indir/abixy
|
||||
run_mlr put '@sum[$a] = $x; filter false; end{ emit(@sum,"a","b"); }' $indir/abixy
|
||||
|
||||
run_mlr put '@sum[$a][$b] = $x; filter false; end{ emit(@sum); }' $indir/abixy
|
||||
run_mlr put '@sum[$a][$b] = $x; filter false; end{ emit(@sum,"a"); }' $indir/abixy
|
||||
run_mlr put '@sum[$a][$b] = $x; filter false; end{ emit(@sum,"a","b"); }' $indir/abixy
|
||||
|
||||
# ----------------------------------------------------------------
|
||||
announce CHAINING
|
||||
|
||||
|
|
|
|||
14
c/todo.txt
14
c/todo.txt
|
|
@ -11,8 +11,9 @@ TOP-OF-LIST SUMMARY
|
|||
* allow begin/end srec assignments in the grammar, to allow better error messages than 'syntax error' in the caller
|
||||
|
||||
? rethink filter ... ?
|
||||
* parameterized emit neatens
|
||||
* tri-split null. then RT @sum[$group] = @sum[$group] + $value etc. be sure $nosuch sums to MT_ABSENT.
|
||||
w then parameterized emit (spec & impl)
|
||||
* += et al.: do node-copy & expand right in the parser.
|
||||
|
||||
* 64-bit lengths for containers. test with 5-billion-integer-seq data.
|
||||
|
||||
|
|
@ -36,6 +37,17 @@ w then parameterized emit (spec & impl)
|
|||
- nest
|
||||
- shuffle
|
||||
|
||||
================================================================
|
||||
PARAMETERIZED EMIT
|
||||
|
||||
* evolve & extend the UTs
|
||||
* handle too-short, too-long, just-right cases
|
||||
* rename functions
|
||||
* rename variables as needed for clarity
|
||||
* needs significant comment-by-example
|
||||
* emit w/ and w/o parentheses in the grammar -- try to get just one
|
||||
* mld section, w/ olh brief example & xref to it.
|
||||
|
||||
================================================================
|
||||
PATTERN-ACTION AST
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue