最简单的处理方法;进口;ANTLR4中的声明

最简单的处理方法;进口;ANTLR4中的声明,antlr4,Antlr4,我使用的是ANTLR4,语法中有一个“import”语句 ANTLR4是否有自动打开和解析输入文件的选项,而不是在我的访问者中进行(为每个“导入”声明创建另一个解析器/词法分析器和访问者) “漂亮”当然我已经看过了,但我再也找不到了 在我的语法中: importStatement : 'import' ID ';' // Here ? an action (Java code) // to prepend an AST to m

我使用的是ANTLR4,语法中有一个“import”语句

ANTLR4是否有自动打开和解析输入文件的选项,而不是在我的访问者中进行(为每个“导入”声明创建另一个解析器/词法分析器和访问者)

“漂亮”当然我已经看过了,但我再也找不到了

在我的语法中:

importStatement : 'import' ID ';' // Here ? an action (Java code)
                                  // to prepend an AST to my current AST ?
在输入文件中:

Import test;

这方面没有内置的功能,主要是因为每种需要它的语言都有自己的一套规则来说明需要如何完成。此外,这可以快速地使整个项目的解析操作从O(n)变为O(n²)(即,解析每个文件一次,然后解析每个文件的整个项目)


如果您的语言允许您在解析导入之前构建正确的解析树(例如,它没有可以出现在导入中的任意
#define
语句),那么您应该很高兴您不是C/C++并且在解析导入语句之前独立解析每个文件。

谢谢您的回答,我知道这是一个经常被问到的问题。但我不确定(尤其是在ANTLR4中)是否存在一个公共模式(不一定是内置模式,可能只是一个java代码片段)。即使是一个非常幼稚的实现(虽然它完成了任务…)。但你是对的,一个更具体、设计更完善、效率更高的实现当然更好…:)