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

資源簡介

該資源為2016級哈工程計算機專業的編譯原理課程設計的代碼與實驗報告。其中共選擇了以下實驗: 1實驗環境的使用 2使用Lex自動生成掃描程序 3消除左遞歸(無替換) 4 提取左因子 5 First集合 6 Follow集合

資源截圖

代碼片段和文件信息

#include?“RegexpToNFA.h“
#include?“RegexpToPost.h“
#include?“NFAFragmentStack.h“

NFAFragmentStack?FragmentStack; //?棧。用于儲存?NFA?片段


?//char*?regexp?=?“ab“; //?例?1
//?char*?regexp?=?“a|b“; //?例?2
//?char*?regexp?=?“a*“; //?例?3
//?char*?regexp?=?“a?“; //?例?4
//?char*?regexp?=?“a+“; //?例?5
//?char*?regexp?=?“a(a|1)*“;//?例?6
?char*?regexp?=?“(aa|b)*a(a|bb)*“;//?例?7
//?char*?regexp?=?“(a|b)*a(a|b)?“;? //?例?8

int?main(int?argc?char?**argv)
{
char?*post;
NFAState?*start;

//
//?初始化棧
//
InitNFAFragmentStack(&FragmentStack);

//
//?調用?re2post?函數將正則表達式字符串轉換成解析樹的后續遍歷序列
//
post?=?re2post(regexp);

//
//?調用?post2nfa?函數將解析樹的后續遍歷序列轉換為?NFA?并返回開始狀態
//
start?=?post2nfa(post);
system(“pause“);
return?0;
}

/*
功能:
初始化一個狀態。
??
返回值:
狀態指針。
*/
int?nstate?=?1;??//?狀態名計數器
NFAState*?CreateNFAState()
{
NFAState?*s?=?(NFAState*)malloc(sizeof(NFAState));

s->Name?=?nstate++;
s->Transform?=?‘\0‘;
s->Next1?=?NULL;
s->Next2?=?NULL;
s->AcceptFlag?=?0;

return?s;
}

/*
功能:
將開始狀態和接受狀態組成一個?Fragment。

參數:
StartState?--?開始狀態。
AcceptState?--?接受狀態。
??
返回值:
?Fragment?結構體指針。
*/
NFAFragment?MakeNFAFragment(NFAState?*StartState?NFAState?*AcceptState)
{
NFAFragment?n?=?{StartState?AcceptState};
return?n;
}

/*
功能:
將解析樹的后序序列轉換為?NFA。

參數:
postfix?--?解析樹的后序序列指針。
??
返回值:
NFA?的開始狀態指針。
*/



/*
typedef?struct?_NFAState{
char?Transform;??????? ?//?狀態間轉換的標識,用?‘$‘?表示?‘ε-轉換‘
struct?_NFAState?*Next1;?//?指向下一個狀態?
struct?_NFAState?*Next2;?//?指向下一個狀態
int?Name; ?????//?狀態名稱
int?AcceptFlag; ?????//?是否為接受狀態的標志,1?表示是接受狀態?0?表示不是接受狀態?
}NFAState;

//?Fragment?結構是一個?NFA?的片段
typedef?struct?_NFAFragment{
NFAState?*StartState;? //?開始狀態
NFAState?*AcceptState;? //?接受狀態
}NFAFragment;
*/

