2014-03-13 80 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 
;