#include<stdio.h>
#include<string.h>
int i,j,k,sign,flag,number,run;
char ch;
char word[10];
char program[500];
int Scan(char program[])
{
char *keyword[8]={"iii""begin","if","then","while","do","end"};
number=0;
flag=0;
j=0;
ch=program[i++];
while(ch=='\n'||ch==' '||ch=='\t'||ch=='\r')
}
if(ch>='a'&&ch<='z')
while(ch>='a'&&ch<='z')
word[j++]=ch;
i--;
word[j++]='\0';
for(k=0;k<8;k++)
if(strcmp(word,keyword[k])==0)
flag=1;
sign=k+1;
else
sign=300;
} //是关键字,不是标识符//
break;
if(ch>'0'&&ch<'9') //是不是数字//
while(ch>'0'&&ch<'9')
number=number*10+(ch-'0');
sign=200;
else
switch(ch)
case '=':{
if(ch=='=')
word[j]='\0';
sign=25; //=//
case '<':{
if(ch=='<')
word[j]='\0';
sign=21;
sign=20;
case '>':{
if(ch=='>')
sign=24;
sign=23;
case '(':{
if(ch=='(')
sign=27;
case ')':{
if(ch==')')
sign=28;
case ':':{
if(ch==':')
sign=18;
sign=17;
case '#':{
if(ch=='#')
sign=0;
case ';':{
if(ch==';')
sign=26;
case '+':{
if(ch=='+')
sign=13;
case '-':{
if(ch=='-')
sign=14;
case '*':{
if(ch=='*')
sign=15;
case '/':{
if(ch=='/')
sign=16;
case '@':{
if(ch=='@')
return sign;
int main()
int i=0,run=1,sign=0,sum=1,ent;
while(run)
int j;
for(j=0;j<500;j++)
program[j]=' ';
for(j=0;j<10;j++)
word[j]=' ';
printf("请输入一段源代码");
do{
ch =getchar();
program[i++]=ch;
}while(ch!='@');
i=0;
sign=Scan(program);
if(sign==13)
printf("操作符 %8s %5d",word,sign);
sum++;
ent=1;
if(sign==14)
if(sign==15)
if(sign==16)
if(sign==17)
if(sign==18)
if(sign==20)
if(sign==21)
if(sign==22)
if(sign==24)
if(sign==25)
if(sign==26)
if(sign==27)
if(sign==28)
if(sign>=1&&sign<=8)
printf("关键字 %8s %5d",word,sign);
} while(sign!=0);
printf("是否继续?y or N");
getchar();
ch=getchar();
if(ch=='n'||ch=='N')
run=0;
return 0;