0
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'와'표현 '또는'남아 있으므로 expression' –
아니요, 직접 왼쪽 재귀 식입니다. ANTLR4는 이것을 처리 할 수 있지만 ANTLR3은 그렇지 않습니다. 원래 질문에는 직접 왼쪽 재귀가 포함되어 있으므로 v4를 사용하고 있다고 가정합니다. –