編譯原理課程設計報告

2023-01-14 14:18:03 字數 1422 閱讀 7461

小組成員:張快學號:2011014260

此次課設我完成的工作主要有兩大不分,乙個是完成了詞法分析模組的一部分內容,還有就是把各個模組整合在一起,設計乙個mfc對話方塊程式。下面詳細介紹一下我的工作:

nfa轉化為dfa,dfa最小化(詞法分析模組)

nfa轉成dfa的主要工作是找出每個節點的閉包,我用遞迴的方法對每個節點求其閉包,具體**如下:

void getclosure(node a[100][100],int b[100],int c,int d,int flag[100])

while(b[d]!=-1)

d++;

b[d]=i;

d++;

flag[i]=1;

getclosure(a,b,i,d,flag);

}}nfa生成dfa的主要**如下:

int nfa_dfa(node a[100][100],dnode b[20][20],string s)

}initd(b);

b[19][19].size=

int ffflag[100];

initnt(ffflag);

b[0][0].state=0;

b[0][0].size=1;

b[0][0].m[0]=0;

getclosure(a,b[0][0].m,0,b[0][0].size,ffflag);

int fflag=0;

int flag=0;

int c=0;

while(fflag==0)

if(flag==1&&b[t][r].size!=0)

else

fflag=1;

}}return c+1;

}最後最小化dfa,主要和書上講的差不多,先把終態和其他狀態區分開,然後再將等價狀態合併,具體**如下:

int dfa_mdfa(int a[20][20],int flag1[20])

int flag=1;

while(flag==1)

return l1;

}2、將**進行整合,設計ui

ui的設計比較簡潔,總共有三個編輯框,乙個**輸入框,乙個結果輸出框,乙個提示資訊框(主要用來顯示錯誤資訊)。

還有乙個選單欄,有檔案(包括開啟、儲存、退出三個子項)、語法(有上下文無關文法乙個子項)、詞法(有正規表示式乙個子項)。

開啟和儲存檔案主要是針對以源程式,集輸入框的**,上下文無關文法是選擇文法分析所需要的上下文無關文法,正則文法是詞法分析所需要的正則文法。程式介面如下:

詳細的使用在編譯原理課程設計程式使用說明裡面有詳細的引導。

該程式還有詞法分析、語法分析、中間**生成、目標**生成四個按鈕,其中詞法分析的主要程式放在了中,語法分析和中間**生成放在了語法分析.h中,目標**生成放在了中,最後通過button按鈕的響應函式來呼叫各個模組,實現了**的整合。

編譯原理課程設計報告

課程設計報告 課程名稱編譯程式設計原理 課題名稱帶括號的四則混合運算 專業班級 學號姓名 指導教師 2014年 6 月 27日 湖南工程學院 課程設計任務書 課程名稱編譯程式設計原理 課題帶括號的四則混合運算 專業班級 學生姓名 學號指導老師 審批任務書下達日期 2014 年 6月 23日 任務完成...

編譯原理課程設計報告

編譯器的實現 學院 系 學生姓名 學號班級 同組人目錄 1 課設要求 1.1.實現原理 1.2.單詞符號及種別表 1.3.語法結構的定義 2 執行環境 3 總體設計思想 4 詳細設計思想 4.1.詞法分析主要演算法 4.2.語法分析主要演算法 4.3.語義分析主要演算法 5 流程框圖 6 函式相關說...

編譯原理課程設計報告 編譯器

編譯技術 課程設計實驗報告 實驗名稱 編譯器程式 姓名 學號 班級 年月日模仿上學期給定的程式,根據下面具體的內容,用c 語言對下述文法和單詞表定義的語言設計編制乙個編譯器。設計報告格式撰寫報告 1 單詞符號及種別表 2 語法結構定義 程式 main 語句塊 語句塊 程式用括號括起來 語句串 語句 ...