标签:cap 技术 width jpg 语法分析 16px follow round 递归
对于一个给定的文法,构造他的LL(1)分析表的步骤:
一:对文法进行等价变换
一般题目给定一个文法,都会存在直接左递归和公共前缀:
(1)首先会对文法消除直接左递归:方法(见“语法分析-消除左递归”)
(2)然后需要对已经消除左递归的文法进行消除公共前缀:方法:
二:求出每个产生式的predict集合
产生predict集合的方法(见“语法分析-First,Follow,Predict三集合求法”)
三:画LL(1)分析表
四:注意事项
有些文法不是LL(1)文法,所以下面给出判断一个文法是否是LL(1)文法的三个条件:
1)文法不含左递归 像这个样子A->Ab是不允许的(存在左递归)
2)对于文法中每一个非终结符A的各个产生式的候选首符集两两不相交。
即对于A->α1|α2|…|αn
要求FIRST(αi)∩FIRST(αj)=Ø (i≠j)
3)对于文法中的每个非终结符A,若它存在某个候选首符集包含ε,则
FIRST(A)∩FOLLOW(A)=Ø
2)和3)可以简述为,同一非终结符对应的不同产生式的predict集相交为空。
标签:cap 技术 width jpg 语法分析 16px follow round 递归
原文地址:https://www.cnblogs.com/TThornBirds-Blog/p/13429064.html