2011-06-08 57 views
0

解析我有一个规则迭代/处理标记列表中ANTLR

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

如果cns=IDENT被替换这将正常工作由“CNS + = IDENT”。在这种情况下,我如何才能以$cns.text的身份访问cns

回答

0

要存储所有IDENT,而不仅仅是最后一个cns=IDENT必须更改为cns+=IDENT

现在,如果您浏览解析器ANTLR生成的Java代码cns是一个通用的ArrayList,其中所有存储的项目类型为Token

现在,这个名单可以通过使用一个循环迭代,你可以使用代码做的项目类似的东西

$cns.get(index) 

此产品是Object类型的,但并可以铸造(这是正确的术语?) Token对象为Token特定任务。