编译原理实验一 模拟DFA
程序员文章站
2022-05-12 16:29:33
...
本实验模拟DFA识别含相继3个1的二进制串
DFA状态转换图如下:
核心代码如下,其中状态转换图中的ABCD状态对应代码中各个函数。
int A(char str[],int Num)//开始状态
{
if(str[Num]=='0')
{
if(A(str,Num+1)==1)
return 1;
else
return 0;
}
else if(str[Num]=='1')
{
if(B(str,Num+1)==1)
return 1;
else
return 0;
}
else
return 0;
}
int B(char str[],int Num)//识别了一个1
{
if(str[Num]=='0')
{
if(A(str,Num+1)==1)
return 1;
else
return 0;
}
else if(str[Num]=='1')
{
if(C(str,Num+1)==1)
return 1;
else
return 0;
}
else
return 0;
}
int C(char str[],int Num)//识别第二个1
{
if(str[Num]=='0')
{
if(A(str,Num+1)==1)
return 1;
else
return 0;
}
else if(str[Num]=='1')
{
if(D(str,Num+1)==1)
return 1;
else
return 0;
}
else
return 0;
}
int D(char str[],int Num)//识别第三个1
{
if(Num<strLength)
{
if(str[Num]=='0'||str[Num]=='1')
{
if(D(str,Num+1)==1)
return 1;
else
return 0;
}
}
else if(Num==strLength)
return 1;
else
return 0;
}
代码运行结果如下:
多次输入字符串,判断是否符合题目要求
上一篇: ———初学链表———