【记录】关于ANTLR中对于预处理的支持:以为支持普通文件的预处理呢,但是实际上是ANTLR自身识别你写的语法文件的预处理

1.看到:

antlr.preprocessor.Tool

antlr.preprocessor.PreprocessorTokenTypes

程序包 antlr.preprocessor

antlr.preprocessor Class PreprocessorLexer

以为antlr终于有普通(C语言文件,EDDL语言文件等等)的预处理呢

2.实际上后来发现是:

是antlr解析自己的(.g的)grammar文件

自己的预处理

即:

antlr语言自身解析输入语法文件的预处理

而非:

用antlr预处理其他语言文件

3.所以:

后来去anltr的api:

http://antlr3.org/api/Java/index.html

中,的确还是没有找到,任何关于preprocess的支持。

 

【结论】

antlr中,对于用各种语言实现的,对于编译原理中涉及到的,输入代码文件的(比如.c,.h等源码)的预处理(include文件,宏替换,#if条件判断等等(叫做directive))的支持,

还是不支持的,至少没有人帮你写好的。

(只有别的个别的可参考的,比如java版本的preprocess方面的代码,供你参考)

而此处看到的预处理,只是ANTLR本身,内部实现方面,为了识别你所写的.g的antlr的语言,去处理而已,不是用antlr实现的,去对于普通文件的预处理。

 

注:

关于用antlr实现对于普通文件的预处理,可参考之前的一些折腾:

【记录】用antlr的preprocess去预处理一个新的eddl文件去除eddl中不支持的元素对应的文件内容

【记录】将antlr v2的C/C++的preprocess,即cpp.g,转换为antlr v3



发表评论

电子邮件地址不会被公开。 必填项已用*标注

无觅相关文章插件,快速提升流量