2016-11-25 5 views
0

ANTLR 4.6, 2011 년 11 월 23 일의 스냅 샷.왼쪽 재귀 규칙에서 상호 왼쪽 재귀 제거

두 개의 규칙이 각각 왼쪽 재귀 적입니다. 왼쪽 재귀를 노출하는 여러 가지 대안을 확장했습니다. 왼쪽 재귀가 명시 적이기 때문에 ANTLR4가이를 처리합니다. 그러나 두 규칙은 상호 왼쪽 - 재귀 적입니다.

어떻게하면 상호 왼쪽 재귀를 해결할 수 있습니까? 그렇다면 규칙이 완전히 엉망이 아닙니다. 지금은 확장 된 것을 보여주는 좋은 설명이 있습니다. 그리고이를 상호 왼쪽 재귀에 관여하지 않는 primary2와 constant_primary2로 옮겼습니다.

constant_primary : 
    constant_primary2 
    | primary '.' method_call_body 
    | constant_primary '\'' '(' constant_expr ')' 
    ; 

primary : 
    primary2 
    | primary '.' method_call_body 
    | constant_primary '\'' '(' expr ')' 
    ; 

답변

1

하나의 옵션은 그룹 ID com.tunnelvisionlabs를 사용 through Maven 수 있습니다 ANTLR 4의 my fork 사용으로 전환하는 것입니다. 이 포크는 문법에서 실제로 작성한 형식과 일치하는 구문 분석 트리를 생성하는 동안 상호 왼쪽 재귀를 처리합니다.

이 기능은 다소 실험적입니다. 문제가 발생하면 문제 추적기에 내 포크에 대한 문제를 게시하십시오.