diff --git a/c/mapping/mlr_dsl_cst.c b/c/mapping/mlr_dsl_cst.c index c2996c696..7a5e6a8f9 100644 --- a/c/mapping/mlr_dsl_cst.c +++ b/c/mapping/mlr_dsl_cst.c @@ -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; } diff --git a/c/mapping/mlr_dsl_cst.h b/c/mapping/mlr_dsl_cst.h index 88d86bfbd..3b294451f 100644 --- a/c/mapping/mlr_dsl_cst.h +++ b/c/mapping/mlr_dsl_cst.h @@ -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 {