编译原理-第五章习题答案
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
bbcde#
移进
(3) #ab
bcde# 归约,A→b
(4) #aA
bcde#
移进
(5) #aAb
cde# 归约,A→Ab
(6) #aA
cde#
移进
(7) #aAc
de#
移进
(8) #aAcd
e# 归约,B→d
(9) #aAcB
e#
移进
(10) #aAcBe
# 归约, SaAcBe
(11) #S
#
接受
从输入符号串出发,每次从被归约的句型中找到一 个产生式的右部,用其左部替换之,得到新的句型,直 至归约到文法的开始符号。
上一页
下一页
5
例子:文法G的产生式定义为:S→aAcBe A→b A→Ab B→d 输入句子为:abbcde 首先看看最右推导:SaAcBeaAcdeaAbcdeabbcde(使用产生式的顺 序为:S→aAcBe B→d A→Ab A→b)
步骤:1 2 3 4 5 6 7 8 9 10 动作:进 进 规 进 规 进 进 规 进 规
a b A→b b A→Ab c d B→d e S→aAcBe
e
dB B
b
cc c
c
b A A A AA A A
aaaaa
aa a
aS
自底向上分析面临的基本问题: • 如何在句型中找出可规约串? • 找到的可规约串应该规约到哪一个非终结符?
2.1.1 算符文法的定义 设G是一个文法,如果G中不存在形如A及AαBCβ
的中产不生含式有相(其邻中非A终,结B,符C号∈)V,N,即αG,中 右 部(V不N∪含V具T)有*,相且邻其非 终结符号的产生式,则称G为算符文法。
βw表示一个规范句型,必定是在β归约之前进行的规范归约 得到的结果, (VT∪VN)*,w VT*。
上一页
下一页
10
1.3 “移进—归约”分析法的栈实现
“移进一归约”分析器使用一个栈和一个存放输入符号串 w的缓冲器。分析器的初始状态为: 栈 输入 # w# 工作过程:自左至右把串w 的符号一一移进栈里,一
旦栈顶形成句柄时,就进行归约。这种归约可能持续多 次,直至栈顶不再呈现句柄为止。然后,继续向栈里移 进符号,重复这个过程,直至最终形成如下格局:
栈 输入 #S #
上一页
下一页
11
例:5.3 文法:SaAcBe A bAb B d 句子:abbcde
步骤
栈
输入
动作
(1) #
abbcde#
移进
(2) #a
直接短语:T*F和i 句柄:T*F
E
+
T
F
E+T i
T* F
5.2
上一页
E
E +T
T
F
i3 T*F
F
i2
i1
5.1
下一页
9
•规范归约
最右推导过程 中得到的句型
0是假定的一是个文规法范G的归一约个,句如子果。序称列右满句足型:序列n,n-1,…, 1, 1) n= ,0=S ;(从句子规约到文法的开始符号)
编译原理电子教案 第五章 语法分析—自下而上的分析
本章的主要内容
▪规范归约与最右推导、短语、直接短语、句柄、素短语 ▪算符优先分析 ▪ LR(0)和SLR(1)分析表的构造
与前面章节的主要联系: •最右推导 •NFA通过子集构造法,构造DFA •文法非终结符的Follow集
上一页
下一页
2
本章要求
始终处于符号栈的栈顶。
上一页
下一页
8
例:5.1 P85 文法:
E→T|E+T T→F|T*F
F→i|(E)
句型:i1*i2+i3其中:短语有i1、i2、i3、i1*i2、 i1*i2+i3 直接短语:i1、i2、i3;句柄:i1 例:5.2 P85 文法如上
句型:E+T*F+i
E
短语:E+T*F+i,E+T*F,T*F,i
下一页
7
利用语法分析树找短语、直接短语和句柄
▪ 对于短语、直接短语、句柄的寻找,可以检查语 法树中从根结点开始出发向下,找每一非终结符 的所有叶子结点,将这些结点从左到右组成串, 这些串就是该句型的所有短语,其中相对于叶子 结点的直接父结点的短语为直接短语,在树中最 左的直接短语为该句型的句柄。
▪ 直接短语肯定是某个产生式的右部候选式之一。 ▪ 句柄的“最左”特征使得在移进-归约方法中,它
(3)利用项目集闭包和转移函数构造项目集规范族, 以及根据项目集规范族和转移函数构造LR(0)分析表;
(4)根据项目集规范族、转移函数以及非终结符的 FOLLOW集构造SLR(1)分析表。
上一页
下一页
3
本章教学线索
• 1 自下而上分析基本问题
• 1.1 归约的概念 • 1.2 规范归约 • 1.3“移进—归约”分析法的栈实现
2)i(0≤i < n), i rm i+1(i是i+1经过把句柄替换成相应
产生式左部符号而得到的。)
规范归约是关于的一个最右推导的逆过程。(注意:并不是 所有的归约都是规范,比如算符优先分析就不是规范归约,当然 就不是一个最右推导的逆过程)
如果文法G是无二义的,那么,规范推导(最右推导)的逆过 程必是规范归约(最左归约)。
▪ 知识点:算符优先分析、LR(0)和SLR(1)分析表 的构造
▪ 深刻理解:规范归约与最右推导、短语、直接短语、 句柄、素短语
▪ 熟练掌握: (1)给出一句型求短语、直接短语、句柄和素短语; (2)FIRSTVT和LASTVT的计算、算符优先分析表
的 构造及根据算符优先分析表进行句子分析的方法;
上一页
下一页
6
1.2 规范归约
短语、直接短语、句柄
令G是一个文法,S是文法的开始符号,假定αβδ是
文法G的一个句型,如果有:
S
αAδ且A
+
Biblioteka Baidu
β
则称β是句型αβδ相对于非终结符A的短语。
特别是,如果有:
Aβ,则称β是句型αβδ相对于规则
A→β的直接短语,一个句型的最左直接短语称为该 句型的句柄。
上一页
上一页
下一页
12
本章教学线索
• 1 自下而上分析基本问题 2 算符优先分析
2.1算符优先文法及优先表的构造 2.2 算符优先分析算法 2.3 优先函数 2.4 算符优先分析中的出错处理(自学)
• 3 LR分析法 • 4 语法分析器的自动产生工具YACC
上一页
下一页
13
2.1 算符优先文法及优先表的构造
2 算符优先分析 • 3 LR分析法 • 4 语法分析器的自动产生工具YACC
上一页
下一页
4
1.1 归约的概念
G =(VT,VN,S,P),α,β ∈(VT∪VN)*, A→β∈P,αAw αβw。
归约的过程是,已知αβw和产生式A→β,用产生式 A→β左部A替换αβw中的β,得到符号串αAw。