如何使用 ANTLR 树语法从树解析器中获取信息



我已经成功地构建了一个解析器/词法分析器,为我的语言创建了一个AST。是的!!我现在进入了"口译员"阶段。我用引号说解释器,因为该语言是声明性的,不像过程语言那样真正执行。它正在被转换为 Java 对象,稍后在我的应用程序运行时使用。

当我走我的 AST 时,我需要将树节点转换为 Java 对象。这些 Java 对象在我的程序中的其他位置使用。我了解如何创建操作以创建 Java 对象,但是如何将操作的结果返回到我的主程序中?

我是否使用 @members{} 标签并在其中编写我的 getter 方法?

我是否使用 @members{} 标签并在其中编写我的 getter 方法?

是的,这是一种选择。但是,(树)语法规则可以返回自定义对象,以便在调用树查看器(或解析器)的入口点时,将返回此自定义对象:

语法

tree grammar YourTreeWalker;
...
walk returns [CustomObject obj]
 : ... 
   {
     $obj = ...
   }
 ;
...

代码中的其他位置

...
YourTreeWalker walker = new YourTreeWalker(...); 
CustomObject obj = walker.walk();  

最新更新