ANTLR:令牌列表有问题

时间:2014-03-13 09:40:47

标签: antlr

尝试(honor+=NAME|honor+=DIGIT)+,然后$honor是令牌列表。

我拿出了$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]

出了什么问题?

1 个答案:

答案 0 :(得分:0)

我认为列表是在两种备选方案中初始化的:

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

尝试这样的事情:

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

或者如果不起作用,可以这样:

rule
 : honor+=sub_rule+
 ;

sub_rule
 : NAME
 | DIGIT 
 ;