編譯原理練習試驗

2021-09-02 23:12:00 字數 2325 閱讀 7478

編譯原理練習試驗

表示式計算器的設計與實現

一、 字符集定義

1. 《字元》 → 《數字》│《單界符》│.

2. 《數字》 → 0│《非零數字》

3. 《非零數字》→ 1│2│…│9

4. 《單界符》 →《運算子》│(│)

5. 《運算子》 → +│-│*│/

二、 單詞集定義

6.《單詞》 → 《單界符》│《常數》

7.《常數》 → 《無符號整數》│《無符號浮點數》

8.《無符號整數》 →0│《非零整數》

9.《非零整數》 → 《非零數字》 《數字串》

10.《數字串》 → 《數字》 《數字串》│null

11.《無符號浮點數》 →《無符號整數》. 《數字》 《數字串》

三、 資料型別定義

12.《型別》 → int│double

四、 表示式定義

13.《算術表示式》 → 《項》 + 《算術表示式》│《項》 - 《算術表示式》│《項》

14.《項》 → 《因子》 * 《項》│《因子》 / 《項》│《因子》

15.《因子》 → 《算數量》│- 《因子》

16.《算術量》 → 《常數》│( 《算術表示式》 )

五、 表示式計算器的單詞編碼

單 詞 種別碼 單 詞 種別碼 單 詞 種別碼

測試程式1: 程式檔名test1

10/((1.56-4)+0*-4+0.0000)

樣板輸出1:(要求在螢幕上顯示)

( 5,10,10,int)

(4,/,null,null)

(6,(,null,null)

(6, (,null,null)

( 8,1.56,1.56,double)

(2,-,null,null)

( 5,4,4,int)

(7,),null,null)

(1,+,null,null)

(5,0,0,int)

(3,*,null,null)

(2,-,null,null)

(5,4,4,int)

(1,+,null,null)

(8,0.0000,0.0,double)

(7,),null,null)

測試程式2:程式檔名test2

8-410*[4.0/(3±1.0)]

樣板輸出2:(要求在螢幕上顯示)

(5,8,8,int)

(2,-,null,null)

(5,4,4,int)

(5,10,10,int)

(3,,null,null)

(8,4.0,4.0,double)

(4,/,null,null)

(6,(,null,null)

(5,3,3,int)

(1,+,null,null)

(2,-,null,null)

(8,1.0,1.0,double)

(7,(,null,null)

error:

error1:第2行後面存在非法字元「[」;

error2:第2行)後面存在非法字元「]」

實驗二:表示式計算器的語法、語義分析器的設計與實現(輸出四元式的中間結果和最終的運算結果)。

在實驗一詞法分析的基礎上,以詞法分析輸出結果(單詞串或者成為多元式序列)作為該語法語義分析器的輸入,最後輸出中間**四元式序列,並計算出表示式最後的結果。(共8個上機學時,時間不夠的請自己課下找時間補完)

實現方法上,建議大家採用算符優先分析法或者lr分析方法,進行語法制導翻譯。先根據上述文法中的「表示式定義」構造算符優先關係表或者lr分析表進行語法分析。

檢查要求:

e) 啟動程式後,先輸出作者姓名、班級、學號(可用漢語、英語或拼音)。

f) 請求輸入測試程式名,鍵入程式名後自動開始編譯。

g) 輸出四元式中間**(樣式見樣板輸出3)。

h) 能發現程式的語法錯誤並輸出出錯資訊(樣式見樣板輸出4)。

測試程式3:程式檔名test3

10/((1.56-4)+0*-4+0.0000)

樣板輸出3:(要求在螢幕上顯示

( 0) (-,1.56,4,t1)

( 1) (@,4,null ,t2)

( 2) (*,0,t2,t3)

( 3) (+ ,t1,t3,t4)

( 4) (+ ,t4,0.0000,t5)

( 5) (/,10 ,t5 ,t6)

測試程式4:程式檔名test4

10/(1.56-4)+0*-4+0.0000)

樣板輸出4:(要求在螢幕上顯示)

error

error1:第1行右括號不匹配

《編譯原理 龍書》練習第3章

3.1.1 float limitedsquare x intyywrap a輸入a以後為 b a輸入b以後為 c 2 圖2 29 開始狀態a a a輸入a以後為 b b a輸入b以後為 a b b a c c b b c c a c c b d d d a d d b 3 略3.7.2 1 aab...

B 識別浮點常量問題(編譯原理練習)

b 識別浮點常量問題 編譯原理練習 編譯器在對程式進行編譯之前,首先要進行語法分析。通常,程式被分解成若干個小單元,然後和語言的語法模式進行匹配。在分析表示式的時候,變數的型別在變數宣告的時候就決定了 而常量的型別需要從常量的形式來判斷。假設你是自動編譯器 acm 開發小組的一員,負責pascal語...

編譯原理 編譯原理期末複習1

1,關於文法 乙個文法g可以抽象的分為四元組 vn,vt,p,s vn表示非終結符 vt表示終結符 p表示產生式 s表示開始符 2,老師上課說的編譯原理的階段說的是 詞法分析,語法分析,語義分析,中間 生成,優化,目標 生成 其中語法分析,語義分析,中間 生成稱為語法制導翻譯 語義分析,中間 生成稱...