Я определяю грамматику в ANTLR, которая выражает выражение, которое включает в себя логический оператор и скобки вместе.
Здесь грамматикиКак определить логический оператор с круглыми скобками в грамматике ANTLR
grammar simpleGrammar;
/* This will be the entry point of the parser. */
parse
:
expression EOF
;
expression
:
expression binOp expression | ID | unOp (expression) | '(' expression ')'
;
binOp
:
('AND' | 'OR')
;
unOp
:
'NOT'
;
ID :
('a'..'z' | 'A'..'Z')+
;
Заданная грамматика может иметь возможность выразить дерево разбора без скобок, но когда я входной пример с скобкой, например, (Apple OR Bananana)AND Orange
Это показывает MismatchedTokenException
Таким образом, это будет действительно признателен, если кто-то объяснит, как определить грамматику, чтобы выразить скобки.
Его показывает исключение, поскольку она взаимно леворекурсивный 'выражения«И»expression' и' выражение «OR» expression' –
Нет, это прямое леворекурсивное выражение. ANTLR4 способен обрабатывать их, ANTLR3 - нет. Ваш исходный вопрос содержит прямую левую рекурсию, поэтому я предположил, что вы на v4. –