2013-10-17 5 views
0

ANTLR을 사용하여 영어와 같은 도메인 특정 언어를 구성 중입니다. 키워드는 문맥에 따라 다릅니다. (나는 소리가 더러운 것처럼 느껴지지만 프로그래머가 아닌 사용자에게는 많은 의미가 있습니다.) 예를 들어 ornot과 같은 일반적인 논리 연산자는 대괄호로 묶을 때 식별자로 처리해야합니다 이]. 나의 현재의 접근 방식은 다음과 같습니다Antlr : 특정 컨텍스트의 키워드를 무시하십시오.

AND: 'and' ; 
OR: 'or' ; 

경고 "Decision can match input such as "{AND..PROCESS, RPAREN..'with'}" using multiple alternatives: 1, 2"를 생성합니다 : 다음과 같은 어휘의 정의와 결합

bracketedStatement 
    : '[' bracketedWord+ ']' 
    ; 

bracketedWord 
    : (~(']')+ 
    ; 

이. 명확하게 ANTLR에 대한 모호성을 만들고 있지만이를 해결하는 방법을 모르겠습니다. 이 문제를 어떻게 해결할 수 있습니까?

+0

더 완벽한 예를 보여 줄 수 있습니까? ANTLR에서 규칙의 순서는 중요하며 모호함을 초래할 수 있습니다. – Apalala

+1

'~ (']')'파서 규칙 안에서는 당신이 생각하는대로하지 않습니다. 참조 : http://stackoverflow.com/questions/8284919/negating-inside-lexer-and-parser-rules –

답변

0

이 내용을 발견 한 사람은 this stack overflow question.을 확인하면 부정 부호를 올바르게 사용하는 방법을 명확히합니다.