Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- grammar Rdl;
- filter
- : logical_expression
- | '[' ']'
- ;
- expression
- : conditional_expression
- | logical_expression
- | value
- ;
- conditional_expression
- : '{' conditional_operator ':' '{' '"if"' ':' conditional_expression ',' '"then"' ':' expression ',' '"else"' ':' expression '}' '}'
- | logical_expression
- ;
- logical_expression
- : compare_expression
- | '[' compare_expression (',' logical_operator ',' compare_expression)* ']'
- | '[' logical_expression ',' logical_operator ',' logical_expression ']'
- ;
- compare_expression
- : '{' column_name ':' '{' comparison_operator ':' value '}' '}'
- ;
- column_name
- : (ESC | SAFECODEPOINT)+ '.' (ESC | SAFECODEPOINT)+
- | STRING
- ;
- comparison_operator
- : '"$eq"'
- | '"$ne"'
- | '"$gte"'
- | '"lte"'
- | '"$gt"'
- | '"$lt"'
- | '"$in"'
- ;
- logical_operator
- : '"$and"'
- | '"$or"'
- ;
- conditional_operator
- : '"$cond"'
- ;
- scalar_function
- : math_function
- | string_function
- | date_function
- ;
- math_function
- : '"$abs"'
- | '"$add"'
- | '"$ceil"'
- | '"$divide"'
- | '"$floor"'
- | '"$multiply"'
- | '"$pow"'
- | '"$subtract"'
- ;
- string_function
- : '"$concat"'
- | '"$substring"'
- | '"$to_upper"'
- | '"$to_lower"'
- | '"$trim"'
- ;
- date_function
- : '"$format_date"'
- | '"$month"'
- | '"$day"'
- | '"$year"'
- ;
- aggregate_function
- : '"$avg"'
- | '"$count"'
- | '"$max"'
- | '"$min"'
- | '"$sum"'
- ;
- value
- : STRING
- | NUMBER
- | column_name
- | array
- | 'true'
- | 'false'
- | 'null'
- ;
- array
- : '[' value (',' value)* ']'
- | '[' ']'
- ;
- STRING
- : '"' (ESC | SAFECODEPOINT)* '"'
- ;
- fragment ESC
- : '\\' (["\\/bfnrt] | UNICODE)
- ;
- fragment UNICODE
- : 'u' HEX HEX HEX HEX
- ;
- fragment HEX
- : [0-9a-fA-F]
- ;
- fragment SAFECODEPOINT
- : ~ ["\\\u0000-\u001F]
- ;
- NUMBER
- : '-'? INT ('.' [0-9] +)? EXP?
- ;
- fragment INT
- : '0' | [1-9] [0-9]*
- ;
- // no leading zeros
- fragment EXP
- : [Ee] [+\-]? INT
- ;
- // \- since - means "range" inside [...]
- WS
- : [ \t\n\r] + -> skip
- ;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement