Код: Выделить всё
grammar filter;
query: expression? EOF;
expression : field operator=(LT | LT_EQ | GT | GT_EQ | EQ | NOT_EQ1) value #comparatorExpression
| expression operator=(AND | OR) expression #binaryExpression
| OPEN_PAR expression CLOSE_PAR #groupedExpression
;
field : IDENTIFIER;
value: STRING_LITERAL
| BOOLEAN
| NUMBER
;
NUMBER: [0-9,.]+;
STRING_LITERAL: QUOTE.+?QUOTE;
BOOLEAN: (T R U E | F A L S E);
IDENTIFIER : [a-zA-Z_]+;
OPEN_PAR : '(';
CLOSE_PAR : ')';
LT : '=';
EQ : '=';
NOT_EQ1 : '!=';
AND : A N D;
OR : O R;
SPACES: [ \u000B\t\r\n] -> channel(HIDDEN);
fragment DIGIT : [0-9];
fragment A : [aA];
fragment B : [bB];
fragment C : [cC];
fragment D : [dD];
fragment E : [eE];
fragment F : [fF];
fragment G : [gG];
fragment H : [hH];
fragment I : [iI];
fragment J : [jJ];
fragment K : [kK];
fragment L : [lL];
fragment M : [mM];
fragment N : [nN];
fragment O : [oO];
fragment P : [pP];
fragment Q : [qQ];
fragment R : [rR];
fragment S : [sS];
fragment T : [tT];
fragment U : [uU];
fragment V : [vV];
fragment W : [wW];
fragment X : [xX];
fragment Y : [yY];
fragment Z : [zZ];
fragment QUOTE : ["];
Код: Выделить всё
line 1:12 mismatched input 'and' expecting {, AND, OR}
Я также видел, как это используется:
Код: Выделить всё
options {
caseInsensitive = true;
}
Однако результат вроде тот же.
Подробнее здесь: https://stackoverflow.com/questions/787 ... ng-ignored