mirror of
https://github.com/johnkerl/miller.git
synced 2026-07-25 08:53:55 +00:00
$$0 iterate
This commit is contained in:
parent
016b1628b8
commit
3137cb9c70
5 changed files with 38 additions and 1 deletions
|
|
@ -151,12 +151,15 @@ char* mlr_dsl_ast_node_describe_type(mlr_dsl_ast_node_type_t type) {
|
|||
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;
|
||||
case MD_AST_NODE_TYPE_FULL_SREC: return "full_srec"; break;
|
||||
case MD_AST_NODE_TYPE_OOSVAR_NAME: return "oosvar_name"; break;
|
||||
case MD_AST_NODE_TYPE_OOSVAR_LEVEL_KEY: return "oosvar_level_key"; break;
|
||||
case MD_AST_NODE_TYPE_FUNCTION_NAME: return "function_name"; break;
|
||||
case MD_AST_NODE_TYPE_OPERATOR: return "operator"; break;
|
||||
case MD_AST_NODE_TYPE_SREC_ASSIGNMENT: return "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_CONTEXT_VARIABLE: return "context_variable"; break;
|
||||
case MD_AST_NODE_TYPE_STRIPPED_AWAY: return "stripped_away"; break;
|
||||
case MD_AST_NODE_TYPE_CONDITIONAL_BLOCK: return "conditional_block"; break;
|
||||
|
|
|
|||
|
|
@ -12,12 +12,15 @@ typedef enum _mlr_dsl_ast_node_type_t {
|
|||
MD_AST_NODE_TYPE_BOOLEAN_LITERAL,
|
||||
MD_AST_NODE_TYPE_REGEXI,
|
||||
MD_AST_NODE_TYPE_FIELD_NAME,
|
||||
MD_AST_NODE_TYPE_FULL_SREC,
|
||||
MD_AST_NODE_TYPE_OOSVAR_NAME,
|
||||
MD_AST_NODE_TYPE_OOSVAR_LEVEL_KEY,
|
||||
MD_AST_NODE_TYPE_FUNCTION_NAME,
|
||||
MD_AST_NODE_TYPE_OPERATOR,
|
||||
MD_AST_NODE_TYPE_SREC_ASSIGNMENT,
|
||||
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_CONTEXT_VARIABLE,
|
||||
MD_AST_NODE_TYPE_ENV,
|
||||
MD_AST_NODE_TYPE_STRIPPED_AWAY,
|
||||
|
|
|
|||
|
|
@ -252,6 +252,11 @@
|
|||
return MD_TOKEN_POW_EQUALS;
|
||||
}
|
||||
|
||||
\$\$0 {
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MD_AST_NODE_TYPE_FULL_SREC);
|
||||
return MD_TOKEN_FULL_SREC;
|
||||
}
|
||||
|
||||
\$[a-zA-Z_0-9]+ {
|
||||
// Note: the parser depends on the dollar sign being here. If this is changed,
|
||||
// that needs to be changed as well.
|
||||
|
|
|
|||
|
|
@ -47,6 +47,8 @@ md_statement ::= .
|
|||
|
||||
md_statement ::= md_main_srec_assignment.
|
||||
md_statement ::= md_main_oosvar_assignment.
|
||||
md_statement ::= md_main_oosvar_from_full_srec_assignment.
|
||||
md_statement ::= md_main_full_srec_from_oosvar_assignment.
|
||||
md_statement ::= md_main_bare_boolean.
|
||||
md_statement ::= md_main_filter.
|
||||
md_statement ::= md_main_unset.
|
||||
|
|
@ -133,6 +135,15 @@ md_main_oosvar_assignment(A) ::= md_oosvar_assignment(B). {
|
|||
A = B;
|
||||
sllv_append(past->pmain_statements, A);
|
||||
}
|
||||
md_main_oosvar_from_full_srec_assignment(A) ::= md_oosvar_from_full_srec_assignment(B). {
|
||||
A = B;
|
||||
sllv_append(past->pmain_statements, A);
|
||||
}
|
||||
md_main_full_srec_from_oosvar_assignment(A) ::= md_full_srec_from_oosvar_assignment(B). {
|
||||
A = B;
|
||||
sllv_append(past->pmain_statements, A);
|
||||
}
|
||||
|
||||
md_main_bare_boolean(A) ::= md_rhs(B). {
|
||||
A = B;
|
||||
sllv_append(past->pmain_statements, A);
|
||||
|
|
@ -250,6 +261,20 @@ md_oosvar_assignment(A) ::= md_keyed_oosvar_name(B) MD_TOKEN_ASSIGN(O) md_rhs(C
|
|||
A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_OOSVAR_ASSIGNMENT, B, C);
|
||||
}
|
||||
|
||||
md_oosvar_from_full_srec_assignment(A) ::= md_oosvar_name(B) MD_TOKEN_ASSIGN(O) MD_TOKEN_FULL_SREC(C). {
|
||||
A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_OOSVAR_FROM_FULL_SREC_ASSIGNMENT, B, C);
|
||||
}
|
||||
md_oosvar_from_full_srec_assignment(A) ::= md_keyed_oosvar_name(B) MD_TOKEN_ASSIGN(O) MD_TOKEN_FULL_SREC(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_oosvar_assignment(A) ::= MD_TOKEN_FULL_SREC(B) MD_TOKEN_ASSIGN(O) md_oosvar_name(C). {
|
||||
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_keyed_oosvar_name(C). {
|
||||
A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_FULL_SREC_FROM_OOSVAR_ASSIGNMENT, B, C);
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
md_srec_assignment(A) ::= md_field_name(B) MD_TOKEN_LOGICAL_OR_EQUALS md_rhs(C). {
|
||||
A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_SREC_ASSIGNMENT, B,
|
||||
|
|
|
|||
|
|
@ -8,7 +8,6 @@ TOP-OF-LIST SUMMARY
|
|||
|
||||
* rh/fedora/centos mlr-3.4.0
|
||||
|
||||
! sllmv_add w/ free-flags
|
||||
* neaten/xxxes/valgrind/UT/doc for unset/tri-split-null/+=etal/parameterized emit
|
||||
* double-check oosvar+emit+tri-split-null by re-implementing as many mappers as possible using ossvars + emit
|
||||
|
||||
|
|
@ -66,6 +65,8 @@ PARAMETERIZED EMIT AND UNSET
|
|||
|
||||
* rename emit restkeys to pullforwardkeys or some such
|
||||
|
||||
* cli-parameterize the joinchar (:)
|
||||
|
||||
================================================================
|
||||
TRI-SPLIT NULL, AND += ET AL.
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue