2022年编译原理实验报告 .pdf
《2022年编译原理实验报告 .pdf》由会员分享,可在线阅读,更多相关《2022年编译原理实验报告 .pdf(17页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、. 教育资料武汉理工大学学 生 实 验 报 告 书实验课程名称编译原理开 课 学 院计算机科学与技术学院指导老师姓名饶文碧学 生 姓 名学生专业班级学生学号实验课成绩名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 17 页 - - - - - - - - - . 教育资料学年第学期实验课程名称:编译原理实验项目名称单词的词法分析实验成绩实验者专业班级组别同组者实验日期第一部分:实验分析与设计(可加页)一、实验内容描述(问题域描述)完成对某一种常用高级语言(如Pascal
2、、C语言、 PL/0语言)的各类单词进行词法分析,即对源程序从左到右进行扫描,对组成源程序的字符串拼接成为单词;并把其转换成属性字输出。实验要求:(1)选择常用高级程序设计语言(如 Pascal 、C语言、PL/0语言)的源程序作为词法分析对象。(2)根据教学要求和学生具体情况, 从上列语言之一中选取它的一个适当大小的子集,可以选取一类典型单词, 也可以尽可能使各种类型的单词都能兼顾到。其基本要求是:对源程序从左到右进行扫描,对组成源程序的字符串拼接成为单词,并把其转换成属性字输出。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - -
3、 名师精心整理 - - - - - - - 第 2 页,共 17 页 - - - - - - - - - . 教育资料二、实验基本原理与设计(包括实验方案设计,实验手段的确定,试验步骤等,用硬件逻辑或者算法描述)#include #include #include #include char *table7= ,main,int,if,then,else,return,TOKEN20,ch; /定义关键字int lookup(char *TOKEN) /关键字匹配函数 int m,i; for(i=1;i6;i+) if(m=strcmp(TOKEN,tablei)=0) return(i);
4、 return(0); void out(int c,char *TOKEN) /输出函数 printf(%d,%s)n,c,TOKEN); void scanner(FILE *fp) /扫描函数名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 17 页 - - - - - - - - - . 教育资料 char TOKEN20=0; char ch; int i,c; ch=fgetc(fp); /获取字符指针fp 并自动指向下一个字符 if(isalpha(ch) /
5、判断该字符是否是字母 TOKEN0=ch; ch=fgetc(fp); i=1; while(isalnum(ch) /判断该字符是否是字母或数字 TOKENi=ch; i+; ch=fgetc(fp); TOKENi=0; fseek(fp,-1,1); /回退一个字符 c=lookup(TOKEN); if(c=0) out(6,TOKEN); /输出标识符 else out(c,TOKEN); /输出关键字 else if(isdigit(ch) /判断是否是数字 TOKEN0=ch; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - -
6、- - - 名师精心整理 - - - - - - - 第 4 页,共 17 页 - - - - - - - - - . 教育资料 ch=fgetc(fp); i=1; while(isdigit(ch) TOKENi=ch; i+; ch=fgetc(fp); TOKENi=0; fseek(fp,-1,1); out(7,TOKEN); else TOKEN0=ch; switch(ch) case:out(17,TOKEN); break; case:out(18,TOKEN); break; case,:out(14,TOKEN); break; case;:out(15,TOKEN);
7、 break; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 17 页 - - - - - - - - - . 教育资料 case) out(11,TOKEN); else fseek(fp,-1,1); out(8,TOKEN); break; case=:out(10,TOKEN); break; case:ch=fgetc(fp); TOKEN1=ch; if(ch=) out(13,TOKEN); else fseek(fp,-1,1); out(12,TOKE
8、N); break; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 17 页 - - - - - - - - - . 教育资料 default:printf(error!n); break; void main() FILE *fp; if(fp=fopen(D:ZHT.txt,r)=NULL) /读取文件内容 , 并返回文件指针 , 该指针指向文件的第一个字符 fprintf(stderr,error opening.n); exit(1); do ch=fgetc(
9、fp); if(ch=#) /文件以 #结尾作为扫描结束条件 break; if(ch= ) /如果是空格,自动跳到下个字符 scanner(fp); else fseek(fp,-1,1); /如果不是空格,则回退一个字符并扫描 scanner(fp); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 17 页 - - - - - - - - - . 教育资料 while(ch!=#); return(0); 三、主要仪器设备及耗材VC6.0 第二部分:实验调试与结果分
10、析(可加页)一、调试过程(包括调试方法描述、实验数据记录,实验现象记录,实验过程发现的问题等)在扫描源程序字符串时一旦识别出关键字、 分隔符、标识符、无符号常数中之一即以单词形式各类单词均采用相同的结构, 即二元式编码形式输出。每次调用词法分析程序它均能自动继续扫描下去形成下一个单词, 直至整个源程序全部扫描完毕 , 并形成相应的单词串形式的源程序。二、实验结果及分析(包括结果描述、实验现象分析、影响因素讨论、综合分析和结论等)名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,
11、共 17 页 - - - - - - - - - . 教育资料三、实验小结、建议及体会1、通过本次实验对词法分析的过程有了进一步的了解,并把理论知识应用于试验。2、在编写程序过程中也遇到了很多困难,不过最终通过老师同学的帮助得到了解决。为以后编程积累了一些小知识。3、程序实现功能很有限,以后会继续改进。实验课程名称:编译原理实验项目名称赋值语句的翻译程序设计实验成绩名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 17 页 - - - - - - - - - . 教育资料实
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年编译原理实验报告 2022 编译 原理 实验 报告
限制150内