【发布时间】:2013-03-12 08:40:20
【问题描述】:
我正在编写一个 lex 程序来标记 C 程序。我编写了以下规则来匹配 C 预处理器指令
#.* {printf("\n%s is a PREPROCESSOR DIRECTIVE",yytext);}
但是当我使用一个文件作为 yyin 的输入时,文件中的预处理器指令被匹配的 yytext 显示为空
例如我得到
is a PREPROCESSOR DIRECTIVE
yyin 为 stdin 时没有问题,但只有在输入文件时才会出现这种情况。有替代的 LEX 规则吗?
【问题讨论】:
-
您通常会解析已经预处理的 C 程序。为什么要标记 C 程序?你不能使用一些现有的 C 解析器,或者扩展一些现有的编译器(例如,使用 gcc-melt.org,例如,对于
gcc)? -
这是我们编译器实验室实践科目中的一个练习
标签: c c-preprocessor lex