}
else{
word[0]=ch;
if(word[0]=='+'||word[0]=='-'||word[0]=='>'||word[0]=='<'||
word[0]=='&'||word[0]=='|'){
if(s[j+1]==word[0]||s[j+1]=='='){
word[1]=s[++j];
cout<<"(4,'"<}
else
cout<<"(4,'"<}
elseif(word[0]=='='||word[0]=='*'||word[0]=='/'||
word[0]=='!
'||word[0]=='%'||word[0]=='^'){
if(s[j+1]=='='){
word[1]=s[++j];
cout<<"(4,'"<}
else
cout<<"(4,'"<}
elseif(word[0]=='\\'){
if(s[j+1]=='n'||s[j+1]=='t'||
s[j+1]=='\\'||s[j+1]=='0'){
word[1]=s[++j];
cout<<"(4,'"<}
else
cout<<"(4,'"<}
else
cout<<"(无法识别字符,'"<}
}
cout<<"\n";
}
intmain(){
inti;
charb=32,ch;
FILE*fp;
do{
i=0;
chars[10000];
chara[10000]={'\0'};
fp=fopen("","rb+");
if(fp==NULL){
cout<<"Cannotcreatefile"<exit(0);
}
fseek(fp,0,2);
cout<<"Pleaseinputyoucode(endwithtwo'
'):
"<do{
ch=getchar();
s[i++]=ch;
if(ch=='\n'||ch=='\t')
for(intj=0;j<4;j++)
fputc(b,fp);
fputc(ch,fp);
}while(s[i-1]!
=''||s[i-2]!
='');
s[i]='\0';
Scanner(s,a);
cout<<"词法分析如下:
"<Handle(a);
fclose(fp);
}while(true);
return0;
}
4、实验测试和截图
(1)、测试一截图
输入代码:
输出结果:
(2)测试二截图
输入代码:
输出结果:
四、实验小结(包括问题和解决方法、心得体会、意见与建议等)
在本实验中,我进一步学习了如何运用输入输出流,对文件进行读写操作。
了解了什么是词法分析,熟悉了词法分析器的构造,更加深入了对词法分析原理的理解。
程序将字符分为五类:
保留字、标识符、整数、运算符、分隔符,对使用者输入的程序代码进行识别、分析和编码,简单分析了词法。
实验过程中开始时由于对换行符(\n)、制表符(\t)、和注释等处理不好导致实验失败,后来预处理时讲它们全部换成空格符和把注释去掉才成功。
五、指导教师评语
成绩
批阅人
日期