const?char?VoidTrans?=?‘$‘;?//?表示空轉換
NFAState*?post2nfa(char?*postfix)
{
char?*p; ??? //?游標
NFAFragment?fragment1?fragment2?fm;????? //?NFA?片段結構體變量
NFAFragment?fragment?=?{0?0}; ??? //?初始化用于返回的?NFA?片段
NFAState?*NewStartState?*NewAcceptState;? //?開始狀態和接受狀態指針

//
//?TODO:?在此添加代碼
//
for(p=postfix;*p!=‘\0‘;p++)
{
switch(*p)
{
default:???????????//構造單字符NFA片段

//調用CreatNFAState函數生成兩個新的狀態
NewStartState?=?CreateNFAState();
NewAcceptState?=?CreateNFAState();


//開始狀態通過單個字符轉換到接受狀態
NewStartState->Transform?=?*p;
NewStartState->Next1?=?NewAcceptState;
NewAcceptState->AcceptFlag?=?1;

//調用MakeFragment函數生成一個新的NFA片段,并入棧
fm?=?MakeNFAFragment(NewStartStateNewAcceptState);
PushNFAFragment(&FragmentStackfm);
break;

case?‘.‘:?????????//構造連接NFA片段
/*
連接狀態不需要生成新的狀態,第一個在接受狀態就是第二個的開始狀態
*/

//棧頂在兩個片段出棧,構造出新的NFA片段
fragment2?=?PopNFAFragment(&FragmentStack);
fragment1?=?PopNFAFragment(&FragmentStack);
fragment1.AcceptState->AcceptFlag?=?0;//將狀態1在接受狀態換成非接受狀態,通過e轉換與狀態2進行連接
fragment1.AcceptState->Next1?=?fragment2.StartState;//狀態1在下一狀態指針指向狀態2

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2020-08-07?21:05??2016061521-王好天-編譯原理\
?????目錄???????????0??2018-12-25?16:22??2016061521-王好天-編譯原理\lab1實驗一\
?????目錄???????????0??2018-12-25?16:22??2016061521-王好天-編譯原理\lab1實驗一\Debug\
?????文件???????31439??2018-12-24?15:50??2016061521-王好天-編譯原理\lab1實驗一\Debug\lab1實驗一.exe
?????文件????????8132??2018-12-24?15:50??2016061521-王好天-編譯原理\lab1實驗一\Debug\main.o
?????文件????????4874??2018-12-17?16:14??2016061521-王好天-編譯原理\lab1實驗一\Debug\NFAFragmentStack.o
?????文件????????5500??2018-12-17?16:14??2016061521-王好天-編譯原理\lab1實驗一\Debug\RegexpToPost.o
?????文件????????1015??2018-12-24?16:19??2016061521-王好天-編譯原理\lab1實驗一\Debug\ValidateSource.txt
?????文件????????1015??2018-12-24?16:19??2016061521-王好天-編譯原理\lab1實驗一\Debug\ValidateTarget.txt
?????文件????????2079??2018-12-24?15:50??2016061521-王好天-編譯原理\lab1實驗一\lab1實驗一.cplproj
?????文件?????????472??2018-12-24?16:21??2016061521-王好天-編譯原理\lab1實驗一\lab1實驗一.puo
?????文件????????7193??2018-12-24?15:50??2016061521-王好天-編譯原理\lab1實驗一\main.c
?????文件????????1085??2013-06-08?15:02??2016061521-王好天-編譯原理\lab1實驗一\NFAFragmentStack.c
?????文件?????????753??2013-06-08?14:58??2016061521-王好天-編譯原理\lab1實驗一\NFAFragmentStack.h
?????文件?????????982??2013-07-08?16:52??2016061521-王好天-編譯原理\lab1實驗一\RegexpToNFA.h
?????文件????????1581??2018-12-17?09:36??2016061521-王好天-編譯原理\lab1實驗一\RegexpToPost.c
?????文件?????????292??2013-05-27?10:51??2016061521-王好天-編譯原理\lab1實驗一\RegexpToPost.h
?????目錄???????????0??2018-12-25?16:22??2016061521-王好天-編譯原理\lab3實驗三\
?????目錄???????????0??2018-12-25?16:22??2016061521-王好天-編譯原理\lab3實驗三\Debug\
?????文件???????42537??2018-12-24?15:51??2016061521-王好天-編譯原理\lab3實驗三\Debug\lab3實驗三.exe
?????文件???????29302??2018-12-24?09:17??2016061521-王好天-編譯原理\lab3實驗三\Debug\main.o
?????文件?????????638??2013-07-18?14:41??2016061521-王好天-編譯原理\lab3實驗三\define.h
?????文件????????2364??2018-12-24?15:51??2016061521-王好天-編譯原理\lab3實驗三\lab3實驗三.cplproj
?????文件?????????282??2018-12-25?14:08??2016061521-王好天-編譯原理\lab3實驗三\lab3實驗三.puo
?????文件??????????35??2018-12-21?15:53??2016061521-王好天-編譯原理\lab3實驗三\lex.backup
?????文件???????45699??2018-12-24?09:17??2016061521-王好天-編譯原理\lab3實驗三\main.c
?????文件?????????269??2013-07-18?14:41??2016061521-王好天-編譯原理\lab3實驗三\sample.txt
?????文件????????6489??2018-12-19?14:14??2016061521-王好天-編譯原理\lab3實驗三\scan.txt
?????目錄???????????0??2018-12-25?16:22??2016061521-王好天-編譯原理\lab4實驗四\
?????目錄???????????0??2018-12-25?16:22??2016061521-王好天-編譯原理\lab4實驗四\Debug\
?????文件??????308204??2018-12-24?09:13??2016061521-王好天-編譯原理\lab4實驗四\Debug\lab4實驗4.exe
............此處省略38個文件信息

評論

共有 條評論