编译原理——编译程序构造实践教程 教学课件 作者 张幸儿 戴新宇 401编译程序构造与实践教程第四章.ppt

编译原理——编译程序构造实践教程 教学课件 作者 张幸儿 戴新宇 401编译程序构造与实践教程第四章.ppt

  1. 1、本文档共65页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
分析过程如下所示。 按推导生成的语法分析树及其存储表示 文法G?[E]: E::=TE? E?::=+TE?|? T::=FT? T?::=*FT?|? F::=(E)|i 假定输入符号串为i*i+i。可为它构造语法分析树如图所示。 3.2.3 应用递归下降分析技术进行句型识别 设输入符号串是:i*i 当识别出输入符号串是相应文法的句子时,需构造语法分析树。可以在进入关于某非终结符号U的子程序时为U生成相应的结点,对于终结符号T,则在子程序中, 当T与输入符号匹配时为T构造结点。这样,对函数定义可作如下的修改,如对于E与E1可改写成: void E( ) { MakeNode(E); T( ); E1( ); } void E1( ) { MakeNode(E1); if(sym==+) { MakeNode(+); GetSymbol( ); T( ); E1( ); } else MakeNode(?); } 概括 构造递归下降识别程序的步骤: 步骤1 首先检查文法是否满足应用递归下降分析技术的条件,即,无左递归性与无回溯性。 如果不满足,则需进行文法等价变换,使之符合应用条件。 步骤2 对符合条件的文法构造递归下降识别程序的各个子程序,包括写出识别程序的总控程序。 试为文法G[S]: S::=A S::=C A::=V=E C::=if(E)S V::=i E::=VE? E?::=+VE? E?::= ?VE? E?::=? 构造下列预测分析表。 4.3.2 语法分析树的构造及输出 当用C型语言实现预测识别程序时,必要的是设计语法分析树的数据结构。可以把它设计为结点数组(C型): 语法分析树结点类型 语法分析树[MaxNodeNum]; 其中语法分析树结点类型的数据结构设计如下。 typedef struct { int 结点序号; int 文法符号序号; int 父结点序号; int 左兄结点序号; int 右子结点序号; } 语法分析树结点类型; 但是,在应用自顶向下分析技术生成语法分析树时,有按推导生成的结点序号与按预测分析技术的实际建立顺序,最终的结果应是实际建立顺序的语法分析树,因此除了语法分析树外,还引进过渡语法分析树。 回顾 1. 自顶向下分析技术概况 基本实现思想、讨论前提、基础文法、输入输出 要解决的基本问题、分析技术分类 无回溯的自顶向下分析技术的应用条件 2. 递归下降分析技术 基本实现思想 识别程序的构造 应用递归下降分析技术句型分析 3. 预测分析技术 基本实现思想、 应用预测分析技术句型分析 分析表的构造 void GetSymbol( ){ … } /* G[E]的C型递归下降识别程序*/ void Error( ){ … } void E( ) { T( ); E1( ); } void E1( ) { if(sym==+) { GetSymbol( ); T( ); E1( ); } } void T( ) { F( ); T1( ); } void T1( ) { if(sym==*) { GetSymbol( ); F( ); T1( ); } } void F( ) { if(sym==i) GetSymbol( ); else if(sym==( ) { GetSymbol( ); E( ); if(sym==) ) GetSymbol( ); else Error( ); } else Error( ); } void main( ) { GetSymbol( ); E( ); } 构造递归下降识别程序的步骤: 步骤1 首先检查文法是否满足应用递归下降分析技术的条件,即,无左递归性与无回溯性。 如果不满足,则需进行文法等价变换,使之符合应用条件。 步骤2 对符合条件的文法构造递归下降识别程序的各个子程序,包括写出识别程序的总控程序。 在构造递归下降识别程

您可能关注的文档

文档评论(0)

118压缩包课件库 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档