我试图打印出使用词法分析器“flex”的词法和令牌,问题是我可以找到词法分析器,只能打印令牌而不是词法。这是简单的代码,我用你可以看到下面打印输出使用flex的C代码的词法和令牌
%{
#include<stdio.h>
char RW[] = "RESERVE_WORD";
%}
int [i][n][t]
%%
int printf("%s --> %s\n", yylex(), RW);
.|\n { /* Ignore all other */}
%%
int main(int argc, char *argv[]) {
yyin = fopen(argv[1], "r");
yylex();
fclose(yyin);
return 0;
}
当我做出一个词法分析这个函数yylex()函数返回“空”,它说
example5.l:8:1: warning: format ‘%s’ expects argument of type ‘char *’, but argument 2 has type ‘int’ [-Wformat].
我会很高兴,如果你可以帮助我。并且无论如何感谢
其实不,警告来自编译扫描仪。你似乎对如何使用yylex()有一个很大的误解,通过查看精细的手册可以解决这个问题:-)。你的输入和预期输出是什么? – 2012-03-04 01:45:24
你是真的。我处理它。我意识到yylex()返回一个整数,所以有yytext变量包括最后一个标记作为一个字符串。并感谢您的回应 – quartaela 2012-03-04 12:35:53
请问您是否可以通过工作代码发布答案,以便其他人可以看到您如何解决问题? – 2012-03-04 17:11:12