处理ANTLR4中“import”语句的最简单方法

时间:2013-05-21 12:54:00

标签: antlr4

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

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

“非常”确定我已经看过了,但我再也找不到了。

在我的语法中:

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

在输入文件中:

Import test;

1 个答案:

答案 0 :(得分:1)

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

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