mirror of
https://github.com/johnkerl/miller.git
synced 2026-07-22 15:37:59 +00:00
mapvar iterate
This commit is contained in:
parent
337e49781f
commit
420e088eec
4 changed files with 42 additions and 21 deletions
|
|
@ -170,11 +170,12 @@ md_statement_not_braced_end(A) ::= MD_TOKEN_SUBR_CALL md_fcn_or_subr_call(B). {
|
|||
}
|
||||
|
||||
// Not valid in begin/end since they refer to srecs:
|
||||
md_statement_not_braced_end(A) ::= md_srec_assignment(B). { A = B; }
|
||||
md_statement_not_braced_end(A) ::= md_srec_indirect_assignment(B). { A = B; }
|
||||
md_statement_not_braced_end(A) ::= md_oosvar_from_full_srec_assignment(B). { A = B; }
|
||||
md_statement_not_braced_end(A) ::= md_full_srec_from_oosvar_assignment(B). { A = B; }
|
||||
md_statement_not_braced_end(A) ::= md_env_assignment(B). { A = B; }
|
||||
md_statement_not_braced_end(A) ::= md_srec_assignment(B). { A = B; }
|
||||
md_statement_not_braced_end(A) ::= md_srec_indirect_assignment(B). { A = B; }
|
||||
md_statement_not_braced_end(A) ::= md_oosvar_from_full_srec_assignment(B). { A = B; }
|
||||
md_statement_not_braced_end(A) ::= md_full_srec_from_oosvar_assignment(B). { A = B; }
|
||||
md_statement_not_braced_end(A) ::= md_full_srec_from_map_literal_assignment(B). { A = B; }
|
||||
md_statement_not_braced_end(A) ::= md_env_assignment(B). { A = B; }
|
||||
|
||||
// Valid in begin/end since they don't refer to srecs (although the RHSs might):
|
||||
md_statement_not_braced_end(A) ::= md_do_while_block(B). { A = B; }
|
||||
|
|
@ -822,9 +823,20 @@ md_oosvar_from_full_srec_assignment(A) ::= md_oosvar_keylist(B) MD_TOKEN_ASSIGN
|
|||
A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_OOSVAR_FROM_FULL_SREC_ASSIGNMENT, B, C);
|
||||
}
|
||||
|
||||
md_full_srec_from_oosvar_assignment(A) ::= MD_TOKEN_FULL_SREC(B) MD_TOKEN_ASSIGN(O) md_nonindexed_local_variable(C). {
|
||||
A = mlr_dsl_ast_node_alloc_binary(O->text,
|
||||
MD_AST_NODE_TYPE_FULL_SREC_FROM_NONINDEXED_LOCAL_VARIABLE_ASSIGNMENT, B, C);
|
||||
}
|
||||
md_full_srec_from_oosvar_assignment(A) ::= MD_TOKEN_FULL_SREC(B) MD_TOKEN_ASSIGN(O) md_indexed_local_variable(C). {
|
||||
A = mlr_dsl_ast_node_alloc_binary(O->text,
|
||||
MD_AST_NODE_TYPE_FULL_SREC_FROM_INDEXED_LOCAL_VARIABLE_ASSIGNMENT, B, C);
|
||||
}
|
||||
md_full_srec_from_oosvar_assignment(A) ::= MD_TOKEN_FULL_SREC(B) MD_TOKEN_ASSIGN(O) md_oosvar_keylist(C). {
|
||||
A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_FULL_SREC_FROM_OOSVAR_ASSIGNMENT, B, C);
|
||||
}
|
||||
md_full_srec_from_map_literal_assignment(A) ::= MD_TOKEN_FULL_SREC(B) MD_TOKEN_ASSIGN(O) md_map_literal(C). {
|
||||
A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_FULL_SREC_FROM_OOSVAR_ASSIGNMENT, B, C);
|
||||
}
|
||||
|
||||
md_env_assignment(A) ::= md_env_index(B) MD_TOKEN_ASSIGN(O) md_rhs(C). {
|
||||
A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_ENV_ASSIGNMENT, B, C);
|
||||
|
|
|
|||
|
|
@ -264,7 +264,7 @@ char* mlr_dsl_ast_node_describe_type(mlr_dsl_ast_node_type_t type) {
|
|||
case MD_AST_NODE_TYPE_STATEMENT_BLOCK: return "STATEMENT_BLOCK"; break;
|
||||
case MD_AST_NODE_TYPE_STATEMENT_LIST: return "STATEMENT_LIST"; break;
|
||||
case MD_AST_NODE_TYPE_FUNC_DEF: return "FUNC_DEF"; break;
|
||||
case MD_AST_NODE_TYPE_FUNCTION_CALLSITE: return "FUNCTION_CALLSITE"; break;
|
||||
case MD_AST_NODE_TYPE_FUNCTION_CALLSITE: return "FUNCTION_CALLSITE"; break;
|
||||
case MD_AST_NODE_TYPE_SUBR_DEF: return "SUBR_DEF"; break;
|
||||
case MD_AST_NODE_TYPE_SUBR_CALLSITE: return "SUBR_CALLSITE"; break;
|
||||
case MD_AST_NODE_TYPE_UNTYPED_LOCAL_DEFINITION: return "UNTYPED_LOCAL_DEFINITION"; break;
|
||||
|
|
@ -273,7 +273,7 @@ char* mlr_dsl_ast_node_describe_type(mlr_dsl_ast_node_type_t type) {
|
|||
case MD_AST_NODE_TYPE_FLOAT_LOCAL_DEFINITION: return "FLOAT_LOCAL_DEFINITION"; break;
|
||||
case MD_AST_NODE_TYPE_BOOLEAN_LOCAL_DEFINITION: return "BOOLEAN_LOCAL_DEFINITION"; break;
|
||||
case MD_AST_NODE_TYPE_STRING_LOCAL_DEFINITION: return "STRING_LOCAL_DEFINITION"; break;
|
||||
case MD_AST_NODE_TYPE_MAP_LOCAL_DEFINITION: return "MAP_LOCAL_DEFINITION"; break;
|
||||
case MD_AST_NODE_TYPE_MAP_LOCAL_DEFINITION: return "MAP_LOCAL_DEFINITION"; break;
|
||||
case MD_AST_NODE_TYPE_UNTYPED_PARAMETER_DEFINITION: return "UNTYPED_PARAMETER_DEFINITION"; break;
|
||||
case MD_AST_NODE_TYPE_NUMERIC_PARAMETER_DEFINITION: return "NUMERIC_PARAMETER_DEFINITION"; break;
|
||||
case MD_AST_NODE_TYPE_INT_PARAMETER_DEFINITION: return "INT_PARAMETER_DEFINITION"; break;
|
||||
|
|
@ -299,13 +299,19 @@ char* mlr_dsl_ast_node_describe_type(mlr_dsl_ast_node_type_t type) {
|
|||
case MD_AST_NODE_TYPE_FULL_OOSVAR: return "FULL_OOSVAR"; break;
|
||||
case MD_AST_NODE_TYPE_NON_SIGIL_NAME: return "NON_SIGIL_NAME"; break;
|
||||
case MD_AST_NODE_TYPE_OPERATOR: return "OPERATOR"; break;
|
||||
case MD_AST_NODE_TYPE_NONINDEXED_LOCAL_ASSIGNMENT: return "NONINDEXED_LOCAL_ASSIGNMENT"; break;
|
||||
case MD_AST_NODE_TYPE_INDEXED_LOCAL_ASSIGNMENT: return "INDEXED_LOCAL_ASSIGNMENT"; break;
|
||||
case MD_AST_NODE_TYPE_NONINDEXED_LOCAL_ASSIGNMENT: return "NONINDEXED_LOCAL_ASSIGNMENT"; break;
|
||||
case MD_AST_NODE_TYPE_INDEXED_LOCAL_ASSIGNMENT: return "INDEXED_LOCAL_ASSIGNMENT"; break;
|
||||
case MD_AST_NODE_TYPE_SREC_ASSIGNMENT: return "SREC_ASSIGNMENT"; break;
|
||||
case MD_AST_NODE_TYPE_INDIRECT_SREC_ASSIGNMENT: return "INDIRECT_SREC_ASSIGNMENT"; break;
|
||||
case MD_AST_NODE_TYPE_OOSVAR_ASSIGNMENT: return "OOSVAR_ASSIGNMENT"; break;
|
||||
case MD_AST_NODE_TYPE_OOSVAR_FROM_FULL_SREC_ASSIGNMENT: return "OOSVAR_FROM_FULL_SREC_ASSIGNMENT"; break;
|
||||
case MD_AST_NODE_TYPE_FULL_SREC_FROM_OOSVAR_ASSIGNMENT: return "FULL_SREC_FROM_OOSVAR_ASSIGNMENT"; break;
|
||||
case MD_AST_NODE_TYPE_FULL_SREC_FROM_NONINDEXED_LOCAL_VARIABLE_ASSIGNMENT:
|
||||
return "FULL_SREC_FROM_NONINDEXED_LOCAL_VARIABLE_ASSIGNMENT";
|
||||
break;
|
||||
case MD_AST_NODE_TYPE_FULL_SREC_FROM_INDEXED_LOCAL_VARIABLE_ASSIGNMENT:
|
||||
return "FULL_SREC_FROM_INDEXED_LOCAL_VARIABLE_ASSIGNMENT";
|
||||
break;
|
||||
case MD_AST_NODE_TYPE_ENV_ASSIGNMENT: return "ENV_ASSIGNMENT"; break;
|
||||
case MD_AST_NODE_TYPE_CONTEXT_VARIABLE: return "CONTEXT_VARIABLE"; break;
|
||||
case MD_AST_NODE_TYPE_STRIPPED_AWAY: return "STRIPPED_AWAY"; break;
|
||||
|
|
@ -348,6 +354,7 @@ char* mlr_dsl_ast_node_describe_type(mlr_dsl_ast_node_type_t type) {
|
|||
case MD_AST_NODE_TYPE_CONTINUE: return "CONTINUE"; break;
|
||||
case MD_AST_NODE_TYPE_IF_HEAD: return "IF_HEAD"; break;
|
||||
case MD_AST_NODE_TYPE_IF_ITEM: return "IF_ITEM"; break;
|
||||
|
||||
default: return "UNRECOGNIZED_AST_NODE_TYPE";
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -54,6 +54,8 @@ typedef enum _mlr_dsl_ast_node_type_t {
|
|||
MD_AST_NODE_TYPE_OOSVAR_ASSIGNMENT,
|
||||
MD_AST_NODE_TYPE_OOSVAR_FROM_FULL_SREC_ASSIGNMENT,
|
||||
MD_AST_NODE_TYPE_FULL_SREC_FROM_OOSVAR_ASSIGNMENT,
|
||||
MD_AST_NODE_TYPE_FULL_SREC_FROM_NONINDEXED_LOCAL_VARIABLE_ASSIGNMENT,
|
||||
MD_AST_NODE_TYPE_FULL_SREC_FROM_INDEXED_LOCAL_VARIABLE_ASSIGNMENT,
|
||||
MD_AST_NODE_TYPE_ENV_ASSIGNMENT,
|
||||
MD_AST_NODE_TYPE_CONTEXT_VARIABLE,
|
||||
MD_AST_NODE_TYPE_ENV,
|
||||
|
|
|
|||
24
c/todo.txt
24
c/todo.txt
|
|
@ -94,7 +94,7 @@ k assign LHS full-srec ? assign RHS oosvar
|
|||
- assign LHS full-oosvar ? assign RHS localvar
|
||||
- assign LHS full-oosvar ? assign RHS func-retval
|
||||
.
|
||||
- assign LHS oosvar ? assign RHS maplit
|
||||
k assign LHS oosvar ? assign RHS maplit
|
||||
k assign LHS oosvar ? assign RHS full-srec
|
||||
- assign LHS oosvar ? assign RHS full-oosvar
|
||||
k assign LHS oosvar ? assign RHS oosvar
|
||||
|
|
@ -105,21 +105,21 @@ k define LHS map-typed-localvar ? assign RHS maplit
|
|||
k define LHS map-typed-localvar ? assign RHS full-srec
|
||||
k define LHS map-typed-localvar ? assign RHS full-oosvar
|
||||
k define LHS map-typed-localvar ? assign RHS oosvar
|
||||
- define LHS map-typed-localvar ? assign RHS localvar
|
||||
k define LHS map-typed-localvar ? assign RHS localvar
|
||||
- define LHS map-typed-localvar ? assign RHS func-retval
|
||||
.
|
||||
- define LHS untyped-localvar ? assign RHS maplit
|
||||
- define LHS untyped-localvar ? assign RHS full-srec
|
||||
- define LHS untyped-localvar ? assign RHS full-oosvar
|
||||
- define LHS untyped-localvar ? assign RHS oosvar
|
||||
- define LHS untyped-localvar ? assign RHS localvar
|
||||
k define LHS untyped-localvar ? assign RHS maplit
|
||||
k define LHS untyped-localvar ? assign RHS full-srec
|
||||
k define LHS untyped-localvar ? assign RHS full-oosvar
|
||||
k define LHS untyped-localvar ? assign RHS oosvar
|
||||
k define LHS untyped-localvar ? assign RHS localvar
|
||||
- define LHS untyped-localvar ? assign RHS func-retval
|
||||
.
|
||||
- assign LHS localvar ? assign RHS maplit
|
||||
- assign LHS localvar ? assign RHS full-srec
|
||||
- assign LHS localvar ? assign RHS full-oosvar
|
||||
- assign LHS localvar ? assign RHS oosvar
|
||||
- assign LHS localvar ? assign RHS localvar
|
||||
k assign LHS localvar ? assign RHS maplit
|
||||
k assign LHS localvar ? assign RHS full-srec
|
||||
k assign LHS localvar ? assign RHS full-oosvar
|
||||
k assign LHS localvar ? assign RHS oosvar
|
||||
k assign LHS localvar ? assign RHS localvar
|
||||
- assign LHS localvar ? assign RHS func-retval
|
||||
|
||||
new:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue