如何将 import 语句添加到 anltr4 生成的 java 解析器以在语义谓词中使用 class

How does one add an import statement to a anltr4 generated java parser for use of a class in a semantic predicate

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

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

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

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

import my.otherpackage.OtherClass;

我想我可以在 antlr4 写入生成的解析器的目录中添加一个像这样的“转发”class,但这似乎是 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 

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

尝试:

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

(通常在语法的顶部)