编译原理实验五.doc

编译原理实验五.doc

ID:59409049

大小:36.50 KB

页数:4页

时间:2020-05-26

编译原理实验五.doc_第1页
编译原理实验五.doc_第2页
编译原理实验五.doc_第3页
编译原理实验五.doc_第4页
资源描述:

《编译原理实验五.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、电子信息学院实验报告书课程名:《编译原理》题目:实验五词法分析(一)实验类别【设计】班级:学号:姓名:评语:实验态度:认真()一般()差()实验结果:正确()部分正确()错()实验理论:掌握()熟悉()了解()不懂()操作技能:强()一般()差()实验报告:好()一般()差()成绩:指导教师:批阅时间:年月日1、实验内容或题目掌握并实现识别程序中关键字的方法,并编程实现。为词法分析打基础。2、实验目的与要求任意输入一段C语言程序,字符串中的每个单词用空格分隔,要求识别出程序中的关键字。3、实验步骤与源程序⑴实验步骤1.定义关键字表。可以考虑用字符数组定义。2.定

2、义一个输出关键字的缓冲区。用字符数组实现即可。长度可暂定为40。3.打开代码文件。4.从文件中读入单词5.判断单词是否是关键字⑵源代码#include#include#include//下面定义保留,为简化程序,使用字符指针数组保存所有保留字。//如果想增加保留字,可继续添加,并修改保留字数目#definekeywordSum3//可根据需要添加保留字列表char*keyword[keywordSum]={"begin","main","void"};charPL0Scanin[300];//用于接收输入输

3、出文件名FILE*fin;//用于指向输入输出文件的指针intmain()//词法分析函数{charch,id[40];//ch为每次读入的字符,id用于保存识别出的单词intes=0,j,n;//es错误代码,0表示没有错误。j,n为临时变量,控制组合单词时的下标等printf("请输入源程序文件名(包括路径):");scanf("%s",PL0Scanin);if((fin=fopen(PL0Scanin,"r"))==NULL)//判断输入文件名是否正确{printf("打开词法分析输入文件出错!");return(1);//输入文件出错返回错误代

4、码1}ch=getc(fin);while(ch!=''){//未读到文件结束while(ch==''

5、

6、ch==''

7、

8、ch=='t')ch=getc(fin);if(ch==EOF)break;if((ch>='a'&&ch<='z')

9、

10、(ch>='A'&&ch<='Z'))//如果ch是字母,则进行标识符处理{id[0]=ch;j=1;//从文件中读入下一个字符ch=getc(fin);while(isalnum(ch))//如果是字母数字则组合标识符;如果不是则标识符组合结束{//将读入的字符存放在id数组中,同时将数组下标增加1,准备容纳下

11、一个字符。id[j++]=ch;ch=getc(fin);//读下一个字符}id[j]='';//标识符组合结束//查保留字n=0;//z在保留子表中查找保留字while((n=keywordSum)//不是保留字,输出标识符printf("%st%dt%s",id,0,"IDENT");//输出标识符符号else//是保留字,输出保留字printf("%st%dt%s",strlwr(id),0,strlwr(id));//输出保留字符

12、号}}fclose(fin);//关闭输入输出文件//fclose(fout);return(es);//返回主程序}2、测试数据与实验结果(可以抓图粘贴)3、结果分析与实验体会

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。