バイソンの純粋なプッシュパーサーにmalloc()/ free()の代わりに、ヒープ管理用に独自のアロケーター/デアロケーター関数を指定する方法はありますか?
1 に答える
3
Bisonのメモリ割り当てのほとんど%{
は、マクロでリダイレクトできます-プロローグ(との間%}
)で、次のように書くことができます
#define YYMALLOC mymalloc
#define YYFREE myfree
mymalloc
Bison はandmyfree
の代わりにmalloc
andを呼び出しますfree
。malloc
ただし、提供する関数が標準のand とまったく同じ型シグネチャを持つことを期待していますfree
。余分な/異なる引数を渡す方法はありません。私があなただったら、関数のようなマクロは使いません。さらに悪いことに、私のコピー (Bison 2.4.1)では、直接yypstate_new
呼び出しが行わmalloc
れ、オーバーライドは不可能です。これは間違いなくバグです。
于 2011-03-21T21:20:12.153 に答える