ANTLR을 사용하여 영어와 같은 도메인 특정 언어를 구성 중입니다. 키워드는 문맥에 따라 다릅니다. (나는 소리가 더러운 것처럼 느껴지지만 프로그래머가 아닌 사용자에게는 많은 의미가 있습니다.) 예를 들어 or
과 not
과 같은 일반적인 논리 연산자는 대괄호로 묶을 때 식별자로 처리해야합니다 이]. 나의 현재의 접근 방식은 다음과 같습니다Antlr : 특정 컨텍스트의 키워드를 무시하십시오.
AND: 'and' ;
OR: 'or' ;
경고 "Decision can match input such as "{AND..PROCESS, RPAREN..'with'}" using multiple alternatives: 1, 2"
를 생성합니다 : 다음과 같은 어휘의 정의와 결합
bracketedStatement
: '[' bracketedWord+ ']'
;
bracketedWord
: (~(']')+
;
이. 명확하게 ANTLR에 대한 모호성을 만들고 있지만이를 해결하는 방법을 모르겠습니다. 이 문제를 어떻게 해결할 수 있습니까?
더 완벽한 예를 보여 줄 수 있습니까? ANTLR에서 규칙의 순서는 중요하며 모호함을 초래할 수 있습니다. – Apalala
'~ (']')'파서 규칙 안에서는 당신이 생각하는대로하지 않습니다. 참조 : http://stackoverflow.com/questions/8284919/negating-inside-lexer-and-parser-rules –