【问题标题】:Lexical Analysis词法分析
【发布时间】:2011-03-20 09:22:51
【问题描述】:

我的目标是做一个非常简单和基本的 C 语法检查器。 (不是一个完整的编译器,而只是一个基本程序,它将源代码作为输入并打印出显示错误的代码)。我想使用 C++ 作为这方面的语言。

谁能指导我用 'c++' 语言编写以下正则表达式:

  1. 作业
  2. 切换

任何细节/建议/指导将不胜感激。

【问题讨论】:

  • 请注意,词法分析和句法分析是非常不同的事情。词法分析(扫描)将您的输入划分为标记,句法分析(解析)从这些标记中生成语法树。

标签: c++ c regex visual-c++ compiler-construction


【解决方案1】:

我认为您不能仅使用正则表达式解析C。您需要开始研究词法分析器、解析器、语法等...

一个好的起点可能是:Quick Starter on Parser Grammars - No Past Experience Required

您可以在线查找C 的语法yacc/lex

【讨论】:

    【解决方案2】:

    检查 C 代码的语法需要的不仅仅是正则表达式。您将需要一个支持解析代数伽玛的工具,我建议您查看http://www.gnu.org/software/bison/,它将在 C++ 中生成解析器的“骨架”,以便您可以对其进行编辑并添加语法检查代码。

    【讨论】:

      【解决方案3】:

      使用clang 库。教程可以在GitHub找到。

      【讨论】:

        【解决方案4】:

        试试boost spirit

        【讨论】:

          【解决方案5】:

          要识别 C 语句,词法分析是不够的,因为词法分析器在字符级别工作。除了 C 词法分析器之外,您还需要一个 C 解析器,它将对源代码进行语法分析。 LRSTAR Parser Generator 提供了一个 C 项目,可以让您启动并运行。

          【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-05-30
          • 2012-05-17
          • 1970-01-01
          • 2014-04-21
          • 1970-01-01
          • 2019-06-07
          相关资源
          最近更新 更多