编译原理自底向上的语法分析.ppt

  1. 1、本文档共20页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
语法分析部分知识关系图 第五章 自底向上的语法分析 5.1 自底向上的语法分析方法概述 5.2 LR(0)分析的有限自动机 5.3 LR(0) 分析 5.4 SLR(1) 分析 5.5 LR(1) 分析 5.6 LALR(1) 分析 5.7 LALR(1) 语法分析器的自动生成器 (YACC) 5.1 自底向上语法分析概述 自顶向下语法分析回顾 自底向上语法分析的例子 自底向上语法分析的主要思想 自底向上语法分析的关键问题 一些相关概念 自顶向下分析例 自底向上语法分析的例子 自底向上归约的过程也是自底向上构建语法树的过程 5.1 自底向上语法分析方法概述 主要思想: 从输入串出发; 尽可能地找到可归约子串并将其归约成一个非终极符; 直到归约成文法的开始符或发现语法错误; 分析动作:移入(shift),归约(reduce) 包含以下方法: LR 类的方法; 简单优先法; 算符优先法 关键问题: 什么时候进行归约,按照哪条产生式进行归约; 一些相关概念 短语 一个句型形如???, 如果存在一个句型?A?,而且 A?+?, 则称?为句型???的短语; 例如句型AbBb,则bB,AbBb是它的短语,因为 存在句型ABb,ABb ? AbBb,? = A,? = b; 存在句型Z,Z ? ABb ? AbBb , ? = ?, ? = ?; 简单短语 一个句型形如???, 如果存在一个句型?A?,而且 A ? ?, 则称?为句型???的简单短语; 例如句型AbBb,bB是它的简单短语,AbBb不是它的简单短语 一些相关概念 句柄:一个句型的简单短语可能有多个,称最左简单短语为句柄(handler); 例如:句型abBb,简单短语有两个:a,bB Z ? ABb ? aBb ? abBb 最左简单短语a是句柄 句柄的唯一性: 如果一个CFG无二义性,则它的任意一个句型都有唯一的句柄; 短语、简单短语、句柄的例子 由语法分析树识别短语、简单短语和句柄 一些相关概念 自顶向下的语法分析方法中曾介绍过: 推导:对句型中的非终极符用产生式右部替换 规范推导:一个句型的最右推导称为该句型的规范推导; 规范句型(右句型):从开始符通过规范推导得到的句型; 一些相关概念 Z ? ABb 规范前缀为 AB, ABd Z ?+ Acb 规范前缀为 A, Ac, Acb 一些相关概念 Z ? ABb 规范前缀为 AB, ABb 规范活前缀: AB(不包含简单短语) , ABb(包含一个简单短语且在最后) 自底向上语法分析的例子 一些相关概念 规范活前缀决定分析动作 移入:规范活前缀不包含简单短语; 移入型规范活前缀 归约:规范活前缀只包含一个简单短语,而且是在该规范活前缀的最后; 可归约规范活前缀 :归约规范活前缀 自底向上分析知识关系图 5.1 自底向上语法分析方法概述 LR 方法 主要思想 L表示从左至右读入输入串; R表示构造一个最右推导的逆过程,即每次找到句柄? (归约规范活前缀??)来进行归约; 归约直到得到开始符或报告语法错误; 关键问题: 对于一个CFG, 如何判定归约规范活前缀? 构造一个判定归约规范活前缀的自动机 -- LR自动机 由LR自动机构造LR分析表指导LR分析 LR 分析机制 5.1 自底向上语法分析方法概述 LR 方法 不同的 LR 方法 LR(0) SLR(1) LR(1) LALR(1) 不同的LR方法对CFG的要求不一样, 能够分析的CFG多少也不一样, LR(0) ? SLR(1) ? LALR(1) ? LR(1) * * 开发语法分析程序 语法定义 基于 上下文无关文法 使用 实现 自顶向下 自底向上 P: (1) Z ? aBeA (2) A ? Bc (3) B ? d (4) B ? bB (5) B ? ? a b e c 自顶向下分析过程是从文法开始符出发,为所给输入串构造最左推导的过程。 句型 输入 动作 Z abec 推导(1) abec aBeA 匹配(a) bec BeA 推导(4) bec bBeA 匹配(b) ec BeA 推导(5) ec eA 匹配(e) c A 推导(2) c Bc 推导(5) 匹配(c) c c 成功 P: Z ? ABb (2) A ? a (3) A ? b (4) B ? b (5) B ? c (6) B ? bB a b c

文档评论(0)

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

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

1亿VIP精品文档

相关文档