ページ

2009-02-23

bisonをC++で使う際に

%union内に基底クラスを書いておき、非終端演算子でその派生クラスをコピーしようとすると警告が出る。


%{
class Base {};
class Derived : public Base {};
%}
%union {
Base* base;
Derived* derived;
}
%type <base> hoge
%type <derived> hage
%%
hoge : hage
// アクションを省略してあるので、hoge = hage; なコードが自動生成される
;


放置しても問題はないんだけど、ウザイので、ちゃんと手で書いてやると、警告が消える。


hoge : hage
{
$$ = $1;
}
;


そんだけ。

0 件のコメント: