武汉理工大学-编译原理2019年期末复习提纲

编译原理2019年期末复习提纲

制作:纪元 - 刘李明

本提纲遵循CC-BY-NC-SA协议
(署名-非商业性-相同方式共享)

参考PPT:中国大学MOOC-武汉理工大学-编译原理(SPOC课程)

第一章

知识回顾

编译程序与解释程序

编译程序会生成目标代码,解释程序不会生成目标代码(边解释边分析,解释一句执行一句)

五个阶段:(注重功能+输入输出)

  • 词法分析
  • 语法分析
  • 语义分析+中间代码生成
  • 代码优化
  • 目标代码生成

前三个阶段属于前段,不依赖目标机

后三个阶段属于后端,依赖目标机

重点学习中间代码优化,一部分属于前段,一部分属于后端

第二章 - 文法与语言

知识回顾

文法的形式化定义

  • 第二章 知识点3 PPT24

遵循体系:乔姆斯基形式化定义体系

四元组:(vn-非终结符集,vt-终结符集,p-产生式集,s-文法开始符号

文法的分类

具体分类:0,1,2,3型文法

  • 2型文法:上下文无关文法,主要用于程序设计中的语法分析

  • 型文法:正规文法,主要用于单词的分析(用于识别单词)

文法等价

如果两个文法定义、描述的语言相同,那么认为文法等价。

  • 给语言写文法,得到的结果不一定唯一(角度不同结果不同)

  • 文法写出的语言相同,那么一定等价

建立在文法形式化上的推导

  • 第二章 知识点4 PPT2-3

主要用于语法分析阶段,特别是自顶向下语法分析中,指用产生式右部替换右部。

最左推导,最右,一般

  • 第二章 知识点4 PPT5

最左推导:坚持在当前推导步骤中,替换最左边那个非终结符。

最右推导:坚持在当前推导步骤中,替换最右边那个非终结符。

一般推导:在推导过程中无特定要求

推导符号表示

直接推导:双箭头

一步或多步推导:箭头上包括正闭包符号(加号)

零步或多步推导:箭头上包括闭包符号(星号)

句型、句子、语言

  • 第二章 知识点4 PPT2-4,7

给定一个文法机,如果从文法开始符号s出发,经过0步或多步推导得到一个串a

  • 如果a属于Vn、Vt的闭包,那么这个a就是句型。
  • 如果a属于Vt的闭包,那么这个a就是句子。(句子是仅包含终结符的句型)
  • 给定一个文法机,其所描述的语言就是句子的集合。(语言是属于句子的a的集合)

语法树(推导树)与二义性

  • 第二章 知识点4 PPT10、16

文法二义性:对于一个文法机,如果一个句子/型,能找到两个不同的最左/右推导(推导树),那么就有二义性

没有程序能判断一个文法机的二义性

习题

  1. 文法-语言(给语言写文法必考):P34:2,3,8,12,13,16
  2. 推导、语法树、文法的二义性:P34:4,6,7,8,9,11
  3. 短语、直接短语:P34:10,11

第三章-词法分析

知识回顾

词法分析任务、单词的输出

  • 第三章 知识点5 PPT22、17

编译的第一个阶段,对源代码程序进行扫描(自左向右自上而下)依据相应的规则识别出单词,并把单词转化为机内的统一形式token(二元组)

单词的分类

  • 第三章 知识点5 PPT1 6

单词的描述工具

  • 第三章 知识点5 PPT2 3-43
  1. 正规文法
  2. 正规式
  3. 有穷自动机
    • 确定有穷自动机(DFA)
    • 不确定有穷自动机(NFA)

NFA画法

  • 第三章 知识点6 PPT1 3-6

初态:双箭头
终态:双圈

词法分析程序的构造过程

  • 第三章 知识点8 PPT 3-25

由正规式,正规文法转化成NFA,然后确定化为DFA,最后化简DFA

习题

P64 1、2、3、4、7

正规文法转化为NFA

第四章-自顶向下语法分析

知识回顾

自顶向下语法分析思路

  • 第四章(1) 知识点10 PPT1 3

必须是LL(1)型文法)以文法开始符号为树根,采用自左推导的方法,自上而下为待识别符号串构建一棵语法树

LL(1)文法的定义及判别方法(FIRST、FOLLOW)

  • 第四章(1) 知识点10 PPT2 19,21-39

当且仅当同一终结符不同可选集两两不相交。

确定的自顶向下分析方法

  • 第四章(2) 知识点12 PPT 3-12 知识点13 PPT 1-18

递归下降法

预测分析法

预测分析表(LL(1)分析表)的构造

  • 第四章(2) 知识点13 PPT 2-4

对文法G的每个产生式A->a执行如下:

  1. 对每个a属于Select(A->a),将A->a加入M[A,a]
  2. 把所有无定义的M[A,a]标上“出错标志"

第五章-自底向上分析法

知识回顾

自底向上语法的基本思想

  • 第五章(1) 知识点15 PPT 2

实现自底向上分析最常用的技术是:移进-归约(shift-reduce)分析技术。

  1. 从所要分析的输入串开始进行分析
  2. 从左向右扫描输入串,一边将输入符移进分析栈内,一边检查位于栈顶的一串符号是否与某个产生式的右部相同,若发现相同,就替换为相应产生式的左部的非终结符(归约);若不相同,则继续移进输入符。
  3. 重复上一步骤,直到归约至文法开始符号。

其关键性问题是:如何识别句柄。

第六章语法制导翻译与中间代码的生成

知识回顾

属性文法

  • 第六章(1) 知识点26 属性文法PPT 2-4

在上下文无关文法基础上对文法增加了属性和规则,形成了属性文法。

语法制导翻译技术

在语法制导的同时进行翻译。

中间代码形式

  • 第六章(2) 知识点28 中间代码形式的PPT 4-12

常用:三地址码(TAC)、四元式、逆波兰式、数代法(?)

  • 2
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值