编译原理 廖力 第42讲 第52讲

第42讲 LALR分析

合并go to表没有什么问题

同心项目即栈内的符号相同,而将终结符规约后得到的符号与栈内符号可以规约到同一个产生式。

但是这样带来的问题是,以为产生式的不同,而不知道具体使用哪一个进行规约。

构造LALR分析表,首先要构造LR1项目集族

 

要注意的是规约与出错冲突

LALR基本已经看不懂了

重点:

1. LR0项目集族的构造 没有展望符号 LR0 SLR(引入first集合和follow集合) 二义

2. LR1项目集族的构造 LR1 (靠展望信息)LALR(合并同心)

SLR LR0 LR1 LALR

第44讲 语法制导翻译

在语法分析的同时,进行翻译

语义栈、状态栈、符号栈都是下推栈的三个属性

不需要value,因为这些值实际上都是语义栈的栈顶值

非终结符才有语义

第45讲

不用变量的地址,因为从地址只能取到值,采用符号表入口地址可以找到变量类型,方便类型转换。

语义值究竟是什么?为什么T是语义值?

调用相应的产生式进行规约,就同时用相应的语义子程序进行规约。

place栈就是语义栈

在语法栈进行规约时,使用语义栈进行对数据的处理。

i是一个变量,终结符,没有语义值,直接把i复制给E即可。(我怀疑是立即数)

为了减少运算量,进行优化

其实主要解决的就是代码是顺序写出来的,如果实现bool表达式,需要跳转。

47讲 48讲第6章习题课

第49讲,bool表达式回填,不懂

第51讲 while语句

在标志符表中会指明变量的类型,如果是数组,则会有一个指向内情向量表的地址。

先产生可变部分,然后与不变部分计算后,即可得到数组索引

第53讲

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值