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

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

《《编译原理》课程简介 (42).pdf》由会员分享,可在线阅读,更多相关《《编译原理》课程简介 (42).pdf(10页珍藏版)》请在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 第五章 语法分析自下而上分析5.3.8 二义文法的使用5.3.8 二义文法的使用二义文法的应用n任何二义文法决不是LR(k)的,但是二义文法却很有用。能否让二义文法也使用LR分析法?n方法是:当发生冲突时,规定其解决冲突的方法,也即规定算符之间的优先级。n例:文法 EE+E|E*E|(E)|i 该文法排版为:(1)EE+E(3)E(E)(2)EE*E(4)Ei5.3.8 二义文法的使用5.3.8 二义文法的使用n其LR分析表如下状态ACTIONGOTOi+*()#E0S3S211S4S5acc2S3S263r

2、4r4r4r44S3S275S3S286S4S5S97S4/r1S5/r1r1r18S4/r2S5/r2r2r29r3r3r3r35.3.8 二义文法的使用分析发现,I7、I8两个集合存在移进/归约、冲突,而且由于FOLLOW(E)=+,*,),#。与“+”,“*”的冲突不能通过SLR(1)方法解决。但由于算符+,*有优先级关系,可利用此来分析取舍。考察I7:说明堆栈中已有E+E。若当前指针指向符号是“+”,而堆栈中已有“E+E”,同样是“+”运算,先进栈的先计算。用E+E归约为E,而不取把“+”移进。若当前指针指向符号是“*”,而堆栈中已有“E+E”,前面运算(在堆栈中)是+,而现在运算是*

3、必须先运算“*”运符而不能让前面的“+”先运算。选取把“*”移进,而不取把“E+E”归约。5.3.8 二义文法的使用考察I8:说明堆栈中已有E*E若当前指针指向的符号是“+”,而堆栈中已有“E*E”,显然应优先做前面的“E*E”运算,选用E*E归约,而不取移进“+”;若当前指针指向的符号是“*”,而堆栈中已有“E*E”,由于同样是“*”运算符,堆栈里面的部分排在前面,应先计算,选用E*E归约,而不取移进“*”。5.3.8 二义文法的使用n例2文法 S iSeS|iS|a n构造DFA图如下:5.3.8 二义文法的使用状态ACTIONGOTOiea#S0S2S311acc2S2S343r3r34S5/r2r25S2S366r1r1nLR分析表如下:|编译原理谢 谢Thanks

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

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

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

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