使用flex打印输出lexemes和C代码的标记

时间:2012-03-03 20:41:12

标签: flex-lexer lexical-analysis

我正在尝试使用词法分析器“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].
如果你能帮助我,我会很高兴的。并且还要感谢

1 个答案:

答案 0 :(得分:0)

好吧我处理了这个问题。所以我们应该使用包含词法分析器最后一个标记的yytext变量作为字符串。另外,yylex()函数将返回下一个标记的值或一个数字&lt; = 0表示EOF。