如何将import语句添加到anltr4生成的java解析器中,以便在语义谓词中使用类
我有一个antlr4语法,我想调用一个函数,其中另一个Java类位于语义谓词中。我如何告诉antlr4向类添加适当的导入语句,以便它能够找到我想要使用的类 下面是一段antlr4代码,它显示了一个使用我想要的类的谓词。注意语义谓词中对OtherClass的调用如何将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
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;
}
(通常位于语法的顶端)非常有效(一旦我停止打字)。谢谢