2011-03-21 1 views

Répondre

3

La plupart des allocations de mémoire de Bison peuvent être redirigés avec des macros - dans le prologue (entre %{ et %}) vous pouvez écrire

#define YYMALLOC mymalloc 
#define YYFREE myfree 

et Bison ensuite appeler mymalloc et myfree au lieu de malloc et free. Cependant, il s'attend à ce que toutes les fonctions que vous fournissez aient exactement la même signature de type que la norme malloc et free; il n'y a aucun moyen de faire passer des arguments supplémentaires/différents. Et je n'utiliserais pas de macros fonctionnelles si j'étais toi. Pire, dans ma copie (Bison 2.4.1) yypstate_new appels malloc directement, sans possibilité de dérogation - c'est sans doute un bug.

+0

Oui, je l'ai déjà découvert, en regardant la source générée. +1 et accepté, une bonne réponse. Il n'a pas ce bug dans 2.4.3. – Flavius