【发布时间】:2011-06-13 14:23:31
【问题描述】:
我正在尝试编写一个 JSON 解析器(而不是使用免费提供的解析器之一,因为某些项目限制)并且已经使用简单的包装 C++ 类编写了基于 lex+yacc 的版本。我已经为 lex 重新定义了 YY_INPUT 宏以从内存缓冲区中读取。现在的交易是确保解析器是线程安全的,我不确定确保这一点有多容易。有两个问题:
- 最终 YY_INPUT 正在从全局对象中读取。我想不出另一种方法。
- 我不知道生成的 lex/yacc 代码最终使用了多少个全局变量。
如果人们可以分享他们做类似事情的经验,那就太好了。
干杯。
PS。我们不使用 STL/string 或任何模板。我们使用自己的基于变体的容器。我们在四大 Unices 上使用 lex+yacc 而不是 flex+bison。
【问题讨论】:
-
线程安全和可重入是两种不同的野兽。更改了标题以使用正确的术语。