mirror of
https://github.com/johnkerl/miller.git
synced 2026-07-26 01:15:27 +00:00
grammar neaten
This commit is contained in:
parent
b98b99fa9b
commit
aeeba1f2e2
3 changed files with 134 additions and 116 deletions
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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] { }
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue