二义文法的应用

上传人:cel****303 文档编号:243804432 上传时间:2024-09-30 格式:PPT 页数:32 大小:138.50KB
收藏 版权申诉 举报 下载
二义文法的应用_第1页
第1页 / 共32页
二义文法的应用_第2页
第2页 / 共32页
二义文法的应用_第3页
第3页 / 共32页
资源描述:

《二义文法的应用》由会员分享,可在线阅读,更多相关《二义文法的应用(32页珍藏版)》请在装配图网上搜索。

1、单击编辑母版标题样式,*,单击编辑母版标题样式,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,二义文法的应用,二义文法的应用,二义文法的特点:,二义文法决不是,LR,文法,简洁、自然,例 二义文法,E,E,+,E,|,E,E,|(,E,)|id,非,二义的文法:,E,E,+,T,|,T,T,T,F,|,F,F,(,E,),|id,该文法有单个非终结符为右部的产生式,二义文法的应用,二义文法的特点:,二义文法决不是LR文法,简洁、自然,可以用文法以外的信息来消除二义,语法分析的效率高基于消除二义后得到的分析表,二义文法的应用,.1,使用文法以外信

2、息来解决分析动作冲突,例二义文法,E,E,+,E,|,E,E,|(,E,)|id,规定:,优先级高于,+,,两者都是左结合,二义文法的应用,.1 使用文法以外信息来解决分析动作冲突,例二义文法E E+E|E E|(E)|id,规定:优先级高于+,两者都是左结合,LR(0)工程集I7,E E+E,E E+E,E E E,二义文法的应用,.1 使用文法以外信息来解决分析动作冲突,例二义文法E E+E|E E|(E)|id,规定:优先级高于+,两者都是左结合,LR(0)工程集I7,E E+E,E E+Eid+id+id,E E E,面临+,归约,二义文法的应用,.1 使用文法以外信息来解决分析动作冲

3、突,例二义文法E E+E|E E|(E)|id,规定:优先级高于+,两者都是左结合,LR(0)工程集I7,E E+E,E E+Eid+id+id,E E E id+id id,面临+,归约面临,移进,二义文法的应用,.1 使用文法以外信息来解决分析动作冲突,例二义文法E E+E|E E|(E)|id,规定:优先级高于+,两者都是左结合,LR(0)工程集I7,E E+E,E E+Eid+id+id,E E E id+id id,面临+,归约面临,移进,面临)和$,归约,二义文法的应用,.1 使用文法以外信息来解决分析动作冲突,例二义文法E E+E|E E|(E)|id,规定:优先级高于+,两者都

4、是左结合,LR(0)工程集I8,E E E,E E+E,E E E,二义文法的应用,.1 使用文法以外信息来解决分析动作冲突,例二义文法E E+E|E E|(E)|id,规定:优先级高于+,两者都是左结合,LR(0)工程集I8,E E E,E E+Eid id+id,E E E,面临+,归约,二义文法的应用,.1 使用文法以外信息来解决分析动作冲突,例二义文法E E+E|E E|(E)|id,规定:优先级高于+,两者都是左结合,LR(0)工程集I8,E E E,E E+Eid id+id,E E E id id id,面临+,归约面临,归约,二义文法的应用,.1 使用文法以外信息来解决分析动作

5、冲突,例二义文法E E+E|E E|(E)|id,规定:优先级高于+,两者都是左结合,LR(0)工程集I8,E E E,E E+Eid id+id,E E E id id id,面临+,归约面临,归约,面临)和$,归约,二义文法的应用,.2,特殊情况产生式引起的二义性,E,E,sub,E,sup,E,E,E,sub,E,E,E,sup,E,E,E,E,c,二义文法的应用,.2,特殊情况产生式引起的二义性,E,E,sub,E,sup,E,E,E,sub,E,E,E,sup,E,E,E,E,c,从定义形式语言的角度说,第一个产生式是多余的,二义文法的应用,.2 特殊情况产生式引起的二义性,E E

6、sub E sup E,E E sub E,E E sup E,E E,E c,联络到语义处理,第一个产生式是必要的,二义文法的应用,.2,特殊情况产生式引起的二义性,E,E,sub,E,sup,E,E,E,sub,E,E,E,sup,E,E,E,E,c,对,a,sub,i,sup 2,,需要下面第一种输出,二义文法的应用,.2,特殊情况产生式引起的二义性,E,E,sub,E,sup,EI,11,:,E,E,sub,E E,E,sub,E,sup,E,E,E,sup,E E,E,sup,E,E,E,.,E,c,按前面一个产生式归约,二义文法的应用,.3 LR分析的错误恢复,1、LR分析器在什么

