版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验3 语义分析程序设计【实验目的】加深对语法制导翻译原理的理解,掌握将语法分析所识别的语法成分变换为中间代码的语义翻译方法。【实验内容】采用递归下降语法制导翻译法,对算术表达式、赋值语句进行语义分析并生成四元式序列。置初值调用scaner读下一个单词符号调用lrparser结束【设计思路】1、流程图输出四元式图2.1递归下降分析程序示意图2、源程序代码(1)scan.h /头文件-扫描程序#include#includechar prog80,token8;char ch;int syn,p,m,n,sum; /p是缓冲区prog的指针,m是token的指针char *rwtab6=begi
2、n,if,then,while,do,end;void scanner() /词法扫描程序memset(token,0,sizeof(token);/清空数组tokenm=0;while(ch= )+p;ch=progp; /读下一个字符;if(ch=a&ch=A&ch=a&ch=A&ch=0&ch=9)tokenm+=ch;+p;ch=progp;/读下一个字符;tokenm+=0;syn=10;for(n=0;n=0&ch=0&ch=9)sum=sum*10+ch-0;/将ch转换为数字+p;ch=progp;syn=11;elseswitch(ch)/其他字符情况case)syn=21;
3、+m;tokenm=ch;else if(ch=)syn=22;+m;tokenm=ch;elsesyn=20;break;case:token0=ch;+p;ch=progp;if(ch=)syn=24;token0=ch;elsesyn=23;break;case:token0=ch;+p;ch=progp;if(ch=)syn=18;+m;tokenm=ch;+p;ch=progp;elsesyn=17;break;case+:syn=13;token0=ch;ch=prog+p;break;case-:syn=14;token0=ch;ch=prog+p;break;case*:syn
4、=15;token0=ch;ch=prog+p;break;case/:syn=16;token0=ch;ch=prog+p;break;case=:syn=25;token0=ch;ch=prog+p;break;case;:syn=26;token0=ch;ch=prog+p;break;case(:syn=27;token0=ch;ch=prog+p;break;case):syn=28;token0=ch;ch=prog+p;break;case#:syn=0; token0=ch;ch=prog+p;break;default:syn=-1;(2)yuyi.cpp / 语法分析主程序
5、#include#includescan.hint kk=0,q=0,k=0;structchar result8;char agl8;char op8;char ag28;quad20;int lrparser();int yucu();int statement();char * expression(void);char * term();char * factor();char * newtemp(void);void emit(char *result,char *agl,char *op,char *ag2);void main()kk=0;rewind(stdin);memset
6、(prog,0,sizeof(prog);/清空数组progp=0;printf(n please input string:n);doch=getchar();progp+=ch;while(ch!=#);p=0;ch=prog0;scanner();lrparser();for(int i=0;iq;+i)printf(%s=%s%s%sn,quadi.result,quadi.agl,quadi.op,quadi.ag2);int lrparser()int schain=0;kk=0;if(1=syn)scanner();schain=yucu();if(6=syn)scanner()
7、;if(0=syn|0=kk)printf(success!n);elseif(kk!=1) printf(缺end!);kk=1;elseprintf(缺begin!);kk=1;return schain;int yucu() /语句串分析函数int schain=0;schain=statement();while(26=syn)scanner();schain=statement();return schain;int statement()char tt8,eplace8;int schain=0;switch(syn)case 10:strcpy(tt,token);scanner
8、();if(18=syn)scanner();strcpy(eplace,expression();emit(tt,eplace,);schain=0;else printf(缺赋值号!);kk=1;return schain;break;char * expression(void)/表达式分析函数char *tp,*ep2,*eplace,*tt;tp=(char *)malloc(12);ep2=(char *)malloc(12);eplace=(char *)malloc(12);tt=(char *)malloc(12);strcpy(eplace,term();while(13=
9、syn)|(14=syn)strcpy(tt,token);scanner();strcpy(ep2,term();strcpy(tp,newtemp();emit(tp,eplace,tt,ep2);strcpy(eplace,tp);return eplace;char *term(void)char *tp,*ep2,*eplace,*tt;tp=(char *)malloc(12);ep2=(char *)malloc(12);eplace=(char *)malloc(12);tt=(char *)malloc(12);strcpy(eplace,factor();while(15=
10、syn)|(16=syn)strcpy(tt,token);scanner();strcpy(ep2,factor();strcpy(tp,newtemp();emit(tp,eplace,tt,ep2);strcpy(eplace,tp);return eplace;char *factor(void)char *fplace;fplace=(char *)malloc(12);strcpy(fplace, );if(10=syn)strcpy(fplace,token);scanner();else if(11=syn)itoa(sum,fplace,10);scanner();else if(27=syn)scanner();fplace=expression();if(28=syn)scanner();elseprintf()错误!);kk=1;elseprintf(错误!);kk=1;return fplace;char * newtemp(void)char *p;char m8;p=(char *)malloc(8);k+;itoa(k,m,10);strcpy(p+1,m);p0=t;ret
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 营销策略制定流程与工具整合包
- 环境改善贡献社会承诺书8篇
- 项目验收流程管理工具
- 行政工作处理流程可视化操作手册
- 网络安全配置与检查清单工具
- 业务谈判及提案响应快速手册
- 健康管理推进计划承诺书范文3篇
- 2026年吉林省长春市高新区初三冲刺模拟(5)英语试题含解析
- 2026年黑龙江省哈尔滨市南岗区“FF联盟”初三一模考试答案英语试题试卷含解析
- 陕西省西安市高新一中学2025-2026学年初三第三次模拟练习英语试题含解析
- 2026春小学科学青岛版(五四制2024)三年级下册教案(附目录)
- 2026年职工职业技能竞赛(泵站运行工赛项)参考试指导题库(含答案)
- 2026财政部部属单位招聘80人笔试备考试题及答案解析
- 2026年教科版二年级科学下册教学计划(附教学进度表)
- 2025年陕西秦创原(咸阳)创新促进中心面向社会公开招聘12人笔试参考题库附带答案详解
- 2026年六安职业技术学院单招职业适应性考试题库及答案详解(新)
- 2025年江西传媒职业学院单招综合素质考试试题及答案解析
- 2026年大学生寒假社会实践报告(一)
- 2025年6月英语六级真题及答案-第2套
- 2026年临汾职业技术学院单招职业技能测试题库及完整答案详解一套
- (2026春新版)北师大版三年级数学下册全册教案(教学设计)
评论
0/150
提交评论