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

  • 大小: 74KB
    文件類型: .rar
    金幣: 2
    下載: 0 次
    發(fā)布日期: 2021-08-04
  • 語言: 其他
  • 標(biāo)簽:

資源簡介

lex和yacc實現(xiàn)代碼 lex和yacc實現(xiàn)代碼 lex和yacc實現(xiàn)代碼

資源截圖

代碼片段和文件信息

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define?layer_ID?15//標(biāo)識%%
#define?HEADER_BEGIN?16//標(biāo)識%{%}
#define?HEADER_END?17//
#define?BEGIN?0
#define?ERROR?-11
#define?EPSLONG?-1
using?namespace?std;
//定義結(jié)點結(jié)構(gòu)
struct?Node
{
unsigned?int?value;
unsigned?int?state;
};
//定義一組常量
ifstream?ifile;
ofstream?ofile;
int?lineno=0;
vector?>?nfa;
vector?>?dfa;
hash_map?id2reTable;//存儲定義段中標(biāo)識名到正則式的映射
hash_map?nfaTer2Action;//存儲NFA終態(tài)到action表頭對應(yīng)內(nèi)容。
hash_map?dfaTer2Action;//存儲DFA終態(tài)到action表頭對應(yīng)內(nèi)容,其中內(nèi)容在Nfa2Dfa()時填充
vector?actionTable;//存儲action內(nèi)對應(yīng)內(nèi)容
vector?nfaIsTer;
mapint?>?dfanodetable;
vector?dfaIsTer;//標(biāo)記dfa中哪些是終結(jié)態(tài)。


//定義一些函數(shù)
int?checkSpecsign(char?c);
void?compleRe(string?&re);
void?produceNfa(const?string?&?revector?>?&tnfavector?&isTerint?index);
void?modifyTer(vector?&is_tunsigned?int?stateint?value);
void?joinNfa(vector?>?&nfa1const?vector?>?&nfa2);
void?joinIster(vector?&is_t1const?vector?&is_t2);
void?Nfa2Dfa();
void?Eclosure(set?&T);
set?move(const?set?&Iint?value);
int?dfaIsTerminated(set?&I);//返回終態(tài)對應(yīng)動作,如果是非終態(tài)返回-1
void?minidfa();
void?genAnalysisCode();//生成詞法分析部分的代碼
bool?cmpList(const?list?&l1const?list?&l2);

void?main()
{
string?s;
cout<<“Please?input?the?inputfile?name!“< cin>>s;
ifile.open(s.c_str()ios::in);
cout<<“Analysing?source......“< ofile.open(“yylex.cpp“ios::out);
if(!ifile.good())
{
cerr<<“Open?the?file?error!“< return;
}
char?c=ifile.get();
int?state=checkSpecsign(c);
//判斷開頭是不是%{
if(state!=HEADER_BEGIN)
{
cout<<“The?input?file?has?no?correct?formationPlease?try?again!\n“;
return;
}
//判斷到%}或到文件尾為止進(jìn)行掃描
while(!ifile.eof()&&state!=HEADER_END)
{
c=ifile.get();
if(c==‘\t‘)?continue;//跳過\t字符不輸出。
if(c==‘%‘)?{state=checkSpecsign(c);continue;}//當(dāng)接受到%時,注意判斷是不是特殊符號
if(c==‘\n‘)?lineno++;//讓行號自增,用以判斷錯誤行號。
ofile.put(c);
}
//以上完成定義段中%{?%}之間的掃描
//以下開始對定義好的關(guān)鍵字的正規(guī)表達(dá)式的掃描,并將其存儲到表中
ifile.get();
pair?pi;
state=BEGIN;

while(!ifile.eof()&&state!=layer_ID)//此處的處理有問題,需要做進(jìn)一步調(diào)整。
{
c=ifile.get();
if(c==‘%‘)
{
state=checkSpecsign(c);
if(state==ERROR)//用戶自定義的標(biāo)識符不可以含有此特殊字符%。
{
cerr<<“There?is?an?error?in?line?“< return;
}
continue;//跳過下面的正常串的處理,因為已經(jīng)到終結(jié)。
}
else
{
ifile.unget();//如果不是特殊字符%,把當(dāng)前字符放回流中。
}
string?idre;
ifile>>id>>re;
pi.first=id;
pi.second=re;
id2reTable.insert(pi);
lineno++;
ifile.get();
}
//以上是對定義段的掃描
//以下是對規(guī)則段的掃描解析
state=BEGIN;
actionTable.push_back(“begin“);//使action表從1號單元開始,便于處理。
ifile.get();
while(!ifile.eof()&&state!=layer_ID)
{
c=ifile.get();
if(c==‘%‘)
{
state=check

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

?????文件??????46080??2009-04-19?21:56??編譯原理課程設(shè)計實驗報告\編譯原理實驗報告.doc

?????文件??????77824??2002-03-10?23:54??編譯原理課程設(shè)計實驗報告\編譯實驗Lex部分\Debug\vc60.pdb

?????文件??????21266??2006-04-16?13:19??編譯原理課程設(shè)計實驗報告\編譯實驗Lex部分\Lex.cpp

?????文件???????3365??2007-05-01?15:12??編譯原理課程設(shè)計實驗報告\編譯實驗Lex部分\Lex.dsp

?????文件????????531??2007-05-01?22:52??編譯原理課程設(shè)計實驗報告\編譯實驗Lex部分\Lex.dsw

?????文件??????41984??2002-03-10?23:55??編譯原理課程設(shè)計實驗報告\編譯實驗Lex部分\Lex.ncb

?????文件??????48640??2002-03-10?23:55??編譯原理課程設(shè)計實驗報告\編譯實驗Lex部分\Lex.opt

?????文件???????1307??2002-03-10?23:54??編譯原理課程設(shè)計實驗報告\編譯實驗Lex部分\Lex.plg

?????文件???????2264??2006-04-16?12:02??編譯原理課程設(shè)計實驗報告\編譯實驗Lex部分\test.txt

?????文件??????76619??2006-04-16?13:18??編譯原理課程設(shè)計實驗報告\編譯實驗Lex部分\yylex.cpp

?????文件????????961??2006-04-16?11:35??編譯原理課程設(shè)計實驗報告\編譯實驗Lex部分\yytab.h

?????文件????????607??2009-04-19?21:57??編譯原理課程設(shè)計實驗報告\編譯實驗Lex部分\說明.txt

?????文件????????872??2006-05-18?21:09??編譯原理課程設(shè)計實驗報告\編譯實驗Yacc部分\example?1\CMinus.l

?????文件???????1805??2006-05-22?18:49??編譯原理課程設(shè)計實驗報告\編譯實驗Yacc部分\example?1\cminus.yy

?????文件???????1412??2006-05-18?18:24??編譯原理課程設(shè)計實驗報告\編譯實驗Yacc部分\example?1\signal_table.txt

?????文件????????195??2006-05-22?18:50??編譯原理課程設(shè)計實驗報告\編譯實驗Yacc部分\example?1\test.txt

?????文件??????49185??2006-05-18?21:09??編譯原理課程設(shè)計實驗報告\編譯實驗Yacc部分\example?1\yylex.cpp

?????文件??????15491??2006-05-22?18:49??編譯原理課程設(shè)計實驗報告\編譯實驗Yacc部分\example?1\yyparse.cpp

?????文件????????997??2006-05-18?18:24??編譯原理課程設(shè)計實驗報告\編譯實驗Yacc部分\example?1\yytab.h

?????文件????????171??2006-05-22?18:56??編譯原理課程設(shè)計實驗報告\編譯實驗Yacc部分\example?1\說明.txt

?????文件????????390??2006-05-22?18:56??編譯原理課程設(shè)計實驗報告\編譯實驗Yacc部分\example?2\ambigious.l

?????文件????????198??2006-05-22?19:13??編譯原理課程設(shè)計實驗報告\編譯實驗Yacc部分\example?2\ambigious.yy

?????文件????????403??2006-05-22?18:56??編譯原理課程設(shè)計實驗報告\編譯實驗Yacc部分\example?2\signal_table.txt

?????文件?????????29??2006-05-22?19:13??編譯原理課程設(shè)計實驗報告\編譯實驗Yacc部分\example?2\test.txt

?????文件???????2041??2006-05-22?19:13??編譯原理課程設(shè)計實驗報告\編譯實驗Yacc部分\example?2\yylex.cpp

?????文件???????4723??2006-05-22?19:09??編譯原理課程設(shè)計實驗報告\編譯實驗Yacc部分\example?2\yyparse.cpp

?????文件????????178??2006-05-22?18:56??編譯原理課程設(shè)計實驗報告\編譯實驗Yacc部分\example?2\yytab.h

?????文件????????160??2006-05-22?19:17??編譯原理課程設(shè)計實驗報告\編譯實驗Yacc部分\example?2\說明.txt

?????文件??????35292??2006-05-22?18:09??編譯原理課程設(shè)計實驗報告\編譯實驗Yacc部分\Yacc.cpp

?????文件????????203??2006-05-22?19:19??編譯原理課程設(shè)計實驗報告\編譯實驗Yacc部分\說明.txt

............此處省略11個文件信息

評論

共有 條評論

相關(guān)資源