LL(1)概念
改造文法
First集
理论
First集:一个文法符号串所可能推导出的符号串的第一个终结符的集合
符号串ABC…,并且A不能推导出空串ε,显然根据定义First(ABC…)=First(A)
符号串ABC…,并且A可能推导出空串ε,当A不是空串的时候,显然First(A)属于First(ABC…),但当A是空串的时候,ABC…就成了BC…,此时根据B是否能推出空串来决定是否将First(B)加入First (ABC…)。这是一个递归的推导,综上所述,符号串中的第一个不能推出空串的符 号前面所有符号的First集合减去空串ε都属于First(ABC…),第一个不能推出空串的 符号的First集合也属于First(ABC…)。
注意:First集合中的符号一定是终结符,终结符也包括空串ε。
做题
假设A、B都可以推出空串,C不能推出空串,
则有First(ABC…)=First(A)-ε∪First(B)-ε∪First(C)。
Follow集
理论
Follow集:文法符号后面可能跟随的终结符的集合(不包括空串ε)。
终结符的Follow集合没有定义,只有非终结符才会有Follow集合。
做题
求Follow(B)就看-->右边含有B的式子就可以了
具体题目
构造LL(1)分析表
(1)对每个终结符a∈FIRST(a),将A->a加到M[A,a]中。
(2)如果ε∈FIRST(a),则对于任何b∈FOLLOW(A),将A->a加到M[A,b]中。