2012-06-19 86 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))將僅收集第一個參數並忽略其他參數。但函數參數實際上會對多個參數進行調整。

有誰知道如何修復這棵樹步行者? 非常感謝!

回答

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);} 
;