1 #include2 #include 3#define ok 1
4#define error 0
5#define maxregluarlong 40
6#define maxstatelong 40
7#define maxcahrslong 40
8 typedef int
state;
9int icurrentstate=0; //
初態以1開始
10int iprestate=0;11
int ilastforkstate=0;12
int iforkstate=0;13
int imaxstate=0;14
char cregluarsting[maxregluarlong]; //
輸入的正規式字串
15char ccharset[maxcahrslong]; //
字符集16
int istatematrix[maxstatelong][maxcahrslong]; //
狀態轉換矩陣
17 state vstoreregluarsting()//
把字串讀入乙個緩衝區中
1822
state vpreprocessregluarsting()
23//
對字串進行預處理,去掉字串裡面的對分析不產生影響
2435
}36 i++;37}
38return
ok;39}40
void vconstructstatematrix(char cchar,int istate)//
構造狀態轉換矩陣
4149
void vaanalyseregluarsting()//
對字串進行從左到右的分析與處理
5073
if(cregluarsting[i]=='|'
)7481if(icharnumbeforl==1&&cregluarsting[i+2]=='|'
)82 icurrentstate=iforkstate;
83 icharnumbeforl=0;84
}85if(cregluarsting[i]==')'
)8690}
91}92else
93101
}
102}
103}
104void
vprintfstateprojectfunction()
105113
void vprintfnfa()//
輸出nfa
114\n");
125 printf("
\n狀態集s為:
132 printf("
}\n\n");
133vprintfstateprojectfunction();
134 printf("
\n初態集s0為:\n\n");
135 printf("
終態集f為:
1203正規式轉換為有窮自動機
1 include2 include 3 define ok 1 4 define error 0 5 define maxregluarlong 40 6 define maxstatelong 40 7 define maxcahrslong 40 8 typedef int state 9 i...
正規式轉換為有窮自動機
1 include2 include 3 define ok 1 4 define error 0 5 define maxregluarlong 40 6 define maxstatelong 40 7 define maxcahrslong 40 8 typedef int state 9 i...
有窮自動機
problem description adfa 證明 adfa是可判定的。實驗方法 編寫乙個演算法 程式,對於任意給定的輸入,可以判定adfa。input 有多個測試序列,測試結束於測試檔案結束 每個測試序列的第一行為幾個正整數n m t a分別表示有n個狀態,從a開始m個小寫字母組成的字符集,第...