1. 程式人生 > >編譯原理學習周入門教程--(2)編譯程式的六個工作流程

編譯原理學習周入門教程--(2)編譯程式的六個工作流程

上篇我們介紹了什麼是編譯程式,簡單提到了這個“工廠”工作的六個階段。本篇介紹一下這六個階段。

“工廠”導航圖(翻譯工作的過程):

    

流水線--詞法分析

也就是從左到右一個一個的讀入源程式,識別一個單詞或符號,並進行歸類。類似分析漢語語法,例如,我們輸入一句話,我是中國人。然後進行分析,讀入我可以識別這個單詞,為名詞,我就歸到名詞這類;讀入是,我們歸到動詞這類;讀入中字,不能構成一個可識別的東,接著讀入,中國人,為名詞類。而在計算機中,例如我們寫的某行程式碼,varsum = first + count*10 ; 進行分類,1保留字:var;識別符號:2 sum 3 first4 count

乘號:5*

流水線二--語法分析

在詞法分析的基礎上,將單詞序列分解成各類語法短語,如“程式”,“語句”,“表示式”等。例如通過上面的單詞“我”“中國人”“是”,可以構成兩種形式的語句,我是中國人,中國人是我,都符合<主語><謂語>這樣的語法。

流水線三--語義分析

審查源程式是否有語義的錯誤,當不符合語言規範的時候,程式就會報錯。例如上面的“我是中國人”和“中國人是我”兩個句子,顯然後面的中國人是我就不符合語義了。

流水線四--中間程式碼生成

在進行了語法和語義的分析工作之後,編譯程式將源程式變成了一種內部表示形式,這種內部表示形式叫做中間語言或中間程式碼。(比較抽象些),個人理解為,生成一種介於原始碼和機器語言的形式。

流水線五--程式碼優化

這個階段是對前階段的中間程式碼進行變換或改造,目的是使生成的目的碼更為高效,即節省時間和空間。

流水線六--目的碼生成

也就是把優化後的中間程式碼變換成指令程式碼或彙編程式碼。

這是工作的最後階段,與硬體系統結構,指令系統相關,涉及到硬體系統功能部件運用、機器指令的選擇等等。

---------------------------------

編譯程式編譯性質的語言的翻譯程式,而解釋程式,相對編譯程式簡單些,因為解釋型語言不需要把源程式翻譯成目的碼,也是取分析執行原始碼語句,但一個語句分析結束,就直接執行並顯示結果了。

以上簡單介紹了編譯程式工作的各個階段。理解不到位之處,請留言哈

~