在编译lex程序时,获得了一个错误: 'yylval'的冲突类型 extern YYSTYPE * yylval;
知道怎么纠正这个吗? 这是lex代码
%{
#include<stdio.h>
#include"y.tab.h"
extern char *yylval;
%}
%%
"int"|"float"|"char"|"double" { yylval=strdup(yytext); return TYP;}
[a-z A-Z][a-z A-Z 0-9]* { yylval=strdup(yytext); return ID;}
";" return SEMI;
"," return COMA;
"{" return LB;
"}" return RB;
"\n" return NL;
[\t]+;
.;
%%
答案 0 :(得分:2)
您定义yylval
两次 - 一次是.y文件中的YYSTYPE
(导出到y.tab.h
),第二次定义为char *
。码。摆脱extern char *yylval;
并且多个定义将会消失,但您还需要更改lex代码中的{em>使用 yylval
以与您的任何内容兼容已在您的.y
文件中定义。