我正在编写自己的脚本语言,我需要一个软件工具来生成用于解析我的语言的 C++ 代码。我需要一个词法分析器和一个生成 C++ 代码的解析器生成器。如果我也能生成一个 Visual C++ 2010 项目,那就太好了。建议?
4 回答
http://en.wikipedia.org/wiki/Comparison_of_parser_generators
对于 C/C++:http ://epaperpress.com/lexandyacc/
或查看:Boost.Spirit:
“Spirit 是一组 C++ 库,用于使用表达式模板和模板元编程实现为特定领域嵌入式语言 (DSEL) 的解析和输出生成。”
你真的需要新语言吗?也许使用一些像Lua,Python这样的知名产品会更好?
尝试使用 Flex 和 Bison。它们是很好的词法分析器和解析器生成器,可用于定义新语言。
这是一个老问题,但仍然可能相关:因为我对现有选项不满意,所以我最近编写了一个模板 c++ 解析器生成器,它不需要任何外部工具(您包含一个标题并直接在 c++ 源代码中定义语法) . 它使用可读的 PEG 语法,因此不需要单独的词法分析步骤。你可以在Github上查看。
您有两个选择:是否通过创建AST (抽象语法树)来创建自己的解析器,那么这对您来说将是一个很好的练习,但它很长而且很难实现。或者您可以使用开源解决方案,例如具有 C/C++ 语法的ANTLR解析器生成器以及预处理器。我从来没有使用过它,所以我不能说它对 C++ 的解析有多完整。那么如果你赶时间,想创建一个好的解析器,你最好使用第二种解决方案