编译原理-再次预习
之前网课学的编译原理全忘光了。再重温一下吧。 本文参考《龙书第二版》
#
第一章#
一些概念词- 编译器
- 解释器
#
编译器解构- 分析:得到符号表+中间表示形式
- 词法分析/扫描:得到词素序列。每个词素/此法单元=(token_name, attribute_value)
- 语法分析/解析:使用词素序列构建语法树。
- 语义分析:检查语法,类型检查
- 中间代码生成
- 代码优化:改进中间代码
- 代码生成
- 综合
#
第二章#
语法指导翻译器- 语法描述方法:上下文无关文法/BNF
- 翻译过程:语法制导翻译技术
- 中间代码形式:
- 抽象语法树/Abastract Syntax Tree/AST/语法树
- 三地址指令序列
#
上下文无关语法- 一种用于描述程序设计语言语法的表示方法
- 组成:
- 终结符号:aka词法单元
- 非终结符号:aka语法变量
- 产生式集合:每个产生式 = 左部的非终结符号/产生式头 + 右部的终结符号+非终结符号表达式/产生式体
- 开始符号:指定一个非终结符号
- 推导:从开始符号,不断将非终结符号替换成该非终结符号的某个产生式体
- 语言:可以从开始符号推导得到的所有终结符号串的集合,称为该文法定义的语言
- 二义性:一个文法可以有不同的AST生成同一个给定的中介符号串
- 后缀表示
#
语法分析- 分析方法分类:
- 自顶向下,如递归下降分析方法,预测分析法
- 自底向上
- 递归下降法:左递归/右递归产生式
#
词法分析- 一个词法分析器从输入中读取字符,并将他们组成“词法单元对象”