编译原理 廖力 第14讲 第30讲

预处理:处理空行,注释等

词法分析可一行之后,就让语法分析去,而不是全部词法分析完。

fortran真是厉害啊。。。。。

 

位置在201号单元,遇到A1,根据二元式,指明其在符号表中的位置。

常量有多个表,对应多个表;但是标识符只有一个表。

第16 17 18讲为习题课,没有听。

上下文无关文法是语法分析的基础。

有限自动机 五元组(状态集,字母表,映射关系,初始状态,终结状态)

下推自动机:七元组 Q状态集,字母表,H下推栈栈内的字母表,映射(映射会改变栈的和状态机的状态)

q0,初始状态 Z0栈的初始状态 F终态集

r是栈顶元素的变化 q是状态的变化

推导,当栈顶是非终结符A的时候,如果遇到空串可以推出另一个终结符w,即为推导。

如果栈顶是个非终结符,就将其推导为终结符;如果是终结符,就与待处理的字符进行比对。

S为栈底的状态

如果栈内是a,输入的是b,那么是错误的,标记即可。

栈底初始符号S #用于标志栈底以及句子结束

(q,aacbb,aSb)中 aSb为栈内符号,aacbb是输入的凡此

究竟是选择哪一个进行分析,即(q,aSb),(q,c)有两种选择

这就带来了回溯的问题

栈空且输入完时,说明匹配完毕。

回溯,如果能回溯,就要知道回溯点的状态,这就占据了程序空间。

需要注意左递归会引起的无限循环。

第21讲:

上下文无关文法中应当没有左递归

主要的核心在于排序后,序号小的不适用序号大的,但是序号大的使用序号小的。

消除左递归之后,已经无法从S推出P和Q了,就删掉。

注意:是将所有的Pk都替代掉之后,在进行直接左递归。

 

如果候选式的左部开头相同,那么一开始无法区分,因此就需要提取左因子。

上下文无关文法允许产生式右边有非终结符,

将栈顶元素从将a替换为阿法

预测分析表中保存first集

 

Vn是非终结符

为什么会引入follow集合?因为如果非终结符有空串,那么非终结符的follow集合应当用于匹配

化简,消除左递归,first集合,提取左公因子,如果某一个符号的终结首符集合中有空串,那么那么就要求随附集。

在候选表中,填写的是候选式的first集合,而不是非终结符的

注意,非终结符的first集合中有空串时,则将该非终结符的预测分析表中的follow集合的相应元素填上空串,表示,当遇到这个符号时,则E作为空串,可以直接弹出。应当用在栈里E下面的那个符号去匹配。

 

26 25讲和24讲开头部分是习题课,略

第27讲

遇到句柄规约为非终结符

 

自顶向下是将栈顶符号替换为非终结符,展开进行匹配。

自下而上则是将终结符读入栈中,形成句柄时,替换为非终结符,逐步规约为开始符号。

不能存在s->ab c->ab,这样就不知道到底规约成哪个了。

注意是所有的符号,包括终结符和非终结符。

优先级的比较只比较终结符的,不比较非终结符的。

#小于任何一个终结符

 

1.1 编译器概述.flv 1.2 编译器结构.flv 1.3 编译器实例.flv 2.1 词法分析的任务.flv 2.2.1 词法分析器的手工构造1.flv 2.2.2 词法分析器的手工构造2.flv 2.2.3 词法分析器的手工构造3.flv 2.3.1 正则表达式1.flv 2.3.2 正则表达式2.flv 2.3.3 正则表达式3.flv 2.3.4 正则表达式4.flv 2.4.1 有限状态自动机1.flv 2.4.2 有限状态自动机2.flv 3.1.1 RE转换成NFA:Thompson算法1.flv 3.1.2 RE转换成NFA:Thompson算法2.flv 3.1.3 RE转换成NFA:Thompson算法3.flv 3.2.1 NFA转换成DFA:子集构造算法1.flv 3.2.2 NFA转换成DFA:子集构造算法2.flv 3.2.3 NFA转换成DFA:子集构造算法3.flv 3.2.4 NFA转换成DFA:子集构造算法4.flv 3.3.1 DFA的最小化:Hopcroft算法1.flv 3.3.2 DFA的最小化:Hopcroft算法2.flv 3.3.3 DFA的最小化:Hopcroft算法3.flv 3.4.1 从DFA生成分析算法1.flv 3.4.2 从DFA生成分析算法2.flv 3.4.3 从DFA生成分析算法3.flv 4.1.1 语法分析的任务1.flv 4.1.2 语法分析的任务2.flv 4.1.3 语法分析的任务3.flv 4.2.1 上下文无关文法和推导1.flv 4.2.2 上下文无关文法和推导2.flv 4.2.3 上下文无关文法和推导3.flv 4.2.4 上下文无关文法和推导4.flv 4.2.5 上下文无关文法和推导5.flv 4.3.1 分析树和二义性文法1.flv 4.3.2 分析树和二义性文法2.flv 4.3.3 分析树和二义性文法3.flv 4.3.4 分析树和二义性文法4.flv 4.4.1 自顶向下分析1.flv 4.4.2 自顶向下分析2.flv 4.4.3 自顶向下分析3.flv 4.4.4 自顶向下分析4.flv 4.5.1 递归下降分析算法1.flv 4.5.2 递归下降分析算法2.flv 4.5.3 递归下降分析算法3.flv 4.5.4 递归下降分析算法4.flv 5.1.1 LL(1)分析算法1.flv 5.1.2 LL(1)分析算法2.flv 5.1.3 LL(1)分析算法3.flv 5.1.4 LL(1)分析算法4.flv 5.1.5 LL(1)分析算法5.flv 5.1.6 LL(1)分析算法6.flv 5.1.7 LL(1)分析算法7.flv 5.1.8 LL(1)分析算法8.flv 5.2 LL(1)分析的冲突处理.flv 5.3.1 LR(0)分析算法1.flv 5.3.2 LR(0)分析算法2.flv 5.3.3 LR(0)分析算法3.flv 5.3.4 LR(0)分析算法4.flv 5.4 SLR分析算法.flv 5.5 LR(1)分析算法.flv 5.6.1 LR(1)分析工具1.flv 5.6.2 LR(1)分析工具2.flv 5.6.3 LR(1)分析工具3.flv 6.1.1 语法制导翻译1.flv 6.1.2 语法制导翻译2.flv 6.1.3 语法制导翻译3.flv 6.2.1 语法制导翻译的实现原理1.flv 6.2.2 语法制导翻译的实现原理2.flv 6.3.1 抽象语法树1.flv 6.3.2 抽象语法树2.flv 6.3.3 抽象语法树3.flv 6.3.4 抽象语法树4.flv 6.4.1 抽象语法树的自动生成1.flv 6.4.2 抽象语法树的自动生成2.flv 7.1.1 语义分析的任务1.flv 7.1.2 语义分析的任务2.flv 7.1.3 语义分析的任务3.flv 7.2.1 语义规则及实现1.flv 7.2.2 语义规则及实现2.flv 7.2.3 语义规则及实现3.flv 7.2.4 语义规则及实现4.flv 7.3.1 符号表1.flv 7.3.2 符号表2.flv 7.3.3 符号表3.flv 7.4 语义分析中的其它问题.flv
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值