我正在尝试使用词法分析器“flex”打印lexemes和令牌,问题是我可以找到lexemes并且只能打印令牌而不是lexemes。这是我使用的简单代码,如下所示
%{
#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()函数返回“null”,它表示
example5.l:8:1: warning: format ‘%s’ expects argument of type ‘char *’, but argument 2 has type ‘int’ [-Wformat].
如果你能帮助我,我会很高兴的。并且还要感谢
答案 0 :(得分:0)
好吧我处理了这个问题。所以我们应该使用包含词法分析器最后一个标记的yytext
变量作为字符串。另外,yylex()
函数将返回下一个标记的值或一个数字&lt; = 0表示EOF。