欢迎来到优知文库! | 帮助中心 分享价值,成长自我!
优知文库
全部分类
  • 幼儿/小学教育>
  • 中学教育>
  • 高等教育>
  • 研究生考试>
  • 外语学习>
  • 资格/认证考试>
  • 论文>
  • IT计算机>
  • 法律/法学>
  • 建筑/环境>
  • 通信/电子>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 优知文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    编译原理上机实验程序(LR分析).docx

    • 资源ID:1847212       资源大小:37.04KB        全文页数:20页
    • 资源格式: DOCX        下载积分:5金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: QQ登录
    二维码
    扫码关注公众号登录
    下载资源需要5金币
    邮箱/手机:
    温馨提示:
    快捷下载时,如果您不填写信息,系统将为您自动创建临时账号,适用于临时下载。
    如果您填写信息,用户名和密码都是您填写的【邮箱或者手机号】(系统自动生成),方便查询和重复下载。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    编译原理上机实验程序(LR分析).docx

    小型编译程序:高级语言到四元式的编译ttincludestdio.h/*如果使用TC的话,需要配置头文件路径*/#includestring.h/*如果使用VC的话,可以配置头文件conio.h*/ftdefineACC-2/*/ftdefinesy_if0ftdefinesythen1#definesyeIse2#definesywhile3#definesybegin4ftdefinesydo5ftdefinesyend6ftdefinea7ftdefinesemicolon8ttdefinee9#definejinghao10ftdefineS11ftdefineL12#definetempsy15ftdefineEA18*Eand*/ftdefineEO19*Eor*/#defineplus34#definetimes36ftdefinebecomes38ftdefineopand39ftdefineopor40ftdefineopnot41ftdefinerop42#define!parent48ftdefinerparent49ftdefineident56ftdefineintconst57/*/charch-0,;/*从字符缓冲区读取当前字符*/intcount=0;/*词法分析结果缓冲区计数器*/staticcharSPening10="*存放识别的单词符号*/staticcharIine81="*一行字符缓冲区,最多80个字符*/charSpline;/*字符缓冲区指针*/staticcharntabl10010;/*变量名表,共100项,每项长度10*/structntabintinttc;fc;ntab2200;intIabel=O;/*真值*/*假值*/*在布尔表达式E中保存有关布尔变量的真、假值*/*指向ntab2的指针*/*存放临时变量的表的定义*/structrwordscharsp10;intsy;);*保存字表)匹配表的结构,用来与输入缓冲区中的单词进行匹配*/*匹配表初始化,大小为10*/structrwordsreswords10-zzifzz,sy_if),do,sy_do,z,elsezz,sy_else,whilez,sy_while,thenzz,sy_then),zbegin,z,sy_begin,end,sy_end,and,opand,zzorzz,opor,structaaintsyl;intpos;buf1000,n,nl,E,sstack100,ibuf100,stack1000;structaaoth;not,opnot);/*存放单词符号的种别编码*/*存放单词符号自身的值*/*词法分析结果缓冲区,保存识别出来的单词符号*/*读取二元式的当前符号*/*当前表达式中的符号*/*非终结符*/*算术或布尔表达式加工处理使用的符号栈*/*算术或布尔表达式使用的缓冲区*/*语法分析加工处理使用的符号栈*/*四元式中空白位置*/structfourexpcharop10;structaaargl;structaaarg2;intresult;fexp200;*四元式的结构定义*/intssp=O;/*指向SStaCk栈指针*/structaa*pbuf=buf;/*指向词法分析缓冲区的指针*/intnlength=O;intInum=O;/*词法分析中记录单词的长度*/*源程序行数记数,源程序长度*/intttl=O;FILEdefile;Afile*mfiie;*/*变量名表指针*/*源程序文件,为结束符*/intnewt=0;intnxq=100;/*临时变量计数器*/*nxq指向下一个形成的四元式的地址*/*每次执行gen)时,地址自动增1*/i11tIr;/*扫描LR分析表1过程中保存的当前状态值*/intIrl;intsp=O;/*扫描LR分析表2或表3所保存的当前状态值*/*查找LR分析表时状态栈的栈顶指针*/intStackl100;intspl=O;intnum=0;struct11intnxql;inttcl;intfcl;labelmark10;/*状态栈1的定义*/*状态栈1的栈顶指针*/*算术或布尔表达式缓冲区指针*/*记录下一条四元式的地址*/*真值链*/*假值链*/*记录语句嵌套层次的数组,*/*即记录嵌套中每层的布尔表达式E的首地址*/intIabeltempElO;/*记录语句嵌套层次的数组,*/*即记录每层else之前的四元式地址*/intpointmark=-l,pointtemp=-l;/5IcIabelmark数组指针*/*labeltemp数组指针*/intsign=O;Asign=I,为赋值语句;sign=2,为布尔表达式。/*程序语句LR分析表*/staticintaction1913=/*0*/2,-1,-1,3,4,-1,-1,5,-1,-1,-1,-1,-1),/*1*/-l,-1,-1,-1,-1,-1,-1,-1,-1,-1,ACC,-1,-1),/*2*/-l,-l,-1,-1,-1,-1,-1,-1,-1,6,-1,-1,-1,/*3*/-l,-l,-1,-1,-1,-1,-1,-1,-1,7,-l,-l,-l,/*4*/2,-l,-l,3,4,-1,-1,5,-1,-1,-1,9,8),/*5*/-l,-1,104,-1,-1,-1,104,-1,104,-1,104,-1,-1,/*6*/1,10,十-1,1,1,1,1,1,1,1,1,/*7*/1,1,1,-1,11,1,1,1,1,1,1,1,/*8*/1,1,1,-1,-1,1,12,1,1,1,1,1,1),*9*T,-1,-1,-1,-1,-1,105,-1,13,-1,-1,-1,T,/*10*/2,-l,-l,3,4,-1,-1,5,-1,-1,-1,14,-1),/*11*/2,-l,-l,3,4,-1,-1,5,-1,-1,-1,15,-1),*12*/-l,-1,103,-1,-1,-1,103,-1,103,-1,103,-1,-1,/*13*/2,-l,-l,3,4,-1,-1,5,-1,-1,-1,9,16),/*14*/-l,-1,17,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1),/*15*/-l,-1,102,-1,-1,-1,102,-1,102,-1,102,-1,-1),/*16*/-l,-1,-1,-1,-1,-1,106,-1,-1,-1,-1,-1,-1),/*17*/2,-1,-1,3,4,-1,-1,5,-1,-1,-1,18,-1),/*18*/-l,-1,101,-1,-1,-1,101,-1,101,-1,101,-1,-1;/*算术表示式的LR分析表*/staticintactionl107=/*0*/3,-l,-l,2,-l,-l,1,/*1*/-l,4,5,-l,-l,ACC,-l,/*2*/3,-l,-l,2,-l,-l,6,*3*-l,104,104,-1,104,104,-1,/*4*/3,-l,-l,2,-l,-l,7,/*5*/3,-l,-l,2,-l,-l,8,/*6*/-l,4,5,-l,9,-l,-l,/*7*/-l,101,5,-1,101,101,-l,/*8*/-l,102,102,-1,102,102,-1,/*9*/-l,103,103,-1,103,103,-1;/*布尔表示式的LR分析表*/staticintaction21611=/*0*/1,-1,4,-1,5,-1,-1,-1,13,7,8,/*1*/-l,2,-l,101,-1,101,101,o,-,-,-,/*2*/3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1),*3*-l,-l,-l,102,-1,102,102,102,-1,-1,-1),/*4*/1,-1,4,-1,5,-1,-1,-1,11,7,8),/*5*/1,-1,4,-1,5,-1,-1,-1,6,7,8),/*6*/-l,-l,-l,104,-1,9,10,104,-1,-1,-1),/*7*/1,-1,4,-1,5,-1,-1,-1,14,7,8),/*8*/1,-1,4,-1,5,-1,-1,-1,15,7,8),/*9*/105,-1,105,-1,105,-1,-1,-1,-1,-1,-1),/*10*/107,-1,107,-1,107,-1,-1,-1,-1,-1,-1),/*11*/-l,-l,-l,12,-1,9,10,-l,-l,-l,-l,*12*/-l,-l,-l,103,-1,103,103,103,-1,-1,-1),/*13*/-l,-l,-1,-1,-1,9,10,ACC,-1,-1,-1),/*14*/-l,-l,-l,106,-1,9,10,106,-1,-1,-1),/*15*/-l,-l,-l,108,-1,9,10,108,-1,-1,-1;/*从文件读一4亍至U缓冲区*/voidreadline()charchi;pline=line;chl=fgetc(cfile);while(chi!=,n&&!feof(cfile)line=chl;pline+;chl=fgetc(cfile);*pline='0,;pline=line;/*从缓冲区读取一*个字符*/voidreadch()(if(Ch='0')readline();Inum+;)Ch=*pline;pline+;)/*初利白勺另"*

    注意事项

    本文(编译原理上机实验程序(LR分析).docx)为本站会员(王**)主动上传,优知文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知优知文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




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

    copyright@ 2008-2023 yzwku网站版权所有

    经营许可证编号:宁ICP备2022001189号-2

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

    收起
    展开