文章目录
- LL(1)文法的条件
- LL(1)分析法
- 构造FIRST(α)
- 构造FOLLOW(A)
- 习题强化
LL(1)文法的条件
-
文法不含左递归
-
对于文法中每一个非终结符A的各个产生式的候选首符集两两不相交。即若
-
对于文法中的每个非终结符A,若它存在某个候选首符集包含ε,则
这里,LL(1)的第一个L表示从左到右扫描输入串,第二个L表示最左推导,1表示分析时每一步只需要向前查看一个符号。
LL(1)分析法
对于一个LL(1)文法,可以对其输入串进行有效的无回溯的自上而下分析,假定要用非终结符A进行匹配,面临的输入符号为a,A的所有产生式为
步骤:
构造FIRST(α)
构造FOLLOW(A)
看完这些理论,有没有怀疑人生?我是谁?我在哪?这些是什么啊?小朋友真的有好多问号???
三分钟抚平一下内心的懵逼与无奈,下面这道题,写的比较啰里啰唆,但是看完应该能抚平你刚刚哪些内心无限的问号,看题吧~~~
习题强化
先求所有非终结符的FIRST集:
第一遍扫描结束,其结果为
有FIRST集发生变化,继续重新开始扫描
第二遍扫描结束,其结果为
有FIRST集发生变化,继续重新开始扫描
第三遍扫描结束,其结果为
有FIRST集发生变化,继续重新开始扫描,同上面的步骤和方法,扫描整个文法,发现没有FIRST发生改变,所以结束,最终结果为
求所有非终结符的FOLLOW集:
最终结果:
一直在崩溃的边缘要不要把FOLLOW集写完,写完了但是比较草率,如果没看懂或者有不懂的可以在评论区或者私我,希望大家顺利通过期末考试,编译原理真的为难我们呜呜呜~~~~