gpt4 book ai didi

c++ - 围绕 lex/yacc 解析器的线程安全 C++ 包装器

转载 作者:行者123 更新时间:2023-11-30 03:08:39 26 4
gpt4 key购买 nike

我正在尝试编写一个 JSON 解析器(而不是使用其中一个免费提供的解析器,因为某些项目限制)并且编写了基于 lex+yacc 的版本和一个简单的包装器 C++ 类。我已经为 lex 重新定义了 YY_INPUT 宏以从内存缓冲区读取。现在的任务是确保解析器是线程安全的,我不确定确保这一点有多容易。有两个问题:

  1. 最终 YY_INPUT 从一个全局对象中读取。我想不出另一种方法。
  2. 我不知道生成的 lex/yacc 代码最终使用了多少个全局变量。

如果人们可以分享他们做类似事情的经验,那就太好了。

干杯。

附言。我们不为此使用 STL/字符串或任何模板。我们使用自己的基于变体的容器。我们在四大Unice上使用lex+yacc而不是flex+bison。

最佳答案

我没有太多直接使用 yacc 的经验,但我知道 bison 支持 reentrant parsers是线程安全的。它也看起来像 lex supports a reentrant lexer as well ,而且我猜想,如果将两者放在一起,效果应该会很好。

关于c++ - 围绕 lex/yacc 解析器的线程安全 C++ 包装器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4766785/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com