【发布时间】:2013-10-06 03:50:57
【问题描述】:
编译 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]+;
.;
%%
【问题讨论】:
-
bison的文档对此进行了很好的介绍。更改 YYLVAL 的类型取决于您拥有的 Bison 版本。参见例如gnu.org/software/bison/manual/html_node/…
标签: compiler-construction bison yacc flex-lexer symbol-table