可以构造确定的(不带回溯)自上而下分析的文法条件:
(1) 文法不含左递归
(2) 文法中每个非终结符A满足
A→α1 |α2 |…|αn 则:
FIRST(αi)∩FIRST(αj)=Ø (i≠j)
(3) 文法中每个非终结符A , 若它存在某个候选首符集包含ε, 则
FIRST(A)∩FOLLOW(A) = Ø
如果一个文法G满足以上条件,则称该文法G为LL(1)文法。LL(1)文法中的第一个L表示从左到右扫描输入串,第二个L表示最左推导,1表示分析时每一步只需向前查看一个字符。
LL(1)文法 的确定的自上而下分析过程
面临的输入字符是a,A的所有产生式为
A→ α1 |α2 |…|αn
(1) 若a属于FIRST(αi ), 用αi 匹配
(2) 若a不属于任何FIRST(αi ), 则:
① 若ε∈FIRST(αi ) 且a∈FOLLOW(A), 则让A与ε匹配.
② 否则, a的出现是一种语法错误