From 67e46bbda9ca0515f016813eacc7fc07785d043e Mon Sep 17 00:00:00 2001 From: John Kerl Date: Sun, 6 Mar 2016 16:31:33 -0500 Subject: [PATCH] indexed-emit iterate --- c/dsls/mlr_dsl_parse.y | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/c/dsls/mlr_dsl_parse.y b/c/dsls/mlr_dsl_parse.y index 26fdebd25..93c1297a0 100644 --- a/c/dsls/mlr_dsl_parse.y +++ b/c/dsls/mlr_dsl_parse.y @@ -526,9 +526,11 @@ md_emitf_args(A) ::= md_emitf_args(B) MD_TOKEN_COMMA md_oosvar_name(C). { A = mlr_dsl_ast_node_append_arg(B, C); } +// ---------------------------------------------------------------- md_emit(A) ::= MD_TOKEN_EMIT(O) MD_TOKEN_ALL(B). { A = mlr_dsl_ast_node_alloc_unary(O->text, MD_AST_NODE_TYPE_EMIT, B); } + md_emit(A) ::= MD_TOKEN_EMIT(O) md_oosvar_name(B). { A = mlr_dsl_ast_node_alloc_unary(O->text, MD_AST_NODE_TYPE_EMIT, B); } @@ -537,6 +539,14 @@ md_emit(A) ::= MD_TOKEN_EMIT(O) md_oosvar_name(B) MD_TOKEN_COMMA md_emit_args(C) A = mlr_dsl_ast_node_set_function_name(B, O->text); } +md_emit(A) ::= MD_TOKEN_EMIT(O) md_keyed_oosvar_name(B). { + A = mlr_dsl_ast_node_alloc_unary(O->text, MD_AST_NODE_TYPE_EMIT, B); +} +md_emit(A) ::= MD_TOKEN_EMIT(O) md_keyed_oosvar_name(B) MD_TOKEN_COMMA md_emit_args(C). { + B = mlr_dsl_ast_node_prepend_arg(C, B); + A = mlr_dsl_ast_node_set_function_name(B, O->text); +} + md_emit_args(A) ::= md_rhs(B). { A = mlr_dsl_ast_node_alloc_unary("temp", MD_AST_NODE_TYPE_EMIT, B); }