2011-04-15 22 views
6

yypush_parse() işlevine bir aditional parametresini (YYSTYPE tipi belirteci değil) nasıl iletebilirim?Bison - bir itme ve salt ayrıştırıcı için ek parametre

Çözümleyici gerçekten de geçerlidir, ancak bu bir aditional değişkeni, çözümleyicimi tümleştirmem gereken uygulamanın iş parçacığı güvenliği için çok önemlidir (bu bir PHP uzantısıdır, yani biz TSRM hakkında konuşuyoruz).

Sadece bu parametreden kurtulamam çünkü eylem kodu içinde, kullanıcı tarafından erişilebilen bir formda AST oluşturacak işlevleri çağırmaya gidiyorum.

Etrafa YYPUSH_DECLS kesmek için denedim ve söz konusu işlevi bildirerek kadarıyla çalışır ANCAK birkaç bin LOC aşağı yypush_parse uygulanmasını gelir ve ben işlev imzası nerede üzerine yazmak herhangi bir yol göremiyorum yypush_parse uygulaması başlar.

YYPARSE_PARAM yalnızca ayrıştırıcı bir itme değilken (anlayabildiğim kadarıyla) kullanıldığında kullanılır, fakat benim durumumda, işleme döngüsünde yapmam gereken şeylerden dolayı itiraf etmeliyim. Ayrıştırma kümesine yeni bir belirteç eklemeden önce.

%directive veya yardımcı olabilecek bir şey olup olmadığını merak ediyorum.

Diğer tarafta, ne tür bir ayrıştırıcı olursa olsun, YYPARSE_PARAM'un tanımlandığı şekilde kullanılması gerektiğini düşünüyorum. Bu üzücü değil.

cevap

0

%parse-param. YYPARSE_PARAM kullanımdan kaldırılmıştır ve kullanılmamalıdır.

+0

Maalesef, '% parse-param', yyparse() işlevi değil,' yypush_parse() 'içindir. –

+0

Ne hakkında konuşuyorsun? Benim için çalışıyor, bison 2.4.3 – Flavius

+0

Tamam: Yorumumu gözden geçirelim - ne yazık ki, dokümantasyon, '% parse-param' 'yypush_parse() ', AFAICS ile kullanılabileceğinden bahsetmiyor. Ampirik kanıtlarınız bunun kullanılabileceğini gösterir; Belki de Bison ekibine, bu belgenin eksik kaldığı bir not almalıyız. –