7

バイソンの純粋なプッシュパーサーにmalloc()/ free()の代わりに、ヒープ管理用に独自のアロケーター/デアロケーター関数を指定する方法はありますか?

4

1 に答える 1

3

Bisonのメモリ割り当てのほとんど%{は、マクロでリダイレクトできます-プロローグ(との間%})で、次のように書くことができます

#define YYMALLOC mymalloc
#define YYFREE myfree

mymallocBison はandmyfreeの代わりにmallocandを呼び出しますfreemallocただし、提供する関数が標準のand とまったく同じ型シグネチャを持つことを期待していますfree。余分な/異なる引数を渡す方法はありません。私があなただったら、関数のようなマクロは使いません。さらに悪いことに、私のコピー (Bison 2.4.1)では、直接yypstate_new呼び出しが行わmallocれ、オーバーライドは不可能です。これは間違いなくバグです。

于 2011-03-21T21:20:12.153 に答える