2014-09-08 3 views

답변

1

두 가지 잠재적 인 문제가 있습니다. 가장 먼저, ANTLR 3은 ANTLR 4에서 도입 한 문자 클래스 구문을 지원하지 않습니다. Or 프래그먼트는 문자 그대로 입력 [Oo][Rr]과 일치합니다. OR, or 또는 oR과 일치하지 않습니다. 동일한 내용이 And 조각에도 적용됩니다. 이 대신에 같은 규칙을 작성해야이 문제가 해결되지 않으면

fragment 
Or 
    : ('O' | 'o') ('R' | 'r') 
    ; 

는, 당신은 당신의 LogicalOrLogicalAnd 규칙이 문법에서 Identifier 규칙 앞에 위치되어 있는지 확인해야합니다. 먼저 나타나는 규칙은이 입력 순서에 대해 할당 된 토큰 유형을 판별합니다.

+0

감사합니다. LogicalOr 및 LogicalAnd 규칙 다음에 식별자 규칙을 이동했습니다. 문제가 해결되었습니다. – SLX

+1

@SLX :이 답변으로 문제가 해결 된 경우 수락하십시오 (투표 카운터 아래의 큰 체크 표시를 클릭하십시오). 특히 유용하다고 생각되면 투표 카운터 위에있는 위 화살표를 클릭하여 응답을 upvote하십시오. –