0
는 다음 ANTLR 3 문법을 감안할 때 :ANTLR 문법 모호성
statement1 : CHAR_KEYWORD;
statement2 : DIGIT_KEYWORD (COLON_KEYWORD DIGIT_KEYWORD)?;
COLON_KEYWORD : ':';
DIGIT_KEYWORD : '0'..'9';
CHAR_KEYWORD : 'a'..'z' | COLON_KEYWORD;
다음 텍스트 분석 :
1
규칙은 문장 2 픽업이 텍스트를. 이것은 좋다.
1:2
규칙 문장 2이 텍스트를 선택하지 않고 오류를 제공합니다 : 그러나, 하나는 이제 다음과 같은 텍스트가있는 경우. 이는 ":"가 규칙의 일부가 아닌 CHAR_KEYWORD와 일치하기 때문입니다. CHAR_KEYWORD에서 COLON_KEYWORD를 제거하면 statement2 규칙은 statement1 규칙이 현재 필요에 따라 작동하지 않는다는 점을 제외하고는 정상적으로 작동합니다. 이 문법을 어떻게 리펙토링하여 문 1 및 문 2이 예상대로 작동 할 수 있습니까? 감사!