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

[编译原理第四章..pptVIP

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

第四章 语法分析(Parsing / Syntax Analysis) —自顶向下分析方法 在设计语言时,每种程序设计语言都有一组精确的规则来描述良构(well-formed)程序的语法结构。 高级语言的大部分语法结构可用上下文无关文法描述,因而宜于将上下文无关文法用作语法分析的基础。 语法分析程序的功能 语法分析方法的分类: 自顶向下语法分析方法 (Top-Down) 自底向上语法分析方法 (Bottom-Up) 两种自顶向下语法分析方法: 非确定的自顶向下语法分析方法 确定的自顶向下语法分析方法: 递归下降子程序方法 LL(1)方法 First 集、Follow集、 Predict集 语法分析方法的分类: 自顶向下语法分析方法(Top-Down) ,亦称面向目标的分析方法; 自底向上语法分析方法(Bottom-Up) 。 自顶向下分析概述 从文法开始符出发试图推导出所给的终极符串。 例 G[z] : [1] Z ?aBd [2] B ?d [3] B ?c [4] B ?bB 对给定的终极符串abcd,推导过程: 自底向上分析概述 从终极符串出发归约(reduce)出文法的开始符。 例 G[z] : [1] Z ?aBd [2] B ?d [3] B ?c [4] B ?bB 对给定的终极符串abcd,归约过程: 4.1.2 语法错误的处理原则 4.1.2 语法错误的处理原则 (续2) 4.1.3 自顶向下语法分析基本思想 自顶向下语法分析方法,亦称面向目标的分析方法。 思想:从文法的开始符出发企图用最左推导推导出与输入的单词串完全相匹配的句子。若输入的单词串是给定文法的句子,则必能推出,反之必然以推导失败而终止。 自顶向下语法分析方法分为: 1、非确定的自顶向下语法分析方法; 2、确定的自顶向下语法分析方法:实现方法简单、直观,便于手工构造和自动生成,是目前常用的语法分析方法。 递归下降方法; LL(1)方法。 确定的自顶向下语法分析方法:实现方法简单、直观,便于手工构造和自动生成,是目前常用的语法分析方法。 递归下降方法; LL(1)方法。 4.1.4 三个重要的集合 First集 First(?) = { a ?VT | ??* a ...} ? (if ?? *? then {?} else ? ) Follow集 Follow(A) = { a ?VT | S?+ ...Aa...} ? (if S?*... A then {#} else ? ) Predict集(Select集) 对每一文法符号X计算First(X)集 若X ?VT : First(X)={X} 若X ?VN : 对关于X的每一个产生式进行如下处理: Step1.形如: X? ? , 则: ? ? First(X) Step2.形如:X? a… , a ?VT则 : a ? First(X) 对每一文法符号X计算First(X)集 Step3.对形如下的产生式: X?Y1Y2…Yi-1Yi…Yn 若:Y1,Y2, … ,Yi ?VN且Y1,Y2, … ,Yi-1?* ? 则: First(Y1)- {?} , First(Y2)- {?}, … , First(Yi-1)- {?}, First(Yi)都包含在First(X)中。 若: Yi ?VN且Yi ?* ? (i=1,2,…n), 则: First(Y1) , First(Y2), … , First(Yn) 都包含在First(X)中。 重复Step3 ,直至对所有A?VN,First(A)收敛为止。 例: E? ? T E’ E’ ? + T E’ | ? T ? F T’ T’ ? * F T’ | ? F ? id | ( E ) 计算First(?)集 若符号串?=X1X2…Xn, 当X1,X2, … , Xi-1?*?,Xi 不能 ?* ?, 则: First(?)=?1i-1(First(Xj)-{?}) ? First(Xi) 若所有Xi 都能?*?, 则: First(?)= ?1n First(Xj) 例: E? ? T E’ E’ ? + T E’ | ? T ? F T’ T’ ? * F T’ | ? F ? i

文档评论(0)

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

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

1亿VIP精品文档

相关文档