#include
#include
#include
int main()
;//存放非終結符號
char vt[30]=;//存放終結符號
printf("請輸入規則個數");
scanf("%d",&n);
line=n;
for(i=0;i<30;i++)//給字串陣列p,q全部賦值為'\0'
for(j=0;j<30;j++)
printf("請輸入文法:\n");
for(i=0;i='a'||(p[i][j]<='9'&&p[i][j]>='0'))
}if(flag==0)
}//終結符放在陣列vt中
if(p[i][j]<='z'&&p[i][j]>='a')
}if(flag==0)}}
}//把規則右部分分離,放入陣列q中
count=0;
k=0;
for(i=0;i='a')||(p[i][j]<='z'&&p[i][j]>='a')||(p[i][j]<='9'&&p[i][j]>='0'))
else
}count++;
k=0;
}//判斷是確定的還是非確定的有窮狀態自動機,並進行前半部分列印
//判斷依據:q陣列中每一行字串是否相同
flag=0;
for(i=0;i='a')||(p[i][j]<='z'&&p[i][j]>='a')||(p[i][j]<='9'&&p[i][j]>='0'))
if(p[i][j]=='l')}}
count++;
k=0;
}printf("\n");
//列印m後部分
printf("m:\n");
l=0;
while(vn[l]!='\0')
}printf("}\t");
l++;
}printf("\n");
l=0;k=0;
while(vt[k]!='\0')
}printf("}\t");
l++;
}k++;
printf("\n");
}system("pause");
}
正規文法和正規式
乙個正規語言可以由正規文法定義,也可以由正規式定義,對任意乙個正規文法,存在乙個定義同乙個正規語言的正規式 反之,對每個正規式,存在乙個生成同一語言的正規文法,有些正規語言很容易用文法定義,有些語言更容易用正規式定義,現在介紹兩者間的轉換,從結構上建立它們的等價性。1 將 上的乙個正規式轉換成正規文...
正規文法與正規式
3型文法也叫作正規文法,它對應於有限狀態自動機,它是在2型文法的基礎上滿足 a a ab 右線性 或a a ba 左線性 如果有a a,a ab,b a,b cb則符合3型文法的要求。但是a ab,a ab,b a,b cb或a a,a ba,b a,b cb則不符合3型文法的要求。也就是說,不能夠...
10 16 正規文法與正規式
1.分別寫出描述以下語言的正規文法和正規式 1 l1 2 l2 3 l3 答 1 正規文法 s aa a ba a 正規式 s a b a 2 正規文法 s as s bs b 正規式 s a a b b 3 正規文法 s ab s ab 正規式 s ab ab 2.將以下正規文法轉換到正規式 1 ...