Нечувствительность к регистру antlr игнорируется [дубликат]JAVA

Программисты JAVA общаются здесь
Anonymous
Нечувствительность к регистру antlr игнорируется [дубликат]

Сообщение Anonymous »

По какой-то причине фрагменты букв, определенные без учета регистра, по-прежнему чувствительны к регистру:

Код: Выделить всё

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}
Соответствующие документы: https://github.com/tunnelvisionlabs/ant ... y-grammars
Я также видел, как это используется:

Код: Выделить всё

options {
caseInsensitive = true;
}
Документация: https://github.com/antlr/antlr4/blob/ma ... ensitivity
Однако результат вроде тот же.

Подробнее здесь: https://stackoverflow.com/questions/787 ... ng-ignored

Вернуться в «JAVA»