
- 編譯器設計教程
- 編譯器設計 - 首頁
- 編譯器設計 - 概述
- 編譯器設計 - 架構
- 編譯器設計 - 編譯器的階段
- 編譯器設計 - 詞法分析
- 編譯器 - 正則表示式
- 編譯器設計 - 有限自動機
- 編譯器設計 - 語法分析
- 編譯器設計 - 解析型別
- 編譯器設計 - 自頂向下解析器
- 編譯器設計 - 自底向上解析器
- 編譯器設計 - 錯誤恢復
- 編譯器設計 - 語義分析
- 編譯器 - 執行時環境
- 編譯器設計 - 符號表
- 編譯器 - 中間程式碼
- 編譯器設計 - 程式碼生成
- 編譯器設計 - 程式碼最佳化
- 編譯器設計有用資源
- 編譯器設計 - 快速指南
- 編譯器設計 - 有用資源
編譯器設計 - 編譯器的階段
編譯過程是一系列不同階段的序列。每個階段都從其之前的階段獲取輸入,具有自己的源程式表示,並將輸出饋送到編譯器的下一階段。讓我們瞭解編譯器的各個階段。

詞法分析
掃描程式的第一階段充當文字掃描程式。此階段將原始碼掃描為字元流,並將其轉換為有意義的詞素。詞法分析器以標記的形式表示這些詞素,例如
<token-name, attribute-value>
語法分析
下一階段稱為語法分析或解析。它以詞法分析生成的標記作為輸入,並生成一個解析樹(或語法樹)。在此階段,會根據原始碼語法檢查標記的排列,即解析器檢查標記構成的表示式在語法上是否正確。
語義分析
語義分析檢查所構建的解析樹是否遵循語言規則。例如,值的賦值是在相容的資料型別之間,以及將字串新增到整數。此外,語義分析器跟蹤識別符號、它們的型別和表示式;識別符號是否在使用前宣告等等。語義分析器產生一個帶註釋的語法樹作為輸出。
中間程式碼生成
語義分析之後,編譯器為目標機器生成原始碼的中間程式碼。它表示某個抽象機器的程式。它位於高階語言和機器語言之間。應以易於轉換為目標機器程式碼的方式生成此中間程式碼。
程式碼最佳化
下一階段對中間程式碼進行程式碼最佳化。最佳化可以理解為刪除不必要的程式碼行,並安排語句的順序以加快程式執行速度,而不會浪費資源(CPU、記憶體)。
程式碼生成
在此階段,程式碼生成器獲取中間程式碼的最佳化表示,並將其對映到目標機器語言。程式碼生成器將中間程式碼轉換為(通常)可重定位機器程式碼的序列。機器程式碼指令序列執行與中間程式碼相同的任務。
符號表
它是在編譯器的所有階段都維護的一種資料結構。所有識別符號的名稱及其型別都儲存在此處。符號表使編譯器能夠輕鬆快速地搜尋識別符號記錄並檢索它。符號表也用於作用域管理。
廣告