2014-03-13 109 views
1

嘗試(honor+=NAME|honor+=DIGIT)+然後$honor是令牌列表。ANTLR:令牌列表出錯

我拿出$honor列表

for(int r = 0; r < list_honor.size(); r++) 
    honorstr = honorstr + list_honor.get(r).text; 

輸入:test

輸出:[@752,2539:2585='test',<6>,19:11]

有什麼不好?

回答

0

我覺得列表在這兩種方案初始化:

rule 
: (honor+=NAME /* alternatvie 1 */ 
    | honor+=DIGIT /* alternatvie 2 */ 
    )+ 
; 

嘗試是這樣的:

rule 
: honor+=(NAME | DIGIT)+ 
; 

,或者如果不工作,這樣的事情:

rule 
: honor+=sub_rule+ 
; 

sub_rule 
: NAME 
| DIGIT 
;