编译原理第五章知识点笔记(仅供复习时候翻一翻)


一,短语,直接短语,句柄,素短语

定义
在这里插入图片描述
如果 β 中至少含有一个终结符,而且除它自身之外不再含任何更小的素短语,那么称 β 为 素短语

题目
令文法 G 1 为
① S − > ( L ) ∣ a S ∣ a
② L − > L , S ∣ S
证明( S , ( a ) )是它的一个句型,指出这个句型的所有短语,直接短语,句柄和素短语。

步骤一:画出语法树

在这里插入图片描述

1.判断短语

一个句型的语法树中任一子树的叶节点所组成的符号串都是该句型的短语。

对于第一层的非终结符 S ,其叶节点所组成的短语是(S,(a))
对于第二层的非终结符 L ,其叶节点所组成的短语是S,(a)
对于第三层的非终结符 L ,其叶节点所组成的短语是S
对于第三层的非终结符 S ,其叶节点所组成的短语是(a)
对于第四层的非终结符 L ,其叶节点所组成的短语是a
对于第五层的非终结符 S ,其叶节点所组成的短语是a

故短语有:

① (S,(a))
② S,(a)
③ S
④ (a)
⑤ a

2.判断直接短语

一个句型的语法树中任一最小子树的叶节点所组成的符号串都是该句型的短语。
故直接短语有:

① S
② a

3.判断句柄

句柄是最左边的直接短语
故句柄为:

① S

4.判断素短语

有后往前对短语进行判断,如果短语中至少含有一个终结符,而且除它自身之外不再含任何更小的素短语,那么称该短语为素短语

① 对于短语 a ,a不含其他任何更小的素短语。故短语 a 为素短语
② 对于短语 (a) ,(a) 含素短语 a。故短语 (a) 不是素短语
③ 对于短语 S ,S 不含终结符。故短语 S 不是素短语
④ 对于短语 S,(a) ,S,(a) 含素短语a。故短语 S,(a) 不是素短语
⑤ 对于短语 (S,(a)) ,(S,(a)) 含素短语a。故短语 (S,(a)) 不是素短语

故素短语为:

① a


二.规范归约:

在这里插入图片描述


三.移进规约语法分析过程

在这里插入图片描述
语法分析过程步骤:
在这里插入图片描述


四.移进归约分析过程中存在的问题

在这里插入图片描述
解决冲突的方法:


一 .算符优先分析

在这里插入图片描述
• 考虑二义文法文法G(E):
G(E): E->i| E+E|E-E|E*E|E/E|(E)

在这里插入图片描述
G(E)的二义性表现:

在这里插入图片描述
算符优先的规约方法:(优先规则:先乘除后加减,同级从左到右)
在这里插入图片描述
在这里插入图片描述
算符优先文法及优先表构造
在这里插入图片描述

1.FIRSTVT构造:

A->a… ,即以终结符开头,该终结符进FIRSTVT
A->B… ,以非终结符开头,该非终结符的FIRSTVT进A的FIRSTVT
A->Ba…,先以非终开头,紧跟终结符,则终结符进FIRSTVT

2.LASTVT构造

A->…a ,即以终结符结尾,该终结符进LASTVT
A->…B ,以非终结符结尾,该非终结符的LASTVT进A的LASTVT
A->…aB,先以非终结尾,前面是终结符,则终结符进LASTVT

3.构造算符优先表

在这里插入图片描述
在这里插入图片描述


二 、LR分析器

在这里插入图片描述
在这里插入图片描述

LR(0)文法:

1.判断LR(0)文法:
无冲突项目(移进-归约,归约-归约)

2.LR(0)分析表
ACTION:
Sn:遇此终结符到n状态
rn:此状态n为归约项目,此行都填rn(n是所用的哪个表达式)
acc:接受项目处填acc
GOTO:
填n,经过此非终结符到达状态n。

3.拓广文法 (0)s’->s,(1)s->aSb …

看完这些可能有以下疑问:
(1)怎样算是移进归约,归约归约冲突?
(2)移进项目是什么,归约项目是什么?
(3)如何构造LR(0)分析表?
(4)这个拓广文法是啥?

可能还有一些其他疑问,让我们看看下面的一些知识点,来理解一下LR(0)相关知识点。

(1)项目:
1)归约项目:(A->α ·) 2)移进项目:(A->α ·x(终结符)β
3)接受项目:(S->α · ) 4) 待约项目(A->α ·x(非终结符)β

(2)项目集闭包:所有等价项目组成项目集I,称为项目集闭包,每个项目集闭包对应自动机的一个状态。

(3)等价项目:A->α ·Bβ 有等价项目(因为看到了·B(点后有非终结符))为B的所有初始项目(B->·α )

SLR(1)文法:

  1. 判断SLR(1)文法:
    (1)DFA中存在冲突项目(移进-归约,归约-归约)
    (2)In = {A1->α ·a1β ,A2->α ·a2β …(移进) ,B1->α · ,B2 ->α · …(归约)}
    当{a1,a2, …}与FOLLOW(B1),FOLLOW(B2)… 两两不相交时,为SLR(1)文法

2.SLR(1)分析表:
对每个归约项目A->α ·,求FOLLOW(A)得到的输入符号处填rn,其余与LR(0)分析表相同。

LALR(1)文法:

1.判断LALR(1)文法:
合并同心集后无归约-归约冲突,(同心集是核相同,向前搜索符不同)

LR(1)文法:

1.判断LR(1)文法:
构造带向前搜索符的DFA,无归约-归约冲突。

2.LR(1)的DFA:
In中,每个项目都形如 A->α ·β ,a
A->α ·Bβ ,a的等价项目:
B->·r,b中 b=FIRST(βα ):β=ε时,b=a 继承
β≠ε 时,b=FIRST(β )

3.LR(1)分析表:
每个状态In中,若存在归约项目,其rn根据向前搜索符填写。

参考链接:
https://blog.csdn.net/weixin_43730142/article/details/105424703.
https://blog.csdn.net/starter_____/article/details/88601595.

  • 3
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

便宜点的龙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值