【问题标题】:How can I get information out of a tree parser using the ANTLR tree grammar syntax?如何使用 ANTLR 树语法从树解析器中获取信息?
【发布时间】:2012-08-10 20:45:27
【问题描述】:

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

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

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

【问题讨论】:

    标签: antlr


    【解决方案1】:

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

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

    语法

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

    代码中的其他地方

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多