type-decl iterate (for-loops)

This commit is contained in:
John Kerl 2016-10-24 21:04:49 -04:00
parent 892563caa9
commit 05febc3eab
7 changed files with 90 additions and 77 deletions

View file

@ -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);
}

View file

@ -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;

View file

@ -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);

View file

@ -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;

View file

@ -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);

View file

@ -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);

View file

@ -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: