%{
#include <stdio.h>
#include "y.tab.h"
extern int yylval;
%}
%%
[a-zA-Z] { yylval= *yytext[0]; return ID; }
[0-9] { yylval= *yytext[0]; return NUM;}
. return yytext[0];
\n return 0;
%%
我正在编译这个lex文件和yacc文件,当我点击以下命令(cc lex.yy.c y.tab.h -ll)时,错误就是抛出上面的lex代码(错误:无效的类型参数一元'*'(有'int'))帮我解决这个问题 .
1 回答
从
*yytext[0]
中删除*
或[0]
.yytext
是指向char
的指针,因此yytext[0]
是char
,并且您无法取消引用char
,正如编译器告诉您的那样 .