資源簡介
哈工程編譯原理課程設計源碼+滿分報告
代碼片段和文件信息
/*
功能:
將解析樹的后序序列轉換為?NFA。
參數:
postfix?--?解析樹的后序序列指針。
??
返回值:
NFA?的開始狀態指針。
*/
const?char?VoidTrans?=?‘$‘;?//?表示空轉換
NFAState*?post2nfa(char?*postfix)
{
char?*p; ??? //?游標
NFAFragment?fragment1?fragment2?fm;????? //?NFA?片段結構體變量
NFAFragment?fragment?=?{0?0}; ??? //?初始化用于返回的?NFA?片段
NFAState?*NewStartState?*NewAcceptState;? //?開始狀態和接受狀態指針
for(p=postfix;?*p?!=?‘\0‘;?p++)
{
switch(*p)
{
default: //?構造單字符?NFA?片段
//?調用?CreateNFAState?函數生成兩個新的狀態
NewStartState?=?CreateNFAState();
NewAcceptState?=?CreateNFAState();
//?開始狀態通過單字符轉換到接受狀態
NewStartState->Transform?=?*p;
NewStartState->Next1?=?NewAcceptState;
NewAcceptState->AcceptFlag?=?1;
//?調用?MakeNFAFragment?函數生成一個新的?NFA?片段?并入棧
fm?=?MakeNFAFragment(NewStartS
評論
共有 條評論