2011-01-07 9 views
1

는 그래서 같은 규칙이있는 ANTLR 문법을 가지고있다 : ID는 일반 변수 이름과 일치 쉼표는 쉼표와 일치하는 렉서 규칙입니다위한 렉서 규칙이주어진 모양의 antlr 트리를 만들려면 어떻게해야합니까?

rule: 
ID (COMMA ID)* 
; 

. 그래서 규칙은 하나 이상의 쉼표로 구분 된 변수

일치 내가 그렇게처럼 보이는 트리를 생성하고 싶습니다

:

ITEM 
    ID 
ITEM 
    ID 
.... 
ITEM 내가 각 ID 앞에 삽입 가상 노드입니다

녹이다.

트리 재 작성 구문을 사용하면 어떻게 될까요? 나는 모든 ID를 수집하기를 원한다면

일반적으로 그냥

rule: 
ID (COMMA ID)* -> ^(ITEM ID+) 
; 

를 사용하는 거라고하지만이 트리 생성합니다

ITEM 
    ID 
    ID 
    .... 

가 구현 langauge으로 중요한 경우 내가 C#을 사용하고 있습니다를 ANTLR 3.1.3

답변

1

나는 질문을 한 후에 내 감각에 빨리왔다.

rule: 
ID (COMMA ID)* -> ^(ITEM ID)+ 
; 
:

내가 그래서 같이 재 작성 구문을 사용할 필요가하고자하는 트리 모양을 얻으려면
관련 문제