Skip to main content

编译原理-再次预习

之前网课学的编译原理全忘光了。再重温一下吧。 本文参考《龙书第二版》

第一章#

一些概念词#

  • 编译器
  • 解释器

编译器解构#

  • 分析:得到符号表+中间表示形式
    • 词法分析/扫描:得到词素序列。每个词素/此法单元=(token_name, attribute_value)
    • 语法分析/解析:使用词素序列构建语法树。
    • 语义分析:检查语法,类型检查
    • 中间代码生成
    • 代码优化:改进中间代码
    • 代码生成
  • 综合

image

第二章#

语法指导翻译器#

image

  • 语法描述方法:上下文无关文法/BNF
  • 翻译过程:语法制导翻译技术
  • 中间代码形式:
    • 抽象语法树/Abastract Syntax Tree/AST/语法树
    • 三地址指令序列

上下文无关语法#

  • 一种用于描述程序设计语言语法的表示方法
  • 组成:
    • 终结符号:aka词法单元
    • 非终结符号:aka语法变量
    • 产生式集合:每个产生式 = 左部的非终结符号/产生式头 + 右部的终结符号+非终结符号表达式/产生式体
    • 开始符号:指定一个非终结符号
  • 推导:从开始符号,不断将非终结符号替换成该非终结符号的某个产生式体
  • 语言:可以从开始符号推导得到的所有终结符号串的集合,称为该文法定义的语言
    • 二义性:一个文法可以有不同的AST生成同一个给定的中介符号串
    • 后缀表示

image

语法分析#

  • 分析方法分类:
    • 自顶向下,如递归下降分析方法,预测分析法
    • 自底向上
  • 递归下降法:左递归/右递归产生式

词法分析#

  • 一个词法分析器从输入中读取字符,并将他们组成“词法单元对象”