迭代/处理在ANTLR中解析的令牌列表

时间:2011-06-08 13:56:01

标签: parsing antlr antlr3 antlrworks

我有一条规则

((cns=IDENT '->')* IDENT | (cns=IDENT '->')* 'STOP') -> ^(PREFIX ^(EVENTS $cns*) ^(ENDS $procn? STOP?)  ) 

如果将cns=IDENT替换为'cns + = IDENT',这将正常工作。在这种情况下,我如何以cns的身份访问$cns.text

1 个答案:

答案 0 :(得分:0)

要存储所有IDENT,不仅要将cns=IDENT的最后一个{I}更改为cns+=IDENT

现在,如果您探索解析器,ANTLR cns生成的Java代码是通用的ArrayList,其中所有存储的项都是Token类型。

现在可以使用循环迭代此列表,您可以使用

等代码对项目执行任何操作
$cns.get(index)

这个项目是对象类型的,可以是Token特定任务的Token对象的Casted(这是正确的术语吗?)。