编译器的构造

编译原理是计算机科学里一个充分研究过的领域。高级任务是将源语言翻译成机器代码。通常,这项任务分为前端、中端和后端三个部分。前端主要处理源语言,中端执行转换以改进代码,后端负责生成机器代码。由于 LLVM 核心库提供了中端和后端,本章我们将重点讨论前端。 本章将介绍以下章节和主题:

  1. 编译器的组成,了解编译器中常见的组件
  2. 算术表达式语言,向你介绍一种示例语言,并展示如何使用语法来定义语言
  3. 词法分析,讨论如何为语言实现词法器
  4. 句法分析,包括根据语法构建解析器
  5. 语义分析,您将了解如何实施语义检查
  6. 使用 LLVM 后端生成代码,讨论如何与 LLVM 后端连接,并将前面所有阶段粘合在一起以创建一个完整的编译器

编译器的组成部分

自从计算机问世以来,已经开发出了成千上万种编程语言。事实证明,所有编译器都必须解决相同的任务,而编译器的实现最好根据这些任务来构建。从高层次来看,编译器由三个部分组成。前端将源代码转化为中间表示(IR)。然后,中端对中间表示进行转换,目的是提高性能或减小代码的大小。最后,后端根据 IR 生成机器代码。LLVM 核心库提供了一个由非常复杂的转换和后端组成的中间端,适用于所有流行平台。此外,LLVM 核心库还定义了一种中间表示法,用作中间端和后端的输入。这种设计的好处是,你只需关心你要实现的编程语言的前端。 前端的输入是源代码,通常是文本文件。为了理解源代码,前端首先要识别语言中的单词,如数字和标识符,它们通常被称为标记。这一步由词法识别器完成。接着,分析由标记形成的句法结构。这一步由所谓的分析器完成,分析结果就是抽象语法树(AST)。最后,由

Copyright ©Wang Junwei all right reserved,powered by GitbookLast Modified: 2024-03-29 02:29:00

results matching ""

    No results matching ""