递归下降法.ppt_第1页
递归下降法.ppt_第2页
递归下降法.ppt_第3页
递归下降法.ppt_第4页
递归下降法.ppt_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

递归下降分析法 递归下降分析法是确定的自上而下分析法 这种分析法要求文法是LL 1 文法 递归下降分析法 基本思想 对文法中的每个非终结符编写一个函数 或子程序 每个函数 或子程序 的功能是识别由该非终结符所表示的语法成分 由于描述语言的文法常常是递归定义的 因此相应的这组函数 或子程序 必然以相互递归的方式进行调用 所以将此种分析法称为递归下降分析法 递归下降分析法 构造递归下降分析程序的方法 为每个非终结符编制一个递归下降分析函数 每个函数名是相应的非终结符 函数体则是根据规则右部符号串的结构和顺序编写 A 1 2 n i VT i VN 1 2 n 递归下降分析法 1 当遇到终结符a时 则编写语句 if 当前读来的输入符号 a 读下一个输入符号 2 当遇到非终结符A时 则编写语句调用A 4 当某个非终结符的规则有多个候选式时 按LL 1 文法的条件能唯一地选择一个候选式进行推导 3 当遇到规则A 时 则编写语句 递归下降分析法 if 当前读来的输入符号 FOLLOW A error E E T TT T F FF E id 例设有文法G E 试构造一个识别该文法句子的递归下降分析程序 递归下降分析法 分析首先消去文法左递归 得到文法G E E TE E TE T FT T FT F E id E E T TT T F FF E id 递归下降分析法 经过验证 文法G E 是LL 1 文法 递归下降分析法 分析程序中定义两个函数 1 函数GetSym 功能 读进源程序的下一个单词符号并将它放在全程变量sym 2 函数error 功能 出错处理程序 递归下降分析法 对文法G E 可写出相应的递归下降分析程序如下 E TE E TE T FT T FT F E id main GetSym E if sym printf success elseprintf fail 递归下降分析法 E T E E if sym GetSym T E elseif sym 递归下降分析法 E TE E TE T FT T FT F E id T F T E TE E TE T FT T FT F E id T if sym GetSym F T elseif sym follow T error 递归下降分析法 练习 编写T F if sym id GetSym elseif sym GetSym E if sym GetSym elseerror elseerror E TE E TE T FT T FT F E id 递归下降分析法 递归下降分析法 main GetSym E if sym printf success elseprintf fail id id E T E T F T 见F 见E 见T 返回下一页 F if sym id GetSym elseif sym GetSym E if sym GetSym elseerror elseerror 递归下降分析法 返回T 递归下降分析法 T if sym GetSym F T elseif sym follow T error follow T 返回T 递归下降分析法 E if sym GetSym T E elseif sym 返回E 见T 返回E 对这个例子 若采用扩充的BNF表示法改写文法 得到G E E T T T F F F E id 递归下降分析法 E E T TT T F FF E id 该文法是LL 1 文法 其递归下降分析程序中主函数和函数F 同上 对函数E 和函数T 用while语句描述如下 递归下降分析法 E T while sym GetSym T T F while sym GetSym F E T T T F F F E id

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论