-
大小: 47KB文件類型: .docx金幣: 1下載: 0 次發(fā)布日期: 2022-11-27
- 語言: 其他
- 標(biāo)簽:
資源簡介
《編譯原理》課后習(xí)題答案第一章 第?1?章引論 第?1?題 解釋下列術(shù)語: (1)編譯程序 (2)源程序 (3)目標(biāo)程序 (4)編譯程序的前端 (5)后端 (6)遍 答案: (1)?編譯程序:如果源語言為高級(jí)語言,目標(biāo)語言為某臺(tái)計(jì)算機(jī)上的匯編語言或機(jī)器語 言,則此翻譯程序稱為編譯程序。 (2)?源程序:源語言編寫的程序稱為源程序。 (3)?目標(biāo)程序:目標(biāo)語言書寫的程序稱為目標(biāo)程序。 (4)?編譯程序的前端:它由這樣一些階段組成:這些階段的工作主要依賴于源語言而與 目標(biāo)機(jī)無關(guān)。通常前端包括詞法分析、語法分析、語義分析和中間代碼生成這些階 段,某些優(yōu)化工作也可在前端做,也包括與前端每個(gè)階段相關(guān)的出錯(cuò)處理工作和符 號(hào)表管理等工作。 (5)?后端:指那些依賴于目標(biāo)機(jī)而一般不依賴源語言,只與中間代碼有關(guān)的那些階段, 即目標(biāo)代碼生成,以及相關(guān)出錯(cuò)處理和符號(hào)表操作。 (6)?遍:是對(duì)源程序或其等價(jià)的中間語言程序從頭到尾掃視并完成規(guī)定任務(wù)的過程。 第?2?題 一個(gè)典型的編譯程序通常由哪些部分組成?各部分的主要功能是什么?并畫出編譯程 序的總體結(jié)構(gòu)圖。 答案: 一個(gè)典型的編譯程序通常包含?8?個(gè)組成部分,它們是詞法分析程序、語法分析程序、語 義分析程序、中間代碼生成程序、中間代碼優(yōu)化程序、目標(biāo)代碼生成程序、表格管理程序和 錯(cuò)誤處理程序。其各部分的主要功能簡述如下。 詞法分析程序:輸人源程序,拼單詞、檢查單詞和分析單詞,輸出單詞的機(jī)內(nèi)表達(dá)形式。 語法分析程序:檢查源程序中存在的形式語法錯(cuò)誤,輸出錯(cuò)誤處理信息。 語義分析程序:進(jìn)行語義檢查和分析語義信息,并把分析的結(jié)果保存到各類語義信息表 中。 中間代碼生成程序:按照語義規(guī)則,將語法分析程序分析出的語法單位轉(zhuǎn)換成一定形式 的中間語言代碼,如三元式或四元式。 中間代碼優(yōu)化程序:為了產(chǎn)生高質(zhì)量的目標(biāo)代碼,對(duì)中間代碼進(jìn)行等價(jià)變換處理。 盛威網(wǎng)(www.snwei.com)專業(yè)的計(jì)算機(jī)學(xué)習(xí)網(wǎng)站1 《編譯原理》課后習(xí)題答案第一章 目標(biāo)代碼生成程序:將優(yōu)化后的中間代碼程序轉(zhuǎn)換成目標(biāo)代碼程序。 表格管理程序:負(fù)責(zé)建立、填寫和查找等一系列表格工作。表格的作用是記錄源程序的 各類信息和編譯各階段的進(jìn)展情況,編譯的每個(gè)階段所需信息多數(shù)都從表格中讀取,產(chǎn)生的 中間結(jié)果都記錄在相應(yīng)的表格中。可以說整個(gè)編譯過程就是造表、查表的工作過程。需要指 出的是,這里的“表格管理程序”并不意味著它就是一個(gè)獨(dú)立的表格管理模塊,而是指編譯 程序具有的表格管理功能。 錯(cuò)誤處理程序:處理和校正源程序中存在的詞法、語法和語義錯(cuò)誤。當(dāng)編譯程序發(fā)現(xiàn)源 程序中的錯(cuò)誤時(shí),錯(cuò)誤處理程序負(fù)責(zé)報(bào)告出錯(cuò)的位置和錯(cuò)誤性質(zhì)等信息,同時(shí)對(duì)發(fā)現(xiàn)的錯(cuò)誤 進(jìn)行適當(dāng)?shù)男Uㄐ迯?fù)),目的是使編譯程序能夠繼續(xù)向下進(jìn)行分析和處理。 注意:如果問編譯程序有哪些主要構(gòu)成成分,只要回答六部分就可以。如果搞不清楚, 就回答八部分。 第?3?題 何謂翻譯程序、編譯程序和解釋程序?它們?nèi)咧g有何種關(guān)系? 答案: 翻譯程序是指將用某種語言編寫的程序轉(zhuǎn)換成另一種語言形式的程序的程序,如編譯程 序和匯編程序等。 編譯程序是把用高級(jí)語言編寫的源程序轉(zhuǎn)換(加工)成與之等價(jià)的另一種用低級(jí)語言編 寫的目標(biāo)程序的翻譯程序。 解釋程序是解釋、執(zhí)行高級(jí)語言源程序的程序。解釋方式一般分為兩種:一種方式是, 源程序功能的實(shí)現(xiàn)完全由解釋程序承擔(dān)和完成,即每讀出源程序的一條語句的第一個(gè)單詞, 則依據(jù)這個(gè)單詞把控制轉(zhuǎn)移到實(shí)現(xiàn)這條語句功能的程序部分,該部分負(fù)責(zé)完成這條語句的功 能的實(shí)現(xiàn),完成后返回到解釋程序的總控部分再讀人下一條語句繼續(xù)進(jìn)行解釋、執(zhí)行,如此 反復(fù);另一種方式是,一邊翻譯一邊執(zhí)行,即每讀出源程序的一條語句,解釋程序就將其翻 譯成一段機(jī)器指令并執(zhí)行之,然后再讀人下一條語句繼續(xù)進(jìn)行解釋、執(zhí)行,如此反復(fù)。無論
代碼片段和文件信息
評(píng)論
共有 條評(píng)論