我正在使用ANTLR4,我的语法中有一个“import”语句。
ANTLR4是否有自动打开和解析输入文件的选项,而不是在访问者中进行(为每个“import”声明创建另一个解析器/词法分析器和访问者)?
“非常”确定我已经看过了,但我再也找不到了。
在我的语法中:
importStatement : 'import' ID ';' // Here ? an action (Java code)
// to prepend an AST to my current AST ?
在输入文件中:
Import test;
答案 0 :(得分:1)
这没有内置功能,主要是因为每种需要它的语言都有自己的一套规则来完成它的工作。此外,这可以快速使整个项目的解析操作从O(n)到O(n²)(即解析每个文件一次,解析为每个文件的整个项目)。
如果您的语言允许您在解析导入之前构建正确的解析树(例如,它没有可以出现在导入中的任意#define
语句),那么您应该很高兴您不是C / C ++并在解析import语句之前独立解析每个文件。