最近学习了LL(1)文法的预测分析法,这种方法不同于递归下降分析法,可直观通过栈查看语法分析过程,现总结如下.
1. 定义
第一个L表示从左到右扫描输入串,第二个L表示最左推导,1表示每步只需向前看一个符号。
LL(1)文法定义:
对于文法的任意两个不同的产生式A->α|β:
–不存在终结符号a使得α和β都可以推导出以a开头的串。
–α和β最多只有一个可以推导出空串。
–如果β可以推导出空串,那么α不能推导出以FOLLOW中任何终结符号开头的串;
定理:若满足以下条件,则B N F中的文法就是LL(1)文法:
1. 在每个产生式A→a1 | a2 | . . . |an 中,对于所有的i 和j:1≤i,j≤n,i≠j,First (ai )与First (aj )交集为空。
2. 若对于每个非终结符A都有First (A) 包含了ε