2012-11-14 2 views
3

내가 다음 규칙을 가지고 있다고 상상해보십시오. TYPE_ID을 선택적으로 설정하고 싶으면 AST의 일부 기본값으로 바꾸십시오.누락 된 선택 토큰을 기본으로 대체하려면 어떻게합니까?

assignment : TYPE_ID? ID '->' expression 
TYPE_ID : ('A'..'Z')('a'..'z'|'A'..'Z'|'0'..'9')* ; 

예를 들어 나는, 위의 규칙 주어진, 구문 분석하려면 다음 코드를 expression 작업이 필요한 것으로 가정합니다. 나는 AST를 갖고 싶어

monday -> 1. 
Number tuesday -> 2. 

Number 다음 트리에 표시 같은 장소에서 트리에서 monday의 앞에 뭔가 있습니다.

검색 및 검색 한 결과이 작업을 수행 할 방법을 찾을 수 없습니까?

답변

3

당신은 다음 작업을 수행 할 수 있습니다 :이 잘 작동

tokens { 
    EMPTY; 
} 

assignment : TYPE_ID ID '->' expression -> ^(TYPE_ID ID '->' expression) 
      | ID   '->' expression -> ^(EMPTY ID '->' expression) 
      ; 
+0

, 난 그냥 같은 일 –

+1

@JarrodRoberson을 달성하기 위해 덜 자세한 방법이 있는지 궁금, 아니, AFAIK, 덜 자세한 방법은 없습니다. (비록 내가 너무 장황함을 찾지는 못했지만, 그것은 나만의 ...) –

관련 문제