A. 編譯程序分為哪幾個主要部分
1、詞法分析
詞法分析的任務是對由字元組成的單詞進行處理,從左至右逐個字元地對源程序進行掃描,產生一個個的單詞符號,把作為字元串的源程序改造成為單詞符號串的中間程序。執行詞法分析的程序稱為詞法分析程序或掃描器。
2、語法分析
編譯程序的語法分析器以單詞符號作為輸入,分析單詞符號串是否形成符合語法規則的語法單位,如表達式、賦值、循環等,最後看是否構成一個符合要求的程序,按該語言使用的語法規則分析檢查每條語句是否有正確的邏輯結構,程序是最終的一個語法單位。
3、中間代碼生成
中間代碼是源程序的一種內部表示,或稱中間語言。中間代碼的作用是可使編譯程序的結構在邏輯上更為簡單明確,特別是可使目標代碼的優化比較容易實現。中間代碼即為中間語言程序,中間語言的復雜性介於源程序語言和機器語言之間。
4、代碼優化
代碼優化是指對程序進行多種等價變換,使得從變換後的程序出發,能生成更有效的目標代碼。所謂等價,是指不改變程序的運行結果。所謂有效,主要指目標代碼運行時間較短,以及佔用的存儲空間較小。這種變換稱為優化。
5、目標代碼生成
目標代碼生成是編譯的最後一個階段。目標代碼生成器把語法分析後或優化後的中間代碼變換成目標代碼。
(1)編譯程序三個任務擴展閱讀:
特點
數據結構分析和綜合時所用的主要數據結構,包括符號表、常數表和中間語言程序。符號表由源程序中所用的標識符連同它們的屬性組成。
其中屬性包括種類(如變數、數組、結構、函數、過程等)、類型(如整型、實型、字元串、復型、標號等),以及目標程序所需的其他信息。常數表由源程序中用的常數組成,其中包括常數的機內表示,以及分配給它們的目標程序地址。
分析部分源程序的分析是經過詞法分析、語法分析和語義分析三個步驟實現的。詞法分析由詞法分析程序(又稱為掃描程序)完成。
其任務是識別單詞(即標識符、常數、保留字,以及各種運算符、標點符號等)、造符號表和常數表,以及將源程序換碼為編譯程序易於分析和加工的內部形式。
B. 編譯應用程序主要目的是什麼具體要做哪三個只要步驟
編譯應用程序主要目的是開發和應用軟體及其相關文件
3步驟就是,界面-代碼-編譯
C. 緙栬瘧榪囩▼錛氫粠璇嶆硶鍒嗘瀽鍒扮洰鏍囦唬鐮佺敓鎴
緙栬瘧鍣ㄦ槸涓縐嶅皢楂樼駭璇璦紼嬪簭杞鎹㈡垚鏈哄櫒璇璦紼嬪簭鐨勭▼搴忋傜紪璇戣繃紼嬫槸灝嗘簮紼嬪簭杞鎹㈡垚鐩鏍囩▼搴忕殑榪囩▼銆傜紪璇戣繃紼嬪寘鎷璇嶆硶鍒嗘瀽銆佽娉曞垎鏋愩佽涔夊垎鏋愩佷腑闂翠唬鐮佺敓鎴愬拰鐩鏍囦唬鐮佺敓鎴愮瓑闃舵點傛湰鏂囧皢璇︾粏浠嬬粛緙栬瘧榪囩▼鐨勫悇涓闃舵點
🔍璇嶆硶鍒嗘瀽
緙栬瘧榪囩▼鐨勭涓闃舵墊槸璇嶆硶鍒嗘瀽錛屽畠鐨勪換鍔℃槸瀵規簮紼嬪簭榪涜岄愬瓧鎵鎻忥紝璇嗗埆鍑哄悇涓鍗曡瘝絎﹀彿銆傚湪璇嶆硶鍒嗘瀽榪囩▼涓錛屾垜浠渚濇嵁鐨勬槸璇璦鐨勮瘝娉曡勫垯錛屼篃灝辨槸鎻忚堪鈥滃崟璇嶁濈粨鏋勭殑瑙勫垯銆
📝璇娉曞垎鏋
璇娉曞垎鏋愰樁孌電殑浠誨姟鏄鍦ㄨ瘝娉曞垎鏋愮殑鍩虹涓婏紝鏍規嵁璇璦鐨勮娉曡勫垯灝嗗崟璇嶇﹀彿搴忓垪鍒嗚В鎴愬悇綾昏娉曞崟浣嶃傞氬父錛岃娉曞垎鏋愮殑鐩鐨勬槸紜瀹氭暣涓杈撳叆涓叉槸鍚︽瀯鎴愪竴涓璇娉曚笂姝g『鐨勭▼搴忋
🔍📝璇涔夊垎鏋
璇涔夊垎鏋愰樁孌電殑浠誨姟涓昏佹槸媯鏌ユ簮紼嬪簭鏄鍚﹀寘鍚闈欐佽涔夐敊璇錛屽苟鏀墮泦綾誨瀷淇℃伅渚涘悗闈㈢殑浠g爜鐢熸垚闃舵典嬌鐢ㄣ傝涔夊垎鏋愮殑涓涓閲嶈佸伐浣滄槸榪涜岀被鍨嬪垎鏋愬拰媯鏌ャ
💻涓闂翠唬鐮佺敓鎴
涓闂翠唬鐮佺敓鎴愰樁孌電殑浠誨姟鏄鏍規嵁璇涔夊垎鏋愮殑杈撳嚭鐢熸垚涓闂翠唬鐮併備腑闂翠唬鐮佹槸涓縐嶄粙浜庢簮浠g爜鍜岀洰鏍囦唬鐮佷箣闂寸殑浠g爜錛屽畠鍙浠ヨ榪涗竴姝ヤ紭鍖栧拰杞鎹㈡垚鐩鏍囦唬鐮併
👨💻鐩鏍囦唬鐮佺敓鎴
鐩鏍囦唬鐮佺敓鎴愰樁孌墊槸緙栬瘧鍣ㄥ伐浣滅殑鏈鍚庝竴涓闃舵點傚畠鐨勪換鍔℃槸鎶婁腑闂翠唬鐮佽漿鎹㈡垚鐗瑰畾鏈哄櫒涓婄殑緇濆規寚浠や唬鐮併佸彲閲嶅畾浣嶆寚浠や唬鐮佹垨奼囩紪鎸囦護浠g爜銆傝繖涓闃舵典笌鍏蜂綋鐨勬満鍣ㄥ瘑鍒囩浉鍏熾
D. C語言源程序的編譯過程包括哪三個階段
編譯:將源程序轉換為擴展名為.obj的二進制代碼
連接:將obj文件進行連接,加入庫函數等生成可執行文件
運行:執行可執行文件,有錯返回修改,無錯結束
E. 編譯程序的工作過程一般可以劃分為哪5個基本階段,還自始至終伴隨進行哪兩項工作
1、編譯程序把一個源程序翻譯成目標程序的工作過程分為五個階段:詞法分析;語法分析;中間代碼生成;代碼優化;目標代碼生成。
2、編譯程序的工作過程一般自始至終伴隨進行信息表管理和出錯處理兩項工作。
主要是進行詞法分析和語法分析,又稱為源程序分析,分析過程中發現有語法錯誤,給出提示信息。
(5)編譯程序三個任務擴展閱讀:
解釋程序是一種語言處理程序,在詞法、語法和語義分析方面與編譯程序的工作原理基本相同,但在運行用戶程序時,它直接執行源程序或源程序的內部形式(中間代碼)。因此,解釋程序並不產生目標程序,這是它和編譯程序的主要區別。解釋程序的工作過程如下:
1、由總控程序完成初始化工作。
2、依次從源程序中取出一條語句進行語法檢查,如有錯,輸出錯誤信息;如果通過了語法檢查,則根據語句翻澤成相應的指令並執行它。
3、檢查源程序是否已經全部解釋執行完畢,如果未完成則繼續解釋並執行下一條語句,直到全部語句都處理完畢。
F. 編譯器能夠完成的工作是
1. 詞法分析詞法分析器根據詞法規則識別出源程序中的各個記號(token),每個記號代表一類單詞(lexeme)。源程序中常見的記號可以歸為幾大類:關鍵字、標識符、字面量和特殊符號。詞法分析器的輸入是源程序,輸出是識別的記號流。詞法分析器的任務是把源文件的字元流轉換成記號流。本質上它查看連續的字元然後把它們識別為「單詞」。
2. 語法分析語法分析器根據語法規則識別出記號流中的結構(短語、句子),並構造一棵能夠正確反映該結構的語法樹。
3. 語義分析語義分析器根據語義規則對語法樹中的語法單元進行靜態語義檢查,如果類型檢查和轉換等,其目的在於保證語法正確的結構在語義上也是合法的。
4. 中間代碼生成中間代碼生成器根據語義分析器的輸出生成中間代碼。中間代碼可以有若干種形式,它們的共同特徵是與具體機器無關。最常用的一種中間代碼是三地址碼,它的一種實現方式是四元式。三地址碼的優點是便於閱讀、便於優化。
5. 中間代碼優化
優化是編譯器的一個重要組成部分,由於編譯器將源程序翻譯成中間代碼的工作是機械的、按固定模式進行的,因此,生成的中間代碼往往在時間和空間上有很大浪費。當需要生成高效目標代碼時,就必須進行優化。
6. 目標代碼生成
目標代碼生成是編譯器的最後一個階段。在生成目標代碼時要考慮以下幾個問題:計算機的系統結構、指令系統、寄存器的分配以及內存的組織等。編譯器生成的目標程序代碼可以有多種形式:匯編語言、可重定位二進制代碼、內存形式。
7 符號表管理
符號表的作用是記錄源程序中符號的必要信息,並加以合理組織,從而在編譯器的各個階段能對它們進行快速、准確的查找和操作。符號表中的某些內容甚至要保留到程序的運行階段。
8 出錯處理用戶編寫的源程序中往往會有一些錯誤,可分為靜態錯誤和動態錯誤兩類。所謂動態錯誤,是指源程序中的邏輯錯誤,它們發生在程序運行的時候,也被稱作動態語義錯誤,如變數取值為零時作為除數,數組元素引用時下標出界等。靜態錯誤又可分為語法錯誤和靜態語義錯誤。語法錯誤是指有關語言結構上的錯誤,如單詞拼寫錯、表達式中缺少操作數、begin和end不匹配等。靜態語義錯誤是指分析源程序時可以發現的語言意義上的錯誤,如加法的兩個操作數中一個是整型變數名,而另一個是數組名等。
G. 請簡述編譯分為哪幾個過程,它們的任務分別是什麼
編譯階段也常常劃分為兩大步驟,分析步驟和綜合步驟 分析步驟和綜合步驟 分析步驟是指對源程序的分析 -線性分析(詞法分析或掃描) -層次分析(語法分析) -語義分析 綜合步驟是指後端的工作,為目標程序的生成而進行的綜合