我正在尝试编写一个JSON解析器(而不是使用其中一个免费提供的解析器,因为某些项目限制)并且使用简单的包装器C ++类编写了基于lex + yacc的版本。我已经重新定义了lex的YY_INPUT宏来从内存缓冲区读取。现在的交易是确保解析器是线程安全的,我不确定它是多么容易确保。有两个问题:
如果大家可以分享他们做类似事情的经历,那就太棒了。
干杯。
PS。我们不会使用STL /字符串或任何模板。我们使用自己的基于变体的容器。我们在四个主要的Unices上使用lex + yacc而不是flex + bison。
答案 0 :(得分:3)
我没有太多使用yacc
直接工作的经验,但我知道bison
支持线程安全的reentrant parsers。它看起来也像lex
supports a reentrant lexer as well,我想如果你把它们放在一起它应该可以正常工作。