From 05febc3eab19c1f2c1955c68677538128d041b61 Mon Sep 17 00:00:00 2001 From: John Kerl Date: Mon, 24 Oct 2016 21:04:49 -0400 Subject: [PATCH] type-decl iterate (for-loops) --- c/dsls/mlr_dsl_parse.y | 4 +- c/mapping/mlr_dsl_ast.c | 4 +- c/mapping/mlr_dsl_ast.h | 2 +- c/mapping/mlr_dsl_cst.h | 5 +- c/mapping/mlr_dsl_cst_func_subr.c | 4 +- c/mapping/mlr_dsl_cst_statements.c | 44 +++++++----- c/reg_test/expected/out | 104 ++++++++++++++--------------- 7 files changed, 90 insertions(+), 77 deletions(-) diff --git a/c/dsls/mlr_dsl_parse.y b/c/dsls/mlr_dsl_parse.y index a82474b95..03815933b 100644 --- a/c/dsls/mlr_dsl_parse.y +++ b/c/dsls/mlr_dsl_parse.y @@ -491,10 +491,10 @@ md_for_loop_index(A) ::= MD_TOKEN_BOOLEAN MD_TOKEN_NON_SIGIL_NAME(B). { A = mlr_dsl_ast_node_alloc(B->text, MD_AST_NODE_TYPE_BOOLEAN_LOCAL_DEFINITION); } -md_for_oosvar_keylist(A) ::= MD_TOKEN_NON_SIGIL_NAME(K). { +md_for_oosvar_keylist(A) ::= md_for_loop_index(K). { A = mlr_dsl_ast_node_alloc_unary("key_variables", MD_AST_NODE_TYPE_FOR_VARIABLES, K); } -md_for_oosvar_keylist(A) ::= md_for_oosvar_keylist(L) MD_TOKEN_COMMA MD_TOKEN_NON_SIGIL_NAME(K). { +md_for_oosvar_keylist(A) ::= md_for_oosvar_keylist(L) MD_TOKEN_COMMA md_for_loop_index(K). { A = mlr_dsl_ast_node_append_arg(L, K); } diff --git a/c/mapping/mlr_dsl_ast.c b/c/mapping/mlr_dsl_ast.c index 8978455f7..7fdcf7e4c 100644 --- a/c/mapping/mlr_dsl_ast.c +++ b/c/mapping/mlr_dsl_ast.c @@ -139,8 +139,8 @@ void mlr_dsl_ast_node_replace_text(mlr_dsl_ast_node_t* pa, char* text) { } // ---------------------------------------------------------------- -int mlr_dsl_ast_node_to_type_mask(mlr_dsl_ast_node_t* pa) { - switch(pa->type) { +int mlr_dsl_ast_node_type_to_type_mask(mlr_dsl_ast_node_type_t type) { + switch(type) { case MD_AST_NODE_TYPE_UNTYPED_LOCAL_DEFINITION: return TYPE_MASK_ANY; case MD_AST_NODE_TYPE_NUMERIC_LOCAL_DEFINITION: return TYPE_MASK_NUMERIC; diff --git a/c/mapping/mlr_dsl_ast.h b/c/mapping/mlr_dsl_ast.h index 5509d2063..85e73ca54 100644 --- a/c/mapping/mlr_dsl_ast.h +++ b/c/mapping/mlr_dsl_ast.h @@ -143,7 +143,7 @@ mlr_dsl_ast_node_t* mlr_dsl_ast_node_set_function_name(mlr_dsl_ast_node_t* pa, c void mlr_dsl_ast_node_replace_text(mlr_dsl_ast_node_t* pa, char* text); -int mlr_dsl_ast_node_to_type_mask(mlr_dsl_ast_node_t* pa); +int mlr_dsl_ast_node_type_to_type_mask(mlr_dsl_ast_node_type_t type); int mlr_dsl_ast_node_cannot_be_bare_boolean(mlr_dsl_ast_node_t* pnode); diff --git a/c/mapping/mlr_dsl_cst.h b/c/mapping/mlr_dsl_cst.h index 4b4b06344..404af90f6 100644 --- a/c/mapping/mlr_dsl_cst.h +++ b/c/mapping/mlr_dsl_cst.h @@ -166,7 +166,7 @@ typedef struct _mlr_dsl_cst_statement_t { // name is replaced with the frame-relative index by the stack allocator. char* local_lhs_variable_name; int local_lhs_frame_relative_index; - int local_lhs_acceptable_type_mask; + int local_lhs_type_mask; // Assignment to srec char* srec_lhs_field_name; @@ -217,13 +217,16 @@ typedef struct _mlr_dsl_cst_statement_t { // name is replaced with the frame-relative index by the stack allocator.) char* for_srec_k_variable_name; int for_srec_k_frame_relative_index; + int for_srec_k_type_mask; char** for_oosvar_k_variable_names; int* for_oosvar_k_frame_relative_indices; + int* for_oosvar_k_type_masks; int for_oosvar_k_count; char* for_v_variable_name; int for_v_frame_relative_index; + int for_v_type_mask; type_inferenced_srec_field_getter_t* ptype_inferenced_srec_field_getter; diff --git a/c/mapping/mlr_dsl_cst_func_subr.c b/c/mapping/mlr_dsl_cst_func_subr.c index b19f45f5f..5060753e7 100644 --- a/c/mapping/mlr_dsl_cst_func_subr.c +++ b/c/mapping/mlr_dsl_cst_func_subr.c @@ -64,7 +64,7 @@ udf_defsite_state_t* mlr_dsl_cst_alloc_udf(mlr_dsl_cst_t* pcst, mlr_dsl_ast_node hss_add(pnameset, pparameter_node->text); pcst_udf_state->parameter_names[i] = mlr_strdup_or_die(pparameter_node->text); - pcst_udf_state->parameter_type_masks[i] = mlr_dsl_ast_node_to_type_mask(pparameter_node); + pcst_udf_state->parameter_type_masks[i] = mlr_dsl_ast_node_type_to_type_mask(pparameter_node->type); } hss_free(pnameset); @@ -208,7 +208,7 @@ subr_defsite_t* mlr_dsl_cst_alloc_subroutine(mlr_dsl_cst_t* pcst, mlr_dsl_ast_no hss_add(pnameset, pparameter_node->text); pstate->parameter_names[i] = mlr_strdup_or_die(pparameter_node->text); - pstate->parameter_type_masks[i] = mlr_dsl_ast_node_to_type_mask(pparameter_node); + pstate->parameter_type_masks[i] = mlr_dsl_ast_node_type_to_type_mask(pparameter_node->type); } hss_free(pnameset); diff --git a/c/mapping/mlr_dsl_cst_statements.c b/c/mapping/mlr_dsl_cst_statements.c index 446a4e7b2..45dd73b77 100644 --- a/c/mapping/mlr_dsl_cst_statements.c +++ b/c/mapping/mlr_dsl_cst_statements.c @@ -167,6 +167,7 @@ static void handle_for_oosvar_aux( mlhmmv_value_t submap, char** prest_for_k_variable_names, int* prest_for_k_frame_relative_indices, + int* prest_for_k_frame_type_masks, int prest_for_k_count); static void handle_unset_vararg_oosvar( @@ -644,7 +645,7 @@ static mlr_dsl_cst_statement_t* alloc_blank() { pstatement->ppemit_keylist_evaluators = NULL; pstatement->local_lhs_variable_name = 0; pstatement->local_lhs_frame_relative_index = 0; - pstatement->local_lhs_acceptable_type_mask = TYPE_MASK_ANY; + pstatement->local_lhs_type_mask = TYPE_MASK_ANY; pstatement->srec_lhs_field_name = NULL; pstatement->env_lhs_name = NULL; pstatement->psrec_lhs_evaluator = NULL; @@ -665,11 +666,14 @@ static mlr_dsl_cst_statement_t* alloc_blank() { pstatement->pif_chain_statements = NULL; pstatement->for_srec_k_variable_name = NULL; pstatement->for_srec_k_frame_relative_index = 0; + pstatement->for_srec_k_type_mask = TYPE_MASK_ANY; pstatement->for_oosvar_k_variable_names = NULL; pstatement->for_oosvar_k_frame_relative_indices = NULL; + pstatement->for_oosvar_k_type_masks = NULL; pstatement->for_oosvar_k_count = 0; pstatement->for_v_variable_name = NULL; pstatement->for_v_frame_relative_index = 0; + pstatement->for_v_type_mask = TYPE_MASK_ANY; pstatement->ptype_inferenced_srec_field_getter = NULL; pstatement->ptriple_for_start_statements = NULL; pstatement->ptriple_for_pre_continuation_statements = NULL; @@ -690,7 +694,7 @@ static mlr_dsl_cst_statement_t* alloc_local_variable_definition(mlr_dsl_cst_t* p pstatement->local_lhs_variable_name = mlr_strdup_or_die(pname_node->text); MLR_INTERNAL_CODING_ERROR_IF(pname_node->vardef_frame_relative_index == MD_UNUSED_INDEX); pstatement->local_lhs_frame_relative_index = pname_node->vardef_frame_relative_index; - pstatement->local_lhs_acceptable_type_mask = type_mask; + pstatement->local_lhs_type_mask = type_mask; pstatement->prhs_evaluator = rval_evaluator_alloc_from_ast(pvalue_node, pcst->pfmgr, type_inferencing, context_flags); pstatement->pnode_handler = handle_local_variable_definition; @@ -1073,10 +1077,13 @@ static mlr_dsl_cst_statement_t* alloc_for_srec(mlr_dsl_cst_t* pcst, mlr_dsl_ast_ } pstatement->for_srec_k_variable_name = mlr_strdup_or_die(pknode->text); pstatement->for_v_variable_name = mlr_strdup_or_die(pvnode->text); + pstatement->for_v_type_mask = mlr_dsl_ast_node_type_to_type_mask(pvnode->type); MLR_INTERNAL_CODING_ERROR_IF(pknode->vardef_frame_relative_index == MD_UNUSED_INDEX); MLR_INTERNAL_CODING_ERROR_IF(pvnode->vardef_frame_relative_index == MD_UNUSED_INDEX); pstatement->for_srec_k_frame_relative_index = pknode->vardef_frame_relative_index; pstatement->for_v_frame_relative_index = pvnode->vardef_frame_relative_index; + pstatement->for_srec_k_type_mask = mlr_dsl_ast_node_type_to_type_mask(pknode->type); + pstatement->for_v_type_mask = mlr_dsl_ast_node_type_to_type_mask(pvnode->type); MLR_INTERNAL_CODING_ERROR_IF(pnode->subframe_var_count == MD_UNUSED_INDEX); pstatement->pstatement_block = cst_statement_block_alloc(pnode->subframe_var_count); @@ -1140,6 +1147,7 @@ static mlr_dsl_cst_statement_t* alloc_for_oosvar(mlr_dsl_cst_t* pcst, mlr_dsl_as pstatement->for_oosvar_k_variable_names = mlr_malloc_or_die(sizeof(char*) * psubleft->pchildren->length); pstatement->for_oosvar_k_frame_relative_indices = mlr_malloc_or_die(sizeof(int) * psubleft->pchildren->length); + pstatement->for_oosvar_k_type_masks = mlr_malloc_or_die(sizeof(int) * psubleft->pchildren->length); pstatement->for_oosvar_k_count = 0; int ok = TRUE; hss_t* pnameset = hss_alloc(); @@ -1150,6 +1158,8 @@ static mlr_dsl_cst_statement_t* alloc_for_oosvar(mlr_dsl_cst_t* pcst, mlr_dsl_as mlr_strdup_or_die(pnamenode->text); pstatement->for_oosvar_k_frame_relative_indices[pstatement->for_oosvar_k_count] = pnamenode->vardef_frame_relative_index; + pstatement->for_oosvar_k_type_masks[pstatement->for_oosvar_k_count] = + mlr_dsl_ast_node_type_to_type_mask(pnamenode->type); pstatement->for_oosvar_k_count++; if (hss_has(pnameset, pnamenode->text)) { fprintf(stderr, "%s: duplicate for-loop boundvar \"%s\".\n", @@ -1161,6 +1171,7 @@ static mlr_dsl_cst_statement_t* alloc_for_oosvar(mlr_dsl_cst_t* pcst, mlr_dsl_as pstatement->for_v_variable_name = mlr_strdup_or_die(psubright->text); MLR_INTERNAL_CODING_ERROR_IF(psubright->vardef_frame_relative_index == MD_UNUSED_INDEX); pstatement->for_v_frame_relative_index = psubright->vardef_frame_relative_index; + pstatement->for_v_type_mask = mlr_dsl_ast_node_type_to_type_mask(psubright->type); if (hss_has(pnameset, psubright->text)) { fprintf(stderr, "%s: duplicate for-loop boundvar \"%s\".\n", MLR_GLOBALS.bargv0, psubright->text); @@ -1210,9 +1221,11 @@ static mlr_dsl_cst_statement_t* alloc_for_oosvar_key_only(mlr_dsl_cst_t* pcst, m pstatement->for_oosvar_k_variable_names = mlr_malloc_or_die(sizeof(char*)); pstatement->for_oosvar_k_frame_relative_indices = mlr_malloc_or_die(sizeof(int)); + pstatement->for_oosvar_k_type_masks = mlr_malloc_or_die(sizeof(int)); MLR_INTERNAL_CODING_ERROR_IF(pleft->vardef_frame_relative_index == MD_UNUSED_INDEX); pstatement->for_oosvar_k_variable_names[0] = mlr_strdup_or_die(pleft->text); pstatement->for_oosvar_k_frame_relative_indices[0] = pleft->vardef_frame_relative_index; + pstatement->for_oosvar_k_type_masks[0] = mlr_dsl_ast_node_type_to_type_mask(pleft->type); pstatement->poosvar_lhs_keylist_evaluators = allocate_keylist_evaluators_from_oosvar_node( pcst, pmiddle, type_inferencing, context_flags); @@ -1952,9 +1965,8 @@ void mlr_dsl_cst_statement_free(mlr_dsl_cst_statement_t* pstatement) { free(pstatement->for_oosvar_k_variable_names[i]); free(pstatement->for_oosvar_k_variable_names); } - if (pstatement->for_oosvar_k_frame_relative_indices != NULL) { - free(pstatement->for_oosvar_k_frame_relative_indices); - } + free(pstatement->for_oosvar_k_frame_relative_indices); + free(pstatement->for_oosvar_k_type_masks); free(pstatement->for_v_variable_name); if (pstatement->ptriple_for_start_statements != NULL) { @@ -2165,7 +2177,7 @@ static void handle_local_variable_definition( local_stack_frame_t* pframe = local_stack_get_top_frame(pvars->plocal_stack); local_stack_frame_define(pframe, pstatement->local_lhs_variable_name, pstatement->local_lhs_frame_relative_index, - pstatement->local_lhs_acceptable_type_mask, val); + pstatement->local_lhs_type_mask, val); } else { mv_free(&val); } @@ -2630,13 +2642,12 @@ static void handle_for_srec( mv_t mvkey = mv_from_string_no_free(pe->key); local_stack_frame_t* pframe = local_stack_get_top_frame(pvars->plocal_stack); - // xxx for-srec typedecl local_stack_frame_define(pframe, pstatement->for_srec_k_variable_name, pstatement->for_srec_k_frame_relative_index, - TYPE_MASK_ANY, mvkey); + pstatement->for_srec_k_type_mask, mvkey); local_stack_frame_define(pframe, pstatement->for_v_variable_name, pstatement->for_v_frame_relative_index, - TYPE_MASK_ANY, mvval); + pstatement->for_v_type_mask, mvval); pstatement->pblock_handler(pstatement->pstatement_block, pvars, pcst_outputs); if (loop_stack_get(pvars->ploop_stack) & LOOP_BROKEN) { @@ -2685,7 +2696,7 @@ static void handle_for_oosvar( handle_for_oosvar_aux(pstatement, pvars, pcst_outputs, submap, pstatement->for_oosvar_k_variable_names, pstatement->for_oosvar_k_frame_relative_indices, - pstatement->for_oosvar_k_count); + pstatement->for_oosvar_k_type_masks, pstatement->for_oosvar_k_count); if (loop_stack_get(pvars->ploop_stack) & LOOP_BROKEN) { loop_stack_clear(pvars->ploop_stack, LOOP_BROKEN); @@ -2710,6 +2721,7 @@ static void handle_for_oosvar_aux( mlhmmv_value_t submap, char** prest_for_k_variable_names, int* prest_for_k_frame_relative_indices, + int* prest_for_k_type_masks, int prest_for_k_count) { if (prest_for_k_count > 0) { // Keep recursing over remaining k-names @@ -2721,12 +2733,12 @@ static void handle_for_oosvar_aux( for (mlhmmv_level_entry_t* pe = submap.u.pnext_level->phead; pe != NULL; pe = pe->pnext) { // Bind the k-name to the entry-key mlrval: local_stack_frame_t* pframe = local_stack_get_top_frame(pvars->plocal_stack); - // xxx for-oosvar typedecl local_stack_frame_define(pframe, prest_for_k_variable_names[0], prest_for_k_frame_relative_indices[0], - TYPE_MASK_ANY, mv_copy(&pe->level_key)); + prest_for_k_type_masks[0], mv_copy(&pe->level_key)); // Recurse into the next-level submap: handle_for_oosvar_aux(pstatement, pvars, pcst_outputs, pe->level_value, - &prest_for_k_variable_names[1], &prest_for_k_frame_relative_indices[1], prest_for_k_count - 1); + &prest_for_k_variable_names[1], &prest_for_k_frame_relative_indices[1], &prest_for_k_type_masks[1], + prest_for_k_count - 1); if (loop_stack_get(pvars->ploop_stack) & LOOP_BROKEN) { // Bit cleared in recursive caller @@ -2745,9 +2757,8 @@ static void handle_for_oosvar_aux( } else { // Bind the v-name to the terminal mlrval: local_stack_frame_t* pframe = local_stack_get_top_frame(pvars->plocal_stack); - // xxx for-oosvar typedecl local_stack_frame_define(pframe, pstatement->for_v_variable_name, pstatement->for_v_frame_relative_index, - TYPE_MASK_ANY, mv_copy(&submap.u.mlrval)); + pstatement->for_v_type_mask, mv_copy(&submap.u.mlrval)); // Execute the loop-body statements: pstatement->pblock_handler(pstatement->pstatement_block, pvars, pcst_outputs); } @@ -2781,10 +2792,9 @@ static void handle_for_oosvar_key_only( for (sllve_t* pe = pkeys->phead; pe != NULL; pe = pe->pnext) { // Bind the v-name to the terminal mlrval: - // xxx for-oosvar typedecl local_stack_frame_define(pframe, pstatement->for_oosvar_k_variable_names[0], pstatement->for_oosvar_k_frame_relative_indices[0], - TYPE_MASK_ANY, mv_copy(pe->pvvalue)); + pstatement->for_oosvar_k_type_masks[0], mv_copy(pe->pvvalue)); // Execute the loop-body statements: pstatement->pblock_handler(pstatement->pstatement_block, pvars, pcst_outputs); diff --git a/c/reg_test/expected/out b/c/reg_test/expected/out index 613af2638..20c9a5dbc 100644 --- a/c/reg_test/expected/out +++ b/c/reg_test/expected/out @@ -28961,8 +28961,8 @@ text="block", type=STATEMENT_BLOCK: text="for", type=FOR_OOSVAR: text="key_and_value_variables", type=FOR_VARIABLES: text="key_variables", type=FOR_VARIABLES: - text="k1", type=NON_SIGIL_NAME. - text="k2", type=NON_SIGIL_NAME. + text="k1", type=UNTYPED_LOCAL_DEFINITION. + text="k2", type=UNTYPED_LOCAL_DEFINITION. text="v", type=UNTYPED_LOCAL_DEFINITION. text="oosvar_keylist", type=OOSVAR_KEYLIST: text="o", type=STRING_LITERAL. @@ -29037,8 +29037,8 @@ text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth text="for", type=FOR_OOSVAR: subframe_var_count=3 text="key_and_value_variables", type=FOR_VARIABLES: text="key_variables", type=FOR_VARIABLES: - text="k1", type=NON_SIGIL_NAME. vardef_subframe_relative_index=0 vardef_subframe_index=1 vardef_frame_relative_index=1 - text="k2", type=NON_SIGIL_NAME. vardef_subframe_relative_index=1 vardef_subframe_index=1 vardef_frame_relative_index=2 + text="k1", type=UNTYPED_LOCAL_DEFINITION. vardef_subframe_relative_index=0 vardef_subframe_index=1 vardef_frame_relative_index=1 + text="k2", type=UNTYPED_LOCAL_DEFINITION. vardef_subframe_relative_index=1 vardef_subframe_index=1 vardef_frame_relative_index=2 text="v", type=UNTYPED_LOCAL_DEFINITION. vardef_subframe_relative_index=2 vardef_subframe_index=1 vardef_frame_relative_index=3 text="oosvar_keylist", type=OOSVAR_KEYLIST: text="o", type=STRING_LITERAL. @@ -29282,8 +29282,8 @@ text="block", type=STATEMENT_BLOCK: text="for", type=FOR_OOSVAR: text="key_and_value_variables", type=FOR_VARIABLES: text="key_variables", type=FOR_VARIABLES: - text="a", type=NON_SIGIL_NAME. - text="a", type=NON_SIGIL_NAME. + text="a", type=UNTYPED_LOCAL_DEFINITION. + text="a", type=UNTYPED_LOCAL_DEFINITION. text="c", type=UNTYPED_LOCAL_DEFINITION. text="empty_keylist", type=OOSVAR_KEYLIST: text="for_full_oosvar_block", type=STATEMENT_BLOCK: @@ -29295,8 +29295,8 @@ text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth text="for", type=FOR_OOSVAR: subframe_var_count=2 text="key_and_value_variables", type=FOR_VARIABLES: text="key_variables", type=FOR_VARIABLES: - text="a", type=NON_SIGIL_NAME. vardef_subframe_relative_index=0 vardef_subframe_index=1 vardef_frame_relative_index=1 - text="a", type=NON_SIGIL_NAME. vardef_subframe_relative_index=0 vardef_subframe_index=1 vardef_frame_relative_index=1 + text="a", type=UNTYPED_LOCAL_DEFINITION. vardef_subframe_relative_index=0 vardef_subframe_index=1 vardef_frame_relative_index=1 + text="a", type=UNTYPED_LOCAL_DEFINITION. vardef_subframe_relative_index=0 vardef_subframe_index=1 vardef_frame_relative_index=1 text="c", type=UNTYPED_LOCAL_DEFINITION. vardef_subframe_relative_index=1 vardef_subframe_index=1 vardef_frame_relative_index=2 text="empty_keylist", type=OOSVAR_KEYLIST: text="for_full_oosvar_block", type=STATEMENT_BLOCK: @@ -29311,8 +29311,8 @@ text="block", type=STATEMENT_BLOCK: text="for", type=FOR_OOSVAR: text="key_and_value_variables", type=FOR_VARIABLES: text="key_variables", type=FOR_VARIABLES: - text="a", type=NON_SIGIL_NAME. - text="b", type=NON_SIGIL_NAME. + text="a", type=UNTYPED_LOCAL_DEFINITION. + text="b", type=UNTYPED_LOCAL_DEFINITION. text="a", type=UNTYPED_LOCAL_DEFINITION. text="empty_keylist", type=OOSVAR_KEYLIST: text="for_full_oosvar_block", type=STATEMENT_BLOCK: @@ -29324,8 +29324,8 @@ text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth text="for", type=FOR_OOSVAR: subframe_var_count=2 text="key_and_value_variables", type=FOR_VARIABLES: text="key_variables", type=FOR_VARIABLES: - text="a", type=NON_SIGIL_NAME. vardef_subframe_relative_index=0 vardef_subframe_index=1 vardef_frame_relative_index=1 - text="b", type=NON_SIGIL_NAME. vardef_subframe_relative_index=1 vardef_subframe_index=1 vardef_frame_relative_index=2 + text="a", type=UNTYPED_LOCAL_DEFINITION. vardef_subframe_relative_index=0 vardef_subframe_index=1 vardef_frame_relative_index=1 + text="b", type=UNTYPED_LOCAL_DEFINITION. vardef_subframe_relative_index=1 vardef_subframe_index=1 vardef_frame_relative_index=2 text="a", type=UNTYPED_LOCAL_DEFINITION. vardef_subframe_relative_index=0 vardef_subframe_index=1 vardef_frame_relative_index=1 text="empty_keylist", type=OOSVAR_KEYLIST: text="for_full_oosvar_block", type=STATEMENT_BLOCK: @@ -29340,8 +29340,8 @@ text="block", type=STATEMENT_BLOCK: text="for", type=FOR_OOSVAR: text="key_and_value_variables", type=FOR_VARIABLES: text="key_variables", type=FOR_VARIABLES: - text="a", type=NON_SIGIL_NAME. - text="b", type=NON_SIGIL_NAME. + text="a", type=UNTYPED_LOCAL_DEFINITION. + text="b", type=UNTYPED_LOCAL_DEFINITION. text="b", type=UNTYPED_LOCAL_DEFINITION. text="empty_keylist", type=OOSVAR_KEYLIST: text="for_full_oosvar_block", type=STATEMENT_BLOCK: @@ -29353,8 +29353,8 @@ text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth text="for", type=FOR_OOSVAR: subframe_var_count=2 text="key_and_value_variables", type=FOR_VARIABLES: text="key_variables", type=FOR_VARIABLES: - text="a", type=NON_SIGIL_NAME. vardef_subframe_relative_index=0 vardef_subframe_index=1 vardef_frame_relative_index=1 - text="b", type=NON_SIGIL_NAME. vardef_subframe_relative_index=1 vardef_subframe_index=1 vardef_frame_relative_index=2 + text="a", type=UNTYPED_LOCAL_DEFINITION. vardef_subframe_relative_index=0 vardef_subframe_index=1 vardef_frame_relative_index=1 + text="b", type=UNTYPED_LOCAL_DEFINITION. vardef_subframe_relative_index=1 vardef_subframe_index=1 vardef_frame_relative_index=2 text="b", type=UNTYPED_LOCAL_DEFINITION. vardef_subframe_relative_index=1 vardef_subframe_index=1 vardef_frame_relative_index=2 text="empty_keylist", type=OOSVAR_KEYLIST: text="for_full_oosvar_block", type=STATEMENT_BLOCK: @@ -29369,9 +29369,9 @@ text="block", type=STATEMENT_BLOCK: text="for", type=FOR_OOSVAR: text="key_and_value_variables", type=FOR_VARIABLES: text="key_variables", type=FOR_VARIABLES: - text="a", type=NON_SIGIL_NAME. - text="a", type=NON_SIGIL_NAME. - text="c", type=NON_SIGIL_NAME. + text="a", type=UNTYPED_LOCAL_DEFINITION. + text="a", type=UNTYPED_LOCAL_DEFINITION. + text="c", type=UNTYPED_LOCAL_DEFINITION. text="d", type=UNTYPED_LOCAL_DEFINITION. text="empty_keylist", type=OOSVAR_KEYLIST: text="for_full_oosvar_block", type=STATEMENT_BLOCK: @@ -29383,9 +29383,9 @@ text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth text="for", type=FOR_OOSVAR: subframe_var_count=3 text="key_and_value_variables", type=FOR_VARIABLES: text="key_variables", type=FOR_VARIABLES: - text="a", type=NON_SIGIL_NAME. vardef_subframe_relative_index=0 vardef_subframe_index=1 vardef_frame_relative_index=1 - text="a", type=NON_SIGIL_NAME. vardef_subframe_relative_index=0 vardef_subframe_index=1 vardef_frame_relative_index=1 - text="c", type=NON_SIGIL_NAME. vardef_subframe_relative_index=1 vardef_subframe_index=1 vardef_frame_relative_index=2 + text="a", type=UNTYPED_LOCAL_DEFINITION. vardef_subframe_relative_index=0 vardef_subframe_index=1 vardef_frame_relative_index=1 + text="a", type=UNTYPED_LOCAL_DEFINITION. vardef_subframe_relative_index=0 vardef_subframe_index=1 vardef_frame_relative_index=1 + text="c", type=UNTYPED_LOCAL_DEFINITION. vardef_subframe_relative_index=1 vardef_subframe_index=1 vardef_frame_relative_index=2 text="d", type=UNTYPED_LOCAL_DEFINITION. vardef_subframe_relative_index=2 vardef_subframe_index=1 vardef_frame_relative_index=3 text="empty_keylist", type=OOSVAR_KEYLIST: text="for_full_oosvar_block", type=STATEMENT_BLOCK: @@ -29400,9 +29400,9 @@ text="block", type=STATEMENT_BLOCK: text="for", type=FOR_OOSVAR: text="key_and_value_variables", type=FOR_VARIABLES: text="key_variables", type=FOR_VARIABLES: - text="a", type=NON_SIGIL_NAME. - text="b", type=NON_SIGIL_NAME. - text="a", type=NON_SIGIL_NAME. + text="a", type=UNTYPED_LOCAL_DEFINITION. + text="b", type=UNTYPED_LOCAL_DEFINITION. + text="a", type=UNTYPED_LOCAL_DEFINITION. text="d", type=UNTYPED_LOCAL_DEFINITION. text="empty_keylist", type=OOSVAR_KEYLIST: text="for_full_oosvar_block", type=STATEMENT_BLOCK: @@ -29414,9 +29414,9 @@ text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth text="for", type=FOR_OOSVAR: subframe_var_count=3 text="key_and_value_variables", type=FOR_VARIABLES: text="key_variables", type=FOR_VARIABLES: - text="a", type=NON_SIGIL_NAME. vardef_subframe_relative_index=0 vardef_subframe_index=1 vardef_frame_relative_index=1 - text="b", type=NON_SIGIL_NAME. vardef_subframe_relative_index=1 vardef_subframe_index=1 vardef_frame_relative_index=2 - text="a", type=NON_SIGIL_NAME. vardef_subframe_relative_index=0 vardef_subframe_index=1 vardef_frame_relative_index=1 + text="a", type=UNTYPED_LOCAL_DEFINITION. vardef_subframe_relative_index=0 vardef_subframe_index=1 vardef_frame_relative_index=1 + text="b", type=UNTYPED_LOCAL_DEFINITION. vardef_subframe_relative_index=1 vardef_subframe_index=1 vardef_frame_relative_index=2 + text="a", type=UNTYPED_LOCAL_DEFINITION. vardef_subframe_relative_index=0 vardef_subframe_index=1 vardef_frame_relative_index=1 text="d", type=UNTYPED_LOCAL_DEFINITION. vardef_subframe_relative_index=2 vardef_subframe_index=1 vardef_frame_relative_index=3 text="empty_keylist", type=OOSVAR_KEYLIST: text="for_full_oosvar_block", type=STATEMENT_BLOCK: @@ -29431,9 +29431,9 @@ text="block", type=STATEMENT_BLOCK: text="for", type=FOR_OOSVAR: text="key_and_value_variables", type=FOR_VARIABLES: text="key_variables", type=FOR_VARIABLES: - text="a", type=NON_SIGIL_NAME. - text="b", type=NON_SIGIL_NAME. - text="c", type=NON_SIGIL_NAME. + text="a", type=UNTYPED_LOCAL_DEFINITION. + text="b", type=UNTYPED_LOCAL_DEFINITION. + text="c", type=UNTYPED_LOCAL_DEFINITION. text="a", type=UNTYPED_LOCAL_DEFINITION. text="empty_keylist", type=OOSVAR_KEYLIST: text="for_full_oosvar_block", type=STATEMENT_BLOCK: @@ -29445,9 +29445,9 @@ text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth text="for", type=FOR_OOSVAR: subframe_var_count=3 text="key_and_value_variables", type=FOR_VARIABLES: text="key_variables", type=FOR_VARIABLES: - text="a", type=NON_SIGIL_NAME. vardef_subframe_relative_index=0 vardef_subframe_index=1 vardef_frame_relative_index=1 - text="b", type=NON_SIGIL_NAME. vardef_subframe_relative_index=1 vardef_subframe_index=1 vardef_frame_relative_index=2 - text="c", type=NON_SIGIL_NAME. vardef_subframe_relative_index=2 vardef_subframe_index=1 vardef_frame_relative_index=3 + text="a", type=UNTYPED_LOCAL_DEFINITION. vardef_subframe_relative_index=0 vardef_subframe_index=1 vardef_frame_relative_index=1 + text="b", type=UNTYPED_LOCAL_DEFINITION. vardef_subframe_relative_index=1 vardef_subframe_index=1 vardef_frame_relative_index=2 + text="c", type=UNTYPED_LOCAL_DEFINITION. vardef_subframe_relative_index=2 vardef_subframe_index=1 vardef_frame_relative_index=3 text="a", type=UNTYPED_LOCAL_DEFINITION. vardef_subframe_relative_index=0 vardef_subframe_index=1 vardef_frame_relative_index=1 text="empty_keylist", type=OOSVAR_KEYLIST: text="for_full_oosvar_block", type=STATEMENT_BLOCK: @@ -29462,9 +29462,9 @@ text="block", type=STATEMENT_BLOCK: text="for", type=FOR_OOSVAR: text="key_and_value_variables", type=FOR_VARIABLES: text="key_variables", type=FOR_VARIABLES: - text="a", type=NON_SIGIL_NAME. - text="b", type=NON_SIGIL_NAME. - text="b", type=NON_SIGIL_NAME. + text="a", type=UNTYPED_LOCAL_DEFINITION. + text="b", type=UNTYPED_LOCAL_DEFINITION. + text="b", type=UNTYPED_LOCAL_DEFINITION. text="d", type=UNTYPED_LOCAL_DEFINITION. text="empty_keylist", type=OOSVAR_KEYLIST: text="for_full_oosvar_block", type=STATEMENT_BLOCK: @@ -29476,9 +29476,9 @@ text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth text="for", type=FOR_OOSVAR: subframe_var_count=3 text="key_and_value_variables", type=FOR_VARIABLES: text="key_variables", type=FOR_VARIABLES: - text="a", type=NON_SIGIL_NAME. vardef_subframe_relative_index=0 vardef_subframe_index=1 vardef_frame_relative_index=1 - text="b", type=NON_SIGIL_NAME. vardef_subframe_relative_index=1 vardef_subframe_index=1 vardef_frame_relative_index=2 - text="b", type=NON_SIGIL_NAME. vardef_subframe_relative_index=1 vardef_subframe_index=1 vardef_frame_relative_index=2 + text="a", type=UNTYPED_LOCAL_DEFINITION. vardef_subframe_relative_index=0 vardef_subframe_index=1 vardef_frame_relative_index=1 + text="b", type=UNTYPED_LOCAL_DEFINITION. vardef_subframe_relative_index=1 vardef_subframe_index=1 vardef_frame_relative_index=2 + text="b", type=UNTYPED_LOCAL_DEFINITION. vardef_subframe_relative_index=1 vardef_subframe_index=1 vardef_frame_relative_index=2 text="d", type=UNTYPED_LOCAL_DEFINITION. vardef_subframe_relative_index=2 vardef_subframe_index=1 vardef_frame_relative_index=3 text="empty_keylist", type=OOSVAR_KEYLIST: text="for_full_oosvar_block", type=STATEMENT_BLOCK: @@ -29493,9 +29493,9 @@ text="block", type=STATEMENT_BLOCK: text="for", type=FOR_OOSVAR: text="key_and_value_variables", type=FOR_VARIABLES: text="key_variables", type=FOR_VARIABLES: - text="a", type=NON_SIGIL_NAME. - text="b", type=NON_SIGIL_NAME. - text="c", type=NON_SIGIL_NAME. + text="a", type=UNTYPED_LOCAL_DEFINITION. + text="b", type=UNTYPED_LOCAL_DEFINITION. + text="c", type=UNTYPED_LOCAL_DEFINITION. text="b", type=UNTYPED_LOCAL_DEFINITION. text="empty_keylist", type=OOSVAR_KEYLIST: text="for_full_oosvar_block", type=STATEMENT_BLOCK: @@ -29507,9 +29507,9 @@ text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth text="for", type=FOR_OOSVAR: subframe_var_count=3 text="key_and_value_variables", type=FOR_VARIABLES: text="key_variables", type=FOR_VARIABLES: - text="a", type=NON_SIGIL_NAME. vardef_subframe_relative_index=0 vardef_subframe_index=1 vardef_frame_relative_index=1 - text="b", type=NON_SIGIL_NAME. vardef_subframe_relative_index=1 vardef_subframe_index=1 vardef_frame_relative_index=2 - text="c", type=NON_SIGIL_NAME. vardef_subframe_relative_index=2 vardef_subframe_index=1 vardef_frame_relative_index=3 + text="a", type=UNTYPED_LOCAL_DEFINITION. vardef_subframe_relative_index=0 vardef_subframe_index=1 vardef_frame_relative_index=1 + text="b", type=UNTYPED_LOCAL_DEFINITION. vardef_subframe_relative_index=1 vardef_subframe_index=1 vardef_frame_relative_index=2 + text="c", type=UNTYPED_LOCAL_DEFINITION. vardef_subframe_relative_index=2 vardef_subframe_index=1 vardef_frame_relative_index=3 text="b", type=UNTYPED_LOCAL_DEFINITION. vardef_subframe_relative_index=1 vardef_subframe_index=1 vardef_frame_relative_index=2 text="empty_keylist", type=OOSVAR_KEYLIST: text="for_full_oosvar_block", type=STATEMENT_BLOCK: @@ -29524,9 +29524,9 @@ text="block", type=STATEMENT_BLOCK: text="for", type=FOR_OOSVAR: text="key_and_value_variables", type=FOR_VARIABLES: text="key_variables", type=FOR_VARIABLES: - text="a", type=NON_SIGIL_NAME. - text="b", type=NON_SIGIL_NAME. - text="c", type=NON_SIGIL_NAME. + text="a", type=UNTYPED_LOCAL_DEFINITION. + text="b", type=UNTYPED_LOCAL_DEFINITION. + text="c", type=UNTYPED_LOCAL_DEFINITION. text="c", type=UNTYPED_LOCAL_DEFINITION. text="empty_keylist", type=OOSVAR_KEYLIST: text="for_full_oosvar_block", type=STATEMENT_BLOCK: @@ -29538,9 +29538,9 @@ text="main_block", type=STATEMENT_BLOCK: subframe_var_count=1 max_subframe_depth text="for", type=FOR_OOSVAR: subframe_var_count=3 text="key_and_value_variables", type=FOR_VARIABLES: text="key_variables", type=FOR_VARIABLES: - text="a", type=NON_SIGIL_NAME. vardef_subframe_relative_index=0 vardef_subframe_index=1 vardef_frame_relative_index=1 - text="b", type=NON_SIGIL_NAME. vardef_subframe_relative_index=1 vardef_subframe_index=1 vardef_frame_relative_index=2 - text="c", type=NON_SIGIL_NAME. vardef_subframe_relative_index=2 vardef_subframe_index=1 vardef_frame_relative_index=3 + text="a", type=UNTYPED_LOCAL_DEFINITION. vardef_subframe_relative_index=0 vardef_subframe_index=1 vardef_frame_relative_index=1 + text="b", type=UNTYPED_LOCAL_DEFINITION. vardef_subframe_relative_index=1 vardef_subframe_index=1 vardef_frame_relative_index=2 + text="c", type=UNTYPED_LOCAL_DEFINITION. vardef_subframe_relative_index=2 vardef_subframe_index=1 vardef_frame_relative_index=3 text="c", type=UNTYPED_LOCAL_DEFINITION. vardef_subframe_relative_index=2 vardef_subframe_index=1 vardef_frame_relative_index=3 text="empty_keylist", type=OOSVAR_KEYLIST: text="for_full_oosvar_block", type=STATEMENT_BLOCK: