2011-01-22 70 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

回答