我有两个问题:
在我的ANTLR解析器中,我有这个重写规则:
在我的树形语法中,我该如何利用收集到的msg_content标记?$msg_content.text会返回空异常。
更一般地说,你能给我提供一些指导,告诉我如何使用生成的AST树吗?我基本上想遍历节点并为不同的事物创建Java类,例如:
我有这个简单的树形结构被打印出来:
我想创建一个名为“Message”的Java类,其中包含字段“Agents”,包括A、B和一些内容字段,该字段将保存X、Y。
我已经阅读了《ANTLR明确指南》,但是没有看到如何使用组合的令牌,甚至没有看到如何像我想要的那样导航树的参考。好像每个ANTLR教程都是关于表达式求值器的!
我看过ANTLR在线手册中的“AST与Java接口”和“表达式求值器”,但我不太明白如何将其应用于我的问题。如果您能提供一个简单的例子,那就非常有帮助!
请帮忙...谢谢!
在我的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))
我想创建一个名为“Message”的Java类,其中包含字段“Agents”,包括A、B和一些内容字段,该字段将保存X、Y。
我已经阅读了《ANTLR明确指南》,但是没有看到如何使用组合的令牌,甚至没有看到如何像我想要的那样导航树的参考。好像每个ANTLR教程都是关于表达式求值器的!
我看过ANTLR在线手册中的“AST与Java接口”和“表达式求值器”,但我不太明白如何将其应用于我的问题。如果您能提供一个简单的例子,那就非常有帮助!
请帮忙...谢谢!
for
、while
和if
语句、函数等的小型语言。就像我解释的那样:在树遍历器中,我会准确地展示如何创建自定义节点类,这正是你所需要的。 - Bart Kiers