其實這個程式是編譯原理這門課的綜合實驗,前段時間我申請免試又失敗了,原因是有缺課,平時分不夠,早上賴床現在嘗到苦果我也是醉了……沒辦法,逼上梁山,隻好攻克這個大boss以拿下免試資格。
選了一個最簡單的文法,分析了1個多星期,終于決定開始要寫的時候時間已經很緊了。
去實驗室通宵了一晚,在宿舍熬了一晚,睡了3個小時就起來去驗收了。還好是通過了,沒白費勁。
不得不說,編譯原理就是燒腦,知識點都比較抽象,如果資料結構和算法的基礎打得不牢的話,實作起來會感到吃力。
再次感覺到了基礎的重要性,這也是一個收獲吧。
總的來說,相比較之前實作形式化的des加密算法,抽象的編譯器更有難度,寫完也更能讓你感覺到提高。
ps:程式僅供參考,時間有限,沒做太多測試。
給定一個簡單語言的文法描述,本程式是該語言的編譯器前端。
輸入一個符合該文法規則的源檔案,輸出三位址形式的中間代碼。
具體功能有詞法分析,文法分析,分析流程顯示,錯誤提示等。
源程式:

分析過程:
生成中間代碼(三位址形式):
文法:
預測分析表: