【问题标题】:C++ parser generator [closed]C++ 解析器生成器 [关闭]
【发布时间】:2013-03-21 08:07:45
【问题描述】:

我正在编写自己的脚本语言,我需要一个软件工具来生成用于解析我的语言的 C++ 代码。我需要一个词法分析器和一个生成 C++ 代码的解析器生成器。如果我也能生成一个 Visual C++ 2010 项目,那就太好了。有什么建议吗?

【问题讨论】:

  • 您的语言有多复杂?您是否考虑过使用Boost.Spirit
  • 我的语言不是很复杂...我需要做变量赋值、for 和 while 循环、if 语句、表达式计算,然后解析一些特殊命令,解析器必须识别这些命令才能生成TCP/IP 连接上的字符串...

标签: c++ parsing lexer lexical


【解决方案1】:

http://en.wikipedia.org/wiki/Comparison_of_parser_generators

对于 C/C++:http://epaperpress.com/lexandyacc/

或者看看:Boost.Spirit:

"Spirit 是一组用于解析和输出生成的 C++ 库 实现为领域特定嵌入式语言 (DSEL),使用 表达式模板和模板元编程。”

您真的需要新语言吗?也许使用一些像Lua,Python这样的知名产品会更好?

【讨论】:

  • 我需要一门新语言,因为我还必须解析一些特殊的脚本命令。对于这些命令中的每一个,解析器都必须构建一个适当的字符串来写入套接字。
【解决方案2】:

尝试使用 Flex 和 Bison。它们是很好的词法分析器和解析器生成器,可用于定义新语言。

http://en.wikipedia.org/wiki/Flex_lexical_analyser

【讨论】:

    【解决方案3】:

    这是一个老问题,但仍然可能相关:由于我对现有选项不满意,我最近编写了一个模板 c++ 解析器生成器,它不需要任何外部工具(您包含一个标题并直接在c++ 源代码)。它使用可读的 PEG 语法,因此不需要单独的词法分析步骤。您可以在Github 上查看。

    【讨论】:

      【解决方案4】:

      您有两个选择:是否通过创建AST(抽象语法树)来创建自己的解析器,那么这对您来说将是一个很好的练习,但是它很长而且很难实现。或者,您可以使用开源解决方案,例如 ANTLR 解析器生成器,它具有 C/C++ 语法和预处理器。我从来没有使用过它,所以我不能说它对 C++ 的解析有多完整。那么如果你赶时间,想创建一个好的解析器,你最好使用第二种解决方案

      【讨论】:

        猜你喜欢
        • 2011-09-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-23
        • 1970-01-01
        • 2010-09-10
        • 2013-01-05
        • 1970-01-01
        相关资源
        最近更新 更多