diff --git a/c/Makefile.am b/c/Makefile.am index 10bcfacbb..54f9bfada 100644 --- a/c/Makefile.am +++ b/c/Makefile.am @@ -16,7 +16,7 @@ mlr_LDADD= \ mapping/libmapping.la \ output/liboutput.la \ lib/libmlr.la \ - dsls/libpdsl.la \ + dsls/libdsl.la \ -lm # Other executable variants diff --git a/c/Makefile.no-autoconfig b/c/Makefile.no-autoconfig index 5fe4713a3..a7342ea85 100644 --- a/c/Makefile.no-autoconfig +++ b/c/Makefile.no-autoconfig @@ -30,7 +30,7 @@ CCOPT=$(CC) $(CFLAGS) $(IFLAGS) $(WFLAGS) -O3 CCDEBUG=$(CC) -g $(CFLAGS) $(IFLAGS) $(WFLAGS) # ---------------------------------------------------------------- -# Miller source except put-DSL +# Miller source except DSL NON_DSL_SRCS = \ *.c \ cli/*.c \ @@ -41,11 +41,11 @@ NON_DSL_SRCS = \ mapping/*.c \ output/*.c -# put-DSL -PDSL_OBJS = \ - ./dsls/put_dsl_parse.o \ - ./dsls/put_dsl_lexer.o \ - ./dsls/put_dsl_wrapper.o +# DSL +DSL_OBJS = \ + ./dsls/mlr_dsl_parse.o \ + ./dsls/mlr_dsl_lexer.o \ + ./dsls/mlr_dsl_wrapper.o # Unit-test code TEST_ARGPARSE_SRCS = \ @@ -193,21 +193,21 @@ tags: .always ctags -R . mlr: .always dsls - $(CCOPT) $(NON_DSL_SRCS) $(PDSL_OBJS) $(LFLAGS) -o mlr + $(CCOPT) $(NON_DSL_SRCS) $(DSL_OBJS) $(LFLAGS) -o mlr mlr.static: .always dsls - $(CCOPT) -static $(NON_DSL_SRCS) $(PDSL_OBJS) $(LFLAGS) -o mlr.static + $(CCOPT) -static $(NON_DSL_SRCS) $(DSL_OBJS) $(LFLAGS) -o mlr.static dsls: .always - make -C dsls -f Makefile.no-autoconfig put_dsl_parse.o - make -C dsls -f Makefile.no-autoconfig put_dsl_lexer.o - make -C dsls -f Makefile.no-autoconfig put_dsl_wrapper.o + make -C dsls -f Makefile.no-autoconfig mlr_dsl_parse.o + make -C dsls -f Makefile.no-autoconfig mlr_dsl_lexer.o + make -C dsls -f Makefile.no-autoconfig mlr_dsl_wrapper.o # ---------------------------------------------------------------- # Other executable variants # Debug version mlrg: .always dsls - $(CCDEBUG) $(NON_DSL_SRCS) $(PDSL_OBJS) $(LFLAGS) -o mlrg + $(CCDEBUG) $(NON_DSL_SRCS) $(DSL_OBJS) $(LFLAGS) -o mlrg # Profile version. Usage: # * make mlrp @@ -215,7 +215,7 @@ mlrg: .always dsls # * gprof mlrp gmon.out > myfile.txt # Note: works on Linux; not on OSX. mlrp: .always dsls - $(CCDEBUG) -g -pg $(NON_DSL_SRCS) $(PDSL_OBJS) $(LFLAGS) -o mlrp + $(CCDEBUG) -g -pg $(NON_DSL_SRCS) $(DSL_OBJS) $(LFLAGS) -o mlrp # ================================================================ tests: unit-test reg-test diff --git a/c/containers/mlr_dsl_ast.h b/c/containers/mlr_dsl_ast.h index e455c2419..74f732e07 100644 --- a/c/containers/mlr_dsl_ast.h +++ b/c/containers/mlr_dsl_ast.h @@ -35,7 +35,7 @@ mlr_dsl_ast_node_t* mlr_dsl_ast_node_alloc_binary(char* text, int type, mlr_dsl_ast_node_t* mlr_dsl_ast_node_alloc_ternary(char* text, int type, mlr_dsl_ast_node_t* pa, mlr_dsl_ast_node_t* pb, mlr_dsl_ast_node_t* pc); -// See comments in put_dsl_parse.y for this seemingly awkward syntax wherein +// See comments in mlr_dsl_parse.y for this seemingly awkward syntax wherein // we change the function name after having set it up. This is a consequence of // bottom-up DSL parsing. mlr_dsl_ast_node_t* mlr_dsl_ast_node_append_arg( diff --git a/c/containers/mlrval.h b/c/containers/mlrval.h index c6b6d76cd..03291f97b 100644 --- a/c/containers/mlrval.h +++ b/c/containers/mlrval.h @@ -21,7 +21,7 @@ // have their ownership transferred to the output mlrval. // // This is because the primary purpose of mlrvals is for evaluation of abstract -// syntax trees defined by the DSLs for put and filter. Example AST: +// syntax trees defined by the DSL for put and filter. Example AST: // // $ mlr put -v '$z = $x . $y . "sum"' /dev/null // = (operator): @@ -353,7 +353,7 @@ mv_t does_not_match_no_precomp_func(mv_t* pval1, mv_t* pval2); mv_t matches_precomp_func(mv_t* pval1, regex_t* pregex, string_builder_t* psb); mv_t does_not_match_precomp_func(mv_t* pval1, regex_t* pregex, string_builder_t* psb); -// For filter/put DSLs: +// For filter/put DSL: mv_t eq_op_func(mv_t* pval1, mv_t* pval2); mv_t ne_op_func(mv_t* pval1, mv_t* pval2); mv_t gt_op_func(mv_t* pval1, mv_t* pval2); diff --git a/c/dsls/Makefile.am b/c/dsls/Makefile.am index 5354041f2..f858b7057 100644 --- a/c/dsls/Makefile.am +++ b/c/dsls/Makefile.am @@ -4,36 +4,36 @@ AM_CFLAGS= -std=gnu99 noinst_PROGRAMS= lemon lemon_SOURCES= lemon.c -noinst_LTLIBRARIES= libpdsl.la +noinst_LTLIBRARIES= libdsl.la # if we don't want to distribute the generated sources, move them to a nodist_libfoo_la_SOURCES variable -libpdsl_la_SOURCES= put_dsl_lexer.c put_dsl_lexer.h put_dsl_parse.c put_dsl_parse.h put_dsl_wrapper.c put_dsl_wrapper.h -CLEANFILES= put_dsl_lexer.c put_dsl_lexer.h put_dsl_parse.c put_dsl_parse.h put_dsl_parse.out -EXTRA_DIST= lempar.c put_dsl_lexer.l put_dsl_parse.y +libdsl_la_SOURCES= mlr_dsl_lexer.c mlr_dsl_lexer.h mlr_dsl_parse.c mlr_dsl_parse.h mlr_dsl_wrapper.c mlr_dsl_wrapper.h +CLEANFILES= mlr_dsl_lexer.c mlr_dsl_lexer.h mlr_dsl_parse.c mlr_dsl_parse.h mlr_dsl_parse.out +EXTRA_DIST= lempar.c mlr_dsl_lexer.l mlr_dsl_parse.y -put_dsl_wrapper.c: put_dsl_lexer.h -put_dsl_parse.h: put_dsl_parse.c -put_dsl_parse.c: put_dsl_parse.y lempar.c lemon - ./lemon put_dsl_parse.y +mlr_dsl_wrapper.c: mlr_dsl_lexer.h +mlr_dsl_parse.h: mlr_dsl_parse.c +mlr_dsl_parse.c: mlr_dsl_parse.y lempar.c lemon + ./lemon mlr_dsl_parse.y # lemon does not re-generate the file if it exists and is the same # this causes problems with the dependency above - touch put_dsl_parse.h - mv put_dsl_parse.c put_dsl_parse.c.tmp + touch mlr_dsl_parse.h + mv mlr_dsl_parse.c mlr_dsl_parse.c.tmp sed \ - -e 's/ParseTrace/put_dsl_ParseTrace/g' \ - -e 's/ParseTokenName/put_dsl_ParseTokenName/g' \ - -e 's/lemon_parser_alloc/put_dsl_lemon_parser_alloc/g' \ - -e 's/lemon_parser_free/put_dsl_lemon_parser_free/g' \ - -e 's/lemon_parser_parse_token/put_dsl_lemon_parser_parse_token/g' \ - -e 's/yy_destructor/put_dsl_yy_destructor/g' \ - put_dsl_parse.c.tmp > put_dsl_parse.c - rm -f put_dsl_parse.c.tmp + -e 's/ParseTrace/mlr_dsl_ParseTrace/g' \ + -e 's/ParseTokenName/mlr_dsl_ParseTokenName/g' \ + -e 's/lemon_parser_alloc/mlr_dsl_lemon_parser_alloc/g' \ + -e 's/lemon_parser_free/mlr_dsl_lemon_parser_free/g' \ + -e 's/lemon_parser_parse_token/mlr_dsl_lemon_parser_parse_token/g' \ + -e 's/yy_destructor/mlr_dsl_yy_destructor/g' \ + mlr_dsl_parse.c.tmp > mlr_dsl_parse.c + rm -f mlr_dsl_parse.c.tmp -put_dsl_lexer.h: put_dsl_lexer.c -put_dsl_lexer.c: put_dsl_lexer.l put_dsl_parse.h - flex --prefix=put_dsl_lexer_ --outfile=put_dsl_lexer.c --header-file=put_dsl_lexer.h ${srcdir}/put_dsl_lexer.l +mlr_dsl_lexer.h: mlr_dsl_lexer.c +mlr_dsl_lexer.c: mlr_dsl_lexer.l mlr_dsl_parse.h + flex --prefix=mlr_dsl_lexer_ --outfile=mlr_dsl_lexer.c --header-file=mlr_dsl_lexer.h ${srcdir}/mlr_dsl_lexer.l distclean-local: if [ "${srcdir}" != "." ]; then \ - rm -f lempar.c put_dsl_parse.y; \ + rm -f lempar.c mlr_dsl_parse.y; \ fi diff --git a/c/dsls/Makefile.no-autoconfig b/c/dsls/Makefile.no-autoconfig index efa455428..cee1b0493 100644 --- a/c/dsls/Makefile.no-autoconfig +++ b/c/dsls/Makefile.no-autoconfig @@ -11,26 +11,26 @@ CFLAGS=-I.. -O3 #CFLAGS=-I.. -g # ---------------------------------------------------------------- -top: put_dsl_lexer.o put_dsl_parse.o put_dsl_wrapper.o +top: mlr_dsl_lexer.o mlr_dsl_parse.o mlr_dsl_wrapper.o # ---------------------------------------------------------------- -put_dsl_wrapper.o: put_dsl_wrapper.c put_dsl_wrapper.h put_dsl_parse.h - $(CC) -Wall $(CFLAGS) -c -std=gnu99 put_dsl_wrapper.c +mlr_dsl_wrapper.o: mlr_dsl_wrapper.c mlr_dsl_wrapper.h mlr_dsl_parse.h + $(CC) -Wall $(CFLAGS) -c -std=gnu99 mlr_dsl_wrapper.c -put_dsl_parse.o: put_dsl_parse.c put_dsl_parse.h - $(CC) $(CFLAGS) -c -std=gnu99 put_dsl_parse.c -put_dsl_parse.c put_dsl_parse.h: put_dsl_parse.y lemon - ./lemon put_dsl_parse.y - mv put_dsl_parse.c put_dsl_parse.c.tmp +mlr_dsl_parse.o: mlr_dsl_parse.c mlr_dsl_parse.h + $(CC) $(CFLAGS) -c -std=gnu99 mlr_dsl_parse.c +mlr_dsl_parse.c mlr_dsl_parse.h: mlr_dsl_parse.y lemon + ./lemon mlr_dsl_parse.y + mv mlr_dsl_parse.c mlr_dsl_parse.c.tmp sed \ - -e 's/ParseTrace/put_dsl_ParseTrace/g' \ - -e 's/ParseTokenName/put_dsl_ParseTokenName/g' \ - -e 's/lemon_parser_alloc/put_dsl_lemon_parser_alloc/g' \ - -e 's/lemon_parser_free/put_dsl_lemon_parser_free/g' \ - -e 's/lemon_parser_parse_token/put_dsl_lemon_parser_parse_token/g' \ - -e 's/yy_destructor/put_dsl_yy_destructor/g' \ - put_dsl_parse.c.tmp > put_dsl_parse.c - rm -f put_dsl_parse.c.tmp + -e 's/ParseTrace/mlr_dsl_ParseTrace/g' \ + -e 's/ParseTokenName/mlr_dsl_ParseTokenName/g' \ + -e 's/lemon_parser_alloc/mlr_dsl_lemon_parser_alloc/g' \ + -e 's/lemon_parser_free/mlr_dsl_lemon_parser_free/g' \ + -e 's/lemon_parser_parse_token/mlr_dsl_lemon_parser_parse_token/g' \ + -e 's/yy_destructor/mlr_dsl_yy_destructor/g' \ + mlr_dsl_parse.c.tmp > mlr_dsl_parse.c + rm -f mlr_dsl_parse.c.tmp # muldef: # ParseTrace @@ -40,10 +40,10 @@ put_dsl_parse.c put_dsl_parse.h: put_dsl_parse.y lemon # lemon_parser_parse_token # yy_destructor -put_dsl_lexer.o: put_dsl_lexer.c put_dsl_lexer.h put_dsl_parse.h - $(CC) $(CFLAGS) -c -std=gnu99 put_dsl_lexer.c -put_dsl_lexer.c put_dsl_lexer.h: put_dsl_lexer.l - flex --prefix=put_dsl_lexer_ --outfile=put_dsl_lexer.c --header-file=put_dsl_lexer.h put_dsl_lexer.l +mlr_dsl_lexer.o: mlr_dsl_lexer.c mlr_dsl_lexer.h mlr_dsl_parse.h + $(CC) $(CFLAGS) -c -std=gnu99 mlr_dsl_lexer.c +mlr_dsl_lexer.c mlr_dsl_lexer.h: mlr_dsl_lexer.l + flex --prefix=mlr_dsl_lexer_ --outfile=mlr_dsl_lexer.c --header-file=mlr_dsl_lexer.h mlr_dsl_lexer.l # ---------------------------------------------------------------- lemon: lemon.c lempar.c @@ -52,8 +52,8 @@ lemon: lemon.c lempar.c # ---------------------------------------------------------------- clean: rm -f *.o - rm -f put_dsl_parse.c put_dsl_parse.h put_dsl_parse.out - rm -f put_dsl_lexer.c put_dsl_lexer.h + rm -f mlr_dsl_parse.c mlr_dsl_parse.h mlr_dsl_parse.out + rm -f mlr_dsl_lexer.c mlr_dsl_lexer.h rm -f lemon .always: diff --git a/c/dsls/put_dsl_lexer.l b/c/dsls/mlr_dsl_lexer.l similarity index 79% rename from c/dsls/put_dsl_lexer.l rename to c/dsls/mlr_dsl_lexer.l index 4b55337f7..d40cdb052 100644 --- a/c/dsls/put_dsl_lexer.l +++ b/c/dsls/mlr_dsl_lexer.l @@ -1,7 +1,7 @@ %{ #include "stdio.h" // for fileno() prototype #include "string.h" // for strdup() prototype -#include "put_dsl_parse.h" +#include "mlr_dsl_parse.h" #include "../containers/mlr_dsl_ast.h" // http://flex.sourceforge.net/manual/Extra-Data.html %} @@ -13,152 +13,152 @@ %% ";" { *yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_STRIPPED_AWAY); - return PUT_DSL_SEMICOLON; + return MLR_DSL_SEMICOLON; } "=" { *yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR); - return PUT_DSL_ASSIGN; + return MLR_DSL_ASSIGN; } "?" { *yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR); - return PUT_DSL_QUESTION_MARK; + return MLR_DSL_QUESTION_MARK; } ":" { *yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR); - return PUT_DSL_COLON; + return MLR_DSL_COLON; } "||" { *yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR); - return PUT_DSL_LOGICAL_OR; + return MLR_DSL_LOGICAL_OR; } "^^" { *yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR); - return PUT_DSL_LOGICAL_XOR; + return MLR_DSL_LOGICAL_XOR; } "&&" { *yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR); - return PUT_DSL_LOGICAL_AND; + return MLR_DSL_LOGICAL_AND; } "=~" { *yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR); - return PUT_DSL_MATCHES; + return MLR_DSL_MATCHES; } "!=~" { *yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR); - return PUT_DSL_DOES_NOT_MATCH; + return MLR_DSL_DOES_NOT_MATCH; } "==" { *yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR); - return PUT_DSL_EQ; + return MLR_DSL_EQ; } "!=" { *yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR); - return PUT_DSL_NE; + return MLR_DSL_NE; } ">" { *yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR); - return PUT_DSL_GT; + return MLR_DSL_GT; } ">=" { *yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR); - return PUT_DSL_GE; + return MLR_DSL_GE; } "<" { *yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR); - return PUT_DSL_LT; + return MLR_DSL_LT; } "<=" { *yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR); - return PUT_DSL_LE; + return MLR_DSL_LE; } "|" { *yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR); - return PUT_DSL_BITWISE_OR; + return MLR_DSL_BITWISE_OR; } "^" { *yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR); - return PUT_DSL_BITWISE_XOR; + return MLR_DSL_BITWISE_XOR; } "&" { *yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR); - return PUT_DSL_BITWISE_AND; + return MLR_DSL_BITWISE_AND; } "<<" { *yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR); - return PUT_DSL_BITWISE_LSH; + return MLR_DSL_BITWISE_LSH; } ">>" { *yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR); - return PUT_DSL_BITWISE_RSH; + return MLR_DSL_BITWISE_RSH; } "+" { *yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR); - return PUT_DSL_PLUS; + return MLR_DSL_PLUS; } "-" { *yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR); - return PUT_DSL_MINUS; + return MLR_DSL_MINUS; } "\." { *yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR); - return PUT_DSL_DOT; + return MLR_DSL_DOT; } "*" { *yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR); - return PUT_DSL_TIMES; + return MLR_DSL_TIMES; } "/" { *yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR); - return PUT_DSL_DIVIDE; + return MLR_DSL_DIVIDE; } "//" { *yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR); - return PUT_DSL_INT_DIVIDE; + return MLR_DSL_INT_DIVIDE; } "%" { *yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR); - return PUT_DSL_MOD; + return MLR_DSL_MOD; } "!" { *yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR); - return PUT_DSL_LOGICAL_NOT; + return MLR_DSL_LOGICAL_NOT; } "~" { *yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR); - return PUT_DSL_BITWISE_NOT; + return MLR_DSL_BITWISE_NOT; } "**" { *yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR); - return PUT_DSL_POW; + return MLR_DSL_POW; } \$[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); - return PUT_DSL_FIELD_NAME; + return MLR_DSL_FIELD_NAME; } \$\{([^\}]|\\.)*\} { // 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); - return PUT_DSL_BRACKETED_FIELD_NAME; + return MLR_DSL_BRACKETED_FIELD_NAME; } [0-9]+|[0-9]+\.[0-9]*|[0-9]*\.[0-9]+|[0-9]+[eE][0-9]+|[0-9]+[eE]-[0-9]+|[0-9]+\.[0-9]*[eE][0-9]+|[0-9]+\.[0-9]*[eE]-[0-9]+|[0-9]*\.[0-9]+[eE][0-9]+|[0-9]*\.[0-9]+[eE]-[0-9]+ { @@ -173,69 +173,69 @@ // .2e3 // .2e-3 1.e-3 *yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_LITERAL); - return PUT_DSL_NUMBER; + return MLR_DSL_NUMBER; } 0x[0-9a-fA-F]+ { *yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_LITERAL); - return PUT_DSL_NUMBER; + return MLR_DSL_NUMBER; } \"([^\\\"]|\\.)*\" { *yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_LITERAL); - return PUT_DSL_STRING; + return MLR_DSL_STRING; } \"([^\\\"]|\\.)*\"\i { *yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_REGEXI); - return PUT_DSL_REGEXI; + return MLR_DSL_REGEXI; } "NF" { *yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_CONTEXT_VARIABLE); - return PUT_DSL_CONTEXT_VARIABLE; + return MLR_DSL_CONTEXT_VARIABLE; } "NR" { *yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_CONTEXT_VARIABLE); - return PUT_DSL_CONTEXT_VARIABLE; + return MLR_DSL_CONTEXT_VARIABLE; } "FNR" { *yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_CONTEXT_VARIABLE); - return PUT_DSL_CONTEXT_VARIABLE; + return MLR_DSL_CONTEXT_VARIABLE; } "FILENAME" { *yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_CONTEXT_VARIABLE); - return PUT_DSL_CONTEXT_VARIABLE; + return MLR_DSL_CONTEXT_VARIABLE; } "FILENUM" { *yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_CONTEXT_VARIABLE); - return PUT_DSL_CONTEXT_VARIABLE; + return MLR_DSL_CONTEXT_VARIABLE; } "PI" { *yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_CONTEXT_VARIABLE); - return PUT_DSL_CONTEXT_VARIABLE; + return MLR_DSL_CONTEXT_VARIABLE; } "E" { *yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_CONTEXT_VARIABLE); - return PUT_DSL_CONTEXT_VARIABLE; + return MLR_DSL_CONTEXT_VARIABLE; } [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; + return MLR_DSL_FCN_NAME; } "(" { *yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_STRIPPED_AWAY); - return PUT_DSL_LPAREN; + return MLR_DSL_LPAREN; } ")" { *yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_STRIPPED_AWAY); - return PUT_DSL_RPAREN; + return MLR_DSL_RPAREN; } "," { *yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_STRIPPED_AWAY); - return PUT_DSL_COMMA; + return MLR_DSL_COMMA; } [ \t\r\n] { } diff --git a/c/dsls/put_dsl_parse.y b/c/dsls/mlr_dsl_parse.y similarity index 60% rename from c/dsls/put_dsl_parse.y rename to c/dsls/mlr_dsl_parse.y index ac4001411..e8cc5105e 100644 --- a/c/dsls/put_dsl_parse.y +++ b/c/dsls/mlr_dsl_parse.y @@ -37,14 +37,14 @@ fprintf(stderr, "Syntax error!\n"); } -pdsl_body ::= pdsl_statements. // For scan-from-string +mlr_dsl_body ::= mlr_dsl_statements. // For scan-from-string // ---------------------------------------------------------------- -pdsl_statements ::= pdsl_statement. -pdsl_statements ::= pdsl_statement PUT_DSL_SEMICOLON pdsl_statements. +mlr_dsl_statements ::= mlr_dsl_statement. +mlr_dsl_statements ::= mlr_dsl_statement MLR_DSL_SEMICOLON mlr_dsl_statements. -pdsl_statement ::= pdsl_assignment. -pdsl_statement ::= pdsl_filter. +mlr_dsl_statement ::= mlr_dsl_assignment. +mlr_dsl_statement ::= mlr_dsl_filter. // ================================================================ // In the grammar provided to the user, field names are of the form "$x". But @@ -52,7 +52,7 @@ pdsl_statement ::= pdsl_filter. // lexer to give us field names with leading "$" so we can confidently strip it // off here. -pdsl_assignment(A) ::= PUT_DSL_FIELD_NAME(B) PUT_DSL_ASSIGN(O) pdsl_ternary(C). { +mlr_dsl_assignment(A) ::= MLR_DSL_FIELD_NAME(B) MLR_DSL_ASSIGN(O) mlr_dsl_ternary(C). { // Replace "$field.name" with just "field.name" char* dollar_name = B->text; char* no_dollar_name = &dollar_name[1]; @@ -61,7 +61,7 @@ pdsl_assignment(A) ::= PUT_DSL_FIELD_NAME(B) PUT_DSL_ASSIGN(O) pdsl_ternary(C). sllv_add(pasts, A); } -pdsl_assignment(A) ::= PUT_DSL_BRACKETED_FIELD_NAME(B) PUT_DSL_ASSIGN(O) pdsl_ternary(C). { +mlr_dsl_assignment(A) ::= MLR_DSL_BRACKETED_FIELD_NAME(B) MLR_DSL_ASSIGN(O) mlr_dsl_ternary(C). { // Replace "${field.name}" with just "field.name" char* dollar_name = B->text; char* no_dollar_name = &dollar_name[2]; @@ -74,166 +74,166 @@ pdsl_assignment(A) ::= PUT_DSL_BRACKETED_FIELD_NAME(B) PUT_DSL_ASSIGN(O) pdsl_t } // ================================================================ -pdsl_filter(A) ::= pdsl_ternary(B). { +mlr_dsl_filter(A) ::= mlr_dsl_ternary(B). { A = B; sllv_add(pasts, A); } // ================================================================ -pdsl_ternary(A) ::= pdsl_logical_or_term(B) PUT_DSL_QUESTION_MARK pdsl_ternary(C) PUT_DSL_COLON pdsl_ternary(D). { +mlr_dsl_ternary(A) ::= mlr_dsl_logical_or_term(B) MLR_DSL_QUESTION_MARK mlr_dsl_ternary(C) MLR_DSL_COLON mlr_dsl_ternary(D). { A = mlr_dsl_ast_node_alloc_ternary("? :", MLR_DSL_AST_NODE_TYPE_OPERATOR, B, C, D); } -pdsl_ternary(A) ::= pdsl_logical_or_term(B). { +mlr_dsl_ternary(A) ::= mlr_dsl_logical_or_term(B). { A = B; } // ================================================================ -pdsl_logical_or_term(A) ::= pdsl_logical_xor_term(B). { +mlr_dsl_logical_or_term(A) ::= mlr_dsl_logical_xor_term(B). { A = B; } -pdsl_logical_or_term(A) ::= pdsl_logical_or_term(B) PUT_DSL_LOGICAL_OR(O) pdsl_logical_xor_term(C). { +mlr_dsl_logical_or_term(A) ::= mlr_dsl_logical_or_term(B) MLR_DSL_LOGICAL_OR(O) mlr_dsl_logical_xor_term(C). { A = mlr_dsl_ast_node_alloc_binary(O->text, MLR_DSL_AST_NODE_TYPE_OPERATOR, B, C); } // ---------------------------------------------------------------- -pdsl_logical_xor_term(A) ::= pdsl_logical_and_term(B). { +mlr_dsl_logical_xor_term(A) ::= mlr_dsl_logical_and_term(B). { A = B; } -pdsl_logical_xor_term(A) ::= pdsl_logical_xor_term(B) PUT_DSL_LOGICAL_XOR(O) pdsl_logical_and_term(C). { +mlr_dsl_logical_xor_term(A) ::= mlr_dsl_logical_xor_term(B) MLR_DSL_LOGICAL_XOR(O) mlr_dsl_logical_and_term(C). { A = mlr_dsl_ast_node_alloc_binary(O->text, MLR_DSL_AST_NODE_TYPE_OPERATOR, B, C); } // ---------------------------------------------------------------- -pdsl_logical_and_term(A) ::= pdsl_eqne_term(B). { +mlr_dsl_logical_and_term(A) ::= mlr_dsl_eqne_term(B). { A = B; } -pdsl_logical_and_term(A) ::= pdsl_logical_and_term(B) PUT_DSL_LOGICAL_AND(O) pdsl_eqne_term(C). { +mlr_dsl_logical_and_term(A) ::= mlr_dsl_logical_and_term(B) MLR_DSL_LOGICAL_AND(O) mlr_dsl_eqne_term(C). { A = mlr_dsl_ast_node_alloc_binary(O->text, MLR_DSL_AST_NODE_TYPE_OPERATOR, B, C); } // ---------------------------------------------------------------- -pdsl_eqne_term(A) ::= pdsl_cmp_term(B). { +mlr_dsl_eqne_term(A) ::= mlr_dsl_cmp_term(B). { A = B; } -pdsl_eqne_term(A) ::= pdsl_eqne_term(B) PUT_DSL_MATCHES(O) pdsl_cmp_term(C). { +mlr_dsl_eqne_term(A) ::= mlr_dsl_eqne_term(B) MLR_DSL_MATCHES(O) mlr_dsl_cmp_term(C). { A = mlr_dsl_ast_node_alloc_binary(O->text, MLR_DSL_AST_NODE_TYPE_OPERATOR, B, C); } -pdsl_eqne_term(A) ::= pdsl_eqne_term(B) PUT_DSL_DOES_NOT_MATCH(O) pdsl_cmp_term(C). { +mlr_dsl_eqne_term(A) ::= mlr_dsl_eqne_term(B) MLR_DSL_DOES_NOT_MATCH(O) mlr_dsl_cmp_term(C). { A = mlr_dsl_ast_node_alloc_binary(O->text, MLR_DSL_AST_NODE_TYPE_OPERATOR, B, C); } -pdsl_eqne_term(A) ::= pdsl_eqne_term(B) PUT_DSL_EQ(O) pdsl_cmp_term(C). { +mlr_dsl_eqne_term(A) ::= mlr_dsl_eqne_term(B) MLR_DSL_EQ(O) mlr_dsl_cmp_term(C). { A = mlr_dsl_ast_node_alloc_binary(O->text, MLR_DSL_AST_NODE_TYPE_OPERATOR, B, C); } -pdsl_eqne_term(A) ::= pdsl_eqne_term(B) PUT_DSL_NE(O) pdsl_cmp_term(C). { +mlr_dsl_eqne_term(A) ::= mlr_dsl_eqne_term(B) MLR_DSL_NE(O) mlr_dsl_cmp_term(C). { A = mlr_dsl_ast_node_alloc_binary(O->text, MLR_DSL_AST_NODE_TYPE_OPERATOR, B, C); } // ---------------------------------------------------------------- -pdsl_cmp_term(A) ::= pdsl_bitwise_or_term(B). { +mlr_dsl_cmp_term(A) ::= mlr_dsl_bitwise_or_term(B). { A = B; } -pdsl_cmp_term(A) ::= pdsl_cmp_term(B) PUT_DSL_GT(O) pdsl_bitwise_or_term(C). { +mlr_dsl_cmp_term(A) ::= mlr_dsl_cmp_term(B) MLR_DSL_GT(O) mlr_dsl_bitwise_or_term(C). { A = mlr_dsl_ast_node_alloc_binary(O->text, MLR_DSL_AST_NODE_TYPE_OPERATOR, B, C); } -pdsl_cmp_term(A) ::= pdsl_cmp_term(B) PUT_DSL_GE(O) pdsl_bitwise_or_term(C). { +mlr_dsl_cmp_term(A) ::= mlr_dsl_cmp_term(B) MLR_DSL_GE(O) mlr_dsl_bitwise_or_term(C). { A = mlr_dsl_ast_node_alloc_binary(O->text, MLR_DSL_AST_NODE_TYPE_OPERATOR, B, C); } -pdsl_cmp_term(A) ::= pdsl_cmp_term(B) PUT_DSL_LT(O) pdsl_bitwise_or_term(C). { +mlr_dsl_cmp_term(A) ::= mlr_dsl_cmp_term(B) MLR_DSL_LT(O) mlr_dsl_bitwise_or_term(C). { A = mlr_dsl_ast_node_alloc_binary(O->text, MLR_DSL_AST_NODE_TYPE_OPERATOR, B, C); } -pdsl_cmp_term(A) ::= pdsl_cmp_term(B) PUT_DSL_LE(O) pdsl_bitwise_or_term(C). { +mlr_dsl_cmp_term(A) ::= mlr_dsl_cmp_term(B) MLR_DSL_LE(O) mlr_dsl_bitwise_or_term(C). { A = mlr_dsl_ast_node_alloc_binary(O->text, MLR_DSL_AST_NODE_TYPE_OPERATOR, B, C); } // ---------------------------------------------------------------- -pdsl_bitwise_or_term(A) ::= pdsl_bitwise_xor_term(B). { +mlr_dsl_bitwise_or_term(A) ::= mlr_dsl_bitwise_xor_term(B). { A = B; } -pdsl_bitwise_or_term(A) ::= pdsl_bitwise_or_term(B) PUT_DSL_BITWISE_OR(O) pdsl_bitwise_xor_term(C). { +mlr_dsl_bitwise_or_term(A) ::= mlr_dsl_bitwise_or_term(B) MLR_DSL_BITWISE_OR(O) mlr_dsl_bitwise_xor_term(C). { A = mlr_dsl_ast_node_alloc_binary(O->text, MLR_DSL_AST_NODE_TYPE_OPERATOR, B, C); } // ---------------------------------------------------------------- -pdsl_bitwise_xor_term(A) ::= pdsl_bitwise_and_term(B). { +mlr_dsl_bitwise_xor_term(A) ::= mlr_dsl_bitwise_and_term(B). { A = B; } -pdsl_bitwise_xor_term(A) ::= pdsl_bitwise_xor_term(B) PUT_DSL_BITWISE_XOR(O) pdsl_bitwise_and_term(C). { +mlr_dsl_bitwise_xor_term(A) ::= mlr_dsl_bitwise_xor_term(B) MLR_DSL_BITWISE_XOR(O) mlr_dsl_bitwise_and_term(C). { A = mlr_dsl_ast_node_alloc_binary(O->text, MLR_DSL_AST_NODE_TYPE_OPERATOR, B, C); } // ---------------------------------------------------------------- -pdsl_bitwise_and_term(A) ::= pdsl_bitwise_shift_term(B). { +mlr_dsl_bitwise_and_term(A) ::= mlr_dsl_bitwise_shift_term(B). { A = B; } -pdsl_bitwise_and_term(A) ::= pdsl_bitwise_and_term(B) PUT_DSL_BITWISE_AND(O) pdsl_bitwise_shift_term(C). { +mlr_dsl_bitwise_and_term(A) ::= mlr_dsl_bitwise_and_term(B) MLR_DSL_BITWISE_AND(O) mlr_dsl_bitwise_shift_term(C). { A = mlr_dsl_ast_node_alloc_binary(O->text, MLR_DSL_AST_NODE_TYPE_OPERATOR, B, C); } // ---------------------------------------------------------------- -pdsl_bitwise_shift_term(A) ::= pdsl_addsubdot_term(B). { +mlr_dsl_bitwise_shift_term(A) ::= mlr_dsl_addsubdot_term(B). { A = B; } -pdsl_bitwise_shift_term(A) ::= pdsl_bitwise_shift_term(B) PUT_DSL_BITWISE_LSH(O) pdsl_addsubdot_term(C). { +mlr_dsl_bitwise_shift_term(A) ::= mlr_dsl_bitwise_shift_term(B) MLR_DSL_BITWISE_LSH(O) mlr_dsl_addsubdot_term(C). { A = mlr_dsl_ast_node_alloc_binary(O->text, MLR_DSL_AST_NODE_TYPE_OPERATOR, B, C); } -pdsl_bitwise_shift_term(A) ::= pdsl_bitwise_shift_term(B) PUT_DSL_BITWISE_RSH(O) pdsl_addsubdot_term(C). { +mlr_dsl_bitwise_shift_term(A) ::= mlr_dsl_bitwise_shift_term(B) MLR_DSL_BITWISE_RSH(O) mlr_dsl_addsubdot_term(C). { A = mlr_dsl_ast_node_alloc_binary(O->text, MLR_DSL_AST_NODE_TYPE_OPERATOR, B, C); } // ---------------------------------------------------------------- -pdsl_addsubdot_term(A) ::= pdsl_muldiv_term(B). { +mlr_dsl_addsubdot_term(A) ::= mlr_dsl_muldiv_term(B). { A = B; } -pdsl_addsubdot_term(A) ::= pdsl_addsubdot_term(B) PUT_DSL_PLUS(O) pdsl_muldiv_term(C). { +mlr_dsl_addsubdot_term(A) ::= mlr_dsl_addsubdot_term(B) MLR_DSL_PLUS(O) mlr_dsl_muldiv_term(C). { A = mlr_dsl_ast_node_alloc_binary(O->text, MLR_DSL_AST_NODE_TYPE_OPERATOR, B, C); } -pdsl_addsubdot_term(A) ::= pdsl_addsubdot_term(B) PUT_DSL_MINUS(O) pdsl_muldiv_term(C). { +mlr_dsl_addsubdot_term(A) ::= mlr_dsl_addsubdot_term(B) MLR_DSL_MINUS(O) mlr_dsl_muldiv_term(C). { A = mlr_dsl_ast_node_alloc_binary(O->text, MLR_DSL_AST_NODE_TYPE_OPERATOR, B, C); } -pdsl_addsubdot_term(A) ::= pdsl_addsubdot_term(B) PUT_DSL_DOT(O) pdsl_muldiv_term(C). { +mlr_dsl_addsubdot_term(A) ::= mlr_dsl_addsubdot_term(B) MLR_DSL_DOT(O) mlr_dsl_muldiv_term(C). { A = mlr_dsl_ast_node_alloc_binary(O->text, MLR_DSL_AST_NODE_TYPE_OPERATOR, B, C); } // ---------------------------------------------------------------- -pdsl_muldiv_term(A) ::= pdsl_unary_bitwise_op_term(B). { +mlr_dsl_muldiv_term(A) ::= mlr_dsl_unary_bitwise_op_term(B). { A = B; } -pdsl_muldiv_term(A) ::= pdsl_muldiv_term(B) PUT_DSL_TIMES(O) pdsl_unary_bitwise_op_term(C). { +mlr_dsl_muldiv_term(A) ::= mlr_dsl_muldiv_term(B) MLR_DSL_TIMES(O) mlr_dsl_unary_bitwise_op_term(C). { A = mlr_dsl_ast_node_alloc_binary(O->text, MLR_DSL_AST_NODE_TYPE_OPERATOR, B, C); } -pdsl_muldiv_term(A) ::= pdsl_muldiv_term(B) PUT_DSL_DIVIDE(O) pdsl_unary_bitwise_op_term(C). { +mlr_dsl_muldiv_term(A) ::= mlr_dsl_muldiv_term(B) MLR_DSL_DIVIDE(O) mlr_dsl_unary_bitwise_op_term(C). { A = mlr_dsl_ast_node_alloc_binary(O->text, MLR_DSL_AST_NODE_TYPE_OPERATOR, B, C); } -pdsl_muldiv_term(A) ::= pdsl_muldiv_term(B) PUT_DSL_INT_DIVIDE(O) pdsl_unary_bitwise_op_term(C). { +mlr_dsl_muldiv_term(A) ::= mlr_dsl_muldiv_term(B) MLR_DSL_INT_DIVIDE(O) mlr_dsl_unary_bitwise_op_term(C). { A = mlr_dsl_ast_node_alloc_binary(O->text, MLR_DSL_AST_NODE_TYPE_OPERATOR, B, C); } -pdsl_muldiv_term(A) ::= pdsl_muldiv_term(B) PUT_DSL_MOD(O) pdsl_unary_bitwise_op_term(C). { +mlr_dsl_muldiv_term(A) ::= mlr_dsl_muldiv_term(B) MLR_DSL_MOD(O) mlr_dsl_unary_bitwise_op_term(C). { A = mlr_dsl_ast_node_alloc_binary(O->text, MLR_DSL_AST_NODE_TYPE_OPERATOR, B, C); } // ---------------------------------------------------------------- -pdsl_unary_bitwise_op_term(A) ::= pdsl_pow_term(B). { +mlr_dsl_unary_bitwise_op_term(A) ::= mlr_dsl_pow_term(B). { A = B; } -pdsl_unary_bitwise_op_term(A) ::= PUT_DSL_PLUS(O) pdsl_unary_bitwise_op_term(C). { +mlr_dsl_unary_bitwise_op_term(A) ::= MLR_DSL_PLUS(O) mlr_dsl_unary_bitwise_op_term(C). { A = mlr_dsl_ast_node_alloc_unary(O->text, MLR_DSL_AST_NODE_TYPE_OPERATOR, C); } -pdsl_unary_bitwise_op_term(A) ::= PUT_DSL_MINUS(O) pdsl_unary_bitwise_op_term(C). { +mlr_dsl_unary_bitwise_op_term(A) ::= MLR_DSL_MINUS(O) mlr_dsl_unary_bitwise_op_term(C). { A = mlr_dsl_ast_node_alloc_unary(O->text, MLR_DSL_AST_NODE_TYPE_OPERATOR, C); } -pdsl_unary_bitwise_op_term(A) ::= PUT_DSL_LOGICAL_NOT(O) pdsl_unary_bitwise_op_term(C). { +mlr_dsl_unary_bitwise_op_term(A) ::= MLR_DSL_LOGICAL_NOT(O) mlr_dsl_unary_bitwise_op_term(C). { A = mlr_dsl_ast_node_alloc_unary(O->text, MLR_DSL_AST_NODE_TYPE_OPERATOR, C); } -pdsl_unary_bitwise_op_term(A) ::= PUT_DSL_BITWISE_NOT(O) pdsl_unary_bitwise_op_term(C). { +mlr_dsl_unary_bitwise_op_term(A) ::= MLR_DSL_BITWISE_NOT(O) mlr_dsl_unary_bitwise_op_term(C). { A = mlr_dsl_ast_node_alloc_unary(O->text, MLR_DSL_AST_NODE_TYPE_OPERATOR, C); } // ---------------------------------------------------------------- -pdsl_pow_term(A) ::= pdsl_atom_or_fcn(B). { +mlr_dsl_pow_term(A) ::= mlr_dsl_atom_or_fcn(B). { A = B; } -pdsl_pow_term(A) ::= pdsl_atom_or_fcn(B) PUT_DSL_POW(O) pdsl_pow_term(C). { +mlr_dsl_pow_term(A) ::= mlr_dsl_atom_or_fcn(B) MLR_DSL_POW(O) mlr_dsl_pow_term(C). { A = mlr_dsl_ast_node_alloc_binary(O->text, MLR_DSL_AST_NODE_TYPE_OPERATOR, B, C); } @@ -243,14 +243,14 @@ pdsl_pow_term(A) ::= pdsl_atom_or_fcn(B) PUT_DSL_POW(O) pdsl_pow_term(C). { // within Miller internally, field names are of the form "x". We coded the // lexer to give us field names with leading "$" so we can confidently strip it // off here. -pdsl_atom_or_fcn(A) ::= PUT_DSL_FIELD_NAME(B). { +mlr_dsl_atom_or_fcn(A) ::= MLR_DSL_FIELD_NAME(B). { // not: // A = B; char* dollar_name = B->text; char* no_dollar_name = &dollar_name[1]; A = mlr_dsl_ast_node_alloc(no_dollar_name, B->type); } -pdsl_atom_or_fcn(A) ::= PUT_DSL_BRACKETED_FIELD_NAME(B). { +mlr_dsl_atom_or_fcn(A) ::= MLR_DSL_BRACKETED_FIELD_NAME(B). { // Replace "${field.name}" with just "field.name" char* dollar_name = B->text; char* no_dollar_name = &dollar_name[2]; @@ -259,18 +259,18 @@ pdsl_atom_or_fcn(A) ::= PUT_DSL_BRACKETED_FIELD_NAME(B). { no_dollar_name[len-1] = 0; A = mlr_dsl_ast_node_alloc(no_dollar_name, B->type); } -pdsl_atom_or_fcn(A) ::= PUT_DSL_NUMBER(B). { +mlr_dsl_atom_or_fcn(A) ::= MLR_DSL_NUMBER(B). { A = B; } -pdsl_atom_or_fcn(A) ::= PUT_DSL_STRING(B). { +mlr_dsl_atom_or_fcn(A) ::= MLR_DSL_STRING(B). { char* input = B->text; char* stripped = &input[1]; int len = strlen(input); stripped[len-2] = 0; A = mlr_dsl_ast_node_alloc(stripped, B->type); } -pdsl_atom_or_fcn(A) ::= PUT_DSL_REGEXI(B). { +mlr_dsl_atom_or_fcn(A) ::= MLR_DSL_REGEXI(B). { char* input = B->text; char* stripped = &input[1]; int len = strlen(input); @@ -278,14 +278,14 @@ pdsl_atom_or_fcn(A) ::= PUT_DSL_REGEXI(B). { A = mlr_dsl_ast_node_alloc(stripped, B->type); } -pdsl_atom_or_fcn(A) ::= PUT_DSL_CONTEXT_VARIABLE(B). { +mlr_dsl_atom_or_fcn(A) ::= MLR_DSL_CONTEXT_VARIABLE(B). { A = B; } -pdsl_atom_or_fcn(A) ::= PUT_DSL_LPAREN pdsl_logical_or_term(B) PUT_DSL_RPAREN. { +mlr_dsl_atom_or_fcn(A) ::= MLR_DSL_LPAREN mlr_dsl_logical_or_term(B) MLR_DSL_RPAREN. { A = B; } -///pdsl_atom_or_fcn(A) ::= PUT_DSL_MINUS(O) pdsl_atom_or_fcn(B). { +///mlr_dsl_atom_or_fcn(A) ::= MLR_DSL_MINUS(O) mlr_dsl_atom_or_fcn(B). { ///A = mlr_dsl_ast_node_alloc_unary(O->text, MLR_DSL_AST_NODE_TYPE_OPERATOR, B); ///} @@ -296,17 +296,17 @@ pdsl_atom_or_fcn(A) ::= PUT_DSL_LPAREN pdsl_logical_or_term(B) PUT_DSL_RPAREN. { // * On the "c" we append the next argument to get "anon(a,b,c)". // * On the "f" we change the function name to get "f(a,b,c)". -pdsl_atom_or_fcn(A) ::= PUT_DSL_FCN_NAME(O) PUT_DSL_LPAREN pdsl_fcn_args(B) PUT_DSL_RPAREN. { +mlr_dsl_atom_or_fcn(A) ::= MLR_DSL_FCN_NAME(O) MLR_DSL_LPAREN mlr_dsl_fcn_args(B) MLR_DSL_RPAREN. { A = mlr_dsl_ast_node_set_function_name(B, O->text); } // xxx need to invalidate "f(10,)" -- use some non-empty-args expr. -pdsl_fcn_args(A) ::= . { +mlr_dsl_fcn_args(A) ::= . { A = mlr_dsl_ast_node_alloc_zary("anon", MLR_DSL_AST_NODE_TYPE_FUNCTION_NAME); } -pdsl_fcn_args(A) ::= pdsl_logical_or_term(B). { +mlr_dsl_fcn_args(A) ::= mlr_dsl_logical_or_term(B). { A = mlr_dsl_ast_node_alloc_unary("anon", MLR_DSL_AST_NODE_TYPE_FUNCTION_NAME, B); } -pdsl_fcn_args(A) ::= pdsl_fcn_args(B) PUT_DSL_COMMA pdsl_logical_or_term(C). { +mlr_dsl_fcn_args(A) ::= mlr_dsl_fcn_args(B) MLR_DSL_COMMA mlr_dsl_logical_or_term(C). { A = mlr_dsl_ast_node_append_arg(B, C); } diff --git a/c/dsls/put_dsl_wrapper.c b/c/dsls/mlr_dsl_wrapper.c similarity index 61% rename from c/dsls/put_dsl_wrapper.c rename to c/dsls/mlr_dsl_wrapper.c index 6cbda93e8..bf3776fe4 100644 --- a/c/dsls/put_dsl_wrapper.c +++ b/c/dsls/mlr_dsl_wrapper.c @@ -1,24 +1,24 @@ #include #include -#include "put_dsl_wrapper.h" -#include "put_dsl_lexer.h" -#include "put_dsl_parse.h" +#include "mlr_dsl_wrapper.h" +#include "mlr_dsl_lexer.h" +#include "mlr_dsl_parse.h" #include "../lib/mlrutil.h" #include "../containers/mlr_dsl_ast.h" #include "../containers/sllv.h" -// These prototypes are copied out manually from put_dsl_parse.c. With some +// These prototypes are copied out manually from mlr_dsl_parse.c. With some // more work I could have Lemon autogenerate these prototypes into -// put_dsl_parse.h. +// mlr_dsl_parse.h. -void *put_dsl_lemon_parser_alloc(void *(*mallocProc)(size_t)); +void *mlr_dsl_lemon_parser_alloc(void *(*mallocProc)(size_t)); -int put_dsl_lemon_parser_parse_token( +int mlr_dsl_lemon_parser_parse_token( void *pvparser, /* The parser */ int yymajor, /* The major token code number */ mlr_dsl_ast_node_t* yyminor, /* The value for the token */ sllv_t* pasts); /* Optional %extra_argument parameter */ -void put_dsl_lemon_parser_free( +void mlr_dsl_lemon_parser_free( void *pvparser, /* The parser to be deleted */ void (*freeProc)(void*)); /* Function used to reclaim memory */ @@ -27,14 +27,14 @@ void put_dsl_lemon_parser_free( // http://flex.sourceforge.net/manual/Extra-Data.html // Returns linked list of mlr_dsl_ast_node_t*. -static sllv_t* put_dsl_parse_inner(yyscan_t scanner, void* pvparser, mlr_dsl_ast_node_t** ppnode) { +static sllv_t* mlr_dsl_parse_inner(yyscan_t scanner, void* pvparser, mlr_dsl_ast_node_t** ppnode) { int lex_code; int parse_code; sllv_t* pasts = sllv_alloc(); do { - lex_code = put_dsl_lexer_lex(scanner); + lex_code = mlr_dsl_lexer_lex(scanner); mlr_dsl_ast_node_t* plexed_node = *ppnode; - parse_code = put_dsl_lemon_parser_parse_token(pvparser, lex_code, plexed_node, pasts); + parse_code = mlr_dsl_lemon_parser_parse_token(pvparser, lex_code, plexed_node, pasts); if (parse_code == 0) return NULL; } while (lex_code > 0); @@ -42,7 +42,7 @@ static sllv_t* put_dsl_parse_inner(yyscan_t scanner, void* pvparser, mlr_dsl_ast fprintf(stderr, "The scanner encountered an error.\n"); return NULL; } - parse_code = put_dsl_lemon_parser_parse_token(pvparser, 0, NULL, pasts); + parse_code = mlr_dsl_lemon_parser_parse_token(pvparser, 0, NULL, pasts); if (parse_code == 0) return NULL; @@ -51,27 +51,27 @@ static sllv_t* put_dsl_parse_inner(yyscan_t scanner, void* pvparser, mlr_dsl_ast // ---------------------------------------------------------------- // Returns linked list of mlr_dsl_ast_node_t*. -sllv_t* put_dsl_parse(char* string) { +sllv_t* mlr_dsl_parse(char* string) { mlr_dsl_ast_node_t* pnode = NULL; yyscan_t scanner; - put_dsl_lexer_lex_init_extra(&pnode, &scanner); - void* pvparser = put_dsl_lemon_parser_alloc(malloc); + mlr_dsl_lexer_lex_init_extra(&pnode, &scanner); + void* pvparser = mlr_dsl_lemon_parser_alloc(malloc); YY_BUFFER_STATE buf = NULL; if (string == NULL) { - put_dsl_lexer_set_in(stdin, scanner); + mlr_dsl_lexer_set_in(stdin, scanner); } else { - YY_BUFFER_STATE buf = put_dsl_lexer__scan_string(string, scanner); - put_dsl_lexer__switch_to_buffer (buf, scanner); + YY_BUFFER_STATE buf = mlr_dsl_lexer__scan_string(string, scanner); + mlr_dsl_lexer__switch_to_buffer (buf, scanner); } - sllv_t* pasts = put_dsl_parse_inner(scanner, pvparser, &pnode); + sllv_t* pasts = mlr_dsl_parse_inner(scanner, pvparser, &pnode); if (buf != NULL) - put_dsl_lexer__delete_buffer(buf, scanner); + mlr_dsl_lexer__delete_buffer(buf, scanner); - put_dsl_lexer_lex_destroy(scanner); - put_dsl_lemon_parser_free(pvparser, free); + mlr_dsl_lexer_lex_destroy(scanner); + mlr_dsl_lemon_parser_free(pvparser, free); return pasts; } diff --git a/c/dsls/put_dsl_wrapper.h b/c/dsls/mlr_dsl_wrapper.h similarity index 51% rename from c/dsls/put_dsl_wrapper.h rename to c/dsls/mlr_dsl_wrapper.h index 7bb4eeab9..e74308859 100644 --- a/c/dsls/put_dsl_wrapper.h +++ b/c/dsls/mlr_dsl_wrapper.h @@ -1,9 +1,9 @@ -#ifndef PUT_DSL_WRAPPER_H -#define PUT_DSL_WRAPPER_H +#ifndef MLR_DSL_WRAPPER_H +#define MLR_DSL_WRAPPER_H #include "../containers/mlr_dsl_ast.h" #include "../containers/sllv.h" // Returns linked list of mlr_dsl_ast_node_t*. -sllv_t* put_dsl_parse(char* string); +sllv_t* mlr_dsl_parse(char* string); -#endif // PUT_DSL_WRAPPER_H +#endif // MLR_DSL_WRAPPER_H diff --git a/c/mapping/mapper_filter.c b/c/mapping/mapper_filter.c index 085603dbe..d5cec5318 100644 --- a/c/mapping/mapper_filter.c +++ b/c/mapping/mapper_filter.c @@ -3,7 +3,7 @@ #include "containers/sllv.h" #include "mapping/lrec_evaluators.h" #include "mapping/mappers.h" -#include "dsls/put_dsl_wrapper.h" +#include "dsls/mlr_dsl_wrapper.h" #include "cli/argparse.h" typedef struct _mapper_filter_state_t { @@ -88,7 +88,7 @@ static mapper_t* mapper_filter_parse_cli(int* pargi, int argc, char** argv) { } mlr_dsl_expression = argv[(*pargi)++]; - sllv_t* pasts = put_dsl_parse(mlr_dsl_expression); + sllv_t* pasts = mlr_dsl_parse(mlr_dsl_expression); if (pasts == NULL) { mapper_filter_usage(stderr, argv[0], verb); return NULL; diff --git a/c/mapping/mapper_put.c b/c/mapping/mapper_put.c index 830dd1c29..2aaadd684 100644 --- a/c/mapping/mapper_put.c +++ b/c/mapping/mapper_put.c @@ -4,7 +4,7 @@ #include "containers/sllv.h" #include "mapping/mappers.h" #include "mapping/lrec_evaluators.h" -#include "dsls/put_dsl_wrapper.h" +#include "dsls/mlr_dsl_wrapper.h" #include "cli/argparse.h" typedef struct _mapper_put_state_t { @@ -95,7 +95,7 @@ static mapper_t* mapper_put_parse_cli(int* pargi, int argc, char** argv) { mlr_dsl_expression = argv[(*pargi)++]; // Linked list of mlr_dsl_ast_node_t*. - sllv_t* pasts = put_dsl_parse(mlr_dsl_expression); + sllv_t* pasts = mlr_dsl_parse(mlr_dsl_expression); if (pasts == NULL) { mapper_put_usage(stderr, argv[0], verb); return NULL; diff --git a/c/todo.txt b/c/todo.txt index bf3c110e1..e383ddefe 100644 --- a/c/todo.txt +++ b/c/todo.txt @@ -7,7 +7,6 @@ BUGFIXES TOP OF LIST * filter-then-put with capture-groups - ! rename put_dsl / pdsl / etc o expanded lrec_context or some such for the regex backcaptures; or (better) within lrec_t itself ! pointer integrity for backcaptures followed by unlinks/renames etc. ... strdup them? @@ -21,9 +20,6 @@ TOP OF LIST - breaks all lhmslv's at -g's - so don't do this - ! ternary operator - - UTs - * ewma output-label list in addition to rename ! double-check multi-pair stats2 ! * cump -> one-offs diff --git a/c/tools/clean-valgrind-output b/c/tools/clean-valgrind-output index b8202acb2..b6c4dd4c0 100755 --- a/c/tools/clean-valgrind-output +++ b/c/tools/clean-valgrind-output @@ -22,8 +22,8 @@ sed 's/^==.*== //' "$@" | swipe \ | mgrepv '_platform_memchr' \ | mgrepv 'xpc_pipe_routine' \ | grep -v 'MACH_SEND_TRAILER' \ - | mgrepv 'put_dsl_lexer_lex' \ - | mgrepv 'put_dsl_parse' \ + | mgrepv 'mlr_dsl_lexer_lex' \ + | mgrepv 'mlr_dsl_parse' \ | mgrepv 'unbackslash' \ | cat diff --git a/c/unit_test/Makefile.am b/c/unit_test/Makefile.am index 22b09d6b0..36d6121b1 100644 --- a/c/unit_test/Makefile.am +++ b/c/unit_test/Makefile.am @@ -22,7 +22,7 @@ all_ldadd= \ ../mapping/libmapping.la \ ../output/liboutput.la \ ../lib/libmlr.la \ - ../dsls/libpdsl.la \ + ../dsls/libdsl.la \ -lm # Unit-test mains diff --git a/configure.ac b/configure.ac index d55d1cbb9..7f6110498 100644 --- a/configure.ac +++ b/configure.ac @@ -18,7 +18,7 @@ LT_INIT # TODO: better source handling for lemon sources? # perhaps lemon can be improved to survive being called from the build dir AC_CONFIG_LINKS([c/dsls/lempar.c:c/dsls/lempar.c]) -AC_CONFIG_LINKS([c/dsls/put_dsl_parse.y:c/dsls/put_dsl_parse.y]) +AC_CONFIG_LINKS([c/dsls/mlr_dsl_parse.y:c/dsls/mlr_dsl_parse.y]) AC_CONFIG_FILES([Makefile c/cli/Makefile