有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    $msg_content.text is returning a null exception

    如果没有看到所有涉及的规则和代码,就不可能对其进行评论。您是否可以编辑您的问题,并包含一个我或其他人可以运行的复制错误/异常的自包含示例

    (MSG (AGENTS A B) (MSG_CTS x y))

    I'd like to have some Java class "Message" with fields for "Agents" containing A, B and some Content field that will hold X, Y.

    看看这个教程列表:https://stackoverflow.com/questions/278480/antlr-tutorials,并不是所有的都是关于表达式计算器的My tutorial演示如何在树遍历器中使用自定义节点类

    另请参见this Q&A,它还展示了如何在树遍历器中使用自定义节点类