编译原理第5章.ppt

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

本章内容概要自下而上分析基本问题归约规范归约算符优先分析LR分析法LR分析器LR文法LR(0)项目集族和LR(0)分析表的构造文法的规范句型“活前缀”LR(0)项目集规范族的构造有效项目LR(0)分析表的构造自下而上的语法分析实现思想从输入符号串开始,从左到右进行扫描,将输入符号逐个移入一个栈中,边移入边分析,一旦栈顶符号串形成某个产生式的右部时,就用该产生式的左部非终结符代替,称为归约。重复这一过程,直到归约到栈中只剩下文法的开始符号时,则分析成功,称为“移进-归约”方法。从语法树的角度看:从语法树的树叶开始,逐步向上归约构造分析树,直到形成根结。是推导的逆过程。核心寻找句柄(这是关键)进行规约。用不同的方法寻找句柄,就可获得不同的分析方法。最左推导(Left-mostDerive)每次推导都替换当前句型的最左边的非终结符——与最右归约对应最右推导(Right-mostDerive)每次推导都替换当前句型的最右边的非终结符——与最左归约(规范归约)对应,得规范句型规范归约概念有文法G,开始符号为S,如果有S=xβy,则xβy是文法G的句型,x,y是任意的符号串如果有S=xAy,且有A=β,则β是句型xβy相对于非终结符A的短语如果有S=xAy,且有A-β,则β是句型xβy相对于A-β的直接短语位于一个句型最左边的直接短语称为句柄.句型---短语---直接短语---句柄例:下述文法的另一个句型:E+T*F+i其短语、直接短语、句柄分别是?规范归约的定义:假定α是文法G的一个句子,如果序列:αn,αn-1,……,α0(=S)满足如下条件,则序列αn,αn-1,……,α0是一个规范归约: (1)αn=α是给定的句子 (2)α0=S是文法的开始符号 (3)对任何i,0i?n,αi-1是从αi经把句柄替换为相应文法产生式的左部符号而得到的。规范归约是最右推导的逆过程,规范归约又称为最左归约。最右推导又称规范推导,又规范推导所得到的句型称规范句型,规范推导的逆过程是规范归约。分析器的四种动作1)移进:将下一输入符号移入栈2)归约:当栈顶出现句柄,用产生式左侧的非终结符替换栈顶的句柄3)接受:分析成功,是归约的一种特殊情况4)出错:栈顶的内容与输入符号相悖,进行出错处理??决定移进和归约的依据是什么移进归约分析中的问题1)移进-归约冲突在分析到某一步时,既可以移进,又可以归约上例第10)步可以移进*,也可以按产生式E→E+T进行归约。2)归约-归约冲突存在两个可选的句柄,可对栈顶符号进行归约例如上述第13)步,可以用T→F进行归约,又可以按T→T*F进行归约。各种分析方法中处理冲突的技术不同算符优先分析算符优先分析法的思想源于表达式的分析,即利用相邻终结符号之间的关系来寻找可归约串。将句型中的终结符号当作“算符”,借助于算符之间的优先关系确定句柄。显然,在一个符号串中,任意两个相邻终结符号a和b之间,只可能存在以下四种优先关系:

(1)a,b优先性相同,记作ab。

(2)a优先性高于b,记作ab。

(3)a优先性低于b,记作ab。

(4)a与b不可能相邻,即此符号串不是句型(出错)。

如果以上四种关系中的任意两种都不会同时成立,则可以根据终结符号之间的归约关系进行语法分析。算符优先文法的定义1.算符文法.(P89):一个上下无关文法G,如果没有P-?,且没有P-...QR...(P,Q,R属于非终结符),则G是一个算符文法2.算符优先关系的定义(自底向上,可通过树形结构观察)①ab,G中有P-...ab...或P-...aQb...(在同一产生式中)

②ab,G中有P-...aR...的产生式,且R=b...或R=Qb...(注意ab相邻)

③ab,G中有P-...Rb...的产生式,且R=...a或R=...aQ(注意ab相邻)

算符优先文法算符文法G的任何终结符a,b之间要么没有优先关系,若有优先关系,至多有=,,中的一种成立,则G为一算符优先文法。算符优先关系表的构造用表格形式来表示各终结符号的优先关系,这种表称为优先表。构造优先关系表的方法:①按照定义手工计算②使用算法例:P:E-E+T|T

T-T*F|F

F-(E)|i求算符优先矩阵。

文档评论(0)

177****7891 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档