自动机
#include<stdio.h>
main()
{
p=0;
printf("\n 请输入源程序段");
do{
ch=getchar();
prog(p++)=ch;
}while(ch!='#');
p=0;
do{
scaner();
switch(syn)
{
case 11:printf("\n(%d,%d)",syn,sum); break;
case -1:printf("\n(%s,出错!),token); break;
default:printf("\n(%d,%s)",syn,token);
}
} while(syn!=0);
}system("pause");
scaner()
{
for(n=0;n<20;n++)
token[n]=NULL;
n=0;
sum=0;
ch=prog[p++];
while(ch=='')
{
ch=prog[p++];
}
if(ch>='a'&&ch<='z')
{
while(ch>='a'&&ch<='z'||ch>='0'&&ch<='9')
{
token[n++]=ch;
ch=prog[p++];
}
syn=10;
p--;
for(n=0;n<6;n++)
if(strcmp(token,rwtab[n])==0)
{
syn=n+1;
break;
}
}
}