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

如何将import语句添加到anltr4生成的java解析器中,以便在语义谓词中使用类,java,import,package,antlr4,Java,Import,Package,Antlr4,我有一个antlr4语法,我想调用一个函数,其中另一个Java类位于语义谓词中。我如何告诉antlr4向类添加适当的导入语句,以便它能够找到我想要使用的类 下面是一段antlr4代码,它显示了一个使用我想要的类的谓词。注意语义谓词中对OtherClass的调用 somerule : { OtherClass.test(_input.LT(1).getText()) }? Token 如何告诉antlr4将以下import语句添加到生成的解析器的顶部 import my.otherpac

我有一个antlr4语法,我想调用一个函数,其中另一个Java类位于语义谓词中。我如何告诉antlr4向类添加适当的导入语句,以便它能够找到我想要使用的类

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

   somerule : { OtherClass.test(_input.LT(1).getText()) }? Token 
如何告诉antlr4将以下import语句添加到生成的解析器的顶部

import my.otherpackage.OtherClass;
我想我可以在antlr4编写生成的解析器的目录中添加这样一个“转发”类,但这似乎是一个黑客行为

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 
这可能会起作用,因为转发类将位于同一个包中。

请尝试:

@parser::header{
   import my.otherpackage.OtherClass;
}
(通常位于语法的顶端)

非常有效(一旦我停止打字)。谢谢