java ANTLR如何使用生成的AST树?
我有两个问题:
在我的ANTLR解析器中,我有一个重写规则:
msg: msg_content (COMMA msg_content)* -> ^(MSG_CTS msg_content+);
在我的树语法中,如何使用收集的msg_内容标记$味精含量。文本返回空异常
更一般地说,你能为我提供一些指导,关于如何使用生成的AST树吗?我基本上想遍历节点,为不同的东西创建Java类,例如
我有一个简单的打印树:
(MSG (AGENTS A B) (MSG_CTS x y))
我想要一些Java类的“消息”,带有包含A、B的“代理”字段,以及一些包含X、Y的内容字段
我已经阅读了ANTLR权威指南,但还没有参考过如何使用组合令牌,甚至没有参考过如何按照我的意愿在树上导航。好像每个ANTLR教程都是关于表达式计算器的
我在ANTLR在线手册中看到了:“用Java连接AST”和“表达式计算器”,但我不太明白如何将它们应用到我的问题中。如果你能提供一个简单的例子,那将非常有帮助
请帮忙。。。谢谢!
# 1 楼答案
如果没有看到所有涉及的规则和代码,就不可能对其进行评论。您是否可以编辑您的问题,并包含一个我或其他人可以运行的复制错误/异常的自包含示例
看看这个教程列表:https://stackoverflow.com/questions/278480/antlr-tutorials,并不是所有的都是关于表达式计算器的My tutorial演示如何在树遍历器中使用自定义节点类
另请参见this Q&A,它还展示了如何在树遍历器中使用自定义节点类