3.3 自上而下分析.ppt

  1. 1、本文档共46页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
3.3 自上而下分析.ppt

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * 3.3 自上而下分析 3.3.6 预测分析的错误恢复 1、先对编译器的错误处理做一个概述 词法错误,如标识符、关键字或算符的拼写错 语法错误,如算术表达式的括号不配对 语义错误,如算符作用于不相容的运算对象 逻辑错误,如无穷的递归调用 3.3 自上而下分析 2、分析器对错误处理的基本目标 清楚而准确地报告错误的出现,并尽量少出现伪错误 迅速地从每个错误中恢复过来,以便诊断后面的错误 它不应该使正确程序的处理速度降低太多 3.3 自上而下分析 3、非递归预测分析在什么场合下发现错误 栈顶的终结符和下一个输入符号不匹配 a + b $ 输入 预测分析程序 分析表M 输出 X Y Z $ 栈 3.3 自上而下分析 3、非递归预测分析在什么场合下发现错误 栈顶是非终结符A,输入符号是a,而M[A , a]是空白 a + b $ 输入 预测分析程序 分析表M 输出 X Y Z $ 栈 3.3 自上而下分析 4、非递归预测分析:采用紧急方式的错误恢复 发现错误时,分析器每次抛弃一个输入记号,直到输入记号属于某个指定的同步记号集合为止 5、同步 词法分析器当前提供的记号流能够构成的语法构造,正是语法分析器所期望的 不同步的例子 语法分析器期望剩余的前缀构成过程调用语句,而实际剩余的前缀形成赋值语句 3.3 自上而下分析 6、同步记号集合的选择 把FOLLOW A 的所有终结符放入非终结符A的同步记号集合 3.3 自上而下分析 6、同步记号集合的选择 把FOLLOW A 的所有终结符放入非终结符A的同步记号集合 if expr then stmt (then和分号等记号是expr的同步记号) 3.3 自上而下分析 6、同步记号集合的选择 把FOLLOW A 的所有终结符放入非终结符A的同步记号集合 把高层构造的开始符号加到低层构造的同步记号集合中 3.3 自上而下分析 6、同步记号集合的选择 把FOLLOW A 的所有终结符放入非终结符A的同步记号集合 把高层构造的开始符号加到低层构造的同步记号集合中 a expr; if … 语句的开始符号作为表达式的同步记号,以免表达式出错又遗漏分号时忽略if语句等一大段程序 3.3 自上而下分析 6、同步记号集合的选择 把FOLLOW A 的所有终结符放入非终结符A的同步记号集合 把高层构造的开始符号加到低层构造的同步记号集合中 把FIRST A 的终结符加入A的同步记号集合 a expr; , if … (语句的开始符号作为语句的同步符号,以免多出一个逗号时会把if语句忽略了) 3.3 自上而下分析 6、同步记号集合的选择 把FOLLOW A 的所有终结符放入非终结符A的同步记号集合 把高层构造的开始符号加到低层构造的同步记号集合中 把FIRST A 的终结符加入A的同步记号集合 如果非终结符可以产生空串,若出错时栈顶是这样的非终结符,则可以使用推出空串的产生式 3.3 自上而下分析 非终 结符 输 入 符 号 id + ? . . . E E?TE? E? E??+TE? T T?FT ? T ? 出错 T ?? ? T ???FT ? . . . 例 栈顶为T ?,面临id时出错 3.3 自上而下分析 非终 结符 输 入 符 号 id + ? . . . E E?TE? E? E??+TE? T T?FT ? T ? 出错, 用T ?? ? T ?? ? T ???FT ? . . . T ?可以产生空串,报错并用T ??? 3.3 自上而下分析 同步记号集合的选择 把FOLLOW A 的所有终结符放入非终结符A的同步记号集合 把高层结构的开始符号加到低层结构的同步记号集合中 把FIRST A 的终结符加入A的同步记号集合 如果非终结符可以产生空串,若出错时栈顶是这样的非终结符,则可以使用推出空串的产生式 如果终结符在栈顶而不能匹配,弹出此终结符 习 题 3.8 3.10 3.14 * * * * * * * * * * * * 在FRIST T? 中,+, 和$在FOLLOW T? 中。 * * * * * * 中国科大 3.3 自上而下分析 3.3.1 自上而下分析的一般方法 例 文法 S ? aCb C ? cd | c 为输入串w acb建立分析树 S a C b S a C b c d S a C b c 不能处理左递归 3.3 自上而下分析 不能处理左递归的例子 算术表达文法 E ?

文档评论(0)

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

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

1亿VIP精品文档

相关文档