在野牛推进纯粹的解析器堆处理

时间:2011-03-21 11:13:55

标签: c language-design bison parser-generator

有没有办法为堆管理指定我自己的allocator / deallocator函数而不是malloc()/ free()用于bison中的纯推送解析器?

1 个答案:

答案 0 :(得分:3)

Bison的大多数的内存分配可以用宏重定向 - 在序言中(%{%}之间)你可以写

#define YYMALLOC mymalloc
#define YYFREE myfree

然后Bison会拨打mymallocmyfree而不是mallocfree。但是,它希望您提供的任何函数具有与标准mallocfree完全相同的类型签名;没有办法让它传递额外/不同的参数。如果我是你,我不会使用类似函数的宏。更糟糕的是,在我的副本(Bison 2.4.1)yypstate_new直接调用malloc,没有覆盖可能 - 这可以说是一个错误。