開發PLO編譯器過程的一些體會

2021-07-08 22:22:01 字數 612 閱讀 2552

學了c++有一段時間了,一直沒有適合的專案練手,剛好最近編譯原理課程設計要求做乙個pl0編譯器,於是決定選擇c++來編寫。

一路上可叫乙個坎坷啊,要麼是邏輯錯誤,要麼是語言特性方面不熟悉而導致編譯不通過,或者程式出錯。可以說,三分之一的開發時間都在測試c++的用法= = 。不過還好堅持下來也做完了,其中各種資料結構,各種用,如堆疊,list,map,二維陣列,vector等,讓我熟悉了一下這些常用的資料結構,這個編譯器的開發確實讓我收穫不少。

接下來,我說下幾點我自己的心得體會:

1.首先一定要充分透徹的理解課本原理,在腦子(或紙上)構建好整體的框架,再開始動手寫**。

2.分功能,模組,逐部分完成,例如,詞法分析->語法分析->語義分析->目標**生成。

3.**出現死迴圈,棧溢位等問題,debug找出問題出處,再分析造成這個問題的原因。

4.保持乙個良好的心態(個人認為最重要)。不要為出bug煩躁,不要為找不到bug煩躁(我經常這樣,需改正),累了就休息休息,不要因為寫**而破壞自己的生物鐘。還有一點很重要的是,不要因為別人寫得快而感到自卑,感到壓力,自己和自己比,把握進度,適當休息。

最後,附上源**: (= = ,可以說是自己第乙個c++專案,可能當中有不少地方不規範,希望大家能指出。)

編譯器開發(一)

好吧。在學習完編譯原理之後終於自己做了乙個編譯器的前端。當然只是乙個很簡單的前端。前端分為詞法分析,語法分析和語義分析。語法的結構如下 程式 main 語句塊 語句塊 語句串 語句 語句 賦值語句 條件語句 迴圈語句 賦值語句 id 表示式 條件語句 if 條件 語句塊 else 語句塊 迴圈語句 ...

vs編譯器一些常見錯誤

編譯器出現 error lnk2026 模組對於 safeseh 映像是不安全的。錯誤時,在 專案 屬性 聯結器 命令列 中輸入 safeseh no 即可。控制台專案,編譯器出現 error lnk2019 無法解析的外部符號 winmain 16,該符號在函式 中被引用,在專案 屬性 聯結器 系...

js編譯器的一些簡單原理

有沒有發現在寫 的時候,往往會遇到一些莫名其妙的錯誤,然後時間緊急不得不去網上查閱一些 雖然要實現的功能解決了,但是看被拷貝的 好多真心看不懂,以後遇到諸如此類的問題,如果查閱不到這些 的話還是不會。所以今天給大分享一下內部原理的問題 1.js編譯器編譯的幾條基本原則 a.js預編譯 解釋函式宣告,...