電腦科學與技術專業編譯原理實踐

2022-06-09 15:09:04 字數 3888 閱讀 9738

電腦科學與技術專業

《編譯原理課程實踐》教學大綱

(2023年)

課時:12學時

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

《編譯原理課程實踐》是《編譯原理》課程學習後的乙個綜合性實踐教學環節,主要培養學生綜合運用已學過的基本理論和原理去分析和解決實際問題的能力,對加深課程理論的理解和應用、增強學生的實踐動手能力和創新能力具有重要意義。

通過編譯原理課程實踐,全面了解編譯程式構造的一般原理和基本實現方法,更好地理解高階程式語言程式執行執行的過程,掌握詞法分析、語法分析等程式語言編譯過程的任務和實現過程,掌握形式語言、自動機理論等基本概念,提高學生駕馭高階程式語言的能力,培養學生創新思維能力和實際操作能力,為以後使用和實現程式語言打下堅實的基礎。

二、課程設計的基本內容與要求

開發實現具體程式語言的詞法分析程式和語法分析程式,要求學生提交分析程式的各種設計文件資料,包括基礎文法、程式源**和測試結果等。具體內容及要求如下:

1、詞法分析程式:對選定的程式語言或語言的子集,運用正規文法、正規式、有窮自動機等工具,設計詞法分析演算法,編制詞法分析程式。要求能對輸入的字元流進行詞法分析,識別出單詞型別、記錄相關資訊並能進行出錯處理。

2、語法分析程式:對選定的程式語言或語言子集,採用自頂向下或自底向上的語法分析方法,構造遞迴下降分析器或構造相應的語法分析表(**分析表、算符優先分析表或lr分析表),編制語法分析程式。要求能對輸入的單詞流進行語法分析,判斷是否符合相應的語法規則並能進行出錯處理。

三、實踐教學的方式與時間安排

課程實踐採用學生分組的方式進行,每組3人(可以1人1組),共同完成乙個詞法分析程式和語法分析程式的設計。任課教師組織學生進行該課程實踐的方案討論,詳細說明實踐要求,並提供一些具體例項以供參考。編譯原理課程設計總學時為1周,在第6學期內完成。

四、考核與成績評定

課程設計的考核內容包括三部分:(1)程式功能達到設計要求、分析實現正確、程式穩定(60%);(2)學習態度、動手能力(20%);(3)課程設計報告包括相關說明文件(20%)。在考核過程中,任課教師根據學生課程設計的過程及提交的程式**及各種文件資料,給予相應的成績。

實驗一:

詞法分析程式

[目的要求]

通過設計編制除錯乙個具體的詞法分析程式,加深對詞法分析原理的理解。

並掌握在對程式語言源程式進行掃瞄過程中將其分解為各類單詞的詞法分析

方法。[題目分析]

這裡以開始定義的pascal語言子集的源程式作為詞法分析程式的輸入資料。

在詞法分析中,自檔案頭開始掃瞄源程式字元,一旦發現符合"單詞"定義的源程

序字串時,將它翻譯成固定長度的單詞內部表示,並查填適當的資訊表。經過

詞法分析後,源程式字串(源程式的外部表示)被翻譯成具有等長資訊的單詞

串(源程式的內部表示),並產生兩個**:常數表和識別符號表,它們分別包含

了源程式中的所有常數和所有識別符號。

下面就詞法分析程式中的主要變數進行說明:

s語言表示式和語句說明

1.算術表示式

2.關係運算子:>、>=、<、<=、==、!=

3.賦值運算子

4.變數說明:型別識別符號變數名錶;

5.型別識別符號:int char float

6.if語句:if 表示式then 語句 [else 語句]

7.for語句:for(表示式1;表示式2;表示式3) 語句

8.while語句:while 表示式 do 語句

9.s語言程式:由函式構成,函式不能巢狀定義。

函式格式為:

返回值函式名(引數)

begin

資料說明

語句end10.復合語句構成

begin

語句序列

end [程式除錯]

1.initscanner函式:程式初始化:輸入並開啟源程式檔案和目標程式檔案,初始化保留字表

2.scanner函式:若檔案未結束,反覆呼叫lexscan函式識別單詞。

