- 1、本文档共22页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
温故知新 0型文法 1型文法 2型文法 3型文法 上下文无关文法 自上而下 自下而上 LL(1)文法 2个函数 任何两个产生式A ?? |? 都满足下列条件: 1、FIRST(? ) ? FIRST(? ) = ? 2、若? ?* ? ,那么FIRST(?) ? FOLLOW(A) = ? 递归下降预测分析 非递归的预测分析 a + b $ 输入 预测分析程序 分析表M 输出 X Y Z $ 栈 3.3 自上而下分析 3.3.6 预测分析的错误恢复 编译器的错误概述 : 词法错误,如标识符、关键字或算符拼写错误 语法错误,如算术表达式的括号不配对 语义错误,如算符作用于不相容的运算对象 逻辑错误,如无穷的递归调用 3.3 自上而下分析 分析器对错误处理的基本目标 清楚而准确地报告错误的出现 迅速地从每个错误中恢复过来,以便诊断后面的错误,并尽量少出现伪错误 它不应该使正确程序的处理速度降低太多 3.3 自上而下分析 非递归预测分析在什么场合下发现错误 栈顶的终结符和下一个输入符号不匹配 栈顶是非终结符A,输入符号是a,而M[A , a]是空白 3.3 自上而下分析 非递归预测分析:采用紧急方式的错误恢复 发现错误时,分析器每次抛弃一个输入记号,直到输入记号属于某个指定的同步记号集合为止。 同步 词法分析器当前提供的记号流能构成的语法结构,正是语法分析器所期望的。 3.3 自上而下分析 同步记号集合的选择 把FOLLOW(A)的所有终结符放入非终结符A的同步记号集合。 if expr then (then是expr的一个同步记号) 3.3 自上而下分析 同步记号集合的选择 把FOLLOW(A)的所有终结符放入非终结符A的同步记号集合。 把高层结构的开始符号加到低层结构的同步记号集合中。 a := expr ; if … (语句的开始符号作为表达式的同步符号,以免遗漏分号时忽略一大段程序。) 3.3 自上而下分析 同步记号集合的选择 把FOLLOW(A)的所有终结符放入非终结符A的同步记号集合。 把高层结构的开始符号加到低层结构的同步记号集合中。 把FIRST(A)的终结符加入A的同步记号集合。 3.3 自上而下分析 同步记号集合的选择 把FOLLOW(A)的所有终结符放入非终结符A的同步记号集合。 把高层结构的开始符号加到低层结构的同步记号集合中。 把FIRST(A)的终结符加入A的同步记号集合。 如果非终结符可以产生空串,若出错时栈顶是这样的非终结符,则可以使用产生空串的产生式。 3.3 自上而下分析 同步记号集合的选择 把FOLLOW(A)的所有终结符放入非终结符A的同步记号集合。 把高层结构的开始符号加到低层结构的同步记号集合中。 把FIRST(A)的终结符加入A的同步记号集合。 如果非终结符可以产生空串,若出错时栈顶是这样的非终结符,则可以使用产生空串的产生式。 如果终结符在栈顶而不能匹配,弹出此终结符。 同步记号加到表3.1的分析表上 非终 结符 输 入 符 号 id + * ( ) $ E E ? TE ? E ? TE ? synch synch E ? E ? ? +TE ? E ? ? ? E ? ? ? T T ? FT ? synch T ? FT ? synch synch T ? T ? ? ? T ? ? *FT ? T ? ? ? T ? ? ? F F ? id synch synch F ? (E) synch synch 总结一下出错的三种情况: 1 查表,表项是空白,栈顶不变,输入串指针后移;(相当于抛弃记号) 2 查表,表项是synch,弹栈,并且弹出的是一个非终结符 3 栈顶终结符和输入串终结符不匹配,弹栈,将栈顶终结符弹出 栈 输入 输出 $E +id*+id$ 出错,跳过+(用户多输入了+) $E id*+id$ id属于first(E) $E ?T id*+id$ $E ?T ?F id*+id$ $E ?T ? id id*+id$ $E ?T ? *+id$ $E ?T ?F* *+id$ $E ?T ?F +id$ 出错:“+”正好在F的同步记号集合中,无须跳过任何记号;F被弹出;(用户少输入了id) $E ?T ? +id$ $E ? +
您可能关注的文档
- 第7章:辅助电器研讨.ppt
- 年产80万吨高速线材开题.docx
- 第7章:抽样推断研讨.ppt
- 年初开工的注意了,你一定不能忽视的10个装修小细节.docx
- 第7章.卤化研讨.ppt
- 第7张多媒体电子地图研讨.ppt
- 第7课秀出班级新公约研讨.ppt
- 第7课戊戌变法研讨.ppt
- 第7课时一元二次方程及其应用研讨.ppt
- 第7课时百分数的应用(四)研讨.ppt
- DB44_T 2611-2025 城市排水管网有毒有害气体监测与风险分级管理技术标准.pdf
- DB44_T 2612-2025 竞赛类科普活动策划与实施服务规范.pdf
- DB43_T 2947-2024 烟草种子质量控制规程.pdf
- DB37_T 4836-2025 煤矿风量实时监测技术要求.pdf
- 叉车防撞系统,全球前22强生产商排名及市场份额(by QYResearch).docx
- 超滤膜,全球前18强生产商排名及市场份额(by QYResearch).docx
- DB62T 4172-2020 玉米品种 酒623规范.pdf
- DB62T 4160-2020 在用真空绝热深冷压力容器综合性能在线检测方法.pdf
- DB62T 4164-2020 辣椒品种 酒椒1号.pdf
- DB62T 4133-2020 公路隧道地质超前预报机械能无损探测技术规程.pdf
文档评论(0)