LL(1)文法的判定及证明
《编译原理》是同学们在大学期间普遍认为比较晦涩难懂的一门课程,笔者认为其原因主要是其中的逻辑性较强,推理过程较为复杂,导致同学们听的是云里雾里。
今天给同学们带来的是编译原理中非常重要的一章——自顶向下语法分析方法,这一章有一个考试必考的知识点,那就是LL(1)文法的判断及证明,通俗的来说就是判断一个文法是否为LL(1)文法,笔者给同学们总结了一下解题过程。
(1)求出能推出ε的非终结符
这一块书上还是讲的十分清晰的,我就直接附图了,大家跟着书上的思路一步一步进行推导,应该没有太大的问题。
(2)计算FIRST集
这一块如果你看书或者是看网课可能就会开始懵了,大家可以看看我总结的方法(字可能比较丑)
(3)计算FOLLOW集
直接上图
(4)计算SELECT集
先上计算方法
第一步,我们要根据推导之前的FRIST集来求推导以后的FRIST集,推导方法和之前求FRIST集是一样的
第二步根据每一个推导式来求出其对应的SELECT集,计算方法在上面已给出
第三步就是最终的判断了
如果每一个推导式经过推导其对应的SELECT集的交集为空,其为LL(1)文法。