我正在做一个软件来为算法生成动画。这些算法是用解释语言编写的,接近于 C(或多或少是面向 C 的伪代码)。因此,我的程序必须解释用这些语言编写的算法。此外,这种语言将一直增加以支持越来越多的功能。这里的关键问题是搜索一个可以轻松增加语言并轻松将不同解析器集成到同一程序中的库。该应用程序是用 GPL 许可的 C++ 编写的。
面向对象的解析器确实是我的目标解决方案。我需要帮助才能为此目的选择一个好的图书馆。还希望该库是多平台的,并且可以在公共发行版的官方存储库中使用:Ubuntu、Suse 等。
实际上,我或多或少地了解接下来的两个库/工具:
- Flex/Bison++:两者都是 Flex/Bison 包装器,允许生成 C++ 代码而不是 C 代码,并为您的类选择一个名称。问题:如果安装 Flex/Bison++,Flex/Bison 会被覆盖。如果用户想要编译我的代码,我不想让他们复杂化。此外,CMake 无法搜索库的版本号。这可以手动解决,但并不优雅。
- Boost.Spirit:它没有以前的问题,并且与我上面描述的所有理想特性相匹配。但是,我读过解析大语言和解决语法歧义并不好。此外,编译时间是巨大的。但是,我喜欢它可以以建设性的方式编写语法。这对于使代码/语言/程序可扩展非常重要。
你的建议是什么?