编译原理期末速成-LL(1)文法、FIRST集、FOLLOW集

文章目录

  • LL(1)文法的条件
  • LL(1)分析法
  • 构造FIRST(α)
  • 构造FOLLOW(A)
  • 习题强化

LL(1)文法的条件

  1. 文法不含左递归

  2. 对于文法中每一个非终结符A的各个产生式的候选首符集两两不相交。即若编译原理期末速成-LL(1)文法、FIRST集、FOLLOW集_第1张图片

  3. 对于文法中的每个非终结符A,若它存在某个候选首符集包含ε,则在这里插入图片描述

    这里,LL(1)的第一个L表示从左到右扫描输入串,第二个L表示最左推导,1表示分析时每一步只需要向前查看一个符号。

LL(1)分析法

对于一个LL(1)文法,可以对其输入串进行有效的无回溯的自上而下分析,假定要用非终结符A进行匹配,面临的输入符号为a,A的所有产生式为在这里插入图片描述

步骤:
编译原理期末速成-LL(1)文法、FIRST集、FOLLOW集_第2张图片

构造FIRST(α)

编译原理期末速成-LL(1)文法、FIRST集、FOLLOW集_第3张图片

构造FOLLOW(A)

编译原理期末速成-LL(1)文法、FIRST集、FOLLOW集_第4张图片

看完这些理论,有没有怀疑人生?我是谁?我在哪?这些是什么啊?小朋友真的有好多问号???

三分钟抚平一下内心的懵逼与无奈,下面这道题,写的比较啰里啰唆,但是看完应该能抚平你刚刚哪些内心无限的问号,看题吧~~~

习题强化

编译原理期末速成-LL(1)文法、FIRST集、FOLLOW集_第5张图片

先求所有非终结符的FIRST集:

编译原理期末速成-LL(1)文法、FIRST集、FOLLOW集_第6张图片

第一遍扫描结束,其结果为
编译原理期末速成-LL(1)文法、FIRST集、FOLLOW集_第7张图片

有FIRST集发生变化,继续重新开始扫描

编译原理期末速成-LL(1)文法、FIRST集、FOLLOW集_第8张图片

第二遍扫描结束,其结果为

编译原理期末速成-LL(1)文法、FIRST集、FOLLOW集_第9张图片

有FIRST集发生变化,继续重新开始扫描

编译原理期末速成-LL(1)文法、FIRST集、FOLLOW集_第10张图片

第三遍扫描结束,其结果为

编译原理期末速成-LL(1)文法、FIRST集、FOLLOW集_第11张图片

有FIRST集发生变化,继续重新开始扫描,同上面的步骤和方法,扫描整个文法,发现没有FIRST发生改变,所以结束,最终结果为

编译原理期末速成-LL(1)文法、FIRST集、FOLLOW集_第12张图片

求所有非终结符的FOLLOW集:
编译原理期末速成-LL(1)文法、FIRST集、FOLLOW集_第13张图片
编译原理期末速成-LL(1)文法、FIRST集、FOLLOW集_第14张图片
最终结果:
编译原理期末速成-LL(1)文法、FIRST集、FOLLOW集_第15张图片
一直在崩溃的边缘要不要把FOLLOW集写完,写完了但是比较草率,如果没看懂或者有不懂的可以在评论区或者私我,希望大家顺利通过期末考试,编译原理真的为难我们呜呜呜~~~~

你可能感兴趣的:(编译原理,学习方法)