編譯器有幾個部分
❶ 一個編譯程序有幾部分構成
作為一個功能完整、且強大的編譯器,一般來說包括如下幾個部分:詞法分析、語法分析、語義分析(因為語法上正確的,但是語義不一定正確。例如:老虎吃人、人吃老虎,語法是正確的,都是主謂賓格式,且詞性相同,但是從語義分析上講就是錯誤的)、中間代碼生成、直到生成可執行程序。
❷ 編譯程序分為哪幾個主要部分
1、詞法分析
詞法分析的任務是對由字元組成的單詞進行處理,從左至右逐個字元地對源程序進行掃描,產生一個個的單詞符號,把作為字元串的源程序改造成為單詞符號串的中間程序。執行詞法分析的程序稱為詞法分析程序或掃描器。
2、語法分析
編譯程序的語法分析器以單詞符號作為輸入,分析單詞符號串是否形成符合語法規則的語法單位,如表達式、賦值、循環等,最後看是否構成一個符合要求的程序,按該語言使用的語法規則分析檢查每條語句是否有正確的邏輯結構,程序是最終的一個語法單位。
3、中間代碼生成
中間代碼是源程序的一種內部表示,或稱中間語言。中間代碼的作用是可使編譯程序的結構在邏輯上更為簡單明確,特別是可使目標代碼的優化比較容易實現。中間代碼即為中間語言程序,中間語言的復雜性介於源程序語言和機器語言之間。
4、代碼優化
代碼優化是指對程序進行多種等價變換,使得從變換後的程序出發,能生成更有效的目標代碼。所謂等價,是指不改變程序的運行結果。所謂有效,主要指目標代碼運行時間較短,以及佔用的存儲空間較小。這種變換稱為優化。
5、目標代碼生成
目標代碼生成是編譯的最後一個階段。目標代碼生成器把語法分析後或優化後的中間代碼變換成目標代碼。
(2)編譯器有幾個部分擴展閱讀:
特點
數據結構分析和綜合時所用的主要數據結構,包括符號表、常數表和中間語言程序。符號表由源程序中所用的標識符連同它們的屬性組成。
其中屬性包括種類(如變數、數組、結構、函數、過程等)、類型(如整型、實型、字元串、復型、標號等),以及目標程序所需的其他信息。常數表由源程序中用的常數組成,其中包括常數的機內表示,以及分配給它們的目標程序地址。
分析部分源程序的分析是經過詞法分析、語法分析和語義分析三個步驟實現的。詞法分析由詞法分析程序(又稱為掃描程序)完成。
其任務是識別單詞(即標識符、常數、保留字,以及各種運算符、標點符號等)、造符號表和常數表,以及將源程序換碼為編譯程序易於分析和加工的內部形式。
❸ 編譯器的主要工作分為哪兩部分
編譯和鏈接。
編譯:
1、利用編譯程序從源語言編寫的源程序產生目標程序的過程。
2、用編譯程序產生目標程序的動作。 編譯就是把高級語言變成計算機可以識別的2進制語言,計算機只認識1和0,編譯程序把人們熟悉的語言換成2進制的。
編譯程序把一個源程序翻譯成目標程序的工作過程分為五個階段:詞法分析;語法分析;語義檢查和中間代碼生成;代碼優化;目標代碼生成。主要是進行詞法分析和語法分析,又稱為源程序分析,分析過程中發現有語法錯誤,給出提示信息。
(3)編譯器有幾個部分擴展閱讀
源程序中的單詞符號經掃描器分析,一般產生二元式:單詞種別;單詞自身的值。單詞種別通常用整數編碼,如果一個種別只含一個單詞符號,那麼對這個單詞符號,種別編碼就完全代表它自身的值了。若一個種別含有許多個單詞符號,那麼,對於它的每個單詞符號,除了給出種別編碼以外,還應給出自身的值。
詞法分析器一般來說有兩種方法構造:手工構造和自動生成。手工構造可使用狀態圖進行工作,自動生成使用確定的有限自動機來實現。
❹ 編譯器有哪幾部分構成.編譯原理
1. 詞法分析
詞法分析器根據詞法規則識別出源程序
中的各個記號(token),每個記號代表一類單詞(lexeme)。源程序中常見的記號可以歸為幾大類:關鍵字、標識符、字面量和特殊符號。詞法分析器
的輸入是源程序,輸出是識別的記號流。詞法分析器的任務是把源文件的字元流轉換成記號流。本質上它查看連續的字元然後把它們識別為「單詞」。
2. 語法分析
語法分析器根據語法規則識別出記號流中的結構(短語、句子),並構造一棵能夠正確反映該結構的語法樹。
3. 語義分析
語義分析器根據語義規則對語法樹中的語法單元進行靜態語義檢查,如果類型檢查和轉換等,其目的在於保證語法正確的結構在語義上也是合法的。
4. 中間代碼生成
中間代碼生成器根據語義分析器的輸出生成中間代碼。中間代碼可以有若干種形式,它們的共同特徵是與具體機器無關。最常用的一種中間代碼是三地址碼,它的一種實現方式是四元式。三地址碼的優點是便於閱讀、便於優化。
❺ 一個編譯器至少包含三個部分的進程是什麼
一個典型的編譯程序通常包含8個組成部分,它們是詞法分析程序、語法分析程序、語義分析程序、中間代碼生成程序、中間代碼優化程序、目標代碼生成程序、表格管理程序和錯誤處理程序。
(1) 編譯程序:如果源語言為高級語言,目標語言為某台計算機上的匯編語言或機器語
言,則此翻譯程序稱為編譯程序。
(2) 源程序:源語言編寫的程序稱為源程序。
(3) 目標程序:目標語言書寫的程序稱為目標程序。
(4) 編譯程序的前端:它由這樣一些階段組成:這些階段的工作主要依賴於源語言而與
目標機無關。通常前端包括詞法分析、語法分析、語義分析和中間代碼生成這些階
段,某些優化工作也可在前端做,也包括與前端每個階段相關的出錯處理工作和符
號表管理等工作。
(5) 後端:指那些依賴於目標機而一般不依賴源語言,只與中間代碼有關的那些階段,
即目標代碼生成,以及相關出錯處理和符號表操作。
(6) 遍:是對源程序或其等價的中間語言程序從頭到尾掃視並完成規定任務的過程。
詞法分析程序:輸人源程序,拼單詞、檢查單詞和分析單詞,輸出單詞的機內表達形式。
語法分析程序:檢查源程序中存在的形式語法錯誤,輸出錯誤處理信息。
語義分析程序:進行語義檢查和分析語義信息,並把分析的結果保存到各類語義信息表中。
中間代碼生成程序:按照語義規則,將語法分析程序分析出的語法單位轉換成一定形式的中間語言代碼,如三元式或四元式。
中間代碼優化程序:為了產生高質量的目標代碼,對中間代碼進行等價變換處理