2011-01-22 69 views
1

我正在嘗試編寫JSON解析器(由於某些項目限制而不是使用免費的解析器之一),並且已經編寫了基於lex + yacc的版本包裝C++類。我重新定義了YY_INPUT宏以便從內存緩衝區讀取lex。現在交易是確保解析器是線程安全的,我不確定這是多麼容易確保。有兩個問題:圍繞lex/yacc解析器的線程安全的C++包裝器

  1. 最終YY_INPUT正在讀取全局對象。我想不出另一種方式來做到這一點。
  2. 我不知道生成的lex/yacc代碼最終會使用多少個全局變量。

如果人們可以分享他們做類似的事情的經驗,那將會很棒。

乾杯。

PS。我們不使用STL /字符串或任何模板。我們使用我們自己的基於變種的容器。我們在四個主要的Unices上使用lex + yacc而不是flex + bison。

+0

線程安全和重入是兩個不同的野獸。將標題更改爲使用正確的術語。 – paxdiablo 2011-01-22 08:08:24

回答