网站大量收购独家精品文档,联系QQ:2885784924

编译原理5.1自下而上语法分析选编.ppt

  1. 1、本文档共59页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
编译原理5.1自下而上语法分析选编

第五章 语法分析——自下而上分析;自下而上分析法 从输入串开始,逐步进行“归约”,直至 归约到文法的开始符号; 一、自下而上分析基本问题;例5.1 文法G2: S-aAcBe A-b A-Ab B-d 输入串:abbcde;最右推导:;S;2 规范归约;句柄:一个句型的最左直接短语称为该句型 的句柄。;规范推导:即最右推导; 规范句型:由规范推导所得的句型称为规范 句型; 规范归约:是关于句型α的一个最右推导的 逆过程,也称最左归约。;例5.2 文法G E —> T | E +T T —> F | T * F F —> i |(E) 的一个句型 i1*i2+i3 ;3 符号栈的使用;② 分析程序的动作 移进: 下一输入符号移进栈顶 归约: 把句柄按产生式的左部进行归约 接收: 分析程序报告成功 出错: 发现了一个语法错,调用出错处理程序;二 直观算符优先分析法 1 定义: 任二个相继出现的终结符a与b(可能中间有VN),可能有以下优先关系: a b a的优先性低于b a b a的优先性等于b a b a的优先性高于b;;3 使用如上分析表,构造分析算法(直观算符优先分析法);分析算法步骤: ①下一个输入符号读至a中; ②若a为i,则a—OPND,转第一步; ③若θ a,则调用关于θ的处理程序(语义程序),处理子表达式 : E(1)θE(2) ;然后重新进入第3步;(其中, E(1) 、E(2)分别为OPND栈的次栈顶和栈顶);④若θ a,则 若θ=‘(’,a=‘)’,则逐出OPTR栈顶的‘(’,放弃a中的‘ )’,转第 1步; 若θ=a=‘#’,分析成功结束; ⑤若θ a,a—OPTR栈,转第1步; ⑥θ与a不存在优先关系,则输入串错误,调出错处理;2 例5.4 由文法G: E — E + E | E * E | E↑E | ( E ) | i 的终结符的优先关系表及上述分析算法 分析算术表达式 i1 + i2 * i3 # 的过程。;1 算符优先文法 ①定义一 如果一个文法的任何产生式右部都不含两个相继(并列)的非终结符,即不含有如下形式的产生式右部: …QR… 则我们称该文法为算符文法(OG)。;②定义二 假定G是一个不含ε-产生式的算符文法。对于任何一对终结符a、b,我们说: a b, 当且仅当文法G中含有形如P-…ab… 或P-…aQb…的产生式; (如:(E),则( )) a b, 当且仅当G中含有形如P-…aR…的产生式,而R b… 或 R Qb…; a b, 当且仅当G中含有形如P-…Rb…的产生式,而R …a 或 R …aQ。; ③定义三 如果一个算符文法G中的任何终结符对(a,b)至多只满足下述三种关系之一: a b,a b,a b 则称G是一个算符优先文法(OPG)。 ;Ch5 语法分析;①构造优先关系表,就是要找出所有VT对之间的三种关系,而对于 可以直接检查所有的G中P来得到。而 , 关系不易检查,故要定义二个集合。 ②FIRSTVT(P)={a|P a…或P Qa…,a∈VT 而Q∈VN } ③LASTVT(P)={a|P …a或P …aQ,a∈VT 而Q∈VN } ④如该二集合成功,检查P,就可确定满足 , 的(a,b)对。 ⑤这是因为,假定有个产生式候选式: …aP…,那么对任何 b∈FIRSTVT(P),有a b; …Pb…,那么对任何 a∈LASTVT(P),有a b;;①构造该二个集合的算法,对每一 VN的 FIRSTVT(P) 、LASTVT(P) ②使用每个VN的FIRSTVT(P) 、LASTVT(P),检 查每一个产生式,找出所有(a,b)的关 系,就完成了构造优先关系表。;3 构造集合FIRSTVT(P)的算法 ① P-a…或P-Qa…,则a∈FIRSTVT(P); ②若a∈FIRSTVT(Q),且有产生式P-Q…,则a∈FIRSTVT(P);firstVT(E’)={#} firstVT(E)={+,*,↑, ( , i ) firstVT(T)={*,↑, ( , i ) firstVT(F)={↑, ( , i ) firstVT(P)={ ( , i ) lastVT(E’)={#} la

文档评论(0)

jiayou10 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8133070117000003

1亿VIP精品文档

相关文档