From 2abbe6dc5f33dd9d2c36cc6bf23804a65e9f4ddf Mon Sep 17 00:00:00 2001 From: John Kerl Date: Sat, 15 Oct 2016 09:31:16 -0700 Subject: [PATCH] neaten --- c/mapping/mlr_dsl_cst.c | 11 ++++++----- c/mapping/mlr_dsl_cst.h | 2 ++ c/mapping/mlr_dsl_cst_statements.c | 30 +++++++++++++++++++++--------- c/mapping/rval_evaluator.h | 1 + 4 files changed, 30 insertions(+), 14 deletions(-) diff --git a/c/mapping/mlr_dsl_cst.c b/c/mapping/mlr_dsl_cst.c index 1ba814327..d3a6ca340 100644 --- a/c/mapping/mlr_dsl_cst.c +++ b/c/mapping/mlr_dsl_cst.c @@ -94,7 +94,8 @@ mlr_dsl_cst_t* mlr_dsl_cst_alloc(mlr_dsl_ast_t* past, int print_ast, int trace_s printf("FUNCTION DEFINITION:\n"); mlr_dsl_ast_node_print(pnode); } - udf_defsite_state_t* pudf_defsite_state = mlr_dsl_cst_alloc_udf(pcst, pnode, type_inferencing, context_flags); + udf_defsite_state_t* pudf_defsite_state = mlr_dsl_cst_alloc_udf(pcst, pnode, + type_inferencing, context_flags); fmgr_install_udf(pcst->pfmgr, pudf_defsite_state); } @@ -117,7 +118,6 @@ mlr_dsl_cst_t* mlr_dsl_cst_alloc(mlr_dsl_ast_t* past, int print_ast, int trace_s pcst->pbegin_blocks = sllv_alloc(); for (sllve_t* pe = pcst->paast->pbegin_blocks->phead; pe != NULL; pe = pe->pnext) { mlr_dsl_ast_node_t* pnode = pe->pvvalue; - // xxx assert non-uninit max var depth x all callsites if (print_ast) { printf("\n"); printf("BEGIN-BLOCK:\n"); @@ -125,7 +125,8 @@ mlr_dsl_cst_t* mlr_dsl_cst_alloc(mlr_dsl_ast_t* past, int print_ast, int trace_s } MLR_INTERNAL_CODING_ERROR_IF(pnode->max_var_depth == MD_UNUSED_INDEX); MLR_INTERNAL_CODING_ERROR_IF(pnode->frame_var_count == MD_UNUSED_INDEX); - cst_top_level_statement_block_t* pblock = cst_top_level_statement_block_alloc(pnode->max_var_depth, pnode->frame_var_count); + cst_top_level_statement_block_t* pblock = cst_top_level_statement_block_alloc(pnode->max_var_depth, + pnode->frame_var_count); for (sllve_t* pf = pnode->pchildren->phead; pf != NULL; pf = pf->pnext) { mlr_dsl_ast_node_t* plistnode = get_list_for_block(pnode); for (sllve_t* pg = plistnode->pchildren->phead; pg != NULL; pg = pg->pnext) { @@ -146,10 +147,10 @@ mlr_dsl_cst_t* mlr_dsl_cst_alloc(mlr_dsl_ast_t* past, int print_ast, int trace_s printf("END-BLOCK:\n"); mlr_dsl_ast_node_print(pnode); } - // xxx funcify x all MLR_INTERNAL_CODING_ERROR_IF(pnode->max_var_depth == MD_UNUSED_INDEX); MLR_INTERNAL_CODING_ERROR_IF(pnode->frame_var_count == MD_UNUSED_INDEX); - cst_top_level_statement_block_t* pblock = cst_top_level_statement_block_alloc(pnode->max_var_depth, pnode->frame_var_count); + cst_top_level_statement_block_t* pblock = cst_top_level_statement_block_alloc(pnode->max_var_depth, + pnode->frame_var_count); for (sllve_t* pf = pnode->pchildren->phead; pf != NULL; pf = pf->pnext) { mlr_dsl_ast_node_t* plistnode = get_list_for_block(pnode); for (sllve_t* pg = plistnode->pchildren->phead; pg != NULL; pg = pg->pnext) { diff --git a/c/mapping/mlr_dsl_cst.h b/c/mapping/mlr_dsl_cst.h index 43e370ad9..d4055fd7f 100644 --- a/c/mapping/mlr_dsl_cst.h +++ b/c/mapping/mlr_dsl_cst.h @@ -128,6 +128,8 @@ typedef void mlr_dsl_cst_statement_block_handler_t( // Difference between keylist and namelist: in emit @a[$b]["c"], "d", @e, the keylist is ["a", $b, "c"] // and the namelist is ["d", @e]. +// xxx make this a union ... ? + typedef struct _mlr_dsl_cst_statement_t { // Function-pointer for the handler of the given statement type, e.g. srec-assignment, while-loop, etc. diff --git a/c/mapping/mlr_dsl_cst_statements.c b/c/mapping/mlr_dsl_cst_statements.c index 8c8b60420..971f861c6 100644 --- a/c/mapping/mlr_dsl_cst_statements.c +++ b/c/mapping/mlr_dsl_cst_statements.c @@ -247,8 +247,8 @@ void cst_statement_block_free(cst_statement_block_t* pblock) { cst_top_level_statement_block_t* cst_top_level_statement_block_alloc(int max_var_depth, int frame_var_count) { cst_top_level_statement_block_t* pblock = mlr_malloc_or_die(sizeof(cst_top_level_statement_block_t)); - pblock->max_var_depth = max_var_depth; - pblock->pstack = local_stack_alloc(max_var_depth); + pblock->max_var_depth = max_var_depth; + pblock->pstack = local_stack_alloc(max_var_depth); pblock->pstatement_block = cst_statement_block_alloc(frame_var_count); return pblock; @@ -1200,21 +1200,28 @@ static mlr_dsl_cst_statement_t* alloc_triple_for(mlr_dsl_cst_t* pcst, mlr_dsl_as if (pcontinuation_statements_node->pchildren->length == 0) { pstatement->ptriple_for_continuation_evaluator = rval_evaluator_alloc_from_boolean(TRUE); } else { - for (sllve_t* pe = pcontinuation_statements_node->pchildren->phead; pe != NULL && pe->pnext != NULL; pe = pe->pnext) { + for ( + sllve_t* pe = pcontinuation_statements_node->pchildren->phead; + pe != NULL && pe->pnext != NULL; + pe = pe->pnext + ) + { mlr_dsl_ast_node_t* pbody_ast_node = pe->pvvalue; sllv_append(pstatement->ptriple_for_pre_continuation_statements, mlr_dsl_cst_alloc_statement(pcst, pbody_ast_node, type_inferencing, context_flags & ~IN_BREAKABLE)); } - mlr_dsl_ast_node_t* pfinal_continuation_statement_node = pcontinuation_statements_node->pchildren->ptail->pvvalue; + mlr_dsl_ast_node_t* pfinal_continuation_statement_node = + pcontinuation_statements_node->pchildren->ptail->pvvalue; if (mlr_dsl_ast_node_cannot_be_bare_boolean(pfinal_continuation_statement_node)) { fprintf(stderr, "%s: the final triple-for continutation statement must be a bare boolean.\n", MLR_GLOBALS.bargv0); exit(1); } - pstatement->ptriple_for_continuation_evaluator = rval_evaluator_alloc_from_ast(pfinal_continuation_statement_node, - pcst->pfmgr, type_inferencing, (context_flags & ~IN_BREAKABLE) | IN_TRIPLE_FOR_CONTINUE); + pstatement->ptriple_for_continuation_evaluator = rval_evaluator_alloc_from_ast( + pfinal_continuation_statement_node, pcst->pfmgr, + type_inferencing, (context_flags & ~IN_BREAKABLE) | IN_TRIPLE_FOR_CONTINUE); } pstatement->ptriple_for_update_statements = sllv_alloc(); @@ -1982,13 +1989,15 @@ void mlr_dsl_cst_handle_top_level_statement_blocks( } } +// XXX split alloc & handle files ... too big. + void mlr_dsl_cst_handle_top_level_statement_block( cst_top_level_statement_block_t* ptop_level_block, variables_t* pvars, cst_outputs_t* pcst_outputs) { - // xxx cmt re in-use - local_stack_t* pstack = local_stack_enter(ptop_level_block->pstack); + // XXX cmt re in-use + local_stack_t* pstack = local_stack_enter(ptop_level_block->pstack); // XXX sllv_push pvars->pstack ? // xxx adapt callee to also handle local stack mlr_dsl_cst_handle_statement_block(ptop_level_block->pstatement_block, pvars, pcst_outputs); @@ -2423,7 +2432,9 @@ static void handle_conditional_block( variables_t* pvars, cst_outputs_t* pcst_outputs) { - // xxx local entry, here & all bind.stack.push + // XXX need pvars->pstacks ... + // local_stack_t* pstack = pvars->pstacks->phead->pvvalue; + // XXX local_stack_frame_enter(pstack, pstatement->pstatement_block->frame_var_count); bind_stack_push(pvars->pbind_stack, bind_stack_frame_enter(pstatement->pframe)); rval_evaluator_t* prhs_evaluator = pstatement->prhs_evaluator; @@ -2435,6 +2446,7 @@ static void handle_conditional_block( } } bind_stack_frame_exit(bind_stack_pop(pvars->pbind_stack)); + // XXX local_stack_frame_exit(pstack, pstatement->pstatement_block->frame_var_count); } // ---------------------------------------------------------------- diff --git a/c/mapping/rval_evaluator.h b/c/mapping/rval_evaluator.h index e8969e8eb..999686851 100644 --- a/c/mapping/rval_evaluator.h +++ b/c/mapping/rval_evaluator.h @@ -50,6 +50,7 @@ typedef struct _variables_t { mlhmmv_t* poosvars; string_array_t** ppregex_captures; context_t* pctx; + // XXX pstacks (sllv_t*) bind_stack_t* pbind_stack; loop_stack_t* ploop_stack; return_state_t return_state;