[院校资料]清华大学编译原理课件Chapter6.pptVIP

[院校资料]清华大学编译原理课件Chapter6.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[院校资料]清华大学编译原理课件Chapter6

第6章 自底向上优先分析法 6.1 概 述 从推导的角度,从输入符号出发,试图把它规约成识别符号。每一步都寻找特定的某个类型的短语(一般是简单短语)进行归约。在分析过程中,每次归约的都是最左边的简单短语(或其它短语)。 从语法树的角度,以输入符号为树的叶子结点,试图向根结点方向往上构造语法树。 基本问题 如何找出进行直接归约的简单短语? 将找到的简单短语归约到哪个非终结符号? 自底向上分析过程的实现 基本都采用移入-归约方法。 使用一个栈来存放归约得到的符号。 在分析的过程中,识别程序不断地移入符号。移入的符号暂时存放在一个栈中。一旦在已经移入的(和归约得到的)符号串中包含了一个句柄时,将这个句柄归约成为相应的非终结符号。 自底向上分析过程的实现(续) 特点:能力强,构造复杂 自底向上分析过程的实现(续) 工作过程:把输入符号串按描述顺序一一地移进符号栈(一次移一个),检查栈中符号,当在栈顶的若干符号形成当前句型的句柄时,就根据规则进行规约,将句柄从符号栈中弹出,并将相应的非终结符号压入栈内(即规则的左部符号),然后再检查栈内符号串是否形成新的句柄,若有就再进行规约,否则移进符号。分析一直进行到读到输入串的终止符为止。最后,若栈中仅含有终止符和开始符号,则表示分析成功,否则失败。 自底向上分析过程的实现(续) 归约中的动作有4类 移入:读入一个符号并把它归约入栈。 归约:当栈中的部分形成一个句柄(栈顶的符号序列)时,对句柄进行归约。 接受:当栈中的符号仅有#和识别符号的时候,输入符号也到达结尾的时候,执行接受动作。 当识别程序觉察出错误的时候,表明输入符号串不是句子。进行错误处理。 例 子 # i*i+i # i*i+i 移进 #i *i+i # i*i+i i E::=i #E *i+i# E*i+i 移进 #E* i+i # E*i+i 移进 #E*i +i # E*i+i i E::=i #E*E +i # E*E+i E*E E::=E*E #E +i # E+i 移进 #E+ i # E+i 移进 #E+i # E+i i E::=i #E+E # E+E E+E E::=E+E #E # 接受 例子的解释 一旦发现栈顶部分形成了句柄的时候,对该句柄进行归约。将句柄出栈,然后将归约得到的非终结符号压栈。 当栈中的符号的栈顶部分还不能形成句柄时,进行移入操作。 如果输入是句子,则栈中的符号(从底到上)和未处理的符号组成句型。 在例子中,发现句柄和归约是人为干预的结果。所以移入-归约不是实际可运行的技术,而是技术的模板。 6.2 简单优先分析法 基本思想: 每次察看句型中相邻的两个符号。通过两个符号的关系判定出前一个符号是句柄的尾。然后,反向找出句柄的头。这样我们就找到了一个句柄。 简单优先分析技术(基本思想续) 我们要通过两个相邻符号SiSi+1之间的关系来找到句柄: SiSi+1在句柄内:必然有规则U→…SiSi+1… Si在句柄内部,但是Si+1在句柄之后,必然有规则U→…Si,且存在规范句型…USi+1…。 如果Si+1在句柄内,而Si在句柄外,那么必然存在规范句型…SiU…,且 有U→Si+1…。 优先关系 和书上的写法不一样,凑合用。 等同:Si 〓 Sj 先于:Si ?Sj 后于:Si?Sj 注意:〓,?和?不同于=,和。 由Si?Sj不能导出Sj?Si。 优先关系的例子 文法:S→bAb A→(B | a B→Aa) 语言:{bab, b(aa)b, b((aa)a)b, ……} 可以从语法树里面到处部分优先关系。 优先矩阵 可以将优先关系填写到一个矩阵,得到优先矩阵。(将矩阵作为关系的表示形式) 优先关系的定义 Sj = Si:当且仅当G中有规则 U →…Sj

文档评论(0)

jiupshaieuk12 + 关注
实名认证
文档贡献者

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

版权声明书
用户编号:6212135231000003

1亿VIP精品文档

相关文档