南邮编译原理报告实验一.docx
《南邮编译原理报告实验一.docx》由会员分享,可在线阅读,更多相关《南邮编译原理报告实验一.docx(10页珍藏版)》请在冰点文库上搜索。
南邮编译原理报告实验一
实验报告
(2015/2016学年第二学期)
课程名称
编译原理
实验名称
词法分析器的构造
实验时间
2016
年
4
月
14
日
指导单位
计算机软件教学中心
指导教师
黄海平
学生姓名
班级学号
学院(系)
计算机学院、软件学院
专业
计算机科学
与技术
实验类型
验证
实验学时
2016.4.14
一、实验目的和要求
实验目的:
设计、编制、调试一个词法分析程序,对单词进行识别和编码,加深对词法分析原理的理解。
实验要求:
1、允许用户自己输入源程序并保存为文件
2、系统能够输出经过预处理后的源程序(去掉注释、换行、空格等)
3、能够将该源程序中所有的单词根据其所属类型(整数、保留字、运算符、标识符等。
定义的类C语言中的标识符只能以字母或下划线开头)进行归类显示,例如:
识别保留字:
if、int、for、while、do、return、break、continue等,其他的都识别为标识符;常数为无符号整形数;运算符包括:
+、-、*、/、=、>、<、>=、<=、!
=等;分隔符包括:
、;、{、}、(、)等。
4、实现文件的读取操作,而不是将文本以字符串形式预存于程序中。
文本内容为待分析的类C语言程序。
二、实验环境(实验设备)
硬件:
计算机
软件:
VisualC++6.0
二、实验原理及内容
实验内容:
设计并实现一个词法分析器,实现对指定位置的类C语言源程序文本文件的读取,并能够对该源程序中的所有单词进行分类,指出其所属类型,实现简单的词法分析操作。
例如下面为一段C语言源程序:
main()
{
int a,b;
a=10;
b=a+20;
}
要求输出如下
(2,’main’)
(5,’(’)
(5,’)’)
(5,’{’)
(1,’int’)
(2,’a’)
(5,’,’)
(2,’b’)
(5,’;’)
(4,’=’)
(3,’10’)
(4,’+’)
(3,’20’)
(5,’}’)
实验代码:
#include
usingnamespacestd;
boolLETTER(charA)
if(A>='a'&&A<='z')
returntrue;
elseif(A>='A'&&A<='Z')
elsereturntrue;
boolDIGIT(charA)
if(A>='0'&&A<='9')
else
returnfalse;
boolREAERVE(char*a)
if(strcmp(a,"if")==0)
{cout<<"(1,'"<if(strcmp(a,"int")==0){cout<<"(1,'"<if(strcmp(a,"for")==0){cout<<"(1,'"<if(strcmp(a,"while")==0){cout<<"(1,'"<if(strcmp(a,"do")==0){cout<<"(1,'"<if(strcmp(a,"return")==0){cout<<"(1,'"<if(strcmp(a,"break")==0){cout<<"(1,'"<if(strcmp(a,"continue")==0){cout<<"(1,'"<if(strcmp(a,"main")==0){cout<<"(1,'"<returnfalse;}boolzimu(charA){if((A>='A'&&A<='Z')||A>='a'&&A<='z')returntrue;returnfalse;}intmain(){chara;FILE*f;charCHAR;charTOKEN[120];f=fopen("chenxu.txt","w");if(f==NULL){cout<<"con'tcreatefile"<exit(0);}cout<<"pleaseinputyoucode(totheendof#)"<while((a=getchar())!='#')fputc(a,f);fclose(f);cout<<"over"<f=fopen("chenxu.txt","r");while((CHAR=fgetc(f))!=EOF){while(CHAR!=''){if(zimu(CHAR)){intk=0;do{TOKEN[k]=CHAR;k++;}while((CHAR=fgetc(f))!=EOF&&CHAR!=''&&zimu(CHAR));if(DIGIT(CHAR)){do{TOKEN[k]=CHAR;k++;}while((CHAR=fgetc(f))!=EOF&&CHAR!=''&&DIGIT(CHAR));}TOKEN[k]='\0';if(!(REAERVE(TOKEN)))cout<<"(2,'"<}if(DIGIT(CHAR)){inti=0;do{TOKEN[i]=CHAR;i++;}while((CHAR=fgetc(f))!=EOF&&CHAR!=''&&DIGIT(CHAR));TOKEN[i]='\0';if(!REAERVE(TOKEN))cout<<"(3,'"<}if(CHAR=='+'||CHAR=='-'||CHAR=='*'||CHAR=='/'||CHAR=='>'||CHAR=='<'||CHAR=='='){cout<<"(4,'"<}if(CHAR==','||CHAR==';'||CHAR=='('||CHAR==')'||CHAR=='{'||CHAR=='}'){cout<<"(5,'"<}break;}}fclose(f);cout<<"按任意键退出"<cin>>CHAR;return0;}实验结果: 四、实验小结(包括问题和解决方法、心得体会、意见与建议等)在这次实验中,我进一步学习了如何运用输入输出流,对文件进行读写操作。了解了什么是词法分析,熟悉了词法分析器的构造,更加深入了对词法分析原理的理解。程序将字符分为五类:保留字、标识符、整数、运算符、分隔符,对使用者输入的程序代码进行识别、分析和编码,简单分析了词法。通过此次实验,我收获很大。五、指导教师评语 成绩批阅人日期
if(strcmp(a,"int")==0)
{cout<<"(1,'"<if(strcmp(a,"for")==0){cout<<"(1,'"<if(strcmp(a,"while")==0){cout<<"(1,'"<if(strcmp(a,"do")==0){cout<<"(1,'"<if(strcmp(a,"return")==0){cout<<"(1,'"<if(strcmp(a,"break")==0){cout<<"(1,'"<if(strcmp(a,"continue")==0){cout<<"(1,'"<if(strcmp(a,"main")==0){cout<<"(1,'"<returnfalse;}boolzimu(charA){if((A>='A'&&A<='Z')||A>='a'&&A<='z')returntrue;returnfalse;}intmain(){chara;FILE*f;charCHAR;charTOKEN[120];f=fopen("chenxu.txt","w");if(f==NULL){cout<<"con'tcreatefile"<exit(0);}cout<<"pleaseinputyoucode(totheendof#)"<while((a=getchar())!='#')fputc(a,f);fclose(f);cout<<"over"<f=fopen("chenxu.txt","r");while((CHAR=fgetc(f))!=EOF){while(CHAR!=''){if(zimu(CHAR)){intk=0;do{TOKEN[k]=CHAR;k++;}while((CHAR=fgetc(f))!=EOF&&CHAR!=''&&zimu(CHAR));if(DIGIT(CHAR)){do{TOKEN[k]=CHAR;k++;}while((CHAR=fgetc(f))!=EOF&&CHAR!=''&&DIGIT(CHAR));}TOKEN[k]='\0';if(!(REAERVE(TOKEN)))cout<<"(2,'"<}if(DIGIT(CHAR)){inti=0;do{TOKEN[i]=CHAR;i++;}while((CHAR=fgetc(f))!=EOF&&CHAR!=''&&DIGIT(CHAR));TOKEN[i]='\0';if(!REAERVE(TOKEN))cout<<"(3,'"<}if(CHAR=='+'||CHAR=='-'||CHAR=='*'||CHAR=='/'||CHAR=='>'||CHAR=='<'||CHAR=='='){cout<<"(4,'"<}if(CHAR==','||CHAR==';'||CHAR=='('||CHAR==')'||CHAR=='{'||CHAR=='}'){cout<<"(5,'"<}break;}}fclose(f);cout<<"按任意键退出"<cin>>CHAR;return0;}实验结果: 四、实验小结(包括问题和解决方法、心得体会、意见与建议等)在这次实验中,我进一步学习了如何运用输入输出流,对文件进行读写操作。了解了什么是词法分析,熟悉了词法分析器的构造,更加深入了对词法分析原理的理解。程序将字符分为五类:保留字、标识符、整数、运算符、分隔符,对使用者输入的程序代码进行识别、分析和编码,简单分析了词法。通过此次实验,我收获很大。五、指导教师评语 成绩批阅人日期
if(strcmp(a,"for")==0)
{cout<<"(1,'"<if(strcmp(a,"while")==0){cout<<"(1,'"<if(strcmp(a,"do")==0){cout<<"(1,'"<if(strcmp(a,"return")==0){cout<<"(1,'"<if(strcmp(a,"break")==0){cout<<"(1,'"<if(strcmp(a,"continue")==0){cout<<"(1,'"<if(strcmp(a,"main")==0){cout<<"(1,'"<returnfalse;}boolzimu(charA){if((A>='A'&&A<='Z')||A>='a'&&A<='z')returntrue;returnfalse;}intmain(){chara;FILE*f;charCHAR;charTOKEN[120];f=fopen("chenxu.txt","w");if(f==NULL){cout<<"con'tcreatefile"<exit(0);}cout<<"pleaseinputyoucode(totheendof#)"<while((a=getchar())!='#')fputc(a,f);fclose(f);cout<<"over"<f=fopen("chenxu.txt","r");while((CHAR=fgetc(f))!=EOF){while(CHAR!=''){if(zimu(CHAR)){intk=0;do{TOKEN[k]=CHAR;k++;}while((CHAR=fgetc(f))!=EOF&&CHAR!=''&&zimu(CHAR));if(DIGIT(CHAR)){do{TOKEN[k]=CHAR;k++;}while((CHAR=fgetc(f))!=EOF&&CHAR!=''&&DIGIT(CHAR));}TOKEN[k]='\0';if(!(REAERVE(TOKEN)))cout<<"(2,'"<}if(DIGIT(CHAR)){inti=0;do{TOKEN[i]=CHAR;i++;}while((CHAR=fgetc(f))!=EOF&&CHAR!=''&&DIGIT(CHAR));TOKEN[i]='\0';if(!REAERVE(TOKEN))cout<<"(3,'"<}if(CHAR=='+'||CHAR=='-'||CHAR=='*'||CHAR=='/'||CHAR=='>'||CHAR=='<'||CHAR=='='){cout<<"(4,'"<}if(CHAR==','||CHAR==';'||CHAR=='('||CHAR==')'||CHAR=='{'||CHAR=='}'){cout<<"(5,'"<}break;}}fclose(f);cout<<"按任意键退出"<cin>>CHAR;return0;}实验结果: 四、实验小结(包括问题和解决方法、心得体会、意见与建议等)在这次实验中,我进一步学习了如何运用输入输出流,对文件进行读写操作。了解了什么是词法分析,熟悉了词法分析器的构造,更加深入了对词法分析原理的理解。程序将字符分为五类:保留字、标识符、整数、运算符、分隔符,对使用者输入的程序代码进行识别、分析和编码,简单分析了词法。通过此次实验,我收获很大。五、指导教师评语 成绩批阅人日期
if(strcmp(a,"while")==0)
{cout<<"(1,'"<if(strcmp(a,"do")==0){cout<<"(1,'"<if(strcmp(a,"return")==0){cout<<"(1,'"<if(strcmp(a,"break")==0){cout<<"(1,'"<if(strcmp(a,"continue")==0){cout<<"(1,'"<if(strcmp(a,"main")==0){cout<<"(1,'"<returnfalse;}boolzimu(charA){if((A>='A'&&A<='Z')||A>='a'&&A<='z')returntrue;returnfalse;}intmain(){chara;FILE*f;charCHAR;charTOKEN[120];f=fopen("chenxu.txt","w");if(f==NULL){cout<<"con'tcreatefile"<exit(0);}cout<<"pleaseinputyoucode(totheendof#)"<while((a=getchar())!='#')fputc(a,f);fclose(f);cout<<"over"<f=fopen("chenxu.txt","r");while((CHAR=fgetc(f))!=EOF){while(CHAR!=''){if(zimu(CHAR)){intk=0;do{TOKEN[k]=CHAR;k++;}while((CHAR=fgetc(f))!=EOF&&CHAR!=''&&zimu(CHAR));if(DIGIT(CHAR)){do{TOKEN[k]=CHAR;k++;}while((CHAR=fgetc(f))!=EOF&&CHAR!=''&&DIGIT(CHAR));}TOKEN[k]='\0';if(!(REAERVE(TOKEN)))cout<<"(2,'"<}if(DIGIT(CHAR)){inti=0;do{TOKEN[i]=CHAR;i++;}while((CHAR=fgetc(f))!=EOF&&CHAR!=''&&DIGIT(CHAR));TOKEN[i]='\0';if(!REAERVE(TOKEN))cout<<"(3,'"<}if(CHAR=='+'||CHAR=='-'||CHAR=='*'||CHAR=='/'||CHAR=='>'||CHAR=='<'||CHAR=='='){cout<<"(4,'"<}if(CHAR==','||CHAR==';'||CHAR=='('||CHAR==')'||CHAR=='{'||CHAR=='}'){cout<<"(5,'"<}break;}}fclose(f);cout<<"按任意键退出"<cin>>CHAR;return0;}实验结果: 四、实验小结(包括问题和解决方法、心得体会、意见与建议等)在这次实验中,我进一步学习了如何运用输入输出流,对文件进行读写操作。了解了什么是词法分析,熟悉了词法分析器的构造,更加深入了对词法分析原理的理解。程序将字符分为五类:保留字、标识符、整数、运算符、分隔符,对使用者输入的程序代码进行识别、分析和编码,简单分析了词法。通过此次实验,我收获很大。五、指导教师评语 成绩批阅人日期
if(strcmp(a,"do")==0)
{cout<<"(1,'"<if(strcmp(a,"return")==0){cout<<"(1,'"<if(strcmp(a,"break")==0){cout<<"(1,'"<if(strcmp(a,"continue")==0){cout<<"(1,'"<if(strcmp(a,"main")==0){cout<<"(1,'"<returnfalse;}boolzimu(charA){if((A>='A'&&A<='Z')||A>='a'&&A<='z')returntrue;returnfalse;}intmain(){chara;FILE*f;charCHAR;charTOKEN[120];f=fopen("chenxu.txt","w");if(f==NULL){cout<<"con'tcreatefile"<exit(0);}cout<<"pleaseinputyoucode(totheendof#)"<while((a=getchar())!='#')fputc(a,f);fclose(f);cout<<"over"<f=fopen("chenxu.txt","r");while((CHAR=fgetc(f))!=EOF){while(CHAR!=''){if(zimu(CHAR)){intk=0;do{TOKEN[k]=CHAR;k++;}while((CHAR=fgetc(f))!=EOF&&CHAR!=''&&zimu(CHAR));if(DIGIT(CHAR)){do{TOKEN[k]=CHAR;k++;}while((CHAR=fgetc(f))!=EOF&&CHAR!=''&&DIGIT(CHAR));}TOKEN[k]='\0';if(!(REAERVE(TOKEN)))cout<<"(2,'"<}if(DIGIT(CHAR)){inti=0;do{TOKEN[i]=CHAR;i++;}while((CHAR=fgetc(f))!=EOF&&CHAR!=''&&DIGIT(CHAR));TOKEN[i]='\0';if(!REAERVE(TOKEN))cout<<"(3,'"<}if(CHAR=='+'||CHAR=='-'||CHAR=='*'||CHAR=='/'||CHAR=='>'||CHAR=='<'||CHAR=='='){cout<<"(4,'"<}if(CHAR==','||CHAR==';'||CHAR=='('||CHAR==')'||CHAR=='{'||CHAR=='}'){cout<<"(5,'"<}break;}}fclose(f);cout<<"按任意键退出"<cin>>CHAR;return0;}实验结果: 四、实验小结(包括问题和解决方法、心得体会、意见与建议等)在这次实验中,我进一步学习了如何运用输入输出流,对文件进行读写操作。了解了什么是词法分析,熟悉了词法分析器的构造,更加深入了对词法分析原理的理解。程序将字符分为五类:保留字、标识符、整数、运算符、分隔符,对使用者输入的程序代码进行识别、分析和编码,简单分析了词法。通过此次实验,我收获很大。五、指导教师评语 成绩批阅人日期
if(strcmp(a,"return")==0)
{cout<<"(1,'"<if(strcmp(a,"break")==0){cout<<"(1,'"<if(strcmp(a,"continue")==0){cout<<"(1,'"<if(strcmp(a,"main")==0){cout<<"(1,'"<returnfalse;}boolzimu(charA){if((A>='A'&&A<='Z')||A>='a'&&A<='z')returntrue;returnfalse;}intmain(){chara;FILE*f;charCHAR;charTOKEN[120];f=fopen("chenxu.txt","w");if(f==NULL){cout<<"con'tcreatefile"<exit(0);}cout<<"pleaseinputyoucode(totheendof#)"<while((a=getchar())!='#')fputc(a,f);fclose(f);cout<<"over"<f=fopen("chenxu.txt","r");while((CHAR=fgetc(f))!=EOF){while(CHAR!=''){if(zimu(CHAR)){intk=0;do{TOKEN[k]=CHAR;k++;}while((CHAR=fgetc(f))!=EOF&&CHAR!=''&&zimu(CHAR));if(DIGIT(CHAR)){do{TOKEN[k]=CHAR;k++;}while((CHAR=fgetc(f))!=EOF&&CHAR!=''&&DIGIT(CHAR));}TOKEN[k]='\0';if(!(REAERVE(TOKEN)))cout<<"(2,'"<}if(DIGIT(CHAR)){inti=0;do{TOKEN[i]=CHAR;i++;}while((CHAR=fgetc(f))!=EOF&&CHAR!=''&&DIGIT(CHAR));TOKEN[i]='\0';if(!REAERVE(TOKEN))cout<<"(3,'"<}if(CHAR=='+'||CHAR=='-'||CHAR=='*'||CHAR=='/'||CHAR=='>'||CHAR=='<'||CHAR=='='){cout<<"(4,'"<}if(CHAR==','||CHAR==';'||CHAR=='('||CHAR==')'||CHAR=='{'||CHAR=='}'){cout<<"(5,'"<}break;}}fclose(f);cout<<"按任意键退出"<cin>>CHAR;return0;}实验结果: 四、实验小结(包括问题和解决方法、心得体会、意见与建议等)在这次实验中,我进一步学习了如何运用输入输出流,对文件进行读写操作。了解了什么是词法分析,熟悉了词法分析器的构造,更加深入了对词法分析原理的理解。程序将字符分为五类:保留字、标识符、整数、运算符、分隔符,对使用者输入的程序代码进行识别、分析和编码,简单分析了词法。通过此次实验,我收获很大。五、指导教师评语 成绩批阅人日期
if(strcmp(a,"break")==0)
{cout<<"(1,'"<if(strcmp(a,"continue")==0){cout<<"(1,'"<if(strcmp(a,"main")==0){cout<<"(1,'"<returnfalse;}boolzimu(charA){if((A>='A'&&A<='Z')||A>='a'&&A<='z')returntrue;returnfalse;}intmain(){chara;FILE*f;charCHAR;charTOKEN[120];f=fopen("chenxu.txt","w");if(f==NULL){cout<<"con'tcreatefile"<exit(0);}cout<<"pleaseinputyoucode(totheendof#)"<while((a=getchar())!='#')fputc(a,f);fclose(f);cout<<"over"<f=fopen("chenxu.txt","r");while((CHAR=fgetc(f))!=EOF){while(CHAR!=''){if(zimu(CHAR)){intk=0;do{TOKEN[k]=CHAR;k++;}while((CHAR=fgetc(f))!=EOF&&CHAR!=''&&zimu(CHAR));if(DIGIT(CHAR)){do{TOKEN[k]=CHAR;k++;}while((CHAR=fgetc(f))!=EOF&&CHAR!=''&&DIGIT(CHAR));}TOKEN[k]='\0';if(!(REAERVE(TOKEN)))cout<<"(2,'"<}if(DIGIT(CHAR)){inti=0;do{TOKEN[i]=CHAR;i++;}while((CHAR=fgetc(f))!=EOF&&CHAR!=''&&DIGIT(CHAR));TOKEN[i]='\0';if(!REAERVE(TOKEN))cout<<"(3,'"<}if(CHAR=='+'||CHAR=='-'||CHAR=='*'||CHAR=='/'||CHAR=='>'||CHAR=='<'||CHAR=='='){cout<<"(4,'"<}if(CHAR==','||CHAR==';'||CHAR=='('||CHAR==')'||CHAR=='{'||CHAR=='}'){cout<<"(5,'"<}break;}}fclose(f);cout<<"按任意键退出"<cin>>CHAR;return0;}实验结果: 四、实验小结(包括问题和解决方法、心得体会、意见与建议等)在这次实验中,我进一步学习了如何运用输入输出流,对文件进行读写操作。了解了什么是词法分析,熟悉了词法分析器的构造,更加深入了对词法分析原理的理解。程序将字符分为五类:保留字、标识符、整数、运算符、分隔符,对使用者输入的程序代码进行识别、分析和编码,简单分析了词法。通过此次实验,我收获很大。五、指导教师评语 成绩批阅人日期
if(strcmp(a,"continue")==0)
{cout<<"(1,'"<if(strcmp(a,"main")==0){cout<<"(1,'"<returnfalse;}boolzimu(charA){if((A>='A'&&A<='Z')||A>='a'&&A<='z')returntrue;returnfalse;}intmain(){chara;FILE*f;charCHAR;charTOKEN[120];f=fopen("chenxu.txt","w");if(f==NULL){cout<<"con'tcreatefile"<exit(0);}cout<<"pleaseinputyoucode(totheendof#)"<while((a=getchar())!='#')fputc(a,f);fclose(f);cout<<"over"<f=fopen("chenxu.txt","r");while((CHAR=fgetc(f))!=EOF){while(CHAR!=''){if(zimu(CHAR)){intk=0;do{TOKEN[k]=CHAR;k++;}while((CHAR=fgetc(f))!=EOF&&CHAR!=''&&zimu(CHAR));if(DIGIT(CHAR)){do{TOKEN[k]=CHAR;k++;}while((CHAR=fgetc(f))!=EOF&&CHAR!=''&&DIGIT(CHAR));}TOKEN[k]='\0';if(!(REAERVE(TOKEN)))cout<<"(2,'"<}if(DIGIT(CHAR)){inti=0;do{TOKEN[i]=CHAR;i++;}while((CHAR=fgetc(f))!=EOF&&CHAR!=''&&DIGIT(CHAR));TOKEN[i]='\0';if(!REAERVE(TOKEN))cout<<"(3,'"<}if(CHAR=='+'||CHAR=='-'||CHAR=='*'||CHAR=='/'||CHAR=='>'||CHAR=='<'||CHAR=='='){cout<<"(4,'"<}if(CHAR==','||CHAR==';'||CHAR=='('||CHAR==')'||CHAR=='{'||CHAR=='}'){cout<<"(5,'"<}break;}}fclose(f);cout<<"按任意键退出"<cin>>CHAR;return0;}实验结果: 四、实验小结(包括问题和解决方法、心得体会、意见与建议等)在这次实验中,我进一步学习了如何运用输入输出流,对文件进行读写操作。了解了什么是词法分析,熟悉了词法分析器的构造,更加深入了对词法分析原理的理解。程序将字符分为五类:保留字、标识符、整数、运算符、分隔符,对使用者输入的程序代码进行识别、分析和编码,简单分析了词法。通过此次实验,我收获很大。五、指导教师评语 成绩批阅人日期
if(strcmp(a,"main")==0)
{cout<<"(1,'"<returnfalse;}boolzimu(charA){if((A>='A'&&A<='Z')||A>='a'&&A<='z')returntrue;returnfalse;}intmain(){chara;FILE*f;charCHAR;charTOKEN[120];f=fopen("chenxu.txt","w");if(f==NULL){cout<<"con'tcreatefile"<exit(0);}cout<<"pleaseinputyoucode(totheendof#)"<while((a=getchar())!='#')fputc(a,f);fclose(f);cout<<"over"<f=fopen("chenxu.txt","r");while((CHAR=fgetc(f))!=EOF){while(CHAR!=''){if(zimu(CHAR)){intk=0;do{TOKEN[k]=CHAR;k++;}while((CHAR=fgetc(f))!=EOF&&CHAR!=''&&zimu(CHAR));if(DIGIT(CHAR)){do{TOKEN[k]=CHAR;k++;}while((CHAR=fgetc(f))!=EOF&&CHAR!=''&&DIGIT(CHAR));}TOKEN[k]='\0';if(!(REAERVE(TOKEN)))cout<<"(2,'"<}if(DIGIT(CHAR)){inti=0;do{TOKEN[i]=CHAR;i++;}while((CHAR=fgetc(f))!=EOF&&CHAR!=''&&DIGIT(CHAR));TOKEN[i]='\0';if(!REAERVE(TOKEN))cout<<"(3,'"<}if(CHAR=='+'||CHAR=='-'||CHAR=='*'||CHAR=='/'||CHAR=='>'||CHAR=='<'||CHAR=='='){cout<<"(4,'"<}if(CHAR==','||CHAR==';'||CHAR=='('||CHAR==')'||CHAR=='{'||CHAR=='}'){cout<<"(5,'"<}break;}}fclose(f);cout<<"按任意键退出"<cin>>CHAR;return0;}实验结果: 四、实验小结(包括问题和解决方法、心得体会、意见与建议等)在这次实验中,我进一步学习了如何运用输入输出流,对文件进行读写操作。了解了什么是词法分析,熟悉了词法分析器的构造,更加深入了对词法分析原理的理解。程序将字符分为五类:保留字、标识符、整数、运算符、分隔符,对使用者输入的程序代码进行识别、分析和编码,简单分析了词法。通过此次实验,我收获很大。五、指导教师评语 成绩批阅人日期
boolzimu(charA)
if((A>='A'&&A<='Z')||A>='a'&&A<='z')
intmain()
chara;
FILE*f;
charCHAR;
charTOKEN[120];
f=fopen("chenxu.txt","w");
if(f==NULL)
cout<<"con'tcreatefile"<exit(0);}cout<<"pleaseinputyoucode(totheendof#)"<while((a=getchar())!='#')fputc(a,f);fclose(f);cout<<"over"<f=fopen("chenxu.txt","r");while((CHAR=fgetc(f))!=EOF){while(CHAR!=''){if(zimu(CHAR)){intk=0;do{TOKEN[k]=CHAR;k++;}while((CHAR=fgetc(f))!=EOF&&CHAR!=''&&zimu(CHAR));if(DIGIT(CHAR)){do{TOKEN[k]=CHAR;k++;}while((CHAR=fgetc(f))!=EOF&&CHAR!=''&&DIGIT(CHAR));}TOKEN[k]='\0';if(!(REAERVE(TOKEN)))cout<<"(2,'"<}if(DIGIT(CHAR)){inti=0;do{TOKEN[i]=CHAR;i++;}while((CHAR=fgetc(f))!=EOF&&CHAR!=''&&DIGIT(CHAR));TOKEN[i]='\0';if(!REAERVE(TOKEN))cout<<"(3,'"<}if(CHAR=='+'||CHAR=='-'||CHAR=='*'||CHAR=='/'||CHAR=='>'||CHAR=='<'||CHAR=='='){cout<<"(4,'"<}if(CHAR==','||CHAR==';'||CHAR=='('||CHAR==')'||CHAR=='{'||CHAR=='}'){cout<<"(5,'"<}break;}}fclose(f);cout<<"按任意键退出"<cin>>CHAR;return0;}实验结果: 四、实验小结(包括问题和解决方法、心得体会、意见与建议等)在这次实验中,我进一步学习了如何运用输入输出流,对文件进行读写操作。了解了什么是词法分析,熟悉了词法分析器的构造,更加深入了对词法分析原理的理解。程序将字符分为五类:保留字、标识符、整数、运算符、分隔符,对使用者输入的程序代码进行识别、分析和编码,简单分析了词法。通过此次实验,我收获很大。五、指导教师评语 成绩批阅人日期
exit(0);
cout<<"pleaseinputyoucode(totheendof#)"<while((a=getchar())!='#')fputc(a,f);fclose(f);cout<<"over"<f=fopen("chenxu.txt","r");while((CHAR=fgetc(f))!=EOF){while(CHAR!=''){if(zimu(CHAR)){intk=0;do{TOKEN[k]=CHAR;k++;}while((CHAR=fgetc(f))!=EOF&&CHAR!=''&&zimu(CHAR));if(DIGIT(CHAR)){do{TOKEN[k]=CHAR;k++;}while((CHAR=fgetc(f))!=EOF&&CHAR!=''&&DIGIT(CHAR));}TOKEN[k]='\0';if(!(REAERVE(TOKEN)))cout<<"(2,'"<}if(DIGIT(CHAR)){inti=0;do{TOKEN[i]=CHAR;i++;}while((CHAR=fgetc(f))!=EOF&&CHAR!=''&&DIGIT(CHAR));TOKEN[i]='\0';if(!REAERVE(TOKEN))cout<<"(3,'"<}if(CHAR=='+'||CHAR=='-'||CHAR=='*'||CHAR=='/'||CHAR=='>'||CHAR=='<'||CHAR=='='){cout<<"(4,'"<}if(CHAR==','||CHAR==';'||CHAR=='('||CHAR==')'||CHAR=='{'||CHAR=='}'){cout<<"(5,'"<}break;}}fclose(f);cout<<"按任意键退出"<cin>>CHAR;return0;}实验结果: 四、实验小结(包括问题和解决方法、心得体会、意见与建议等)在这次实验中,我进一步学习了如何运用输入输出流,对文件进行读写操作。了解了什么是词法分析,熟悉了词法分析器的构造,更加深入了对词法分析原理的理解。程序将字符分为五类:保留字、标识符、整数、运算符、分隔符,对使用者输入的程序代码进行识别、分析和编码,简单分析了词法。通过此次实验,我收获很大。五、指导教师评语 成绩批阅人日期
while((a=getchar())!
='#')
fputc(a,f);
fclose(f);
cout<<"over"<f=fopen("chenxu.txt","r");while((CHAR=fgetc(f))!=EOF){while(CHAR!=''){if(zimu(CHAR)){intk=0;do{TOKEN[k]=CHAR;k++;}while((CHAR=fgetc(f))!=EOF&&CHAR!=''&&zimu(CHAR));if(DIGIT(CHAR)){do{TOKEN[k]=CHAR;k++;}while((CHAR=fgetc(f))!=EOF&&CHAR!=''&&DIGIT(CHAR));}TOKEN[k]='\0';if(!(REAERVE(TOKEN)))cout<<"(2,'"<}if(DIGIT(CHAR)){inti=0;do{TOKEN[i]=CHAR;i++;}while((CHAR=fgetc(f))!=EOF&&CHAR!=''&&DIGIT(CHAR));TOKEN[i]='\0';if(!REAERVE(TOKEN))cout<<"(3,'"<}if(CHAR=='+'||CHAR=='-'||CHAR=='*'||CHAR=='/'||CHAR=='>'||CHAR=='<'||CHAR=='='){cout<<"(4,'"<}if(CHAR==','||CHAR==';'||CHAR=='('||CHAR==')'||CHAR=='{'||CHAR=='}'){cout<<"(5,'"<}break;}}fclose(f);cout<<"按任意键退出"<cin>>CHAR;return0;}实验结果: 四、实验小结(包括问题和解决方法、心得体会、意见与建议等)在这次实验中,我进一步学习了如何运用输入输出流,对文件进行读写操作。了解了什么是词法分析,熟悉了词法分析器的构造,更加深入了对词法分析原理的理解。程序将字符分为五类:保留字、标识符、整数、运算符、分隔符,对使用者输入的程序代码进行识别、分析和编码,简单分析了词法。通过此次实验,我收获很大。五、指导教师评语 成绩批阅人日期
f=fopen("chenxu.txt","r");
while((CHAR=fgetc(f))!
=EOF)
while(CHAR!
='')
if(zimu(CHAR))
intk=0;
do{
TOKEN[k]=CHAR;
k++;
}while((CHAR=fgetc(f))!
=EOF&&CHAR!
=''&&zimu(CHAR));
if(DIGIT(CHAR))
=''&&DIGIT(CHAR));
TOKEN[k]='\0';
if(!
(REAERVE(TOKEN)))
cout<<"(2,'"<}if(DIGIT(CHAR)){inti=0;do{TOKEN[i]=CHAR;i++;}while((CHAR=fgetc(f))!=EOF&&CHAR!=''&&DIGIT(CHAR));TOKEN[i]='\0';if(!REAERVE(TOKEN))cout<<"(3,'"<}if(CHAR=='+'||CHAR=='-'||CHAR=='*'||CHAR=='/'||CHAR=='>'||CHAR=='<'||CHAR=='='){cout<<"(4,'"<}if(CHAR==','||CHAR==';'||CHAR=='('||CHAR==')'||CHAR=='{'||CHAR=='}'){cout<<"(5,'"<}break;}}fclose(f);cout<<"按任意键退出"<cin>>CHAR;return0;}实验结果: 四、实验小结(包括问题和解决方法、心得体会、意见与建议等)在这次实验中,我进一步学习了如何运用输入输出流,对文件进行读写操作。了解了什么是词法分析,熟悉了词法分析器的构造,更加深入了对词法分析原理的理解。程序将字符分为五类:保留字、标识符、整数、运算符、分隔符,对使用者输入的程序代码进行识别、分析和编码,简单分析了词法。通过此次实验,我收获很大。五、指导教师评语 成绩批阅人日期
inti=0;
TOKEN[i]=CHAR;
i++;
TOKEN[i]='\0';
REAERVE(TOKEN))
cout<<"(3,'"<}if(CHAR=='+'||CHAR=='-'||CHAR=='*'||CHAR=='/'||CHAR=='>'||CHAR=='<'||CHAR=='='){cout<<"(4,'"<}if(CHAR==','||CHAR==';'||CHAR=='('||CHAR==')'||CHAR=='{'||CHAR=='}'){cout<<"(5,'"<}break;}}fclose(f);cout<<"按任意键退出"<cin>>CHAR;return0;}实验结果: 四、实验小结(包括问题和解决方法、心得体会、意见与建议等)在这次实验中,我进一步学习了如何运用输入输出流,对文件进行读写操作。了解了什么是词法分析,熟悉了词法分析器的构造,更加深入了对词法分析原理的理解。程序将字符分为五类:保留字、标识符、整数、运算符、分隔符,对使用者输入的程序代码进行识别、分析和编码,简单分析了词法。通过此次实验,我收获很大。五、指导教师评语 成绩批阅人日期
if(CHAR=='+'||CHAR=='-'||CHAR=='*'||CHAR=='/'||CHAR=='>'||CHAR=='<'||CHAR=='=')
cout<<"(4,'"<}if(CHAR==','||CHAR==';'||CHAR=='('||CHAR==')'||CHAR=='{'||CHAR=='}'){cout<<"(5,'"<}break;}}fclose(f);cout<<"按任意键退出"<cin>>CHAR;return0;}实验结果: 四、实验小结(包括问题和解决方法、心得体会、意见与建议等)在这次实验中,我进一步学习了如何运用输入输出流,对文件进行读写操作。了解了什么是词法分析,熟悉了词法分析器的构造,更加深入了对词法分析原理的理解。程序将字符分为五类:保留字、标识符、整数、运算符、分隔符,对使用者输入的程序代码进行识别、分析和编码,简单分析了词法。通过此次实验,我收获很大。五、指导教师评语 成绩批阅人日期
if(CHAR==','||CHAR==';'||CHAR=='('||CHAR==')'||CHAR=='{'||CHAR=='}')
cout<<"(5,'"<}break;}}fclose(f);cout<<"按任意键退出"<cin>>CHAR;return0;}实验结果: 四、实验小结(包括问题和解决方法、心得体会、意见与建议等)在这次实验中,我进一步学习了如何运用输入输出流,对文件进行读写操作。了解了什么是词法分析,熟悉了词法分析器的构造,更加深入了对词法分析原理的理解。程序将字符分为五类:保留字、标识符、整数、运算符、分隔符,对使用者输入的程序代码进行识别、分析和编码,简单分析了词法。通过此次实验,我收获很大。五、指导教师评语 成绩批阅人日期
break;
cout<<"按任意键退出"<cin>>CHAR;return0;}实验结果: 四、实验小结(包括问题和解决方法、心得体会、意见与建议等)在这次实验中,我进一步学习了如何运用输入输出流,对文件进行读写操作。了解了什么是词法分析,熟悉了词法分析器的构造,更加深入了对词法分析原理的理解。程序将字符分为五类:保留字、标识符、整数、运算符、分隔符,对使用者输入的程序代码进行识别、分析和编码,简单分析了词法。通过此次实验,我收获很大。五、指导教师评语 成绩批阅人日期
cin>>CHAR;
return0;
实验结果:
四、实验小结(包括问题和解决方法、心得体会、意见与建议等)
在这次实验中,我进一步学习了如何运用输入输出流,对文件进行读写操作。
了解了什么是词法分析,熟悉了词法分析器的构造,更加深入了对词法分析原理的理解。
程序将字符分为五类:
保留字、标识符、整数、运算符、分隔符,对使用者输入的程序代码进行识别、分析和编码,简单分析了词法。
通过此次实验,我收获很大。
五、指导教师评语
成绩
批阅人
日期
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2