版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、编译原理上机实验报告解析编译原理课内实验报告学院计算机学院专业计算机科学与技术年级班别2012级6班学号 3112006028 学生姓名曾主赐辅导教师刘添添成绩2014年12月 一完成内容 1. 扩充单词:(1)保留字:for,step, until,char,real,return;(2)双字符:*=,/=;(3)单字符:,*,/ ;2. 扩充语句:var a;begina:=1;doa:=a+1while awrite(a);end.二设计思路1. 扩充单词1)修改变量定义:void init()int i;for(i=0;issymi=nul;ssym+=plus;ssym-=minus
2、;ssym*=times;ssym/=slash;ssym(=lparen;ssym)=rparen;ssym=eql;ssym,=comma;ssym.=period;ssym#=neq;ssym;=semicolon; ssym=l1; ssym=r1;/*设置保留字名字,按照字母顺序,便于折半查找*/ strcpy(&(word00),begin);strcpy(&(word10),call);strcpy(&(word20),char);strcpy(&(word30),const);strcpy(&(word40),do);strcpy(&(word50),end);strcpy(&
3、(word60),for);strcpy(&(word70),if);strcpy(&(word80),odd);strcpy(&(word90),procedure);strcpy(&(word100),read);strcpy(&(word110),real);strcpy(&(word120),return);strcpy(&(word130),step);strcpy(&(word140),then);strcpy(&(word150),until);strcpy(&(word160),var);strcpy(&(word170),while);strcpy(&(word180),wr
4、ite);/*设置保留字符号*/wsym0=beginsym;wsym1=callsym;wsym2=charsym;wsym3=constsym;wsym4=dosym;wsym5=endsym;wsym6=forsym;wsym7=ifsym;wsym8=oddsym;wsym9=procsym;wsym10=readsym;wsym11=realsym; wsym12=returnsym; wsym13=stepsym;wsym14=thensym;wsym15=untilsym;wsym16=varsym;wsym17=whilesym;wsym18=writesym;修改pl0.h头
5、文件里定义的全局数据:# define norw 19 /*关键字个数*/# define txmax 100 /*名字表容量*/# define nmax 14 /*number的最大位数*/# define al 10 /*符号的最大长度*/# define amax 2047 /*地址上界*/# define levmax 3 /*最大允许过程嵌套声明层数0,lexmax*/ # define cxmax 200 /*最多的虚拟机代码数*/*符号*/enum symbolnul,ident,number,plus,minus,times,slash,oddsym,eql,neq,lss,
6、leq,gtr,geq, lparen,rparen, comma, semicolon,period, becomes,beginsym,endsym,ifsym,thensym,whilesym,writesym,readsym,dosym,callsym,constsym,varsym,procsym,forsym,stepsym,untilsym,charsym,realsym,returnsym,p,q,l1,r1;#define symnum 42/*-*/2)修改getsym()方法:/*词法分析,获取一个符号*/int getsym()int i,j,k;while( ch=
7、|ch=10|ch=9) getchdo; if(ch=a&chk=0;doif(kak=ch;k+;getchdo;while(ch=a&ch=0&chak=0;strcpy(id,a);i=0;j=norw-1;dok=(i+j)/2;if(strcmp(id,wordk)j=k-1;if(strcmp(id,wordk)=0)i=k+1;while(iif(i-1j)sym=wsymk;printf(保留字n);else sym=ident; printf(标识符n);elseif(ch=0&chk=0;num=0;sym=number;donum=10*num+ch-0;k+;getc
8、hdo;while(ch=0&chk-;if(knmax)error(30);elseif(ch=:) /*检测赋值符号*/getchdo;if(ch=)sym=becomes;printf(:=n);getchdo;else sym=nul; /*不能识别的符号*/ printf(n);elseif(ch=*) /*xiugai*/getchdo;if(ch=)sym=p;printf(*=n);getchdo;elsesym=times;printf(*n);getchdo;elseif(ch=/)getchdo;if(ch=)sym=q;printf(/=n);getchdo;elses
9、ym=slash;printf(/n); getchdo; elseif(ch=getchdo;if(ch=)sym=leq;printf(getchdo;elsesym=lss;printf(elseif(ch=) /*检测大于或大于等于符号*/getchdo;if(ch=)sym=geq;printf(=n);getchdo;elsesym=gtr;printf(n); else sym=ssymch;/* 当符号不满足上述条件时,全部按照单字符号处理*/printf(单字符n); /getchdo; /richard if(sym!=period) getchdo;/end richar
10、dreturn 0;2. 扩充语句1)产生式以及语法描述图: 产生式:a:=1 do a:=a+1 while a2)递归下降子程序:if(sym=dosym) getsymdo;memcpy(nxtlev,fsys,sizeof(bool)*symnum); nxtlevwhilesym=true; statementdo(fsys,ptx,lev);doa:=a+1whileaa:=1 if(sym=whilesym) getsymdo;conditiondo(nxtlev,ptx,lev);elseerror(18);3)举例设计语句的pcode代码:var a;begina:=1;do
11、a:=a+1while awrite(a);end.1 int 0 42 int 0 13 sto 0 34 lod 0 35 lit 0 16 opr 0 27 sto 0 38 lod 0 39 lit 0 510 opr 0 1011 jpc 0 1312 jmp 0 413 lod 0 314 opr 0 1415 opr 0 1516 opr 0 0 4)在递归下降子程序中增加语义动作: if(sym=dosym)cx1=cx;getsymdo;memcpy(nxtlev,fsys,sizeof(bool)*symnum);nxtlevwhilesym=true;statementdo(fsys,ptx,lev);if
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB 48145-2026井工煤矿机电设备完好性要求
- GB 48142-2026交通运输北斗增强服务通用技术要求
- DB32/T 4770-2024桑蚕配合饲料全龄饲育技术规程
- T/GDAEPI 34-2024农村生活污水处理设施运维移交指引
- T/CWAN 0132-2025钢的弧焊接头 开裂失效分析方法
- T/CCIAS 036-2025圆豆原味酱油
- T/CAAMTB 81-2022燃料电池系统振动试验规范
- T/CBJ 4201-2025葡萄酒酒庄分级规范
- T/CAQI 429-2025光伏复合材料边框生产工艺
- T/CALI 1101-2024家用太阳能光伏照明产品 性能要求
- 2025年行政复议人员业务考试真题(回忆版)及答案
- 2024年《中华人民共和国爱国主义教育法》主题课件
- 2026内蒙古地质矿产集团有限公司所属企业招聘226人考试参考题库及答案详解
- 人教版地理七年级上册(2024)3.3 海陆的变迁 课件(36张)
- AI眼镜硬件拆解及BOM成本报告:逸文Even G2 AR眼镜
- 交管12123学法减分题库500题(含标准答案+解析2026全国完整版)
- 2026年小学科普竞赛题目及答案
- 【教学设计】《大气热力环流》大单元教学设计(高中地理·湘教版必修一·2课时·素养导向·情境赋能)
- 电气控制柜装配接线规范
- 动态海报设计
- 高中生物研究性学习报告《环境与光污染》
评论
0/150
提交评论