編譯原理練習試驗
表示式計算器的設計與實現
一、 字符集定義
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,老師上課說的編譯原理的階段說的是 詞法分析,語法分析,語義分析,中間 生成,優化,目標 生成 其中語法分析,語義分析,中間 生成稱為語法制導翻譯 語義分析,中間 生成稱...