陈火旺 编译原理 chapter4.pptVIP

  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文档。上传文档
查看更多
陈火旺 编译原理 chapter4

LL(1) 文法 五、实例 已知文法G:A→aABl|a B→Bb|d ①试给出与G等价的LL(1)文法G’ ②构造文法G’的预测分析表,并给出输入串aadl的分析过程 解: 对A→aABl|a 来说: First(aABl) First(a)={a}≠φ. 对B→Bb|d 存在有左递归. 故文法G不是LL(1)文法. 提取公共左因子及消除左递归得 A→aT T→ABl|ε B→dB’ B’→bB’|ε 此时 First(A)={a} Follow(A)={d,#} First(T)={a,ε} Follow(T)={d,#} First(B)={d} Follow(B)={l} First(B’)={b,ε} Follow(B’)={l} G‘满足(1)不含左递归,(2)每个产生式的候选首符集两两不相交(First(ABl)={a}) ,和(3)如下 对于T→ABl|ε来说, First(T) Follow(T)= φ B’→bB’|ε First(B’) Follow(B’)= φ 故有文法G’为所求等价的LL(1)文法 复习题 1. 名词解释 自上而下分析 自下而上分析 2. 预测分析表的构造 (1) 消除文法左递归,消除回溯 (2) 求出FIRST和FOLLOW (3) 判断是否为LL(1)文法 (4) 若是构造LL(1)分析表 (5) 给出一个句子,利用分析表进行预测分析 假定要用非终结符A进行匹配,面临的输入符号为a,A的所有产生式为: A→ ? 1| ? 2|……| ? n (1) 若a∈FIRST(? i),则指派? i去执行匹配任务; (2) 若a不属于任何一个候选首符集,则: (a) 若ε属于某个FIRST(? i)且a∈FOLLOW(A),则让A与ε自动匹配; (b) 否则,a的出现是一种语法错误。 根据LL(1)文法的条件,每一步这样的工作都是确信无疑的。 4.4 递归下降分析程序的构造 递归下降分析器:当一个文法满足LL(1)条件时,可以为它构造一个不带回溯的自上而下分析程序,由一组递归过程组成,每一个过程对应文法的一个非终结符。 我们考虑以下文法G(4.2): E→TE E→+TE|ε T→FT T→﹡FT|ε F→(E)|i 构造它的递归子程序。其中advance是指把输入串指示器IP调至指向下一个输入符号;sym是指IP当前所指向的那个输入符号;error( )为出错处理程序。 void E( ) { T( ); E( );} void E( ) { if(sym == +) { advance; T( );E( );} } void T( ) { F( ); T( );} void T() { if(sym == *) { advance; F( );T( );} } void F( ) { if(sym == i) advance; else if(sym == ( ) { advance; E ( ); if(sym == ) ) advance; else error( ); } else error( ); } 如:i+i 其程序执行情况为? 前面的上下文无关文法产生式(BNF)中只用了两个元符号:→和|。下面扩充几个元语言符号: (1){?} 表示?*; (2){?}0n表示?可任意重复0次至n次,{?}00=?0=ε; (3)[?]表示{?}01即表示?的出现可有可无即? |ε; 引入上述元符号后的文法称为扩充的巴克斯范式。 例如:实数可定义为: decimal→[sign]integer.{digit}[exponent] exp

文档评论(0)

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

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

1亿VIP精品文档

相关文档