mirror of
https://github.com/johnkerl/miller.git
synced 2026-07-17 16:38:54 +00:00
corner-case bug fixes for put, filter, step
This commit is contained in:
parent
7df98c19a2
commit
194998f397
5 changed files with 17 additions and 5 deletions
|
|
@ -78,7 +78,7 @@
|
|||
return FILTER_DSL_NOT;
|
||||
}
|
||||
|
||||
\$[a-zA-Z_0-9]* {
|
||||
\$[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.
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_FIELD_NAME);
|
||||
|
|
@ -125,7 +125,7 @@
|
|||
return FILTER_DSL_RPAREN;
|
||||
}
|
||||
|
||||
[a-zA-Z_][a-zA-Z_0-9]* {
|
||||
[a-zA-Z_][a-zA-Z_0-9]+ {
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_FUNCTION_NAME);
|
||||
return FILTER_DSL_FCN_NAME;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@
|
|||
%option extra-type="struct _mlr_dsl_ast_node_t **"
|
||||
|
||||
%%
|
||||
\$[a-zA-Z_0-9]* {
|
||||
\$[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.
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_FIELD_NAME);
|
||||
|
|
@ -43,7 +43,7 @@
|
|||
return PUT_DSL_CONTEXT_VARIABLE;
|
||||
}
|
||||
|
||||
[a-zA-Z_][a-zA-Z_0-9]* {
|
||||
[a-zA-Z_][a-zA-Z_0-9]+ {
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_FUNCTION_NAME);
|
||||
return PUT_DSL_FCN_NAME;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -80,6 +80,10 @@ mapper_t* mapper_filter_parse_cli(int* pargi, int argc, char** argv) {
|
|||
mlr_dsl_expression = argv[(*pargi)++];
|
||||
|
||||
mlr_dsl_ast_node_holder_t* past = filter_dsl_parse(mlr_dsl_expression);
|
||||
if (past == NULL) {
|
||||
mapper_filter_usage(argv[0], verb);
|
||||
return NULL;
|
||||
}
|
||||
if (print_asts) {
|
||||
mlr_dsl_ast_node_print(past->proot);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -115,6 +115,10 @@ mapper_t* mapper_put_parse_cli(int* pargi, int argc, char** argv) {
|
|||
|
||||
// Linked list of mlr_dsl_ast_node_t*.
|
||||
sllv_t* pasts = put_dsl_parse(mlr_dsl_expression);
|
||||
if (pasts == NULL) {
|
||||
mapper_put_usage(argv[0], verb);
|
||||
return NULL;
|
||||
}
|
||||
if (print_asts) {
|
||||
for (sllve_t* pe = pasts->phead; pe != NULL; pe = pe->pnext)
|
||||
mlr_dsl_ast_node_print(pe->pvdata);
|
||||
|
|
|
|||
|
|
@ -208,7 +208,11 @@ sllv_t* mapper_step_func(lrec_t* pinrec, context_t* pctx, void* pvstate) {
|
|||
step_t* pstep = lhmsv_get(pmaps_level_3, step_name);
|
||||
if (pstep == NULL) {
|
||||
pstep = make_step(step_name, value_field_name, &pctx->statx);
|
||||
// xxx fix me when lookup is null; and/or check at ctor time
|
||||
if (pstep == NULL) {
|
||||
fprintf(stderr, "mlr step: stepper \"%s\" not found.\n",
|
||||
step_name);
|
||||
exit(1);
|
||||
}
|
||||
lhmsv_put(pmaps_level_3, step_name, pstep);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue