xxxx18一60岁hd中国/日韩女同互慰一区二区/西西人体扒开双腿无遮挡/日韩欧美黄色一级片 - 色护士精品影院www

  • 大小: 1.93MB
    文件類型: .zip
    金幣: 2
    下載: 0 次
    發布日期: 2023-09-27
  • 語言: 其他
  • 標簽: 編譯原理??

資源簡介

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

資源截圖

代碼片段和文件信息

#include
#include?
#include//文件流
#include
#include//棧
#include//容器
#include//鏈表
#include
#include
#include
using?namespace?std;

#define?DEFINE_HEAD?27//定義段開始標識“%{”
#define?DEFINE_END?28//定義段結束標識“%}”
#define?RULE_ID?30//規則段標識“%%”

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

//描述NFA:
//當前結點接受值edgeValue轉向編號為vertice的結點
struct?Node

{
unsigned?int?edgeValue;//邊上值:NFA可以接受的值edgeValue
unsigned?int?vertice;//當前NFA結點所指向的下一個結點的編號
};

//常量申明
ifstream?readfile;

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

int?lineno=0;//lex文件當前行數信息

vector?>?nfa;
vector?>?dfa;
map?id2reTable;//存儲定義段中標識名到正則式的映射
map?nfaTer2Action;//存儲NFA終態到action表頭對應內容。
map?dfaTer2Action;//存儲DFA終態到action表頭對應內容,其中內容在TODFA()時填充
vector?actionTable;//存儲action內對應內容
//終結態(接受態)的集合
vector?nfaIsTer;
vector?dfaIsTer;

mapint?>?dfanodetable;

//函數原型
int?checkType(char?c);//lex文件結構的解析
pairtakeApart(string?&str);//規則段re和action

void?replaceID(string?&re);//lex文件中正規表達式標志id替換成正規表達式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(“lex.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<????//嘗試打開文件
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);//定義段?規則段?
if(type!=DEFINE_HEAD)
{
cout<<“Error!The?lex.l?file?dismatch?t

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????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個文件信息

評論

共有 條評論