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)就是向前看一位来分析

相关文章:

  • 2021-06-11
  • 2021-08-28
  • 2021-07-26
  • 2021-04-29
  • 2021-06-28
  • 2021-08-28
  • 2021-09-18
  • 2022-12-23
猜你喜欢
  • 2022-01-02
  • 2021-07-02
  • 2021-12-31
  • 2021-12-02
  • 2022-12-23
相关资源
相似解决方案