- 3
- 0
- 约1.51千字
- 约 8页
- 2018-07-11 发布于浙江
- 举报
【考研计算机专业课】天津大学 编译原理讲义 SLR()分析表
4.3.3 SLR(1)分析表 LR(0)文法是一类非常简单的文法,这种文法的活前缀识别自动机的每一个状态都不含冲突性的项目。 但是,即使是定义算术表达式这样的简单文法也不是LR(0)文法。 许多冲突的动作都可以通过考察有关非终结符的FOLLOW集而获解决。这就是SLR(1)文法。 假定一个LR(0)规范族中含有如下的一个项目集(状态)I, I = { X→α·bβ, A→α·, B→α· } 第一个项目告诉我们应该把下一个输入符号b移进; 第二个项目告诉我们应把栈顶的α规约为A; 第三个项目告诉我们应把栈顶的α规约为B; 三个项目动作各不相同,互相冲突。 解决冲突的一种简单方法就是考察A,B的FOLLOW集,如果这两个集合互不相交,而且都不包含b,那么,当状态 I 面临任何输入符号 a 时,我们就可以采取如下的“移进—规约”决策: 1. 若a = b,则移进; 2. 若a∈FOLLOW(A),则用产生式A→α进行规约; 3. 若a∈FOLLOW(B),则用产生式B→α进行规约; 4. 若 a 为其它,出错; 例,设文法G为: (0) S‘→S (1) S→abdD (2) S→aBc (3) B→b (4) D→d I3 项目集I3存在冲突: Action (3,d ) =S4 Action (3,d ) =r3 可以用F
原创力文档

文档评论(0)