編譯原理課程設計報告

2021-03-14 14:01:24 字數 3984 閱讀 6452

課程設計報告

課程名稱編譯程式設計原理

課題名稱帶括號的四則混合運算

專業班級

學號姓名

指導教師

2023年 6 月 27日

湖南工程學院

課程設計任務書

課程名稱編譯程式設計原理

課題帶括號的四則混合運算

專業班級

學生姓名

學號指導老師

審批任務書下達日期 2014 年 6月 23日

任務完成日期 2014 年 6月 27日

2011級《編譯原理課程設計》任務書

一、 課程設計的性質和目的

編譯原理課程設計是計算機專業課程,通過課程設計使學生進一步鞏固課堂所學知識,全面熟悉、掌握編譯程式編寫的基本設計方法和技巧,進一步提高分析問題、解決問題及上機操作能力,為將來從事高層次的計算機軟體開發工作打下一定的專業基礎。

二、 設計課題

課題一:應用編譯原理的方法實現帶括號的四則混合運算

給定條件:

1、 詞法符號定義如下:

intc d+

floatc (d+.d+) | (d+.) | ( .d+)

floatc ( (d+.d+) | (d+.) | ( .d+)| (d+) ) ( e | ed+

opadd +

opsub

opmul *

opdiv /

lparen 『(』

rparen 『)』

line 『\n』

assign =

2、 表示式文法定義如下:

01. s e

02. e t

03. e e opadd t

04. e e opsub t

05. t p

06. t t opmul p

07. t t opdiv p

08. p intc

09. p floatc

10. p lparen e rparen

基本要求:

1、 以assign作為文法結束符號;

2、 應用詞法分析技術識別單詞;

3、 應用slr(1)分析技術判別表示式的合法性;

4、 應用尾動作文法技術計算表示式的型別與值;

5、 要求表示式的型別與值嚴格一致。

三、 課程設計報告要求

1、 課程設計報告必須按本系規定的格式要求列印成冊;

2、 課程設計報告每人乙份,正文必須包含如下幾個方面的內容:

1) 基本設計思想;

2) 主要資料結構;

3) 總結與體會。

3、 課程設計報告裝訂順序:封面、任務書、目錄、正文、源程式清單。

四、 選題及考核辦法

1、 一人一組,學號為奇數者做課題一,學號為偶數者做課題二。

2、 成績考核按個人課題完成情況、設計報告質量及對課程設計的態度等綜合評定。

五、設計進度安排

1、 講課時間安排:

18周周一上午

2、 上機除錯時間安排:

18周週三周四上午

3、 答辯時間安排:

18周周五上午

4、 其餘時間:查閱資料,確定方案,設計課題相關程式。

目錄一設計內容與設計要求 6

1.1 課程設計的性質和目的 6

1.2 設計課題 6

1.3 進度安排 7

二基本設計思想 8

2.1 詞法分析 8

2.2 語法分析 9

三主要資料結構 14

四除錯執行結果 15

五總結與體會 16

一設計內容與設計要求

1.1 課程設計的性質和目的

編譯原理課程設計是計算機專業課程,通過課程設計使學生進一步鞏固課堂所學知識,全面熟悉、掌握編譯程式編寫的基本設計方法和技巧,進一步提高分析問題、解決問題及上機操作能力,為將來從事高層次的計算機軟體開發工作打下一定的專業基礎。

1.2 設計課題

課題一:應用編譯原理的方法實現帶括號的四則混合運算

給定條件:

1、 詞法符號定義如下:

intc d+

floatc (d+.d+) | (d+.) | ( .d+)

floatc ( (d+.d+) | (d+.) | ( .d+)| (d+) ) ( e | ed+

opadd +

opsub

opmul *

opdiv /

lparen 『(』

rparen 『)』

line 『\n』

assign =

2、 表示式文法定義如下:

01. s e

02. e t

03. e e opadd t

04. e e opsub t

05. t p

06. t t opmul p

07. t t opdiv p

08. p intc

09. p floatc

10. p lparen e rparen

基本要求:

1、 以assign作為文法結束符號;

2、 應用詞法分析技術識別單詞;

3、 應用slr(1)分析技術判別表示式的合法性;

4、 應用尾動作文法技術計算表示式的型別與值;

5、 要求表示式的型別與值嚴格一致。

1.3 進度安排

計算機1181班:

第 18 周:星期一 8:00——12:00 2:30——5:30

星期二 8:00——12:00 2:30——5:30

二基本設計思想

本計算器採用編譯原理的方法構建,先用有窮自動機輔助進行詞法,把字串形式的算術表示式的格式標準化,分離出乙個個詞法單元。然後採用slr(1)文法分析法進行文法分析,檢查表示式的正確性。並在過程中計算出已分析出的部分表示式的值。

最終得出表示式的值。

2.1 詞法分析

由於各詞法元素都可以用正規表示式來表示,所以做詞法分析時採用正規表示式形式化表示各個元素以便於程式實現。

四則混合運算各詞法元素的正規表示式如下所示:

intc d+

floatc d+.d+ | d+. | .d+

floatc ( d+.d+ | d+. | .d+ | d+ ) ( e | ed+

opadd +

opsub

opmul *

opdiv /

lparen 『(』

rparen 『)』

line 『\n』

assign =

正規表示式把能夠把各詞法元素的格式用形式化的方法表示出來,是格式的判斷能夠用程式來完成,但最終寫程式時,用正規表示式直接分析對人來說仍然是不太直接,不方便,所以把正規表示式轉化為有限自動機,以是寫程式實現詞法分析方便。

如圖1.1為四則混合運算的有限自動機。

圖 2.1四則混合運算的有限自動機

2.2 語法分析

四則混合運算算術表示式符合slr(1)文法但不符合lr(0)文法,所以語法分析採用slr(1)語法分析方法。

四則混合運算算術表示式的產生式如下:

01. s e

02. e t

03. e e opadd t

04. e e opsub t

05. t p

06. t t opmul p

07. t t opdiv p

08. p intc

09. p floatc

10. p lparen e rparen

表2.1四則混合運算算術表示式文法中非終極符的first集和follow集

根據文法的產生式和first集、follow集即可確定文法的規約活字首dfa (slr(1)_dfa),如圖1.2所示。

編譯原理課程設計報告

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

編譯原理課程設計報告

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

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

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