📄 22.cpp
字号:
#include <stdio.h>
#include <string.h>
void outprint(int a,char ch[20]);
main()
{
FILE *in;
char ch,infile[10],ah[20],bh[20];
int k,m;
for(int i=0;i<20;i++)
{
ah[i]='\0';
}
for(i=0;i<20;i++)
{
bh[i]='\0';
}
printf("请输入源文件名: \n");
scanf("%s",infile);
if((in=fopen(infile,"r"))==NULL)
{
printf("不能打开源文件!\n");
return 0;
}
printf("\n对%s源文件进行词法分析所得结果如下:\n\n",infile);
ch=fgetc(in);
while(ch!=EOF)
{
switch(ch)
{
case '\n':
case ' ':ch=fgetc(in);break;
case '(':outprint(28,"(");ch=fgetc(in);break;
case ')':outprint(29,")");ch=fgetc(in);break;
case ';':outprint(18,";");ch=fgetc(in);break;
case '+':outprint(13,"+");ch=fgetc(in);break;
case '-':outprint(14,"-");ch=fgetc(in);break;
case '*':outprint(15,"*");ch=fgetc(in);break;
case '/':outprint(16,"/");ch=fgetc(in);break;
case '=':outprint(25,"=");ch=fgetc(in);break;
case '#':outprint(0,"#");ch=fgetc(in);break;
case '<':ch=fgetc(in);if(ch=='>') {outprint(21,"<>");ch=fgetc(in);}
else if(ch=='=') {outprint(22,"<=");ch=fgetc(in);}
else outprint(20,"<");
break;
case '>':ch=fgetc(in);if(ch=='=') {outprint(24,">=");ch=fgetc(in);}
else outprint(23,">");
break;
case ':':ch=fgetc(in);if(ch=='=') {outprint(17,":=");ch=fgetc(in);}
else printf(": is Error!\n");
break;
default:if(ch>='0'&&ch<='9')
{
k=0;
do
{
ah[k++]=ch;
ch=fgetc(in);
}while(ch>='0'&&ch<='9');
outprint(11,ah);
for(int i=0;i<20;i++)
{
ah[i]='\0';
}
}
else
{
if(ch>='a'&&ch<='z'||ch>='A'&&ch<='Z')
{
m=0;
bh[m++]=ch;
ch=fgetc(in);
while(ch>='0'&&ch<='9'||ch>='a'&&ch<='z'||ch>='A'&&ch<='Z')
{
bh[m++]=ch;ch=fgetc(in);
}
strlwr(bh);
if(strcmp(bh,"begin")==0) outprint(1,"begin");
else if(strcmp(bh,"end")==0) outprint(6,"end");
else if(strcmp(bh,"if")==0) outprint(2,"if");
else if(strcmp(bh,"then")==0) outprint(3,"then");
else if(strcmp(bh,"do")==0) outprint(5,"do");
else if(strcmp(bh,"while")==0) outprint(4,"while");
else outprint(10,bh);
for(i=0;i<20;i++)
{
bh[i]='\0';
}
}
else {printf("%c is Error!\n",ch);ch=fgetc(in);}
}
}
}
fclose(in);
return 0;
}
void outprint(int a,char *ch)
{
printf("(%d,%s)\n",a,ch);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -