📄 有限自动(编译原理)源代码机.txt
字号:
#include <string.h>
#include <conio.h>
#define P 20
int isReal(char *str)
{
int I,finish=0;//存放运行时当前状态,现在为状态0
for(i=0;str[i]!=’#’&&str[i]!=’\0’;i++)
{
Switch(finish)
{
case 0:
{
if(i==0&&str[i]>=’0’&&str[i]<=’9’)//输入为数字
finish=1; //则转入输入数字后的状态
else
return(0);
bresk;
}
case 1:
{
if(str[i]>=’0’&&str[i]<=’9’)//输入为数字
finish=1;
else if(str[i]==’.’)输入为小数点
finish=2; //输入状态2
else
return(0); //否则进入初始状态
bresk;
}
case 2:
{
if(str[i]>=’0’&&str[i]<=’9’) //进入状态2以后如果输入仍为数字则进入状态3
finash=3;
else
return(0); //否则进入初始状态
}
case 3:
{
if(str[i]>=’0’&&str[i]<=’9’) //进入状态2以后如果输入仍为数字则进入状态3
finash=3;
else
return(0); //否则进入初始状态
}
}
}
if(finish= =1||finash= =3)//在状态1或者3的时候返回1,否则返回0
return(1);
else
return(0); //0为非法状态
}
main()
{
int i;
char str[P];
clrscr();
printf(“input:\n”);
while(1)
{
gets(str);
if(str[0]= =’#’)
break;
else if(str[0]!=’\0’)
{
if(isReal(str)= =1) // 返回为1则合法
printf(“legal\n”);
else
printf(“illegal\n”); //返回0则非法
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -