编译原理各种文法的区别

1.LL(1)文法:
这个文法跟FIRST FOLLOW 集合绑在一起,有这两个集合那么一定是LL(1)文法的判别。
2.LR(0)文法与SLR(1)文法:
这个文法要用到项目集合来构造,比如我这个题目来判别。在这里插入图片描述
根据项目集的构建;
I0:
A’->.A
A->.aB
A->.
I1:
A’->A.
I2:
A->a.B
B->.Bb
B->.a
I3:
A->aB.
B->B.b
I4:
B->a.
I5:
B->Bb.

根据项目集,我们可以看出I0有移进归约冲突,但是follow(A)={#},与待移进的符号集合{a}没有交集。

I3也有移进归约冲突,但是follow(A)={#},与待移入的符号集合{b}没有交集,所以可以知道是SLR(1)文法。

SLR(1)文法是用来解决LR(0)文法的移进归约冲突与归约归约冲突的,上述的FOLLOW分析方法就是SLR(1)文法在LR(0)文法上的改进,所以可以判定为SLR(1)文法,如果不是SLR(1)文法,那么我们可以继续考虑LALR文法。

说起来很多人应该和我一样上课听讲不是很认真,括号中的数字代表向前先看几位来进行分析。
例如SLR(1)就是向前看一位来分析

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值