Bison'da salt itmeli ayrıştırıcı için malloc()/free() yerine yığın yönetimi için kendi allocator/deallocator işlevlerimi belirtmenin bir yolu var mı?Bir bizon itme saf ayrıştırıcısında yığın işleme
Bison'ın bellek ayırmalarını
6
A
cevap
3
En makrolarıyla yönlendirilebilir - önsözünde de (%{
ve %}
arasında) Eğer
#define YYMALLOC mymalloc
#define YYFREE myfree
yazabilir ve Bison sonra mymalloc
ve myfree
yerine malloc
ve free
arayacak. Bununla birlikte, sağladığınız işlevlerin standart malloc
ve free
ile aynı türde imzanın olması için bekler; Ekstra/farklı argümanlar iletmek için hiçbir yolu yoktur. Senin yerinde olsam, işlev benzeri makrolar kullanmazdım. Daha da kötüsü, kopyalamamda (Bison 2.4.1) yypstate_new
, doğrudan geçersiz kılma olmadan malloc
'u çağırır - bu muhtemelen bir hatadır.
Evet, zaten oluşturulmuş kaynağa bakarak buldum. +1 ve kabul edildi, iyi bir cevap. Bu hata 2.4.3'te yok. – Flavius