擴充套件pl0編譯器設計 總述

2022-08-31 10:21:09 字數 748 閱讀 9921

所謂編譯器,實際上就是我們程式設計時將輸入的高階語言**轉換成相應的目標**,從而實現將目標**轉換成彙編碼的一種過渡工具。

這種工具根據具體情況不同,可以將不同的高階語言**轉換成不同的目標**,例如將pascal語言**轉換成自己定義的四元式等。

而乙個簡單的編譯器主要是由以下幾個部分組成的:

詞法分析

語法分析

語義分析及生成中間**

**優化

生成目標**

另外還有對於符號表的管理和對錯誤的處理要貫穿始終,當然如果這樣的乙個編譯器是用來提交課程作業的話,還少不了乙個最基本的解釋執行器,這樣乙個編譯器的雛形就完成了。

在實際程式設計的時候,我們除了要對編譯器功能部分的編寫進行了解,同時我們還需要了解我們處理後的和處理前的資料在程式中的存放形式和使用方式。

關於存放形式,我認為乙個簡易的pl0編譯器需要三個重要的儲存空間,如下:

第乙個就是執行棧,用來對執行的時候的資料進行棧模式的操作並且同時能夠起到作為資料儲存的資料棧用途。

第二個就是符號表,這個表顧名思義是用來儲存在你做讀入程式的過程中得到的識別符號、常量、變數等等。

第三個就是指令棧,這個棧同樣只有乙個用途就是在做一遍掃瞄的之後填入在不同時刻要求的不同指令,這些指令依次來操控執行棧和符號表以及可能會用到的暫存器的具體操作。

接下來要做的,就是按部就班的新增每乙個部分所需要新增的功能了。

這些將會在接下來的幾篇部落格裡進行進一步講解。

以上內容如有錯誤或漏洞,希望各位讀者能夠給予更正,謝謝。

編譯原理 PL 0語言詞法分析

輸入pl 0語言源程式 輸出二元式序列,單詞種類,單詞的值 該語言的保留字,識別符號以及數字可用乙個狀態機來識別,其餘符號可用乙個單獨的狀態機來識別。正規式如下 字母開頭 letter letter digit 數字開頭 digit digit 符號省略 將正規式轉換為dfa 首先,規定幾個變數與函...

編譯原理實驗(一)PL 0 語言詞法分析

pl 0語言詞法分析 一 實驗目的 通過完成詞法分析程式,了解詞法分析的過程。編制乙個讀單詞程式,對pl 0 語言進行詞法分析,把輸入的字串形式的源程式分割成乙個個單詞符號,即基本保留字 識別符號 常數 運算子 界符五大類。二 實驗環境 作業系統 window xp 編寫環境 visual c c ...

lex實現擴充套件的pl0語言的詞法分析器(附原始碼)

源 和相關檔案都放在了github上 github link 設計思路 實驗步驟 源 理解編譯器的工作機制,掌握編譯器的工作原理 掌握詞法分析器生成工具lex的用法 輸出型別 輔助定義 digit 0 9 letter a za z identifier integer real ee 0 9 wh...