編譯原理課程設計報告

2022-06-11 07:57:02 字數 1994 閱讀 8448

編譯器的實現

學院(系

學生姓名

學號班級

同組人目錄

1 課設要求

1.1. 實現原理

1.2. 單詞符號及種別表

1.3. 語法結構的定義

2 執行環境

3 總體設計思想

4 詳細設計思想

4.1. 詞法分析主要演算法

4.2. 語法分析主要演算法

4.3. 語義分析主要演算法

5 流程框圖

6 函式相關說明

7 程式用例及執行結果

8 小組分工與合作

9 心得與體會

用c++語言對下述文法和單詞表定義的語言做乙個編譯器,實現了ll(1)詞法分析,語法分析,中間**生成功能。

編譯程式的工作過程一般可以分為五個階段:詞法分析、語法分析、語義分析與中間**產生、優化、目標**生成。每乙個階段在功能上是相對獨立的,它一方面從上乙個階段獲取分析的結果來進行分析,另一方面由將結果傳遞給下乙個階段。

由編譯程式的五個階段就對應了編譯系統的結構。

p →d →int id ;

s→if (b) then s [else s ] | while (b) do s | | id=e

l→sl』

l』 →; l |

b→t』

t』 →f』

f』 →id relop id | id

e→tt→f

f→ (e) | num | id

//紅顏色的{}是終極符.黑顏色的{}和[]不是終極符.

2 執行環境

windows 系統 visual c++ 6.0

採用遞迴下降子程式法和語法制導翻譯及回填拉鍊技術

詞法分析程式——》語義分析程式——》四元式

這部分對原始檔進行分析,允許/* */注釋。從原始檔依次讀取字元,對字元進行分析,組成字串、數字、關係符等固定含義的token符,並把它們新增到token鏈中,如果遇到非法字元報錯並退出程式。

4.2.語法分析主要演算法

這部分對token鏈進行分析,利用遞迴下降子程式法的分析方法。

4.3.語義分析主要演算法

這部分對語法樹從左到右進行遍歷,節點記錄了規約式的編號,遍歷到節點時就進行相應處理。語義分析主要檢查變數、函式是否被定義或重定義,同時產生四元式。

5 流程框圖

圖1 主函式程式流程圖

圖2 遞迴下降分析分析程式流程圖

6 函式相關說明

sym getsym(char now);

詞法分析函式。

void yuyi();

語義分析函式。

d(); 變數定義分析函式。

s(); 語句分析函式。(if then else while do 賦值復合)

b(); bool表示式分析函式。

l(); 復合語句分析函式。

ll(); 復合語句連線分析函式。

tt(); or 連線分析函式。

ff(); and 連線分析函式。

e(); 賦值語句分析函式。

t(); +,- 連線分析函式。

f(); *,/ 連線分析函式。

bool lookup(string a);

檢驗變數是否定義函式。

void check(sym a);

檢驗是否用沒定義變數函式。

string add(int stop,int ttop);

部分四元式生成函式。(一部分在分析函式中直接生成)。

成功樣例1

}#執行結果

成功樣例2

int e;

int f;

}#執行結果

錯誤樣例1:

#執行結果:

錯誤樣例2:

}#執行結果:

錯誤樣例3:

int b;

}#注:此處錯誤應為缺少; 但**是向下差錯,所以報錯缺少},但仍可根據錯誤行數改錯。

8 小組分工與合作

9心得與體會

編譯原理課程設計報告

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

編譯原理課程設計報告

小組成員 張快學號 2011014260 此次課設我完成的工作主要有兩大不分,乙個是完成了詞法分析模組的一部分內容,還有就是把各個模組整合在一起,設計乙個mfc對話方塊程式。下面詳細介紹一下我的工作 nfa轉化為dfa,dfa最小化 詞法分析模組 nfa轉成dfa的主要工作是找出每個節點的閉包,我用...

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

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