【问题标题】:How does one add an import statement to a anltr4 generated java parser for use of a class in a semantic predicate如何将导入语句添加到 anltr4 生成的 java 解析器以在语义谓词中使用类
【发布时间】:2021-03-19 08:41:49
【问题描述】:

我有一个 antlr4 语法,我想调用一个函数,其中另一个 Java 类在语义谓词中。如何告诉 antlr4 在类中添加适当的 import 语句,以便它可以找到我要使用的类?

这是一个 antlr4 代码片段,显示了使用我想要的类的谓词。注意语义谓词中对 OtherClass 的调用。

   somerule : { OtherClass.test(_input.LT(1).getText()) }? Token 

如何告诉 antlr4 在生成的解析器顶部添加以下导入语句?

import my.otherpackage.OtherClass;

我想我可以在 antlr4 写入生成的解析器的目录中添加一个像这样的“转发”类,但这似乎是一个 hack

package  GeneratedParser;

import my.otherpackage.OtherClass;

class OtherClassForParser {

   public Boolean test(String text) {
      return OtherClass.test(text);
   }
}

然后在antlr4中重写使用

   somerule : { OtherClassForParser.test(_input.LT(1).getText()) }? Token 

这可能会起作用,因为转发类将在同一个包中。

【问题讨论】:

    标签: java import package antlr4


    【解决方案1】:

    试试:

    @parser::header{
       import my.otherpackage.OtherClass;
    }
    

    (通常在语法的顶部)

    【讨论】:

    • 工作得很好(一旦我停止打错字)。谢谢。
    猜你喜欢
    • 2021-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-04
    • 2016-10-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多