我有一条规则
((cns=IDENT '->')* IDENT | (cns=IDENT '->')* 'STOP') -> ^(PREFIX ^(EVENTS $cns*) ^(ENDS $procn? STOP?) )
如果将cns=IDENT
替换为'cns + = IDENT',这将正常工作。在这种情况下,我如何以cns
的身份访问$cns.text
。
答案 0 :(得分:0)
要存储所有IDENT,不仅要将cns=IDENT
的最后一个{I}更改为cns+=IDENT
。
现在,如果您探索解析器,ANTLR cns
生成的Java代码是通用的ArrayList
,其中所有存储的项都是Token
类型。
现在可以使用循环迭代此列表,您可以使用
等代码对项目执行任何操作$cns.get(index)
这个项目是对象类型的,可以是Token
特定任务的Token
对象的Casted(这是正确的术语吗?)。