grammar neaten

This commit is contained in:
John Kerl 2015-11-13 21:39:43 -05:00
parent b98b99fa9b
commit aeeba1f2e2
3 changed files with 134 additions and 116 deletions

View file

@ -29,7 +29,6 @@
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR);
return FILTER_DSL_DOES_NOT_MATCH;
}
"==" {
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR);
return FILTER_DSL_EQ;

View file

@ -11,15 +11,143 @@
%option extra-type="struct _mlr_dsl_ast_node_t **"
%%
";" {
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_STRIPPED_AWAY);
return PUT_DSL_SEMICOLON;
}
"=" {
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR);
return PUT_DSL_ASSIGN;
}
"||" {
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR);
return PUT_DSL_LOGICAL_OR;
}
"&&" {
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR);
return PUT_DSL_LOGICAL_AND;
}
"=~" {
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR);
return PUT_DSL_MATCHES;
}
"!=~" {
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR);
return PUT_DSL_DOES_NOT_MATCH;
}
"==" {
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR);
return PUT_DSL_EQ;
}
"!=" {
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR);
return PUT_DSL_NE;
}
">" {
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR);
return PUT_DSL_GT;
}
">=" {
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR);
return PUT_DSL_GE;
}
"<" {
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR);
return PUT_DSL_LT;
}
"<=" {
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR);
return PUT_DSL_LE;
}
"|" {
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR);
return PUT_DSL_BIT_OR;
}
"^" {
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR);
return PUT_DSL_BIT_XOR;
}
"&" {
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR);
return PUT_DSL_BIT_AND;
}
"+" {
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR);
return PUT_DSL_PLUS;
}
"-" {
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR);
return PUT_DSL_MINUS;
}
"\." {
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR);
return PUT_DSL_DOT;
}
"*" {
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR);
return PUT_DSL_TIMES;
}
"/" {
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR);
return PUT_DSL_DIVIDE;
}
"//" {
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR);
return PUT_DSL_INT_DIVIDE;
}
"%" {
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR);
return PUT_DSL_MOD;
}
"!" {
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR);
return PUT_DSL_NOT;
}
"~" {
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR);
return PUT_DSL_BIT_NOT;
}
"**" {
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR);
return PUT_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;
}
"=" {
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR);
return PUT_DSL_ASSIGN;
[0-9]+|[0-9]+\.[0-9]*|[0-9]*\.[0-9]+ {
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_LITERAL);
return PUT_DSL_NUMBER;
}
0x[0-9a-fA-F]+ {
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_LITERAL);
return PUT_DSL_NUMBER;
}
\"([^\\\"]|\\.)*\" {
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_LITERAL);
return PUT_DSL_STRING;
}
\"([^\\\"]|\\.)*\"\i {
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_REGEXI);
return PUT_DSL_REGEXI;
}
"NF" {
@ -55,114 +183,6 @@
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_FUNCTION_NAME);
return PUT_DSL_FCN_NAME;
}
[0-9]+|[0-9]+\.[0-9]*|[0-9]*\.[0-9]+ {
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_LITERAL);
return PUT_DSL_NUMBER;
}
0x[0-9a-fA-F]+ {
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_LITERAL);
return PUT_DSL_NUMBER;
}
\"([^\\\"]|\\.)*\" {
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_LITERAL);
return PUT_DSL_STRING;
}
\"([^\\\"]|\\.)*\"\i {
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_REGEXI);
return PUT_DSL_REGEXI;
}
"\." {
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR);
return PUT_DSL_DOT;
}
"+" {
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR);
return PUT_DSL_PLUS;
}
"-" {
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR);
return PUT_DSL_MINUS;
}
"*" {
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR);
return PUT_DSL_TIMES;
}
"/" {
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR);
return PUT_DSL_DIVIDE;
}
"//" {
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR);
return PUT_DSL_INT_DIVIDE;
}
"%" {
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR);
return PUT_DSL_MOD;
}
"**" {
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR);
return PUT_DSL_POW;
}
"<" {
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR);
return PUT_DSL_LT;
}
"<=" {
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR);
return PUT_DSL_LE;
}
">" {
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR);
return PUT_DSL_GT;
}
">=" {
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR);
return PUT_DSL_GE;
}
"||" {
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR);
return PUT_DSL_LOGICAL_OR;
}
"&&" {
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR);
return PUT_DSL_LOGICAL_AND;
}
"!" {
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR);
return PUT_DSL_NOT;
}
"|" {
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR);
return PUT_DSL_BIT_OR;
}
"^" {
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR);
return PUT_DSL_BIT_XOR;
}
"&" {
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR);
return PUT_DSL_BIT_AND;
}
"~" {
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR);
return PUT_DSL_BIT_NOT;
}
"==" {
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR);
return PUT_DSL_EQ;
}
"!=" {
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR);
return PUT_DSL_NE;
}
"(" {
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_STRIPPED_AWAY);
@ -172,14 +192,11 @@
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_STRIPPED_AWAY);
return PUT_DSL_RPAREN;
}
"," {
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_STRIPPED_AWAY);
return PUT_DSL_COMMA;
}
";" {
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_STRIPPED_AWAY);
return PUT_DSL_SEMICOLON;
}
[ \t\r\n] { }

View file

@ -26,6 +26,7 @@ TOP OF LIST
o sgn function needs UT cases
o bitops UTs x put/filter
o >>, <<, ~
o MATCHES etc. into put grammar
o urandint -> w/urand @ mlr -h, mld, etc.
o OR -> LOGICAL_OR etc.
o bitops filter faqent / online help: filter '0 != $x | $y' vs. filter '0 != ($x | $y)'
@ -49,6 +50,7 @@ NEW
binary+ binary- . left to right
binary* / % left to right
! ~ ++ -- unary+ unary- & right to left
** right to left
() left to right
-> put in dot & other mlr operators