迭代/处理 ANTLR 中解析的 Token 列表
我有一条规则
((cns=IDENT '->')* IDENT | (cns=IDENT '->')* 'STOP') -> ^(PREFIX ^(EVENTS $cns*) ^(ENDS $procn? STOP?) )
,如果将 cns=IDENT
替换为“cns+=IDENT”,则该规则将正常工作。在这种情况下,我如何访问 cns
作为 $cns.text
。
I have a rule
((cns=IDENT '->')* IDENT | (cns=IDENT '->')* 'STOP') -> ^(PREFIX ^(EVENTS $cns*) ^(ENDS $procn? STOP?) )
This will work correctly if cns=IDENT
is replaced by 'cns+=IDENT'. In that case how can I access cns
as $cns.text
.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
要存储所有 IDENT 而不仅仅是最后一个 IDENT,必须将
cns=IDENT
更改为cns+=IDENT
。现在,如果您探索 ANTLR 生成的解析器 Java 代码,
cns
是一个通用的ArrayList
,其中所有存储的项都是Token
类型。现在可以通过使用循环来迭代此列表,并且您可以使用以下代码对项目执行任何操作:
This item is of Object type while and can be Casted(这是正确的术语吗?)到
Token
对象令牌
特定任务。To store all IDENTs and not only last one
cns=IDENT
has to be changed tocns+=IDENT
.Now if you explore parser Java code generated by ANTLR
cns
is a genericArrayList
where all stored items are of typeToken
.Now this list can be iterated through using a loop and you can do anything with the items using code like
This item is of Object type though and can be Casted(is this correct terminology?) to
Token
object forToken
specific tasks.