2

我已经成功构建了一个为我的语言创建 AST 的解析器/词法分析器。是的!!我现在进入“翻译”阶段。我用引号说解释器是因为该语言是声明性的,因为它并没有像程序语言那样真正被执行。它被翻译成 Java 对象,稍后在我的应用程序运行中使用。

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

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

4

1 回答 1

1

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

是的,这是一个选择。但是,(树)语法规则可以返回您的自定义对象,因此当您调用 tree walker(或解析器)的入口点时,会返回此自定义对象:

语法

tree grammar YourTreeWalker;

...

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

...

代码中的其他地方

...
YourTreeWalker walker = new YourTreeWalker(...); 
CustomObject obj = walker.walk();  
于 2012-08-10T21:11:48.143 回答