mapvar iterate

This commit is contained in:
John Kerl 2016-10-27 19:19:31 -04:00
parent b347bc68f5
commit ee3e2077ff
5 changed files with 12 additions and 4 deletions

View file

@ -426,6 +426,10 @@
return MD_TOKEN_REGEXI;
}
"map" {
*yyextra = mlr_dsl_ast_node_alloc(yytext, MD_AST_NODE_TYPE_STRIPPED_AWAY);
return MD_TOKEN_MAP;
}
"var" {
*yyextra = mlr_dsl_ast_node_alloc(yytext, MD_AST_NODE_TYPE_STRIPPED_AWAY);
return MD_TOKEN_VAR;

View file

@ -119,6 +119,7 @@ md_statement_not_braced_end(A) ::= md_int_local_definition(B). { A = B; }
md_statement_not_braced_end(A) ::= md_float_local_definition(B). { A = B; }
md_statement_not_braced_end(A) ::= md_boolean_local_definition(B). { A = B; }
md_statement_not_braced_end(A) ::= md_string_local_definition(B). { A = B; }
md_statement_not_braced_end(A) ::= md_map_local_declaration(B). { A = B; }
md_statement_not_braced_end(A) ::= md_local_assignment(B). { A = B; }
// For user-defined functions
@ -653,6 +654,9 @@ md_boolean_local_definition(A) ::= MD_TOKEN_BOOLEAN md_local_variable(N) MD_TOKE
md_string_local_definition(A) ::= MD_TOKEN_STRING md_local_variable(N) MD_TOKEN_ASSIGN md_rhs(B). {
A = mlr_dsl_ast_node_alloc_binary("local", MD_AST_NODE_TYPE_STRING_LOCAL_DEFINITION, N, B);
}
md_map_local_declaration(A) ::= MD_TOKEN_MAP md_local_variable(N). {
A = mlr_dsl_ast_node_alloc_unary("local", MD_AST_NODE_TYPE_MAP_LOCAL_DECLARATION, N);
}
md_local_assignment(A) ::= md_local_variable(B) MD_TOKEN_ASSIGN(O) md_rhs(C). {
A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_LOCAL_ASSIGNMENT, B, C);

View file

@ -244,6 +244,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_DECLARATION: return "MAP_LOCAL_DECLARATION"; 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;
@ -255,7 +256,7 @@ char* mlr_dsl_ast_node_describe_type(mlr_dsl_ast_node_type_t type) {
case MD_AST_NODE_TYPE_BEGIN: return "BEGIN"; break;
case MD_AST_NODE_TYPE_END: return "END"; break;
case MD_AST_NODE_TYPE_STRING_LITERAL: return "STRING_LITERAL"; break;
case MD_AST_NODE_TYPE_NUMERIC_LITERAL: return "NUMERIC_LITERAL"; break;
case MD_AST_NODE_TYPE_NUMERIC_LITERAL: return "NUMERIC_LITERAL"; break;
case MD_AST_NODE_TYPE_BOOLEAN_LITERAL: return "BOOLEAN_LITERAL"; break;
case MD_AST_NODE_TYPE_REGEXI: return "REGEXI"; break;
case MD_AST_NODE_TYPE_FIELD_NAME: return "FIELD_NAME"; break;

View file

@ -20,6 +20,7 @@ typedef enum _mlr_dsl_ast_node_type_t {
MD_AST_NODE_TYPE_FLOAT_LOCAL_DEFINITION,
MD_AST_NODE_TYPE_BOOLEAN_LOCAL_DEFINITION,
MD_AST_NODE_TYPE_STRING_LOCAL_DEFINITION,
MD_AST_NODE_TYPE_MAP_LOCAL_DECLARATION,
MD_AST_NODE_TYPE_UNTYPED_PARAMETER_DEFINITION,
MD_AST_NODE_TYPE_NUMERIC_PARAMETER_DEFINITION,
MD_AST_NODE_TYPE_INT_PARAMETER_DEFINITION,

View file

@ -41,9 +41,7 @@ MAPVARS:
- function return value
? for-oosvar map-valued boundvars?!?
? for-local -- with keylist etc.?
- for-local -- with keylist etc. just as for oosvars
* needs assert_not_map