2012-03-24 56 views
0

我在c中使用flex和bison創建了一個小解析器。解析器將結果寫入一些全局變量,調用者函數從中讀取結果。在php擴展中flex + bison

我想將我的解析器打包爲一個php擴展。從我的理解從PHP文檔真正的全局變量不建議,因爲它們不是線程安全的,我必須使用模塊全局變量。

爲了使用模塊全局變量,你必須傳遞函數TSRMLS_DC作爲它的最後一個參數。

要知道如果我可以修改yyparse以接受TSRMLS_DC作爲參數。或者如果有另一種方式來訪問全局變量?

回答

2

我不會使用全局變量,但使用更現代的解析器生成器也是可重入的。看看我是如何爲meta extension(我使用稍微改變的檸檬和re2c)做到的。