<noframes id="ixm7d"><noframes id="ixm7d"><rt id="ixm7d"><delect id="ixm7d"></delect></rt><noframes id="ixm7d"><rt id="ixm7d"><rt id="ixm7d"></rt></rt><rt id="ixm7d"></rt> <noframes id="ixm7d"><rt id="ixm7d"><delect id="ixm7d"></delect></rt><delect id="ixm7d"></delect><bdo id="ixm7d"></bdo><rt id="ixm7d"></rt><bdo id="ixm7d"></bdo><noframes id="ixm7d"><rt id="ixm7d"><rt id="ixm7d"></rt></rt><rt id="ixm7d"><rt id="ixm7d"></rt></rt><noframes id="ixm7d"><rt id="ixm7d"></rt><noframes id="ixm7d"><rt id="ixm7d"></rt> <noframes id="ixm7d"><rt id="ixm7d"></rt><noframes id="ixm7d"><noframes id="ixm7d"><noframes id="ixm7d"><rt id="ixm7d"></rt><noframes id="ixm7d"><noframes id="ixm7d"><noframes id="ixm7d"><rt id="ixm7d"></rt><noframes id="ixm7d"><rt id="ixm7d"></rt><noframes id="ixm7d"><rt id="ixm7d"></rt><noframes id="ixm7d">

編譯原理小型課程實驗設計

2022-09-12

《編譯原理》是計算機專業的核心課程,本課程介紹了不少的概念、原理和方法,學生剛接觸時普遍會感到抽象,甚至有學不下去的感覺;所以本課程需要以實驗作為補充,激發學生的學習熱情,并通過實驗來理解本課程的相關內容;在文獻[1]中介紹的實驗是以PL/0語言為處理對象,實驗內容相對復雜,部分學生會望而卻步,本文對C語言文法進行適當的簡化,同時包括了詞法分析、語法分析和語義分析等課程重點,操作性強,同時方便學生理解教材中的重要理論。

1 實驗設計

針對以下簡化后的C代碼,設置三組實驗,三組實驗聯系緊密,構成了一個整體,基本完成了編譯器的前端工作。

三個實驗分別說明如下:

實驗一詞法分析

(1) 目的:通過設計編制調試一個具體的詞法分析程序,加深對詞法分析原理的理解,并掌握在對程序設計語言源程序進行掃描過程中將其分解為各類單詞的詞法分析方法。

(2) 要求:編制一個讀單詞過程,從輸入的源程序中,識別出各個具有獨立意義的單詞 (token) ,即基本保留字、標識符、常量、運算符、分隔符五大類,并依次輸出各個單詞的內部編碼及單詞符號自身值;如果遇到錯誤時提示“Error”,然后跳過錯誤部分繼續顯示,實現時可參照狀態轉換圖實現和使用Lex工具[2]實現。

(3) 說明:

token分為基本保留字、標識符、常量、運算符、分隔符五大類,內部編碼參考如下:

識別保留字:if、int、for、while、do、return、break、continue;單詞種別碼為1.

其他單詞都識別為標識符;單詞種別碼為2.

常量為無符號整形數;單詞種別碼為3.

運算符包括:+、-、*、/、=、>、<、>=、<=、!=;單詞種別碼為4.

分隔符包括:, 、;、{、}、 (、) ;單詞種別碼為5。

實驗二 語法分析

(1) 目的:加深對語法分析器工作過程的理解;加強對遞歸下降法實現語法分析程序的掌握;能夠使用自己編寫的分析程序對簡單的程序段進行語法分析。

(2) 要求: (1) 在實驗一的基礎上,用遞歸下降分析法和Yacc工具[2]編制語法分析程序; (2) 對語法規則有明確的定義; (3) 編寫的分析程序能夠對實驗一的結果進行正確的語法分析; (4) 對于遇到的語法錯誤,能夠做出適當的錯誤處理,給出適當的錯誤提示,保證順利完成語法分析過程。

(3) 說明:參考文法如下:

實驗三中間代碼生成

(1) 目的:加深對中間代碼生成工作過程的理解;能夠使用自己編寫的分析程序對簡單的程序段生成中間代碼。

(2) 要求:在實驗二的基礎上,用Yacc工具[2]生成中間代碼。

(3) 說明:文法參照實驗二,生成結果參照文獻[3]。

2 實驗特點

本組實驗具有以下特點:

(1) 三組實驗聯系緊密,實驗二是實驗一的延續,實驗三是實驗二的延續。

(2) 實現方式靈活。在實驗一中,可采用C語言實現狀態轉換圖,也可以用Lex工具實現詞法分析器的自動生成;在實驗二中,可采用C語言實現遞歸下降分析器,也可以用Yacc工具實現語法分析器的自動生成;學生在實現的過程中還可以比較二者的異同。

(3) 可擴展性強。學生可以根據自身情況對上述實驗進行適當地刪減或添加,從而讓自己的編程能力得到鍛煉和提高。

摘要:《編譯原理》是計算機專業的核心課程, 理論課上介紹的原理和方法需要通過實驗來理解;本文以簡化后的C語言為處理對象, 實現詞法分析、語法分析和語義分析等過程, 具有操作性強、可擴展性強等特點, 有助于學生理解本課程的相關內容。

關鍵詞:編譯原理,實驗設計,課程實踐

參考文獻

[1] 張素琴, 呂映芝, 等.編譯原理[M].北京:清華大學出版社, 2005.

[2] Jobn R.Levine, Tony Mason, Doug Brown.Lex與Yacc[M].北京:機械工業出版社, 2003.

[3] 胡元義.編譯原理教程[M].西安:西安電子科技大學出版社, 2006.

本文來自 99學術網(www.gaojutz.com),轉載請保留網址和出處

上一篇:解讀新媒體條件下電子商務網絡軟文營銷策略下一篇:護理實驗教學中的幾點體會

熱門文章

編譯原理論文

91尤物免费视频-97这里有精品视频-99久久婷婷国产综合亚洲-国产91精品老熟女泄火