7、情况下发现错误,访问动作表时假设遇到出错条目,访问转移表时它决不会遇到出错条目,决不会把不正确的后继移进栈,标准的LR分析器甚至在报告错误之前决不做任何无效归约,二义文法的应用,2,、紧急方式错误恢复,s,.,.,.,.,.,.,栈,.,.,a.,A,发现错误,s:,C,A,A,b,.,s,1,:,C,A,.,A,A,b,.,b,二义文法的应用,2,、紧急方式错误恢复,(1),退栈,直至出现状态,s,它有预先确定的,A,的转移,s,.,.,.,栈,.,.,a.,A,发现错误,s:,C,A,A,b,.,s,1,:,C,A,.,A,A,b,.,b,二义文法的应用,2、紧急方式错误恢复,(1)退栈,

8、直至出现状态s,它有预先确定的A的转移,(2)抛弃假设干输入符号,直至找到a,它是A的合法后继,s,.,.,.,栈,.,.,a.,A,s:,C,A,A,b,.,s,1,:,C,A,.,A,A,b,.,b,二义文法的应用,2、紧急方式错误恢复,(1)退栈,直至出现状态s,它有预先确定的A的转移,(2)抛弃假设干输入符号,直至找到a,它是A的合法后继,(3)再把A和状态gotos,A压进栈,恢复正常分析,s,s,1,.,.,.,栈,.,.,a.,A,s:,C,A,A,b,.,s,1,:,C,A,.,A,A,b,.,b,本 章 要 点,文法和语言的根本知识,自上而下的分析方法:预测分析,非递归的预测

9、分析,LL(1)文法,自下而上的分析方法:SLR(1)方法,标准LR(1)方法和LALR(1)方法,LR方法如何用于二义文法,语法分析的错误恢复方法,例 题 1,下面的二义文法描绘命题演算公式的语法,,为它写一个等价的非二义文法,S S and S|S or S|not S|p|q|(S),非二义文法的产生式如下:,E E or T|T,T T and F|F,F not F|(E)|p|q,例 题 1,下面的二义文法描绘命题演算公式的语法,,为它写一个等价的非二义文法,S S and S|S or S|not S|p|q|(S),非二义文法的产生式如下:,E E or T|T,T T and

10、 F|F,F not E|(E)|p|q?,not p and q有两种不同的最左推导,例 题 1,下面的二义文法描绘命题演算公式的语法,,为它写一个等价的非二义文法,S S and S|S or S|not S|p|q|(S),非二义文法的产生式如下:,E E or T|T not p and q,T T and F|F not p and q,F not E|(E)|p|q?,not p and q有两种不同的最左推导,例 题,2,设计一个文法:字母表,a,b,上,a,和,b,的个数相,等的所有串,的集合,二义文法:,S,a S b S,|,b S a S,|,a,ab,b,abab,a,

11、abba,b,ab,S S S S,例 题,2,设计一个文法:字母表,a,b,上,a,和,b,的个数相,等的所有串,的集合,二义文法:,S,a S b S,|,b S a S,|,a,ab,b,abab,a,abba,b,ab,二义文法:,S,a B,|,b A,|,A,a S,|,b A A,B,b S,|,a B B,a,a,b,babab,a,a,bba,bab,a,a,bbaba,b,B,B,B,B,B,B,例 题,2,设计一个文法:字母表,a,b,上,a,和,b,的个数相,等的所有串,的集合,二义文法:,S,a S b S,|,b S a S,|,a,ab,b,abab,a,abba

12、,b,ab,二义文法:,S,a B,|,b A,|,A,a S,|,b A A,B,b S,|,a B B,a,a,b,babab,a,a,bba,bab,a,a,bbaba,b,非二义文法:,S,a B S,|,b A S,|,A,a,|,b A A,a,a,b,b,abab,B,b,|,a B B,aB,S,例 题,3,试说明下面文法不是,LR(1),的:,L,M L b,|,a,M,M,b,L,L,L,L,a,M,b,M,b,句子,abbb,的分析树,例 题,4,下面的文法不是,LR(1),的,对它略做修改,使之成为,一个等价的,SLR(1),文法,program,begin,decli

13、st,;,statement,end,declist,d;,declist,|d,statement,s;,statement,|s,该文法产生的句子的形式是,begin d,;d;,;d,;,s;s,;,;s,end,修改后的文法如下:,program,begin,declist,statement,end,declist,d;,declist,|d;,statement,s;,statement,|s,例 题,5,一个C语言的文件如下,第四行的if误写成fi:,long gcd(p,q),long p,q;,fi(p%q=0),return q;,else,return gcd(q,p%q);,基于LALR1方法的一个编译器的报错情况如下:,parse error before return(line 5).,是否违背了LR分析的活前缀性质?,

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

相关资源

更多
正为您匹配相似的精品文档

相关搜索

关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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