我使用的是ANTLR4,并且在我的语法中有一个"import"语句。
ANTLR4是否有一个选项来自动打开和解析输入文件,而不是在我的访问者(为每个"import"声明创建另一个解析器/词法分析器和访问者)?
"相当"肯定我已经看到它了,但是我再也找不到它了。
Inside my grammar:
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++,在解析导入语句之前独立解析每个文件。