编译原理什么是移进规约冲突_编译原理——LR(1)分析,LALR(1)分析

之前我们说过了这个LR(0)分析和SLR(1)分析,LR(0)分析是把规约项的对应规则的序号填到所有的非终结符中,这个SLR(1)分析则是把规约项对应规则的序号写到FOLLOW集中。而如果FOLLOW集中出现了和移进项的冲突那么就称为移进规约冲突。即此时的FOLLOW集和这个移进项有交集。那么此时就要采取一种新的分析方法LR(1)分析。

LR(1)分析同上述两种分析方式不同的是添加了一个向前搜索符号。在搜索符号的前面加上一个“,”来表示界符。

对于LR(1)分析有几项要注意的地方

1.移进和规约的向前搜索符号不会发生变化。

2.待约项的搜索符号会发生变化(因为对于一个待约项来说它要把所有能写的都给写出来)

3.它是一个非终结符对应一个搜索符号,如果前后两个非终结符相同的话,我们要看当前的(未入栈的非终结符是哪个)来决定这个搜索符号。

若有A->αDβ,a

可以看出A的搜索符号为a

若D的搜索符号为FIRST(βa)。

之所以为βa是因为这个β可能为空,当β为空的时候,此时的搜索符号就为a。

在最后进行规约的时候把规约项对应的序号填入搜索符号对应的框中即可

fd384ff9fe2bd722604fc9388d502d58.png

下面介绍一下这个LALR(1)分析。

LALR(1)分析合并了相同的同芯集,所谓的相同的同芯集就是除搜索符号外前面都是一样的集合。在填写表的时候把这个状态写到一块即可。合并之后无规约-规约冲突即得到LALR(1)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值