📄 liming.cpp
字号:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct keeper{char *a;
int b;}D1[14],D2[14]={{"dim",1},{"if",2},{"do",3},{"stop",4},{"end",5},{"i",6},{"1",7},
{"=",8},{"+",9},{"*",10},{"**",11},{",",12},{"(",13},{")",14}};
void read(FILE ** p)
{ int i;
if((*p=fopen("data.c","w"))==NULL)
{ printf("Can't open %s\n","data.c");
exit(-1);
}
for(i=0;i<14;i++)
fprintf(*p,"%s %d",D2[i].a,D2[i].b);
fclose(*p);
}
void write(FILE * p)
{ int i;
for(i=0;i<=14;i++)
fscanf(p,"%s%d",D1[i].a,D1[i].b);
}
int compare(char *a)
{ int i;
for(i=0;i<14||strcmp(a,D1[i].a);i++);
if(i==14)
return 0;
else
return D1[i].b;
}
int if_num(char *a)
{ int i;
for(i=0;a[i]!='\0';i++)
if(a[i]<'0'||a[i]>'9')
break;
if(a[i]=='\0')
return 6;
else
return 0;
}
int if_word(char *a)
{ if('a'<=a[0]&&a[0]<='z'||'A'<=a[0]&&a[0]<='Z')
return 5;
else
return 0;
}
void scanner(FILE *p)
{ char c;
int flag=0,i=0,j;
char memo[20]="";
c=fgetc(p);
while(!feof(p))
{ if(c!=' '&&c!='+'&&c!='*'&&c!='='&&c!=','&&c!='('&&c!=')')
{ memo[i]=c;
i++;
flag=1;
c=fgetc(p);
}
else
{ if(flag==1)
{ j=compare(memo);
if(j==0)
j=if_num(memo);
if(j==0)
j=if_word(memo);
for(i=0;memo[i]!='\0';i++)
{ putchar(memo[i]);
memo[i]='\0';
}
if(j==0)
printf("\tError.\n");
else
printf("\t%d\n",j);
} flag=0;
switch(c)
{ case' ': break;
case'+': printf("+\t%d\n",compare("+"));break;
case'=': printf("=\t%d\n",compare("="));break;
case'(': printf("(\t%d\n",compare("("));break;
case')': printf(")\t%d\n",compare(")"));break;
case',': printf(",\t%d\n",compare(","));break;
case'*': if(fgetc(p)=='*')
printf("**\t%d\n",compare("**"));
else
{ printf("*\t%d\n",compare("*"));
memo[0]=c;
i=1;
flag=1;
}
break;
}
c=fgetc(p);
}
}
}
void main()
{ FILE *p;
FILE *p1;
read(&p);
write(p);
if((p1=fopen("aa.txt","r"))==NULL)
printf("Can't open the file program.");
else
scanner(p1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -