2012-06-19 1 views
1

반환 값의 여러 번 :ANTLR 트리 워커, 나는이 같은 나무 워커가

function: 
    ^(FUNCTION_TOK fcname=IDENTIFIER param=functionParameters*){ 
     a_param_arrayList.add(param); 
    } 
; 

functionParameters returns [Object sth]: 
    ^(PARAM_TOK value=IDENTIFIER){ sth = $value.getText();} 
; 

이것은, 난 그냥 ArrayList에에 매개 변수를 추가하는 간단한 시나리오 싶어하지만, 위의 코드를 (a_param_arrayList.add (param))는 첫 번째 매개 변수 만 수집하고 다른 매개 변수는 무시합니다. 그러나 functionParameters은 실제로 여러 매개 변수를 찾습니다.

누구나이 트리 워커를 수정하는 방법을 알고 있습니까? 대단히 감사합니다!

답변

1

이 문제는 규칙 인수를 사용하여 해결됩니다.

function: 
    ^(FUNCTION_TOK fcname=IDENTIFIER functionParameters[a_param_arraylist]*) 
; 

functionParameters [ArrayList arr] returns [Object sth]: 
    ^(PARAM_TOK value=IDENTIFIER){ sth = $value.getText(); arr.add(sth);} 
;