《编译原理》课程简介 (22).pdf

上传人:奉*** 文档编号:67733423 上传时间:2022-12-26 格式:PDF 页数:12 大小:1.63MB
返回 下载 相关 举报
《编译原理》课程简介 (22).pdf_第1页
第1页 / 共12页
《编译原理》课程简介 (22).pdf_第2页
第2页 / 共12页
点击查看更多>>
资源描述

《《编译原理》课程简介 (22).pdf》由会员分享,可在线阅读,更多相关《《编译原理》课程简介 (22).pdf(12页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、编译原理 C O M P I L A T I O N P RIN C IP LE 第四章 语法分析-自上而下分析4.3.1 消除左递归和回溯 4.3 消除左递归和回溯一、左递归的消除n使用自顶向下的任何一种算法必须消除左递归和提取公共左因子。v1、直接左递归的消除p若文法中有形如PP的产生式,则称直接左递归,如AAb|a。设 P VN ,有PP|,若,不以P开头(否则不可能消除左递归)。则改写为:P P P P|可消除左递归4.3 消除左递归和回溯n例:SSabc|Sab|ab 消除直接左递归得:SabS SabcS|abS|n一般地,若PP 1|P 2|.|P m|1|.|n i ,j不以P

2、开头,则可改写为:P 1 P|2P|.|n P P 1 P|2P|.|m P|从而消除直接左递归。4.3 消除左递归和回溯v2、完全消除左递归 分析SQc|cQRb|bRSa|a虽不含直接左递归,但所以含有左递归。SQcRbcSabc如果文法G不含回路(P P),也不含产生式,则下列算法可消除左递归(完全)把G的非终结符按任意顺序排列成P1,Pnfor i:=1 to n do for j:=1 to i-1 do 把形如 Pi P j 的规则改写成 P i 1|.|k,其中 P i 1|.|k ;消除关于Pi的直接左递归化简由得到的文法(取消无用非终结符产生式)4.3 消除左递归和回溯上述文

3、法例排序:S,Q,R循环:i=1时,处理SQc|c,消除直接左递归,不变 i=2时,处理QRb|b,j=1,把有关Q的产生式中以S开头的候选式替换(无),所以不变 i=3时,处理RSa|a,j=1,把以S开头的候选式替换,得RQca|ca|a4.3 消除左递归和回溯j=2,把以Q开头的候选式替换,得:RRbca|bca|ca|a消除R的直接左递归,得:R bcaR|caR|aR RbcaR|整理:得:S Qc|c Q Rb|b R bcaR|caR|aR RbcaR|4.3 消除左递归和回溯二、提取左因子、消除回溯v1、FIRST()通常关于条件语句的产生式例n语句if 条件 then 语句

4、else 语句n|if 条件 then 语句n 就是这样一种情形n设文法G是不含左递归的文法,对其任何非终结的候选式定义:FIRST()=a|a,aVT,(VT U VN)*若 ,则规定FRIST()*4.3 消除左递归和回溯v2、应用n如果一个文法G的非终结符A的多个候选式之首符集两两不相交,那么在自上而下分析时便可消除回溯。n设A 1|2|.|n,而FIRST(1),FIRST(n)两两不相交,那么当分析时要A去匹配某输入串时,便可根据此输入串的输入符号a,准确地选用候选式i。4.3 消除左递归和回溯文法SaSb|c,输入串为aacbb时:例4.3 消除左递归和回溯v3、公共左因子的提取n 把文法改造为每个非终结符的所有候选式两两不相交的方法是提取公共左因子。A 1|2|.|n|1|2|.|mA A|1|.|m A 1|2|.|n n 可改造为:|编译原理谢 谢Thanks

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