2013-12-19 2 views
1

: 내가 이해에서식 대안에 동일한 우선 순위 수준으로 레이블을 지정하려면 어떻게합니까? 나는이 같은 규칙 대안 레이블을 지정할 수 있습니다 antlr4와

e : e '*' e # Mult 
    | e '+' e # Add 
    | INT # Int 
    ; 

, 위의 규칙, 배수는 배수 전에 대안 목록에 추가로 제공하기 때문에 이상 추가 높은 우선 순위를 가지고있다. 그래서 예를 들어

, 내가 쓴 경우 :

e : e '*'  e # Mult 
    | e ('+'|'-') e # Add 
    | INT # Int 
    ; 

4 - 2에서 1 + 2-+는 우선 순위가 동일합니다. 그러나 이제 대안은 최상위 수준이 아닙니다. 규칙 e '+' e # Adde '-' e #Sub을 따로 분류 할 수있는 방법이 있습니까? 그래도 두 대안 모두 우선 순위 수준이 같습니까?

답변

3

저는 두렵습니다. op = ('+'| '-')를 사용하여 op에 레이블을 붙인 다음 트리 탐색 중에 ctx.op() 값을 가져 와서 토큰 유형을 요청할 수 있습니다.

관련 문제