【发布时间】:2014-02-27 11:25:49
【问题描述】:
野牛扔这个
错误:'exp' 的 $2 没有声明类型
但我相信我已经宣布了一切。
灵活:
[0-9]+ {
yylval.string =yytext; //yes I want ints as strings.
return INT;
}
"*" {yylval.string=yytext; return MUL;}
"/" {yylval.string=yytext; return DIV;}
"-" {yylval.string=yytext; return MINUS;}
"+" {yylval.string=yytext; return PLUS;}
"^" {yylval.string=yytext; return POW;}
野牛:
%union {
char * string;
}
%token <string> INT DEC STRING PLUS MINUS MUL DIV POW
%type <string> OP
.
.
.
exp: type {foo(x,$1);}
|exp
OP {foo(x,$2);}
exp;
OP: PLUS | MINUS| MUL| DIV| POW ;
.
.
.
还有很多代码,但这是发生错误的部分。 当我为每个运算符创建规则时,我没有收到任何错误,但由于递归,我遇到了其他问题,所以我相信我需要这样做。
【问题讨论】:
-
我怀疑您的实际代码与您发布的代码不同(您有一个简单的错字,您在总结时无意识地纠正了它)。尝试发布一个摘要
.y文件,您实际上可以通过 bison 运行并生成错误。
标签: bison flex-lexer