编译原理上机实验报告解析

上传人:cn****1 文档编号:458516993 上传时间:2022-12-17 格式:DOCX 页数:14 大小:78.67KB
返回 下载 相关 举报
编译原理上机实验报告解析_第1页
第1页 / 共14页
编译原理上机实验报告解析_第2页
第2页 / 共14页
编译原理上机实验报告解析_第3页
第3页 / 共14页
编译原理上机实验报告解析_第4页
第4页 / 共14页
编译原理上机实验报告解析_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《编译原理上机实验报告解析》由会员分享,可在线阅读,更多相关《编译原理上机实验报告解析(14页珍藏版)》请在金锄头文库上搜索。

1、编译原理课内实验报告学院 计算机学院专业计算机科学与技术年级班别2012级6班学号3112006028学生姓名曾主赐辅导教师刘添添成绩2014年12月一.完成内容1 .扩充单词:(1)保留字:for,step, until,char,real,return双字符:*=,/=;(3)单字符:,*,/ ;2 .扩充语句:var a;begina:=1;doa:=a+1while a5;write(a);end.二.设计思路1.扩充单词1)修改变量定义:void init()int i;for(i=0;i=a&ch=z)(k=0;doif(k=a&ch=0&ch=9);ak=0;strcpy(id,

2、a);i=0;j=norw-1;dok=(i+j)/2;if(strcmp(id,wordk)=0)i=k+1;while(ij)sym=wsymk;printf(保留字 n);elsesym=ident;printf(标识符 n);elseif(ch=0&ch=0&chnmax)error(30);elseif(ch=:)/*检测赋值符号*/getchdo;if(ch=)sym=becomes;printf(kn);getchdo; else sym=nul;printf(n);/*不能识别的符号*/elseif(ch=*)/*xiugai*/getchdo; if(ch=) sym=p;

3、printf(*=n); getchdo; else sym=times; printf(*n); getchdo;elseif(ch=/) getchdo; if(ch=) sym=q;printf(/=n); getchdo; else sym=slash; printf(八n);getchdo;elseif(ch=,)/*检测小于或小于等于符号*/getchdo;if(ch=)sym=leq;printf(=n);getchdo;elsesym=lss;printf()/*检测大于或大于等于符号*/getchdo;if(ch=)sym=geq;printf(=n);getchdo;els

4、esym=gtr;printf(n); else sym=ssymch;/*当符号不满足上述条件时,全部按照单 字符号处理*/printf(单字符 n);/getchdo;/richardif(sym!=period) getchdo;/end richardreturn 0;2.扩充语句1)产生式以及语法描述图:产生式:a:=1 do a:=a+1 while a5语法描述图:a5IIf 、a:=1( do 1 a:=a+1 w whileX/2)递归下降子程序:if(sym=dosym)getsymdo;memcpy(nxtlev,fsys,sizeof(bool)*symnum);nxt

5、levwhilesym=true;statementdo(fsys,ptx,lev);if(sym=whilesym) getsymdo; conditiondo(nxtlev,ptx,lev); else error(18);3)举例设计语句的pcode代码:var a;begina:=1;doa:=a+1while a5;write(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 3

6、14 opr 0 1415 opr 0 1516 opr 0 04)在递归下降子程序中增加语义动作:if(sym=dosym) cx1=cx;getsymdo;memcpy(nxtlev,fsys,sizeof(bool)*symnum); nxtlevwhilesym=true;statementdo(fsys,ptx,lev); if(sym=whilesym) getsymdo;conditiondo(nxtlev,ptx,lev);cx2=cx;gendo(jpc,0,0);gendo(jmp,0,cx1); codecx2.a=cx; else error(18);三.运行测试1.扩

7、充单词的测试(贴运行结果截图)ps:测试情况要全!图片大小合适!截图如下所示:Input pl/0 file ?11.pl0 List object code ?Y/N)y List symbol table ? Y/N)y 0 begin保留字TABLE: NULL2 step保留字XXXX f192 until保留字2 char保留字2 real保留字return保留字2 *=单字符 单字符2 end.单字符.int 0 3! opr 0 0in pl/0 progpan iess any key to continue2.语句的测试(贴运行结果截图) 截图如下所示:Input pl/0 file ?22

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业/管理/HR > 营销创新

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号