130 likes | 233 Views
语言与语言的翻译 编译器的基本组成 编译器的分析 / 综合模式 ( 编译器基础架构 ) 扫描遍数 编译器的编写. 第一章. 第二章. 词法的双重含义: 词法规则 + 词法分析 模式、记号与单词 形式化描述:正规式与正规集 记号的识别:有限自动机 NFA :与正规式有对应关系,易于构造,状态数少; DFA :具有确定性,不易构造,状态数可能多; 识别方法:模拟 DFA 、模拟 NFA 对于正规式 r ,构造自动机识别字符串 x ,有结论:. 第二章. 从正规式到词法分析器 正规式描述模式 由正规式构造 NFA
E N D
语言与语言的翻译 编译器的基本组成 编译器的分析/综合模式(编译器基础架构) 扫描遍数 编译器的编写 第一章
第二章 词法的双重含义:词法规则+词法分析 • 模式、记号与单词 • 形式化描述:正规式与正规集 • 记号的识别:有限自动机 • NFA:与正规式有对应关系,易于构造,状态数少; • DFA:具有确定性,不易构造,状态数可能多; • 识别方法:模拟DFA、模拟NFA 对于正规式r,构造自动机识别字符串x,有结论:
第二章 • 从正规式到词法分析器 • 正规式描述模式 • 由正规式构造NFA • NFA的确定化(子集法:smove, ε-闭包) • DFA的最小化(可区分概念) • 词法分析器:表驱动与直接编码
第三章 • 程序设计语言与文法 • 正规式与正规文法 • 上下文无关文法CFG = (N, T, P, S) • 文法分类:0型、1型、2型和3型 • 有关推导的基本概念 • 产生语言的基本方法-推导:句子与句型、直接推导与推导、最左推导与左句型 • 分析树与语法树 • 分析树记录推导过程并反映语言结构 • 语法树仅反映语言结构而忽略推导过程,树中没有非终结符 • 二义性与二义性的消除
第三章 • 自上而下分析 • 分析方法:用推导的方法从上到下构造分析树,谋求与输入序列的匹配,是一种试探的方法; • 对文法的要求:为避免回朔与无穷递归,要求文法没有公共左因子和左递归; • 递归下降子程序:每个非终结符是一个子程序 • 预测分析 • 下推自动机工作模式:格局与格局的变换 • 预测分析表:四个动作、分析表中的内容 • 预测分析表的构造: FIRST集合与FOLLOW集合 • LL(1)文法及其判别方法
自下而上分析 • 分析方法:用归约的方法从叶子到根构造分析树,谋求对输入序列的匹配 • 基本概念:短语、直接短语、句柄、规约、规范规约、剪句柄 • 基本方法: 用移进-归约方法实现剪句柄 • LR文法与LR分析:LR(0), SLR(1), LALR(1), LR(1) • SLR(1)分析 • 格局与格局变换、改变格局的四个动作 • 移进-归约分析表:动作表与转移表 • SLR(1)分析器的构造 • 识别活前缀的DFA:LR(0)项目、项目集、项目集族、子集法 • 识别活前缀:有效项目、可移进项、可规约项、冲突 • SLR(1)文法:简单向前看一个终结符
第四章 重点是程序设计语言的静态语义分析,并且在语法分析的基础上生成中间代码,采用的基本方法是语法制导翻译。 • 语法制导翻译的基本概念 • 语法与语义 • 属性与语义规则 • 语义规则的两种形式 • 中间代码 • 为什么生成中间代码 • 常用形式:树、后缀式、三地址码(三元式、四元式) • 符号表的组织 • 条目与信息存储(直接/间接) • 作用域信息保存(线性表、散列表)
第四章 • 声明语句的翻译 • 定义与声明:类型定义与变量声明,过程定义与声明 • 变量声明:填写符号表 • 过程声明 • 左值与右值 • 值调用、引用调用、复写-恢复、换名调用 • 名字的作用域:静态作用域与最近嵌套原则 • 嵌套定义的过程中信息的存储 • 可执行语句的翻译 • 简单算术表达式和赋值句的翻译:类型转换 • 数组元素的引用
4.9 本章小结 布尔表达式短路计算的翻译:为什么需要短路计算,短路计算的控制流,真出口与假出口,真值链与假值链 控制语句的翻译:控制语句的分类,无条件转移与条件转移,拉链/回填技术 9
*第五章 本章介绍程序运行时的空间组织,重点是讨论如何通过对过程的静态分析(包括符号表的使用)建立运行环境,以保证程序的正确执行。 • 过程的动态特性 • 过程、活动、生存期、控制流; • 活动树、控制栈、活动记录; • 名字的绑定、环境与状态; • 运行时的存储空间组织 • 内存划分:可执行代码、静态数据区、栈、堆; • 活动记录的内容:参数与返回值、控制链、访问链、机器状态、本地数据、临时变量等。
*第五章 • 不同的存储分配策略 • 静态分配:绑定是静态的 • 栈分配:基于控制栈自动管理内存 • 堆分配:根据要求从堆数据区动态地分配和释放内存 • 栈分配策略 • 调用序列与返回序列; • 控制链与访问链:控制链用于活动记录的正确切换,体现活动调用关系;访问链用于访问非本地数据,体现过程嵌套关系; • 访问链的实现:访问链、显示表;
答疑 • 答疑:7号星期天下午,8号星期一下午、晚上,信远楼1楼教师休息室
题型 一、填空题(10题,每空1.5分,共15分) 二、简答题(4题,每题6分,共24分) 三、计算题(6题,共61分) 12, 6, 12, 12, 7, 12