print-redirect iterate

This commit is contained in:
John Kerl 2016-07-07 23:43:14 -04:00
parent 242faae17a
commit fdceefb3fe
4 changed files with 20 additions and 32 deletions

View file

@ -178,13 +178,11 @@ char* mlr_dsl_ast_node_describe_type(mlr_dsl_ast_node_type_t type) {
case MD_AST_NODE_TYPE_DUMP_APPEND: return "dump_append"; break;
case MD_AST_NODE_TYPE_EDUMP: return "edump"; break;
case MD_AST_NODE_TYPE_PRINT: return "print"; break;
case MD_AST_NODE_TYPE_FPRINT: return "fprint"; break;
case MD_AST_NODE_TYPE_FPRINT_WRITE: return "fprint_write"; break;
case MD_AST_NODE_TYPE_FPRINT_APPEND: return "fprint_append"; break;
case MD_AST_NODE_TYPE_PRINT_WRITE: return "print_write"; break;
case MD_AST_NODE_TYPE_PRINT_APPEND: return "print_append"; break;
case MD_AST_NODE_TYPE_PRINTN: return "printn"; break;
case MD_AST_NODE_TYPE_FPRINTN: return "fprintn"; break;
case MD_AST_NODE_TYPE_FPRINTN_WRITE: return "fprintn_write"; break;
case MD_AST_NODE_TYPE_FPRINTN_APPEND: return "fprintn_append"; break;
case MD_AST_NODE_TYPE_PRINTN_WRITE: return "printn_write"; break;
case MD_AST_NODE_TYPE_PRINTN_APPEND: return "printn_append"; break;
case MD_AST_NODE_TYPE_EPRINT: return "eprint"; break;
case MD_AST_NODE_TYPE_EPRINTN: return "eprintn"; break;
case MD_AST_NODE_TYPE_ALL: return "all"; break;

View file

@ -43,13 +43,11 @@ typedef enum _mlr_dsl_ast_node_type_t {
MD_AST_NODE_TYPE_DUMP_APPEND,
MD_AST_NODE_TYPE_EDUMP,
MD_AST_NODE_TYPE_PRINT,
MD_AST_NODE_TYPE_FPRINT,
MD_AST_NODE_TYPE_FPRINT_WRITE,
MD_AST_NODE_TYPE_FPRINT_APPEND,
MD_AST_NODE_TYPE_PRINT_WRITE,
MD_AST_NODE_TYPE_PRINT_APPEND,
MD_AST_NODE_TYPE_PRINTN,
MD_AST_NODE_TYPE_FPRINTN,
MD_AST_NODE_TYPE_FPRINTN_WRITE,
MD_AST_NODE_TYPE_FPRINTN_APPEND,
MD_AST_NODE_TYPE_PRINTN_WRITE,
MD_AST_NODE_TYPE_PRINTN_APPEND,
MD_AST_NODE_TYPE_EPRINT,
MD_AST_NODE_TYPE_EPRINTN,
MD_AST_NODE_TYPE_ALL,

View file

@ -75,14 +75,6 @@
*yyextra = mlr_dsl_ast_node_alloc(yytext, MD_AST_NODE_TYPE_EPRINTN);
return MD_TOKEN_EPRINTN;
}
"fprint" {
*yyextra = mlr_dsl_ast_node_alloc(yytext, MD_AST_NODE_TYPE_FPRINT);
return MD_TOKEN_FPRINT;
}
"fprintn" {
*yyextra = mlr_dsl_ast_node_alloc(yytext, MD_AST_NODE_TYPE_FPRINTN);
return MD_TOKEN_FPRINTN;
}
"begin" {
*yyextra = mlr_dsl_ast_node_alloc(yytext, MD_AST_NODE_TYPE_STRIPPED_AWAY);
return MD_TOKEN_BEGIN;

View file

@ -149,12 +149,12 @@ md_statement_not_braced_end ::= md_dump_append.
md_statement_not_braced_end ::= md_edump.
md_statement_not_braced_end ::= md_print.
md_statement_not_braced_end ::= md_eprint.
md_statement_not_braced_end ::= md_fprint_write.
md_statement_not_braced_end ::= md_fprint_append.
md_statement_not_braced_end ::= md_print_write.
md_statement_not_braced_end ::= md_print_append.
md_statement_not_braced_end ::= md_printn.
md_statement_not_braced_end ::= md_eprintn.
md_statement_not_braced_end ::= md_fprintn_write.
md_statement_not_braced_end ::= md_fprintn_append.
md_statement_not_braced_end ::= md_printn_write.
md_statement_not_braced_end ::= md_printn_append.
// Valid only within for/while, but we accept them here syntactically and reject them in the AST-to-CST
// conversion, where we can produce much more informative error messages:
@ -736,11 +736,11 @@ md_print(A) ::= MD_TOKEN_PRINT(O) md_rhs(B). {
md_eprint(A) ::= MD_TOKEN_EPRINT(O) md_rhs(B). {
A = mlr_dsl_ast_node_alloc_unary(O->text, MD_AST_NODE_TYPE_EPRINT, B);
}
md_fprint_write(A) ::= MD_TOKEN_FPRINT(O) MD_TOKEN_GT md_rhs(B) MD_TOKEN_COMMA md_rhs(C). {
A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_FPRINT_WRITE, B, C);
md_print_write(A) ::= MD_TOKEN_PRINT(O) MD_TOKEN_GT md_rhs(B) MD_TOKEN_COMMA md_rhs(C). {
A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_PRINT_WRITE, B, C);
}
md_fprint_append(A) ::= MD_TOKEN_FPRINT(O) MD_TOKEN_BITWISE_RSH MD_TOKEN_COMMA md_rhs(B) md_rhs(C). {
A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_FPRINT_APPEND, B, C);
md_print_append(A) ::= MD_TOKEN_PRINT(O) MD_TOKEN_BITWISE_RSH md_rhs(B) MD_TOKEN_COMMA md_rhs(C). {
A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_PRINT_APPEND, B, C);
}
md_printn(A) ::= MD_TOKEN_PRINTN(O) md_rhs(B). {
@ -749,11 +749,11 @@ md_printn(A) ::= MD_TOKEN_PRINTN(O) md_rhs(B). {
md_eprintn(A) ::= MD_TOKEN_EPRINTN(O) md_rhs(B). {
A = mlr_dsl_ast_node_alloc_unary(O->text, MD_AST_NODE_TYPE_EPRINTN, B);
}
md_fprintn_write(A) ::= MD_TOKEN_FPRINTN(O) MD_TOKEN_GT md_rhs(B) MD_TOKEN_COMMA md_rhs(C). {
A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_FPRINTN_WRITE, B, C);
md_printn_write(A) ::= MD_TOKEN_PRINTN(O) MD_TOKEN_GT md_rhs(B) MD_TOKEN_COMMA md_rhs(C). {
A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_PRINTN_WRITE, B, C);
}
md_fprintn_append(A) ::= MD_TOKEN_FPRINTN(O) MD_TOKEN_BITWISE_RSH md_rhs(B) MD_TOKEN_COMMA md_rhs(C). {
A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_FPRINTN_APPEND, B, C);
md_printn_append(A) ::= MD_TOKEN_PRINTN(O) MD_TOKEN_BITWISE_RSH md_rhs(B) MD_TOKEN_COMMA md_rhs(C). {
A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_PRINTN_APPEND, B, C);
}
// ================================================================