我有两个问题:
在我的 ANTLR 解析器中,我有这个重写规则:
msg: msg_content (COMMA msg_content)* -> ^(MSG_CTS msg_content+);
在我的树语法中,如何使用收集到的 msg_content 标记?$msg_content.text 返回一个空异常。
更一般地说,您能否为我提供一些指导,关于如何使用我生成的 AST 树?我基本上想遍历节点并为不同的事物创建 Java 类,例如
我有一个打印的简单树:
(MSG (AGENTS A B) (MSG_CTS x y))
我想要一些 Java 类“消息”,其中包含 A、B 的“代理”字段和一些包含 X、Y 的内容字段。
我已经阅读了 ANTLR 权威指南,但还没有参考如何使用组合标记,甚至没有参考如何像我想要的那样在树下导航。就好像每个 ANTLR 教程都有关于表达式评估器的内容!
我已经看到:ANTLR 在线手册中的“Interfacing AST with Java”和“Expression evaluator”,但我不太明白如何将它们应用于我的问题。如果你能提供一个简单的例子,那将非常有帮助!
请帮忙...谢谢!