欢迎来到天天文库
浏览记录
ID:59134948
大小:96.50 KB
页数:6页
时间:2020-09-12
《编译原理简单样本语言的词法分析器.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、昆明理工大学信息工程与自动化学院学生实验报告(2012—2013学年第1学期)课程名称:编译原理开课实验室:信自楼44年月日年级、专业、班学号姓名成绩实验项目名称简单样本语言的词法分析器指导教师李亚教师评语该同学是否了解实验原理:A.了解□B.基本了解□C.不了解□该同学的实验能力:A.强□B.中等□C.差□该同学的实验是否达到要求:A.达到□B.基本达到□C.未达到□实验报告是否规范:A.规范□B.基本规范□C.不规范□实验过程是否详细记录:A.详细□B.一般□C.没有□教师签名:年月日一、实验目的及内容设计
2、、编制、调试一个词法分析子程序-识别单词,加深对词法分析原理的理解。二、实验原理及基本技术路线图(方框原理图或程序流程图)对给定的程序通过词法分析器弄够识别一个个单词符号,并以二元式(单词种别码,单词符号的属性值)显示。而本程序则是通过对给定路径的文件的分析后以单词符号和文字提示显示。三、所用仪器、材料(设备名称、型号、规格等或使用软件)Windows下的visualc++6.0;四、实验方法、步骤(或:程序代码或操作过程)#include#includeusingnames
3、pacestd;#define MAX22 charch='';stringkey[15]={"begin","end","if","then","else","while","write","read","do","call","const","char","until","procedure","repeat"};intIskey(stringc){ //关键字判断 inti; for(i=0;i4、c)==0)return1; } return0;}intIsLetter(charc){ //判断是否为字母 if(((c<='z')&&(c>='a'))5、6、((c<='Z')&&(c>='A')))return1; elsereturn0;}intIsDigit(charc){ //判断是否为数字 if(c>='0'&&c<='9')return1; elsereturn0;}voidanalyse(FILE*fpin){ 7、 stringarr=""; while((ch=fgetc(fpin))!=EOF){ arr=""; if(ch==''8、9、ch=='t'10、11、ch==''){} elseif(IsLetter(ch)){ while(IsLetter(ch)12、13、IsDigit(ch)){ if((ch<='Z')&&14、(ch>='A'))ch=ch+32; arr=arr+ch; ch=fgetc(fpin); } fseek(fpin,-1L,SEEK_CUR); if(Iskey(arr)){cout<15、se cout<16、17、ch=='.'&&IsDigit(fgetc(fpin))){ arr=arr+ch; ch=fgetc(fpin); 18、 } fseek(fpin,-1L,SEEK_CUR); cout<
4、c)==0)return1; } return0;}intIsLetter(charc){ //判断是否为字母 if(((c<='z')&&(c>='a'))
5、
6、((c<='Z')&&(c>='A')))return1; elsereturn0;}intIsDigit(charc){ //判断是否为数字 if(c>='0'&&c<='9')return1; elsereturn0;}voidanalyse(FILE*fpin){
7、 stringarr=""; while((ch=fgetc(fpin))!=EOF){ arr=""; if(ch==''
8、
9、ch=='t'
10、
11、ch==''){} elseif(IsLetter(ch)){ while(IsLetter(ch)
12、
13、IsDigit(ch)){ if((ch<='Z')&&
14、(ch>='A'))ch=ch+32; arr=arr+ch; ch=fgetc(fpin); } fseek(fpin,-1L,SEEK_CUR); if(Iskey(arr)){cout<15、se cout<16、17、ch=='.'&&IsDigit(fgetc(fpin))){ arr=arr+ch; ch=fgetc(fpin); 18、 } fseek(fpin,-1L,SEEK_CUR); cout<
15、se cout<16、17、ch=='.'&&IsDigit(fgetc(fpin))){ arr=arr+ch; ch=fgetc(fpin); 18、 } fseek(fpin,-1L,SEEK_CUR); cout<
16、
17、ch=='.'&&IsDigit(fgetc(fpin))){ arr=arr+ch; ch=fgetc(fpin);
18、 } fseek(fpin,-1L,SEEK_CUR); cout<
此文档下载收益归作者所有