> 文档中心 > LL(1)文法的判定及证明

LL(1)文法的判定及证明

《编译原理》是同学们在大学期间普遍认为比较晦涩难懂的一门课程,笔者认为其原因主要是其中的逻辑性较强,推理过程较为复杂,导致同学们听的是云里雾里。

今天给同学们带来的是编译原理中非常重要的一章——自顶向下语法分析方法,这一章有一个考试必考的知识点,那就是LL(1)文法的判断及证明,通俗的来说就是判断一个文法是否为LL(1)文法,笔者给同学们总结了一下解题过程。

(1)求出能推出ε的非终结符

这一块书上还是讲的十分清晰的,我就直接附图了,大家跟着书上的思路一步一步进行推导,应该没有太大的问题。

(2)计算FIRST集

这一块如果你看书或者是看网课可能就会开始懵了,大家可以看看我总结的方法(字可能比较丑)

 (3)计算FOLLOW集

直接上图

 

 

 

 (4)计算SELECT集

先上计算方法

 第一步,我们要根据推导之前的FRIST集来求推导以后的FRIST集,推导方法和之前求FRIST集是一样的

 第二步根据每一个推导式来求出其对应的SELECT集,计算方法在上面已给出

第三步就是最终的判断了

 

如果每一个推导式经过推导其对应的SELECT集的交集为空,其为LL(1)文法。