mirror of
https://github.com/johnkerl/miller.git
synced 2026-07-22 07:30:43 +00:00
$* iterate
This commit is contained in:
parent
e3c814c32f
commit
d67ecc4b26
2 changed files with 35 additions and 51 deletions
|
|
@ -10,11 +10,9 @@ static mlr_dsl_cst_statement_item_t* mlr_dsl_cst_statement_item_alloc(
|
|||
char* output_field_name,
|
||||
sllv_t* poosvar_lhs_keylist_evaluators,
|
||||
int all_flag,
|
||||
int lhs_is_full_srec,
|
||||
rval_evaluator_t* prhs_evaluator,
|
||||
sllv_t* pcond_statements,
|
||||
sllv_t* poosvar_rhs_keylist_evaluators,
|
||||
int rhs_is_full_srec);
|
||||
sllv_t* poosvar_rhs_keylist_evaluators);
|
||||
|
||||
static void cst_statement_item_free(mlr_dsl_cst_statement_item_t* pitem);
|
||||
|
||||
|
|
@ -225,11 +223,9 @@ static mlr_dsl_cst_statement_t* cst_statement_alloc(mlr_dsl_ast_node_t* past, in
|
|||
pleft->text,
|
||||
NULL,
|
||||
FALSE,
|
||||
FALSE,
|
||||
rval_evaluator_alloc_from_ast(pright, type_inferencing),
|
||||
NULL,
|
||||
NULL,
|
||||
FALSE));
|
||||
NULL));
|
||||
pstatement->pevaluator = mlr_dsl_cst_node_evaluate_srec_assignment;
|
||||
|
||||
} else if (past->type == MD_AST_NODE_TYPE_OOSVAR_ASSIGNMENT) {
|
||||
|
|
@ -291,20 +287,36 @@ static mlr_dsl_cst_statement_t* cst_statement_alloc(mlr_dsl_ast_node_t* past, in
|
|||
NULL,
|
||||
poosvar_lhs_keylist_evaluators,
|
||||
FALSE,
|
||||
FALSE,
|
||||
rval_evaluator_alloc_from_ast(pright, type_inferencing),
|
||||
NULL,
|
||||
NULL,
|
||||
FALSE));
|
||||
NULL));
|
||||
|
||||
pstatement->pevaluator = mlr_dsl_cst_node_evaluate_oosvar_assignment;
|
||||
|
||||
} else if (past->type == MD_AST_NODE_TYPE_OOSVAR_FROM_FULL_SREC_ASSIGNMENT) {
|
||||
// xxx
|
||||
sllv_t* poosvar_lhs_keylist_evaluators = sllv_alloc();
|
||||
|
||||
sllv_append(pstatement->pitems, mlr_dsl_cst_statement_item_alloc(
|
||||
NULL,
|
||||
poosvar_lhs_keylist_evaluators,
|
||||
FALSE,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL));
|
||||
|
||||
pstatement->pevaluator = mlr_dsl_cst_node_evaluate_oosvar_from_full_srec_assignment;
|
||||
|
||||
} else if (past->type == MD_AST_NODE_TYPE_FULL_SREC_FROM_OOSVAR_ASSIGNMENT) {
|
||||
// xxx
|
||||
sllv_t* poosvar_rhs_keylist_evaluators = sllv_alloc();
|
||||
|
||||
sllv_append(pstatement->pitems, mlr_dsl_cst_statement_item_alloc(
|
||||
NULL,
|
||||
NULL,
|
||||
FALSE,
|
||||
NULL,
|
||||
NULL,
|
||||
poosvar_rhs_keylist_evaluators)); // xxx
|
||||
|
||||
pstatement->pevaluator = mlr_dsl_cst_node_evaluate_full_srec_from_oosvar_assignment;
|
||||
|
||||
} else if (past->type == MD_AST_NODE_TYPE_UNSET) {
|
||||
|
|
@ -318,11 +330,9 @@ static mlr_dsl_cst_statement_t* cst_statement_alloc(mlr_dsl_ast_node_t* past, in
|
|||
pnode->text,
|
||||
NULL,
|
||||
FALSE,
|
||||
FALSE,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
FALSE));
|
||||
NULL));
|
||||
|
||||
} else if (pnode->type == MD_AST_NODE_TYPE_OOSVAR_NAME) {
|
||||
sllv_t* poosvar_lhs_keylist_evaluators = sllv_alloc();
|
||||
|
|
@ -332,11 +342,9 @@ static mlr_dsl_cst_statement_t* cst_statement_alloc(mlr_dsl_ast_node_t* past, in
|
|||
pnode->text,
|
||||
poosvar_lhs_keylist_evaluators,
|
||||
FALSE,
|
||||
FALSE,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
FALSE));
|
||||
NULL));
|
||||
|
||||
// xxx brief cmts here paralleling emit
|
||||
} else if (pnode->type == MD_AST_NODE_TYPE_OOSVAR_LEVEL_KEY) {
|
||||
|
|
@ -360,22 +368,18 @@ static mlr_dsl_cst_statement_t* cst_statement_alloc(mlr_dsl_ast_node_t* past, in
|
|||
pwalker->text,
|
||||
poosvar_lhs_keylist_evaluators,
|
||||
FALSE,
|
||||
FALSE,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
FALSE));
|
||||
NULL));
|
||||
|
||||
} else if (pnode->type == MD_AST_NODE_TYPE_ALL) {
|
||||
sllv_append(pstatement->pitems, mlr_dsl_cst_statement_item_alloc(
|
||||
NULL,
|
||||
NULL,
|
||||
TRUE,
|
||||
FALSE,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
FALSE));
|
||||
NULL));
|
||||
// The grammar allows only 'unset all', not 'unset @x, all, $y'.
|
||||
// So if 'all' appears at all, it's the only name.
|
||||
pstatement->pevaluator = mlr_dsl_cst_node_evaluate_unset_all;
|
||||
|
|
@ -395,11 +399,9 @@ static mlr_dsl_cst_statement_t* cst_statement_alloc(mlr_dsl_ast_node_t* past, in
|
|||
pnode->text,
|
||||
NULL,
|
||||
FALSE,
|
||||
FALSE,
|
||||
rval_evaluator_alloc_from_ast(pnode, type_inferencing),
|
||||
NULL,
|
||||
NULL,
|
||||
FALSE));
|
||||
NULL));
|
||||
}
|
||||
|
||||
pstatement->pevaluator = mlr_dsl_cst_node_evaluate_emitf;
|
||||
|
|
@ -414,11 +416,9 @@ static mlr_dsl_cst_statement_t* cst_statement_alloc(mlr_dsl_ast_node_t* past, in
|
|||
NULL,
|
||||
NULL,
|
||||
TRUE,
|
||||
FALSE,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
FALSE));
|
||||
NULL));
|
||||
|
||||
pstatement->pevaluator = mlr_dsl_cst_node_evaluate_emit_all;
|
||||
|
||||
|
|
@ -440,11 +440,9 @@ static mlr_dsl_cst_statement_t* cst_statement_alloc(mlr_dsl_ast_node_t* past, in
|
|||
pnamenode->text,
|
||||
poosvar_lhs_keylist_evaluators,
|
||||
FALSE,
|
||||
FALSE,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
FALSE));
|
||||
NULL));
|
||||
|
||||
pstatement->pevaluator = mlr_dsl_cst_node_evaluate_emit;
|
||||
}
|
||||
|
|
@ -465,11 +463,9 @@ static mlr_dsl_cst_statement_t* cst_statement_alloc(mlr_dsl_ast_node_t* past, in
|
|||
NULL,
|
||||
NULL,
|
||||
FALSE,
|
||||
FALSE,
|
||||
rval_evaluator_alloc_from_ast(pfirst, type_inferencing),
|
||||
pcond_statements,
|
||||
NULL,
|
||||
FALSE));
|
||||
NULL));
|
||||
|
||||
pstatement->pevaluator = mlr_dsl_cst_node_evaluate_conditional_block;
|
||||
|
||||
|
|
@ -479,11 +475,9 @@ static mlr_dsl_cst_statement_t* cst_statement_alloc(mlr_dsl_ast_node_t* past, in
|
|||
NULL,
|
||||
NULL,
|
||||
FALSE,
|
||||
FALSE,
|
||||
rval_evaluator_alloc_from_ast(pnode, type_inferencing),
|
||||
NULL,
|
||||
NULL,
|
||||
FALSE));
|
||||
NULL));
|
||||
|
||||
pstatement->pevaluator = mlr_dsl_cst_node_evaluate_filter;
|
||||
|
||||
|
|
@ -492,11 +486,9 @@ static mlr_dsl_cst_statement_t* cst_statement_alloc(mlr_dsl_ast_node_t* past, in
|
|||
NULL,
|
||||
NULL,
|
||||
FALSE,
|
||||
FALSE,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
FALSE));
|
||||
NULL));
|
||||
|
||||
pstatement->pevaluator = mlr_dsl_cst_node_evaluate_dump;
|
||||
|
||||
|
|
@ -505,11 +497,9 @@ static mlr_dsl_cst_statement_t* cst_statement_alloc(mlr_dsl_ast_node_t* past, in
|
|||
NULL,
|
||||
NULL,
|
||||
FALSE,
|
||||
FALSE,
|
||||
rval_evaluator_alloc_from_ast(past, type_inferencing),
|
||||
NULL,
|
||||
NULL,
|
||||
FALSE));
|
||||
NULL));
|
||||
|
||||
pstatement->pevaluator = mlr_dsl_cst_node_evaluate_bare_boolean;
|
||||
}
|
||||
|
|
@ -529,21 +519,17 @@ static mlr_dsl_cst_statement_item_t* mlr_dsl_cst_statement_item_alloc(
|
|||
char* output_field_name,
|
||||
sllv_t* poosvar_lhs_keylist_evaluators,
|
||||
int all_flag,
|
||||
int lhs_is_full_srec,
|
||||
rval_evaluator_t* prhs_evaluator,
|
||||
sllv_t* pcond_statements,
|
||||
sllv_t* poosvar_rhs_keylist_evaluators,
|
||||
int rhs_is_full_srec)
|
||||
sllv_t* poosvar_rhs_keylist_evaluators)
|
||||
{
|
||||
mlr_dsl_cst_statement_item_t* pitem = mlr_malloc_or_die(sizeof(mlr_dsl_cst_statement_item_t));
|
||||
pitem->output_field_name = output_field_name == NULL ? NULL : mlr_strdup_or_die(output_field_name);
|
||||
pitem->poosvar_lhs_keylist_evaluators = poosvar_lhs_keylist_evaluators;
|
||||
pitem->all_flag = all_flag;
|
||||
pitem->lhs_is_full_srec = lhs_is_full_srec;
|
||||
pitem->prhs_evaluator = prhs_evaluator;
|
||||
pitem->pcond_statements = pcond_statements;
|
||||
pitem->poosvar_rhs_keylist_evaluators = poosvar_rhs_keylist_evaluators;
|
||||
pitem->rhs_is_full_srec = rhs_is_full_srec;
|
||||
return pitem;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -57,13 +57,11 @@ typedef struct _mlr_dsl_cst_statement_item_t {
|
|||
char* output_field_name;
|
||||
sllv_t* poosvar_lhs_keylist_evaluators;
|
||||
int all_flag; // for emit all and unset all
|
||||
int lhs_is_full_srec;
|
||||
|
||||
// RHS:
|
||||
rval_evaluator_t* prhs_evaluator; // E.g. for srec assignments
|
||||
sllv_t* pcond_statements; // For pattern-action blocks
|
||||
sllv_t* poosvar_rhs_keylist_evaluators; // For assigning full srec from oosvar
|
||||
int rhs_is_full_srec; // For assigning oosvar from full srec
|
||||
} mlr_dsl_cst_statement_item_t;
|
||||
|
||||
typedef struct _mlr_dsl_cst_statement_t {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue