📄 实验一.txt
字号:
#include<iostream.h>
#include<fstream.h>
#include<string.h>
#include<stdio.h>
int a=0,b=0,c=0,d=0,e=0,f=0,g=0,h=0,i,j=0,m=0,l=0,p=0;
char line[200];
char *BSF[100],*NUM[100],*BLZ2[100],*YSF[100],*JF[100];
char *BLZ1[13]={"begin","call","const","do","end","if","odd",
"procedure","read","then","var","while","write"};
void findkey(char *word)
{
int find=0;
for(int n=0;n<13;n++)
{
if((strcmp(word,BLZ1[n]))==0)
{
BLZ2[c]=word;
c++;
find++;
break;
}
22 }
if(find==0)
{
BSF[a]=word;
a++;
}
}
void print()
{
cout<<"------------------"<<endl
<<"After analsying:"<<endl
<<"------------------"<<endl;
cout<<"标识符:"<<endl;
for(int k=0;k<a;k++)
cout<<"BSF["<<k<<"]= "<<BSF[k]<<endl;
cout<<"\n数字:"<<endl;
for(int k=0;k<b;k++)
cout<<"NUM["<<k<<"]= "<<NUM[k]<<endl;
cout<<"\n保留字:"<<endl;
for(int k=0;k<c;k++)
cout<<"BLZ["<<k<<"]= "<<BLZ2[k]<<endl;
cout<<"\n运算符:"<<endl;
for(int k=0;k<d;k++)
cout<<"YSF["<<k<<"]= "<<YSF[k]<<endl;
cout<<"\n界符:"<<endl;
for(int k=0;k<e;k++)
cout<<"JF["<<k<<"]= "<<JF[k]<<endl;
}
char getch()
{
char ch0;
if(m<=l)
{
ch0=line[m];
m++;
return ch0;
}
else
{
print();
exit(0);
}
}
void getsym()
{
char *number;
char *ch;
char num[200],cha[200],ys[200],bj[200];
if(j==0)
{
*ch=getch();
j++;
}
while(*ch==' '|| *ch=='\n'|| *ch=='\t')
*ch=getch();
if(*ch>='0' && *ch<='9')
{
i=f;
while(*ch>='0' && *ch<='9')
{
num[f]=*ch;
f++;
*ch=getch();
}
num[f]='\0';
f++;
number=&num[i];
NUM[b]=number;
b++;
}
else
if(*ch>='a' && *ch<='z')
{
i=g;
while((*ch>='a' && *ch<='z')||(*ch>='0' && *ch<='9'))
{
cha[g]=*ch;
g++;
*ch=getch();
}
cha[g]='\0';
g++;
findkey(&cha[i]);
}
else
if(*ch=='='||*ch=='+'||*ch=='-'||*ch=='*'||*ch=='/'||*ch=='#')
{
i=h;
ys[h]=*ch;
h++;
ys[h]='\0';
h++;
YSF[d]=&ys[i];
d++;
*ch=getch();
}
else
if(*ch=='>'||*ch=='<'||*ch==':')
{
i=h;
ys[h]=*ch;
h++;
*ch=getch();
if(*ch=='=')
{
ys[h]=*ch;
h++;
ys[h]='\0';
}
else
ys[h]='\0';
h++;
YSF[d]=&ys[i];
d++;
*ch=getch();
}
else
if(*ch=='('||*ch==')'||*ch==','||*ch=='.'||*ch==';')
{
i=p;
bj[p]=*ch;
p++;
bj[p]='\0';
p++;
JF[e]=&bj[i];
e++;
*ch=getch();
}
}
int main()
{
ifstream fin("test.txt");
char letter;
while(!fin.eof())
{
letter=fin.get();
line[l]=letter;
if(letter=='.')
break;
l++;
}
cout<<"-----------------------"<<endl
<<"The source programme:"<<endl
<<"-----------------------"<<endl
<<line<<endl;
while(1)
{
getsym();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -