本文主要内容有SLR分析、LR(1)分析、LALR分析、二义性文法的LR分析、LR分析中的错误处理。
SLR分析
LR(0) 分析过程中的冲突
SLR 分析
SLR分析法的基本思想
SLR分析表
如果给定文法的SLR分析表中不存在有冲突的动作,那么该文法称为SLR文法>。
SLR 分析中的冲突
LR(1)分析
SLR分析存在的问题
SLR只是简单地考察下一个输入符号b是否属于与归约项目A→α相关联的FOLLOW(A), 但b∈FOLLOW(A)只是归约α的一个必要条件,而非充分条件。
LR(1)分析法的提出
对于产生式 A→α的归约,在不同的使用位置,A会要求不同的后继符号
在特定位置, A的后继符集合是FOLLOW(A)的子集
如果除展望符外,两个LR(1)项目集是相同的,则称这两个LR(1)项目集是同心>的
如果LR(1)分析表中没有语法分析动作冲突,那么给定的文法就称为LR(1)文法
LALR分析法
LALR ( lookahead-LR )分析的基本思想
寻找具有相同核心的LR (1) 项集,并将这些项集合并为一个项集。 所谓项集的核心就是其第一分
量的集合然后根据合并后得到的项集族构造语法分析表
如果分析表中没有语法分析动作冲突,给定的文法就称为LALR (1) 文法,就可以根据该分析表
进行语法分析
LALR(1)的特点
形式上与LR(1)相同
大小上与LR(0)/SLR相当
分析能力介于SLR和LR(1)二者之间 SLR<LALR(1)<LR(1)
合并后的展望符集合仍为FOLLOW集的子集