資源簡(jiǎn)介
(1)Lex輸入文件的解析:
·主函數(shù)main()實(shí)現(xiàn)對(duì)Lex輸入文件結(jié)構(gòu)的解析
·int checkType(char c)函數(shù)判斷是定義段開(kāi)始?定義段結(jié)束?規(guī)則段?
(2)正規(guī)表達(dá)式的解析:
·void replaceID(string &re)函數(shù)將用戶標(biāo)示id轉(zhuǎn)換成re
·通過(guò)對(duì)正規(guī)表達(dá)式的解析的解析可以將規(guī)則段的模式部分全部轉(zhuǎn)換成正規(guī)表達(dá)式
(3)一個(gè)正規(guī)表達(dá)式到NFA的轉(zhuǎn)換算法的實(shí)現(xiàn)
·void generateNFA(const string & re,vector<list > &tnfa,vector &isTer,int index)函數(shù)完成正規(guī)表達(dá)式到NFA的轉(zhuǎn)換
其中:re:正規(guī)表達(dá)式
tnfa:數(shù)據(jù)結(jié)構(gòu)是vector<list>,即NFA的每個(gè)結(jié)點(diǎn)是list
(關(guān)于NFA的數(shù)據(jù)結(jié)構(gòu)的描述見(jiàn)后面)
isTer:統(tǒng)計(jì)tnfa中接受狀態(tài)結(jié)點(diǎn)(isTer[i]!=0表示結(jié)點(diǎn)i為接受態(tài))
(3)多個(gè)NFA的合并
·void joinNFA(vector<list > &nfa1,const vector<list > &nfa2)
函數(shù)完成了NFA nfa1和nfa2的合并,從總體來(lái)看起到所有NFA的合并
·合并NFA的基本原理:將nfa2的開(kāi)始的點(diǎn)中的內(nèi)容全部拷貝給nfa1的開(kāi)始結(jié)點(diǎn)然后,再把nfa2中除了開(kāi)始點(diǎn)以外的點(diǎn)連接到nfa1的末尾即可,注意結(jié)點(diǎn)編號(hào)的變化
(4)NFA的確定化算法的實(shí)現(xiàn)
·void TODFA()函數(shù)完成NFA到DFA的轉(zhuǎn)換
·在進(jìn)行NFA確定化算法的同時(shí),自動(dòng)機(jī)的接受態(tài)集合也做相應(yīng)的變換
vector nfaIsTer vector dfaIsTer

代碼片段和文件信息
#include
#include?
#include//文件流
#include
#include//棧
#include//容器
#include//鏈表
#include
#include
#include
?屬性????????????大小?????日期????時(shí)間???名稱(chēng)
-----------?---------??----------?-----??----
?????目錄???????????0??2008-11-20?10:30??SeuLex欏圭洰\
?????目錄???????????0??2008-11-20?10:30??SeuLex欏圭洰\debug\
?????目錄???????????0??2008-11-20?10:30??SeuLex欏圭洰\SeuLex欏圭洰\
?????目錄???????????0??2008-11-20?10:30??SeuLex欏圭洰\SeuLex欏圭洰\Debug\
?????文件??????198656??2002-12-31?21:02??SeuLex欏圭洰\緙栬瘧鍘熺悊璇劇▼璁捐鎶ュ憡錛圫euLex錛?doc
?????文件???????24064??2002-12-31?21:07??SeuLex欏圭洰\SeuLex欏圭洰.suo
?????文件?????????901??2002-12-31?16:22??SeuLex欏圭洰\SeuLex欏圭洰.sln
?????文件?????2608128??2002-12-31?21:07??SeuLex欏圭洰\SeuLex欏圭洰.ncb
?????文件?????2173952??2002-12-31?21:05??SeuLex欏圭洰\debug\SeuLex欏圭洰.pdb
?????文件??????998092??2002-12-31?21:05??SeuLex欏圭洰\debug\SeuLex欏圭洰.ilk
?????文件??????385024??2002-12-31?21:05??SeuLex欏圭洰\debug\SeuLex欏圭洰.exe
?????文件???????68608??2002-12-31?16:25??SeuLex欏圭洰\SeuLex欏圭洰\~WRL2183.tmp
?????文件???????68096??2003-01-01?06:54??SeuLex欏圭洰\SeuLex欏圭洰\~WRL1189.tmp
?????文件?????????162??2002-12-31?16:19??SeuLex欏圭洰\SeuLex欏圭洰\~$鍘熺悊璇劇▼璁捐鎶ュ憡錛圫euLex錛?doc
?????文件?????????702??2003-01-01?05:25??SeuLex欏圭洰\SeuLex欏圭洰\yytab.h
?????文件???????59224??2002-12-31?21:05??SeuLex欏圭洰\SeuLex欏圭洰\yylex.cpp
?????文件????????1427??2002-12-31?21:07??SeuLex欏圭洰\SeuLex欏圭洰\SeuLex欏圭洰.vcproj.0F9C05CB33D74C5.d4234ggdh.user
?????文件????????3976??2002-12-31?16:24??SeuLex欏圭洰\SeuLex欏圭洰\SeuLex欏圭洰.vcproj
?????文件???????23378??2002-12-31?20:58??SeuLex欏圭洰\SeuLex欏圭洰\seulex.cpp
?????文件????????8199??2002-12-31?21:05??SeuLex欏圭洰\SeuLex欏圭洰\Re_Act_NFA.txt
?????文件?????????568??2002-12-31?21:03??SeuLex欏圭洰\SeuLex欏圭洰\ReadMe.txt
?????文件????????7300??2002-12-31?21:05??SeuLex欏圭洰\SeuLex欏圭洰\NFA.txt
?????文件????????1816??2003-01-01?05:31??SeuLex欏圭洰\SeuLex欏圭洰\lex.l
?????文件???????12912??2002-12-31?21:05??SeuLex欏圭洰\SeuLex欏圭洰\DFA.txt
?????文件??????446464??2002-12-31?21:05??SeuLex欏圭洰\SeuLex欏圭洰\Debug\vc80.pdb
?????文件??????232448??2002-12-31?21:05??SeuLex欏圭洰\SeuLex欏圭洰\Debug\vc80.idb
?????文件?????????385??2002-12-31?21:05??SeuLex欏圭洰\SeuLex欏圭洰\Debug\SeuLex欏圭洰.exe.intermediate.manifest
?????文件?????????468??2002-12-31?21:05??SeuLex欏圭洰\SeuLex欏圭洰\Debug\SeuLex欏圭洰.exe.em
?????文件?????????403??2002-12-31?21:05??SeuLex欏圭洰\SeuLex欏圭洰\Debug\SeuLex欏圭洰.exe.em
?????文件?????2088203??2002-12-31?21:05??SeuLex欏圭洰\SeuLex欏圭洰\Debug\seulex.obj
?????文件??????????64??2002-12-31?21:05??SeuLex欏圭洰\SeuLex欏圭洰\Debug\mt.dep
............此處省略1個(gè)文件信息
評(píng)論
共有 條評(píng)論