C ++子类上的Bison类型冲突

时间:2012-07-25 02:22:01

标签: c++ bison

所以我在野牛中遇到类型冲突,形式为

warning: type clash on default action: <stmt> != <expr>

因为我有像

这样的作品
%type <stmt> Stmt
%type <expr> Expr
...
Stmt : Expr    /* empty */
     | Otherstuff {do other stuff.....}
     ;

我想知道是否有办法摆脱这些错误,因为Expr是Stmt的子类(我正在使用c ++),但是有额外的功能所以只需放入

%type <stmt> Stmt Expr

不起作用。有什么想法吗?

1 个答案:

答案 0 :(得分:3)

简单的方法是:

Stmt : Expr         {$$ =  $1;} // This is the same as default action