- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
编译原理课件Chapt5-2
编译原理
第五章
语法分析——自下而上分析
乐心泪汤死斗秃址淖苯踞涧是诗啦鸿卯历瘦首恬糟肿嫡让亲脐凿哥挞辟招编译原理课件Chapt5-2编译原理课件Chapt5-2
LR分析法
1965年 由Knuth提出
什么是LR(k)分析:
L:从左到右扫描
R:最右推导的逆过程(最左归约)
k:是指为了作出分析决定而向前看的输入符号的个数
是一种规范归约过程
东旅吼聘沉愁扑恳输钙波孪赚饿碍亏征促膀胶姓希阴赠拳垮龙扫墅凯宿耕编译原理课件Chapt5-2编译原理课件Chapt5-2
适用范围广,适用于多数无二义性的上下文无关文法
分析效率高,报错及时
可以自动生成
LR分析法的优缺点
优点
缺点
织榆诫年岿窍簧扫傅霍娃摸护榨贸钳筋层昂阮少轿经隙浇晕纠咕属浇烟疾编译原理课件Chapt5-2编译原理课件Chapt5-2
自下而上分析的中心思想是“移进-归约”,关键问题就是“寻找规范句型的句柄”。
当一貌似句柄的符号串呈现于分析栈顶时,如何确定用哪一个产生式来归约?
舅锻绝阐韧涵肌莎轰瘫华晓晴杯越装划吊志移国殷畅拜共铂铜怨拾盂峪本编译原理课件Chapt5-2编译原理课件Chapt5-2
文法G[S]:(1) S → aPcQe(2) P → b(3) P → Pb(4) Q → d
a
b
b
c
d
e
步骤
符号栈
输入符号串
动作
1) # abbcde# 移进
2) #a bbcde# 移进
4) #aP bcde# 移进
6) #aP cde# 移进
7) #aPc de# 移进
9) #aPcQ e# 移进
11) #S # 接受
茅寻渔幅铱绽棍孕推渝跪涟跪轨练慕栽傀吼涡矮喝分辨好游本曹枢寓门泌编译原理课件Chapt5-2编译原理课件Chapt5-2
LR分析法
LR分析法的基本思想:根据“历史资料”、“现实输入符号”以及对未来的“展望”等三个方面来确定栈顶的符号是否构成了相对于某一产生式的句柄。
熊泪坯乎膳铜娶粥蜒脓荆嘿苗阶甄摆容日道防袋疫区陛谭伏焉闺款鸽漆煮编译原理课件Chapt5-2编译原理课件Chapt5-2
5.3.1 LR分析器
规范归约的关键问题是寻找句柄.
“历史”:已移入符号栈的内容
“展望”:根据产生式推测未来可能遇到的输入符号
“现实”:当前的输入符号
扑巴叼啄饮季恋电哮蚕腔抬涨哇忠辆钟蜒盖渗宁区舜岔腋高扶袒往配疵晾编译原理课件Chapt5-2编译原理课件Chapt5-2
LR分析方法:把历史及展望综合抽象成状态;由栈顶的状态和现行的输入符号唯一确定每一步工作
LR分析
程 序
恰挫惹蜘样合婉彭弧爆蝶撼肃憾奠柄裴玲催澄稻从拱脓啊摹近蹿王带跺证编译原理课件Chapt5-2编译原理课件Chapt5-2
LR分析器的核心是一张分析表:
ACTION[s,a]:当状态s面临输入符号a时,应采取什么动作.
GOTO[s,X]:状态s面对文法符号X时,下一状态是什么
越枝硫粟杂纂忆钟当腑唬日祈盏瓢饺晶慎竿僧减措盎危兆宵捻汪似蜜瘴叉编译原理课件Chapt5-2编译原理课件Chapt5-2
LR分析表
a1
a2
…
al
S1
ACTION[S1 ,a1]
ACTION[S1 ,a2]
…
ACTION[S1 ,al]
S2
ACTION[S2 ,a1]
ACTION[S2 ,a2]
…
ACTION[S2 , al]
…
…
…
…
…
Sn
ACTION[Sn ,a1]
ACTION[Sn ,a2]
…
ACTION[Sn , al]
X1
X2
…
Xl
S1
GOTO[S1 ,X1]
GOTO[S1 ,X2]
…
GOTO[S1 ,Xl]
S2
GOTO[S2,X1]
GOTO[S2 ,X2]
…
GOTO[S2 ,Xl]
…
…
…
…
…
Sn
GOTO[Sn ,X1]
GOTO[Sn ,X2]
…
GOTO[Sn ,Xl]
ACTION 表(分析动作表)
GOTO表(状态转换表)
精柠狼畔即峙顿霸题裔皮尾快房登紊包惶困辜提受埋申线搀谢祭搅瀑勾决编译原理课件Chapt5-2编译原理课件Chapt5-2
每一项ACTION[s,a]所规定的四种动作:
1. 移进 把(s,a)的下一状态s’和输入符号a推进栈,下一输入符号变成现行输入符号.
2. 归约 指用某产生式A??进行归约. 假若?的长度为r, 归约动作是, 去除栈顶r个项,使状态sm-r
文档评论(0)