gpt4 book ai didi

c++ - 在 C++ 代码库中使用 Ragel 解析字符串的原因是什么?

转载 作者:太空宇宙 更新时间:2023-11-04 16:00:05 25 4
gpt4 key购买 nike

我继承了一个使用 Ragel 进行字符串解析的 C++ 项目。

这是我第一次看到这样做,我想了解为什么有人会使用 Ragel 而不是 C++ 来解析字符串?

最佳答案

parser generators (不恰本地称为“编译器-编译器”)非常易于使用并生成可靠且高效的 C++ 或 C 代码(特别是因为 parsing 理论很好理解)。

一般来说,使用源代码生成器可能是明智之举。有时,特别是在大型项目中,编写自己的一个是明智的(阅读 metaprogramming ,特别是 SICP 甚至 J.Pitrat's blog )。好build automation GNU make 等工具或 ninja可以轻松配置为运行 C 或 C++ 代码生成器并在构建时使用它们。

阅读Ragel介绍。另请查看 flex , bison , ANTLR , rpcgen , Qt moc , swig , gperf作为 C 或 C++ 生成器的常见示例。

在某些程序中,您甚至可以使用一些 JIT compilation库(例如 libgccjitLLVM )在运行时动态生成代码并使用它。在 POSIX 系统上,您还可以在运行时生成临时 C 或 C++ 文件,将其编译为 plugin ,并使用 dlopen 加载该临时插件& dlsym .拥有关于编译器和解释器的良好文化(例如通过 Dragon Book )是值得的。

在您的应用程序中嵌入一些解​​释器(如 luaguile )也是一种有趣的方法。但这是一个强有力的架构决策。

在许多情况下,生成源代码比手写更容易。当然,这并不总是可能的。

附言。在阅读您的问题之前,我从未听说过 Ragel!

关于c++ - 在 C++ 代码库中使用 Ragel 解析字符串的原因是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46486837/

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