1

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

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

不会工作。有任何想法吗?

4

1 回答 1

3

简单的方法是:

Stmt : Expr         {$$ =  $1;} // This is the same as default action
于 2012-07-25T03:16:10.400 回答