電腦編譯過程

來源:互聯網
上載者:User

電腦編譯器的基本過程

編譯器是將進階語言的來源程式翻譯成與之等價的目標程式(組合語言或機器語言)

 

1:詞法分析

詞法分析的任務就是把來源程式構成的字串轉換成單詞序號序列.如:標識符,常數,關鍵字,運算子,分界符等.

 

詞法分析用到有限自動機的方法去處理.

有限狀態自動機所接受的語言就是正規語言.使用正規表示是表達.

2:文法分析

文法分析的任務就是在詞法分析的基礎上,根據語言的規則將單詞符號的序列轉換成各類文法單位,如"運算式","語句","程式"等.文法規則就是各類文法單位構成的規則,通過分析確定輸入串是否構成一個文法上正確的程式.如果來源程式沒有錯誤,就構造其文法樹,否則指出語法錯誤,給出診斷資訊.

 

文法分析用到下推自動機處理.

下推自動機除了有限狀態自動機以外,還包括一個長度不受限制的棧.下推自動機把有限狀態自動機擴充為可以存取一個棧.

下推自動機定義:

下推自動機 M 是如下的一個七元組 ( Q, Σ, Γ, δ, q0, Z0,F ) ,其中:

  *Q 是一個有窮狀態集合;

  * Σ 是一個字母表,稱為輸入字母表。

  * Γ 是一個字母表,稱為棧字母表。

  *q0 屬於 Q ,是初始狀態。

  * Z0 屬於 Γ ,是一個特殊的棧符號,稱為棧起始符號。

  *F 包含於 Q ,是終結狀態集合。

  * δ : Q×(Σ∪{ε})×Γ -> Q×Γ* 是 M 的動作函數。

3:語義分析階段

主要檢查程式是否包含語義錯誤,並收集類型資訊供後面代碼產生階段使用.主要進行類型分析檢查.比如整除只能對整數資料進行.

4:中間代碼產生

雖然編譯器可以直接把一個來源程式翻譯成目標程式,但是很多編譯系統的設計中採取獨立與機器的代碼過度.便於編譯系統的建立和移植,最佳化.常見代碼有:文法樹,尾碼式,三地址代碼.

 

尾碼式就是運算式的尾碼運算式.也叫逆波蘭式.

三地址式就四元式.

5:代碼最佳化

中間代碼在時間和空間上往往有很大的浪費.當需要產生高效的目標代碼時,就需要最佳化.最佳化往往在中間代碼最佳化,對程式的控制流程和資料流進行最佳化.

6:目標代碼產生

將中間代碼變成機器指令代碼,或彙編指令代碼.

7:符號表管理

符號表的作用是記錄目標程式中的符號必要資訊,以輔助語義的正確性檢查和代碼產生,在編譯過程需要對符號表進行快速的尋找,插入,刪除,修改操作.可以在詞法分析階段開始,可以放放到文法分析和語義分析階段.

一直延續到目標代碼產生

8:出錯處理

錯誤分類:

靜態錯誤:是編譯階段發現的程式錯誤,分為語法錯誤,和靜態語義錯誤.如單詞拼字錯誤,標點符號錯誤,運算式缺少操作符等.

動態錯誤:又指動態語義錯誤,邏輯錯誤.發生在運行階段,例如數組下標越界等.

編譯器發現錯誤後,採取適當策略修複它們,時的分析錯誤繼續下去,以便找出更多錯誤.


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.