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

时间:2012-08-10 20:45:28

标签: antlr

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

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

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

1 个答案:

答案 0 :(得分:1)

  

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

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

语法

tree grammar YourTreeWalker;

...

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

...

代码中的其他地方

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