2015年广州大学编译原理总复习选读.ppt

  1. 1、本文档共32页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
编译原理 总复习 授课教师:冯元勇 广州大学计算机科学与教育软件学院 复习要点 原理 把握整体框架 把握基本思想 把握核心特点 练习 以往习题,特别是容易犯错的习题 例题、课后习题 本讲有问题可随时提问 第1章 结论 程序设计语言的执行方式及其区别 编译 解释 是否生成目标代码 编译过程五个阶段 词法分析 语法分析 语义分析与中间代码生成 优化 目标代码的生成 各阶段的任务、输入、输出 编译程序的开发技术 自编译 交叉编译 自展 移植 编译系统结构图 第2章 词法分析 单词符号 是程序语言的基本语法单位 保留字 标识符 常数 运算符 界符 输出单词的形式: (单词种别,单词自身的值) 状态转换图 自动机 看得懂 确定化并化简 与正规式之间的相互转换 正规式 正规集 等价 常见问题的正规式表达 LEX 第3章 语法分析 文法 四类 特点 判断 常见问题的文法表达 文法二义性消除技巧 推导和语法树 最左/右推导 规范归约 短语 素短语 句柄 句型 句子 分析法 自上而下分析法:递归下降、LL(1) 自下而上分析法:算符优先、LR 第3章 语法分析 分析法 递归下降:递归函数调用 不确定性消除 左递归消除:等价变换为右递归 回溯消除:最左公因子提取 LL及LR、算符优先 共同点 分析表驱动 输入串加括号 从左到右扫描 不同点 LL:自上而下推导?从VN开始?VN为行 算符优先:自下而上VT优先比较?行、列均为VT LR:自下而上归约?过程中VN代表最近成功史(行) 表驱动的语法分析工作机制 用堆栈实现存储已展开的分析工作,栈顶是当前状态(行),与当前输入符号(列)一道,决定下一步的处理(表单元) 初始:压入开始状态(开始符号/开始状态/左括号#) 循环:移进,或归约。匹配时对栈顶若干元素进行替换 LL:移进指符号与栈顶匹配,归约指待归约,即推导 算符优先与LR:移进指压栈,归约指用产生式左部替换右部(栈顶) 直到结束 LL分析表的构造 单元值为待推导的产生式,因此构造依据是首字符集FIRST,若对A推导,则当前符号必须为其首字符之一。 M[P, a]表示当前需对P推导,且当前符号为其首字符a时,按A的某个候选式推导,该候选式的首字符集含有a。 由此,构造时,对每个a∈FIRST(P),填入P→首字符含a的候选式α。 但是,当P?*ε时,表示遇到FOLLOW(P)中的符号时,需要按P→ε来推导,当前输入符号交给后续非终结符,因此填入P→ε。 定理 P?*Q…蕴含FIRST(Q)?FIRST(P) P?*…Q蕴含FOLLOW(P)?FOLLOW(Q) 算符优先分析表的构造 根据优先关系对比找最左素短语 只存在于语法树剪枝过程中左右相邻的终结符。 因此,优先关系只定义于以下三种情况: A→…aRb…: a?b A→…aR…且R?+Qb…:a?b A→…Rb…且R?+…aQ:a?b 为此,需要定义FIRSTVT与LASTVT。 FIRSTVT(P)={a∣P?+Qa…} P→Q…?FIRSTVT(Q)?FIRSTVT(P) LASTVT(P)={a∣P ?+ …aQ} P→…Q?LASTVT(Q)?LASTVT(P) 素短语的形式为 …? ? ? … ? ? … LR分析表的构造 栈顶为句柄,整个栈则为活前缀 活前缀的要求决定了状态转换图(项目集构造)必须从开始状态(开始符号ε闭包)开始 由于是DFA,每次跳转惟一,因此,状态定义为ε闭包 构造要点:实际就是构造状态转换矩阵 源状态为行 跳转边为列 目标状态为单元值 移进:按终结符跳转边跳转 归约:按非终结符跳转边跳转。是对最近输入的总结,相当于递归分析中的返回,因此不真正吃进输入 各变种的不同点:归约跳转时对后续待符号限制不同 第4章 语义分析与中间代码生成 静态分析 语法制导 属性传递、产生式语义动作 为了便于及时生成语义信息与传递,必要对产生式改写 第5章 代码优化 局部优化(基本块) 线性块 唯一入口 唯一出口 DAG优化:常量优化 无用赋值优化 公共子表达式优化 全局优化 流图 循环 回边 必经结点(集) DOM 优化措施:代码外提 强度削弱 删除归纳变量 第6章 运行时存储空间组织 静态存储分配 编译时空间大小确定,不允许 动态数组 动态数据结构 递归调用 栈式存储分配 后申请 先释放 递归调用 可变数组 活动记录 堆式存储分配 自由分配与释放 可利用空间表 第7、8章 目标代码生成与符号表及错误处理 一个简单代码生成器 待用信息 活跃信息 符号表 构成 组织方式 常用符号表 符号表内容 错误处理 查错 改错 各种分析器中的语法错误校正 语义错误校正 遏止错误株连信息 遏止重复出错信息 难点复习 有问题可随

文档评论(0)

1112111 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档