From 78d0313fcdbb79182e3af76da0cc7cb4dbcfb5c4 Mon Sep 17 00:00:00 2001 From: John Kerl Date: Wed, 15 Jun 2016 21:48:48 -0400 Subject: [PATCH] lashed-emit iterate --- c/dsls/mlr_dsl_parse.y | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/c/dsls/mlr_dsl_parse.y b/c/dsls/mlr_dsl_parse.y index 4b1133b35..a242e69a1 100644 --- a/c/dsls/mlr_dsl_parse.y +++ b/c/dsls/mlr_dsl_parse.y @@ -658,15 +658,15 @@ md_emit_namelist(A) ::= md_emit_namelist(B) MD_TOKEN_COMMA md_rhs(C). { } // ---------------------------------------------------------------- -// xxx iterate md_emitp_lashed(A) ::= MD_TOKEN_EMITP(O) MD_TOKEN_LPAREN md_emitp_lashed_keylists(B) MD_TOKEN_RPAREN. { A = mlr_dsl_ast_node_alloc_unary(O->text, MD_AST_NODE_TYPE_EMITP_LASHED, B); } + md_emitp_lashed(A) ::= MD_TOKEN_EMITP(O) MD_TOKEN_LPAREN md_emitp_lashed_keylists(B) MD_TOKEN_RPAREN - MD_TOKEN_COMMA md_emitp_namelist(C). + MD_TOKEN_COMMA md_emitp_lashed_namelist(C). { B = mlr_dsl_ast_node_prepend_arg(C, B); A = mlr_dsl_ast_node_set_function_name(B, O->text); @@ -680,15 +680,23 @@ md_emitp_lashed_keylists(A) ::= md_emitp_lashed_keylists(B) MD_TOKEN_COMMA md_oo A = mlr_dsl_ast_node_append_arg(B, C); } +md_emitp_lashed_namelist(A) ::= md_rhs(B). { + A = mlr_dsl_ast_node_alloc_unary("temp", MD_AST_NODE_TYPE_EMITP_LASHED, B); +} +md_emitp_lashed_namelist(A) ::= md_emitp_namelist(B) MD_TOKEN_COMMA md_rhs(C). { + A = mlr_dsl_ast_node_append_arg(B, C); +} + // ---------------------------------------------------------------- md_emit_lashed(A) ::= MD_TOKEN_EMIT(O) MD_TOKEN_LPAREN md_emit_lashed_keylists(B) MD_TOKEN_RPAREN. { A = mlr_dsl_ast_node_alloc_unary(O->text, MD_AST_NODE_TYPE_EMIT_LASHED, B); } + md_emit_lashed(A) ::= MD_TOKEN_EMIT(O) MD_TOKEN_LPAREN md_emit_lashed_keylists(B) MD_TOKEN_RPAREN - MD_TOKEN_COMMA md_emit_namelist(C). + MD_TOKEN_COMMA md_emit_lashed_namelist(C). { B = mlr_dsl_ast_node_prepend_arg(C, B); A = mlr_dsl_ast_node_set_function_name(B, O->text); @@ -701,6 +709,13 @@ md_emit_lashed_keylists(A) ::= md_emit_lashed_keylists(B) MD_TOKEN_COMMA md_oosv A = mlr_dsl_ast_node_append_arg(B, C); } +md_emit_lashed_namelist(A) ::= md_rhs(B). { + A = mlr_dsl_ast_node_alloc_unary("temp", MD_AST_NODE_TYPE_EMIT_LASHED, B); +} +md_emit_lashed_namelist(A) ::= md_emit_namelist(B) MD_TOKEN_COMMA md_rhs(C). { + A = mlr_dsl_ast_node_append_arg(B, C); +} + // ---------------------------------------------------------------- md_dump(A) ::= MD_TOKEN_DUMP(O). { A = mlr_dsl_ast_node_alloc_zary(O->text, MD_AST_NODE_TYPE_DUMP);