蚂蚁文库
换一换
首页 蚂蚁文库 > 资源分类 > DOCX文档下载
 

编译原理语义分析程序设计

  • 资源ID:53169378       资源大小:86.34KB        全文页数:8页
  • 资源格式: DOCX        下载权限:游客/注册会员    下载费用:10积分 【人民币10元】
快捷注册下载 游客一键下载
会员登录下载
三方登录下载: 微信快捷登录 QQ登录  
下载资源需要10积分 【人民币10元】
邮箱/手机:
温馨提示:
支付成功后,系统会自动生成账号(用户名和密码都是您填写的邮箱或者手机号),方便下次登录下载和查询订单;
支付方式: 微信支付    支付宝   
验证码:   换一换

 
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,既可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰   

编译原理语义分析程序设计

实验3语义分析程序设计 【实验目的】 加深对语法制导翻译原理的理解,掌握将语法分析所识别的语法成分变换为中间代码的语义翻 译方法。 【实验内容】 采用递归下降语法制导翻译法,对算术表达式、赋值语句进行语义分析并生成四元式序列。 【设计思路】 1、流程图 置初值 调用scaner读下一个单词符号 调用 Irparser 输出四元式 〔结束J 图2.1递归下降分析程序示意图 2、源程序代码 1 scan.h〃头文件扫描程序 includestdio.h includestring.h char prog[80],token [8]; char ch; int syn,p,m,n,sum;//p是缓冲区prog的指针,m是token的指针 char *rwtab[6],begin,,;,if,then,while,ndon,end}; void scanner〃词法扫描程序 { memsettoken,\0,sizeoftoken;〃清空数组 token m0; whilech * { p;chprog[p];〃读下一个字符; } ifchachvzllchAchvZ m0; whilech,a,ch,z,llch,A,ch,Z,llch,0,ch,9, token [m]ch; p;chprog[p];// 读下一个字符; } token [m]*\0; syn10; forn0;n6;n ifstrcmptoken,rwtab[n]0 { synnl; break; } } else ifch0chv9 sum0; whilech0chv9 { sumsum*10ch-0‘;〃将 ch 转换为数字 P; chprog[p]; } synll; } else switchch//其他字符情况 casev m0;token [m]ch; P; chprog[p]; ifch,, { syn21; m; token[m]ch; } else ifch syn22; m; token[m]ch; } else syn20; break; case token [O]ch; P; chprog[p]; ifch syn24; token [0]ch; } else { syn23; } break; case token [0]ch; P; chprog[p]; ifch syn18; m; token [m]ch; P; chprog[p]; } else syn17; } break; case* syn13;token[0]ch;chprog[p]; break; case-* syn14;token[0]ch;chprog[p]; break; case* syn 15 ;token[0]ch;chprog[p]; break; case/ syn 16;token[0]ch;chprog [p]; break; case syn25; token [O]ch;chprog[p]; break; case; syn26 ;token [0]ch;chprog [p]; break; caseC syn27 ;token [0]ch;chprog [p]; break; case syn28;token[0]ch;chprog[p]; break; case syn0; token[0] ch;chprog[p]; break; default syn-l; } } 2 yuyi.cpp //语法分析主程序 includestdlib.h includeMscan.h int kk0,q0,k0; struct { char result[8]; char agl[8]; char op[8]; char ag2[8]; }quad[20]; int lrparser; int yucu; int statement; char * expressionvoid; char * term; char * factor; char * newtempvoid; void emitchar *result,char *agl,char *op,char *ag2; void main { kk0; rewindstdin; memsetprog,\0,sizeofprog;//清空数组 prog P0; printfH\n please stringAn; do chgetchar; prog[p]ch; }whilech *; P0; chprog[0]; scanner; lrparser; forint i0;ivq;i { printfssss\n,quad[i].result,quad[i].agl,quad[i].op,quad[i].ag2; } int lrparser { int schain0; kk0; iflsyn scanner; schainyucu; if6syn { scanner; ifOsynllOkk printfsuccess\n; } } else { ifkkl printfn缺 endn;kkl; } else printf缺 begin;kkl; } return schain; int yucu〃语句串分析函数 { int schainO; schainstatement; while26syn { scanner; schainstatement; } return schain; int statement { char tt[8]

注意事项

本文(编译原理语义分析程序设计)为本站会员(aaakkpc)主动上传,蚂蚁文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知蚂蚁文库(发送邮件至2303240369@qq.com或直接QQ联系客服),我们立即给予删除!

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




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


网站客服QQ:2303240369

copyright@ 2017-2027 mayiwenku.com 

网站版权所有  智慧蚂蚁网络

经营许可证号:ICP备2024020385号



收起
展开