3.lexscan函式:根據讀入的單詞的第乙個字元確定呼叫不同的單詞識別函式

4.isalpha函式:識別保留字和識別符號

5.isnumber函式:識別整數,如有精力,可加入識別實數部分工功能

6.isanotation函式:處理除號/和注釋

7.isother函式識別其他特殊字元

8.output函式:輸出單詞的二元式到目標檔案,輸出格式(單詞助記符,單詞內碼值),如(int,-)(rlop,>)……

9.error函式:輸出錯誤資訊到螢幕

10.除此之外,還可以設定查符號表,填寫符號表等函式,學生可自行設計。

現有pascal程式清單如下:

begin

if i=1 then

i:=i+1 #

else *&^

if i=2 then

i:=i+11;

end.

執行詞法分析程式後,顯示如下結果:

begin (1,1)

if (1,4)

i (6,0)

= (4,2)

1 (5,0)

then (1,5)

i (6,0)

= (2,2)

i (6,0)

+ (3,0)

1 (5,0)

# error,not a word

else (1,2)

* (3,2)

& error,not a word

^ error,not a word

if (1,4)

i (6,0)

= (4,2)

2 (5,1)

then (1,5)

i (6,0)

:= (2,2)

i (6,0)

+ (3,0)

11 (5,2)

; (2,1)

end (1,3)

. (2,3)

over

結果完全正確。

實驗二:

一、實驗題目

設計乙個簡單的表示式語法分析器

採用遞迴下降方法設計實現)

二、實驗目的

1、 了解形式語言基礎及其文法運算;

2、 熟悉語法分析原理及4種常用的語法分析方法;

其中: 四種演算法為

(1)設計算術表示式的遞迴下降子程式分析演算法

(2)設計算術表示式的ll(1) 分析演算法

(3)設計算術表示式的簡單優先分析演算法

(4)設計算術表示式的slr(1) 分析演算法

3、選擇上述一種方法並設計乙個表示式的語法分析器。

本實驗設計的是遞迴下降的表示式語法分析器)

三、實驗內容

1.設計遞迴下降語法分析器演算法;

2.編寫**並上機除錯執行通過;

3、寫出試驗體會及心得。

四、實驗要求

1、 給出算術表示式文法

2、 進行適當的文法變換

3、 選擇一種語法分析的方法,並說明其原理

4、 根據原理給出相應的演算法設計,說明主要的資料結構並畫出演算法流程圖

5、 編寫**並上機除錯執行通過

6、 寫出程式執行結果

7、 寫出相應的文件以及**注釋

8、輸入——表示式;

輸出——表示式語法是否正確。

五、遞迴下降的表示式語法分析器設計概要

1.算術表示式文法

g(e): e e +t | t

t t* f | f

f i | (e)

2.文法變換:

g』(e): e->te'

e'->+te'|ε

t->ft'

t'->*ft'|ε

f->(e)|i

3. 遞迴下降子程式框圖:

六、實驗設計源程式

電腦科學與技術

黃拉拉三年以上工作經驗 男 27歲 1983年6月25日 居住地 北京 海淀區 139 手機 e mail 最近工作 3 年2個月 公司 xx網路安全技術 北京 研發中心 行業 計算機軟體 職位 軟體測試 最高學歷 學歷 碩士 專業 電腦科學與技術 學校 清華大學 自我評價 1 熟悉軟體驗證的一般理...

電腦科學與技術專業培養方案

適合07 08 09年級 一 培養目標 培養適應我國社會主義建設實際需要,德 智 體全面發展,具有堅實的數理基礎,掌握計算機軟硬體基礎理論及計算機系統設計 研究 開發及綜合應用方法 具有較強的計算機系統程式設計能力和程式分析能力 受到良好的科學實驗素養訓練 了解電腦科學與技術的新發展 掌握一門外語,...

《電腦科學與技術專業導論》體會

計算機專業方面的人才現今是需求量很大的,但是也並不是學了就能找到工作,我們必須得學好學精才行,專攻某一方面。從事這個方面的人,是需要花費很大精力去學習,我們都知道現今從事計算機方面的人在社會上很多的,是太多,就業競爭力是非常強的。可根據自己的興趣去選擇自己想學的,專攻一項,比如軟體開發,網面設計等等...