0
나는이 질문이 많은 시간을 물어 왔다는 것을 알고있다. ANTLR을 사용하여 문법을 작성하려고합니다.ANTLR 문법 상호 왼쪽 재귀
Predicate : LOWERCASE | Predicate VarChars ;
VarChars : LOWERCASE | UPPERCASE;
fragment LOWERCASE : [a-z] ;
fragment UPPERCASE : [A-Z] ;
나는 다음과 같은 오류가 점점 오전하는 "규칙의 다음 세트는 상호 왼쪽 재귀된다 [술어는]"
이 고정되는 방식을 보여주세요. 내 antlr 문법에서 상호 왼쪽 재귀를 제거하는 방법.
달성하려는 것은 무엇입니까? 술어는 항상 작은 글자로 시작해야한다는 귀하의 의도입니까? 유효하거나 유효하지 않은 토큰의 예를 들어 줄 수 있습니까? 오류 메시지의 기술적 인 이유는 물론 술어가 자체 규칙 대안으로 발생한다는 것입니다. – dlatikay
이것은 Datalog 문법의 일부입니다. pA가 유효합니다. PA가 유효하지 않습니다. 많은 경우에 상호 왼쪽의 재귀 오류가 발생했습니다. 오류를 수정하려면 어떻게합니까? 술어를 자체 규칙 대안으로 어떻게 사용할 수 있습니까? –
대문자로 시작하는 규칙은 렉서 규칙입니다. 혼란을 피하기 위해, 모든 대문자 이름을 사용하는 것이 관례입니다. 당신이 원하는 것은 :'PREDICATE : LOWERCASE (LOWERCASE | UPPERCASE) *;'. 그리고'PA '와 같은 입력을위한 또 다른 규칙을 제공해야합니다. 그렇지 않으면 토큰 인식 오류가 발생할 것입니다. – BernardK