编译概述

前端:与源语言有关而与目标机器无关的部分(分析部分),通常包括词法分析、语法分析、符号表建立、语义分析和中间代码生成
后端:与目标机器有关的部分(综合部分),一般与源语言无关,仅仅依赖于中间语言。通常包括与机器相关的代码优化、目标代码生成

文法,语言

介绍编译所涉及的形式语言理论的基本概念。

文法和语言的形式定义

  • 规则:规定用”::=”表示产生式(由…组成)对(U, x), 通常写为U ::= x 或U → x
  • 用规则推导句子:不断地用规则右部替代左部(最左推导从左向右替代、最右推导),直到句子只包含终结符
  • 文法(描述规定语言结构):G=(Vn, Vt, P, Z)
    • Vn:非终结符
    • Vt:终结符
    • P:规则的集合
    • Z:开始符号,Z∈Vn
  • 句型:通过原始Z可以推导出的序列。
  • 语言:L(G)={w|w∈Vt*, Z=>w} 已知文法可以通过推导得到语言(句子的集合)
  • 句型:通过画出句型的语法树,可以方便地找到句型的短语(句型的某个非终结符所能推出的符号串),简单短语,句柄(最左简单短语)
  • 语法树:把一个推导用树形图展开

词法分析

程序:字符串

正则文法和状态图

语法分析