91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 1.93MB
    文件類(lèi)型: .zip
    金幣: 2
    下載: 0 次
    發(fā)布日期: 2023-09-27
  • 語(yǔ)言: 其他
  • 標(biāo)簽: 編譯原理??

資源簡(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
using?namespace?std;

#define?DEFINE_HEAD?27//定義段開(kāi)始標(biāo)識(shí)“%{”
#define?DEFINE_END?28//定義段結(jié)束標(biāo)識(shí)“%}”
#define?RULE_ID?30//規(guī)則段標(biāo)識(shí)“%%”

#define?ERROR?-11
#define?EPSLONG?-1

//描述NFA:
//當(dāng)前結(jié)點(diǎn)接受值edgeValue轉(zhuǎn)向編號(hào)為vertice的結(jié)點(diǎn)
struct?Node

{
unsigned?int?edgeValue;//邊上值:NFA可以接受的值edgeValue
unsigned?int?vertice;//當(dāng)前NFA結(jié)點(diǎn)所指向的下一個(gè)結(jié)點(diǎn)的編號(hào)
};

//常量申明
ifstream?readfile;

ofstream?writefile;
ofstream?writeReActNFA;
ofstream?writeNFA;
ofstream?writeDFA;

int?lineno=0;//lex文件當(dāng)前行數(shù)信息

vector?>?nfa;
vector?>?dfa;
map?id2reTable;//存儲(chǔ)定義段中標(biāo)識(shí)名到正則式的映射
map?nfaTer2Action;//存儲(chǔ)NFA終態(tài)到action表頭對(duì)應(yīng)內(nèi)容。
map?dfaTer2Action;//存儲(chǔ)DFA終態(tài)到action表頭對(duì)應(yīng)內(nèi)容,其中內(nèi)容在TODFA()時(shí)填充
vector?actionTable;//存儲(chǔ)action內(nèi)對(duì)應(yīng)內(nèi)容
//終結(jié)態(tài)(接受態(tài))的集合
vector?nfaIsTer;
vector?dfaIsTer;

mapint?>?dfanodetable;

//函數(shù)原型
int?checkType(char?c);//lex文件結(jié)構(gòu)的解析
pairtakeApart(string?&str);//規(guī)則段re和action

void?replaceID(string?&re);//lex文件中正規(guī)表達(dá)式標(biāo)志id替換成正規(guī)表達(dá)式re
void?generateNFA(const?string?&?revector?>?&tnfavector?&isTerint?index);
void?modifyTer(vector?&is_tunsigned?int?verticeint?edgeValue);
void?joinNFA(vector?>?&nfa1const?vector?>?&nfa2);
void?joinIster(vector?&is_t1const?vector?&is_t2);
void?TODFA();

void?outputNFA_DFA(bool?nfaORnot);

void?Eclosure(set?&T);
set?move(const?set?&Iint?edgeValue);
int?dfaIsTerminated(set?&I);
void?genAnalysisCode();
bool?cmpFANode(const?list?&l1const?list?&l2);
?
void?main()
{
cout<<“SeuLex?project:“< cout<<“Open?the?source?lex?file?:?lex.l\n\n“;
readfile.open(“l(fā)ex.l“ios::in);

cout<<“Open?the?destination?files:\n“;
cout<<“1----------The??lexer??program?.cpp?file?:?yylex.cpp\n“;
writefile.open(“yylex.cpp“ios::out);
cout<<“2--The?relationship?of?RE-Action-NFA?:Re_Act_NFA.txt\n“;
writeReActNFA.open(“Re_Act_NFA.txt“ios::out);
cout<<“3--------------------The?join?together?NFA?:?NFA.txt\n“;
writeNFA.open(“NFA.txt“ios::out);
cout<<“4--------------Mini?the?NFA?we?can?get?DFA?:?DFA.txt\n“;
writeDFA.open(“DFA.txt“ios::out);

cout<????//嘗試打開(kāi)文件
if(!readfile)
{
cerr<<“The?file?can?not?be?open!“< exit(1);
}
//*******
if(!writefile)
{
cerr<<“The?file?can?not?be?open!“< exit(1);
}
if(!writeReActNFA)
{
cerr<<“The?file?can?not?be?open!“< exit(1);
}
if(!writeNFA)
{
cerr<<“The?file?can?not?be?open!“< exit(1);
}
if(!writeDFA)
{
cerr<<“The?file?can?not?be?open!“< exit(1);
}


//*********************************
//掃描定義段:“%{?”和?“%}”?之間
char?c=readfile.get();
int??type=checkType(c);//定義段?規(guī)則段?
if(type!=DEFINE_HEAD)
{
cout<<“Error!The?lex.l?file?dismatch?t

?屬性????????????大小?????日期????時(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.embed.manifest.res
?????文件?????????403??2002-12-31?21:05??SeuLex欏圭洰\SeuLex欏圭洰\Debug\SeuLex欏圭洰.exe.embed.manifest
?????文件?????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)論

相關(guān)資源