0

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

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

“相当”肯定我已经看过了,但我再也找不到了。

在我的语法里面:

importStatement : 'import' ID ';' // Here ? an action (Java code)
                                  // to prepend an AST to my current AST ?

在输入文件中:

Import test;
4

1 回答 1

1

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

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

于 2013-05-21T13:19:19.493 回答