core-jgi/org.adempiere.base/antlr/SimpleBoolean.g4

61 lines
1.5 KiB
ANTLR

grammar SimpleBoolean;
@header {
package org.idempiere.expression.logic;
}
parse
: expression EOF
;
expression
: LPAREN expression RPAREN #parenExpression
| NOT expression #notExpression
| left=expression op=comparator right=expression #comparatorExpression
| left=expression op=binary right=expression #binaryExpression
| bool #boolExpression
| VARIABLE #contextVariables
| QCSVTEXT #quotedCSVText
| QTEXT #quotedText
| DQCSVTEXT #doubleQuotedCSVText
| DQTEXT #doubleQuotedText
| TEXT #text
| DECIMAL #decimalExpression
;
comparator
: GT | GE | LT | LE | EQ | NE | RE
;
binary
: AND | OR
;
bool
: TRUE | FALSE
;
AND : '&' ;
OR : '|' ;
NOT : '$!';
TRUE : 'true' ;
FALSE : 'false' ;
GT : '>' ;
GE : '>=' ;
LT : '<' ;
LE : '<=' ;
EQ : '=' ;
NE : [!^] ;
RE : '~' ;
LPAREN : '(' ;
RPAREN : ')' ;
DECIMAL : '-'? [0-9]+ ( '.' [0-9]+ )? ;
VARIABLE : '@'(.*?)'@' ;
COMMA : ',' ;
QCOMMA : '\',' ;
QTEXT : ['](.*?)['] ;
QCSVTEXT : [']~(['])*(QCOMMA)(QTEXT)(COMMA QTEXT)* ;
DQCOMMA : '",';
DQTEXT : ["](.*?)["] ;
DQCSVTEXT : ["]~(["])*(DQCOMMA)(DQTEXT)(COMMA DQTEXT)* ;
TEXT : [a-zA-Z_0-9,]+ ;
WS : [ \r\t\u000C\n]+ -> skip;