freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

編譯原理實用教程ppt-展示頁

2025-04-20 22:13本頁面
  

【正文】 計算園柱體表面積的源程序(輸入輸出略)如下所示: Begin/*S=2** R* R +2** R*H */ Real r,h,s。 ㈤ 實例 設(shè)有某一程序設(shè)計語言,其部分單詞二元式編碼如下所示: 單詞 單詞種別 單詞值 integer a NUL real c NUL begin { NUL end } NUL 標(biāo)識符 i 字符串形式符號名 無符號整常數(shù) x 字符串形式數(shù)字 無符號實常數(shù) y 字符串形式數(shù)字 = = NUL * * NUL + + NUL ( ( NUL ) ) NUL , , NUL 。為了輸入和處理的方便,無意義的單詞值用字符串 NUL表示。 ㈣ 編碼原則 ?通常將標(biāo)識符歸為一種,常數(shù)按類型分種,基本字、運算符及界符采用一符一種。 ?val表示單詞的值,在本書中用字符串表示。 ?code表示單詞的種別,用整數(shù)碼表示。 ?有些單詞由單個字符構(gòu)成,而有些單詞由多個字符構(gòu)成。 單詞類型及二元式編碼 ㈠ 單詞類型 任何程序設(shè)計語言的單詞都可將其分為 5種類型,它們是: ?基本字 real、 integer、 …… ?標(biāo)識符 通常為以字母開始的數(shù)字字母串(簡單變量、標(biāo)號、 …… ) ?常數(shù) 整常數(shù)( 123)、實常數(shù)( )、 …… ?運算符 +、 *、 /、 …… ?界符 。每當(dāng)識別出一個單詞,就用單詞的內(nèi)部碼(單詞二元式)替換。 ②語法分析器的自動構(gòu)造 輸入語法規(guī)則,編譯結(jié)果為語法分析器,例 YACC系統(tǒng) (Yet Another CompilerCompiler)。 ㈢自編譯方式 先用機器或匯編語言構(gòu)造一個小的編譯程序(稱為核),然后以此為工具,構(gòu)造出一個能編譯更多語法成分的編譯程序,像滾雪球一樣逐步擴大(實質(zhì)上是上述二種方式的綜合)。 編譯程序的實現(xiàn)方式 ㈠ 用機器指令或匯編語言手工編寫 傳統(tǒng)方式,能充分發(fā)揮機器的硬件性能,但費時,工作量大。 為一個源語言構(gòu)造好前端,若要在某一個特定計算機上構(gòu)造該源語言的編譯程序,只要構(gòu)造這個目標(biāo)機器的后端即可。 ㈠編譯程序前端 (The Front End) 組成:詞法分析器、語法分析器和中間代碼產(chǎn)生器 特點:依賴于被編譯的源語言,輸出結(jié)果用中間代碼描述,和目標(biāo)機器無關(guān)。采取某些措施(例錯誤局部化、錯誤校正等),使得源程序的編譯工作可繼續(xù)下去,盡可能發(fā)現(xiàn)源程序中比較多的錯誤。 表達(dá)式 3+abc*128最終形成的匯編語言程序示意如下: Load R0,abc Mul R0,128 Store R0,T1 Load R0,3 Add R0,T1 Store R0,T2 編譯程序在工作過程中可發(fā)現(xiàn)源程序中各種錯誤,錯誤類型及錯誤處理對策簡述如下: ㈠錯誤類型 ?詞法錯誤(可在詞法分析階段發(fā)現(xiàn)) ?語法錯誤(可在語法分析階段發(fā)現(xiàn)) ?語義錯誤(可在語義分析階段發(fā)現(xiàn)) 出錯處理 (Error Handle) ㈡ 出錯處理 ?一旦發(fā)現(xiàn)錯誤,暫停編譯程序工作,指出錯誤的地點和類型。 常數(shù)的二進制值 0000000000000011( 3) 0000000001000000( 128) …… 常數(shù)表的結(jié)構(gòu)示意如下: ㈣ 目標(biāo)代碼生成 (Code Generation) 執(zhí)行目標(biāo)代碼生成的程序稱為目標(biāo)代碼生成器。 內(nèi)存地址 符號名 種屬 類型 …… …… 未分配 abc 簡單變量 整型 未分配 T1 簡單變量 整型 未分配 T2 簡單變量 整型 …… …… 符號表的結(jié)構(gòu)示意如下: ?常數(shù)表 (Constant Table) 常數(shù)表用于記錄在源程序中出現(xiàn)的常數(shù)。 ?符號表 (Symbol Table) 符號表用于記錄源程序中出現(xiàn)的標(biāo)識符 (Identifier),一個標(biāo)識符往往具有一系列的語義值,它包括標(biāo)識符的名稱、標(biāo)識符的種屬、標(biāo)識符的類型、標(biāo)識符值的存放地址等等。T2分別表示 T1和 T2在符號表中入口; 而 amp。abc表示標(biāo)識符 abc在符號表中入口(即地址); T1和 T2是在翻譯過程中由編譯程序引入的臨時變量, amp。T1,amp。T1) (+,amp。abc,amp。常用的中間代碼有三元式和四元式。 2)執(zhí)行語句的翻譯 根據(jù)不同語句的語義,生成邏輯上等價的中間代碼。 ?Pascal語言認(rèn)為是錯誤的,雖允許混合運算,但不允許將實型量賦值于整型量。 ?標(biāo)準(zhǔn) Fortran語言認(rèn)為是錯誤的,其不允許不同類型的量進行混合運算。B=A+B。 依據(jù):語言的語義內(nèi)涵 語義分析(中間代碼產(chǎn)生)主要工作為: ?語義正確性檢查 ?語義翻譯 ①語義正確性檢查 例 2: begin real A。識別過程相當(dāng)于建立一棵語法樹 算術(shù)表達(dá)式 算術(shù)表達(dá)式 + 項 項 項 * 因子 因子 因子 x(整常數(shù) ) x(整常數(shù) ) i(標(biāo)識符 ) ㈢ 語義分析 (Semantic Analysis) 執(zhí)行語義分析任務(wù)的程序稱為語義分析器或中間代碼產(chǎn)生器。,128) ㈡ 語法分析 (Parsing) 執(zhí)行語法分析任務(wù)的程序稱為語法分析器。, NUL) (39。,abc) (39。,NUL) (39。,3) (39。 ② 二元式編碼 單詞 單詞種別 單詞值 + + NUL NUL * * NUL / / NUL ( ( NUL ) ) NUL … … … 標(biāo)識符 i 字符串形式符號名 整常數(shù) x 字符串形式 整常數(shù) 實常數(shù) y 字符串形式 實常數(shù) … … … 經(jīng)詞分析,算術(shù)表達(dá)式 3+abc*128的單詞內(nèi)部碼(二元式)為: (39。當(dāng)一個單詞種別中可能有多個單詞時,單詞的值才有意義。 任務(wù):字符串形式單詞 ? 編碼形式單詞內(nèi)部碼(二元式) 依據(jù):語言的構(gòu)詞規(guī)則 ①二元式 (Pair) (單詞種別 ,單詞值 ) ?單詞種別:用整數(shù)碼表示(為直觀起見用字符表示),語法分析時用。 圖示如下: 以算術(shù)表達(dá)式 3+abc*128 為例,來說明編譯程序工作過程。 編譯過程概述 典型的編譯程序工作過程是:輸入源程序,對它進行加工處理,最后輸出目標(biāo)程序(機器語言或匯編語言形式)。 ?解釋方式占用內(nèi)存大 顯然解釋程序的優(yōu)點就是編譯程序的缺點,反之亦然,對于編譯程序的優(yōu)缺點不再重復(fù)敘述。 ?變量性質(zhì)可動態(tài)修改。 1)解釋方式的優(yōu)點 ?提供一種直接的交互調(diào)試功能,容易獲得較好的動態(tài)調(diào)試效果。除操作系統(tǒng)外,程序運行無需其它支撐軟件。 編譯方式主要特點是:用戶程序是積極的。 ?由操作系統(tǒng)將用戶程序裝入內(nèi)存后運行。從整體上來看,程序是不完整的,程序中的部分地址尚未確定(例系統(tǒng)函數(shù)的調(diào)用)。 工作方式如下圖所示: ② 編譯方式 (Compile) 將源程序全部譯為目標(biāo)程序,該目標(biāo)程序可在操作系統(tǒng)環(huán)境下直接執(zhí)行,相應(yīng)的翻譯程序稱為編譯程序 (Compiler) ,工作方式如下圖所示: 編譯程序 Compile 連接程序 Link 裝入運行 Run 編輯程序 Edit ASCII碼 二進制 (整體未定位 ) 二進制 (整體定位 ) 源程序 結(jié)果 輸入數(shù)據(jù) ?編輯程序的工作結(jié)果是 ASCII碼形式的源程序。用戶程序運行時,控制點在解釋程序,即用戶程序的執(zhí)行離不開解釋程序。翻譯程序有二種工作方式:編譯和解釋。 ㈣二進制文件 (Binary File) 二進制文件由機器指令即二進制數(shù)構(gòu)成,因二進制數(shù)可能是 26,故文件尾用文件長度 (文件的字節(jié)數(shù) )指示,擴展名通常為 EXE。機器語言程序用二進制文件存儲,匯編語言或中間語言程序用文本文件存儲。當(dāng)換行和回車二個控制字符從文本文件讀入內(nèi)存,在 C語言中是用一個字符(換行)表示。源程序通常用編緝程序輸入,用字符 (ASCII碼 )表示,以文本文件形式存儲。 ?對硬件操作困難,高級語言通常提供匯編語言接口。 所以,程序設(shè)計語言極大地提高了編程效率,大幅度地降低了編程難度。 ?程序設(shè)計語言接近于英語,可理解性好。目前計算機系統(tǒng)一般含有多個程序設(shè)計語言的翻譯程序(例 VC、 VB等),甚至對同一個程序設(shè)計語言配備了多個不同性能的翻譯程序,供用戶選擇使用。 ㈢ 程序設(shè)計語言 程序設(shè)計語言又稱高級語言。 ?和機器語言一樣,匯編語言依附于目標(biāo)計算機。 ?可充分利用硬件特性 所以,匯編語言在一定程度上降低了程序編制和維護的難度。 ①優(yōu)點 ?用符號取代二進制數(shù),提高了程序的可理解性。 ?編程者需協(xié)調(diào)內(nèi)存的使用 所以,機器語言形式的程序編制和維護困難,限制了計算機的推廣和應(yīng)用。機器指令即二進制數(shù),通常由若干字節(jié)構(gòu)成。 2203 8210 2602 6101 1000 f000 Load R0,3 Mul R0,10 Load R1,2 Add R0,R1 Write R0 Halt void main(void) { cout3*16+2。第 1章 編譯系統(tǒng)概述 程序設(shè)計語言的發(fā)展 基本術(shù)語解釋 編譯過程概述 出錯處理 編譯程序的前端和后端 編譯程序的實現(xiàn)方式 程序設(shè)計語言的發(fā)展 匯編語言 (Assemble Language) 機器語言 (Machine Language) 程序設(shè)計語言 (Programming Language) 例計算表達(dá)式 3*16+2的值,實現(xiàn)該計算的機器語言程序、匯編語言程序和程序設(shè)計語言( C語言)程序如下所示。目標(biāo)計算機的系統(tǒng)結(jié)構(gòu)和匯編語言的使用方法詳見本書第 7章。 } 注: 10表示 16 ㈠ 機器語言 機器指令集合稱為機器語言。 ①優(yōu)點 ?計算機可直接識別執(zhí)行 ?可充分利用硬件特性 ② 缺點 ?可讀性差 ?指令系統(tǒng)隨機種而異 ?由于機器指令直接或間接含有絕對地址,增加或減少一條指令,可能會引起多條指令的修改。 ㈡ 匯編語言 用記憶符取代二進制位,存儲地址和匯編語句的序號可用符號名表示。 ?性能較好的匯編語言,可用符號名來表示存儲地址和匯編語句序號,這樣避免了在匯編語句中絕對地址的出現(xiàn)。 ② 缺點 ?匯編語句和機器指令基本上是一對一的,所以匯編語言的編程效率并沒有質(zhì)的提高。 ?需匯編程序,將匯編語言譯成機器語言。程序設(shè)計語言接近于英語,相當(dāng)于工程語言。 ①優(yōu)點 ?獨立于具體計算機,面向過程(函數(shù))或?qū)ο蟆? ?數(shù)據(jù)類型豐富,各種功能的語句齊備,一條語句至少相當(dāng)于幾十條匯編語句。 ②缺點 ?需翻譯程序,將高級語言譯成機器語言或匯編語言。 基本術(shù)語解釋 ㈠ 源語言和源程序 (Source Language and Source Program) 用程序設(shè)計語言書寫的程序,稱為源程序,該程序設(shè)計語言稱為源語言。 ㈡文本文件 (Text File) 文本文件的內(nèi)容由 94個圖形字符‘ !??~?(33126)和 4個控制字符換行 (10)、回車 (13)、空格 (32)、 TAB(9)構(gòu)成,文本文件又稱為 ASCII碼文件,擴展名通常為 TXT,文件尾用控制字符EOF(26)指示。 ㈢ 目標(biāo)語言和目標(biāo)程序 (Target Language and Target Program) 目標(biāo)語言可以是機器語言 (二進制數(shù) ),也可以是匯編語言 (字符 ),或者是其它中間語言 (字符 ),但最終結(jié)果必定是機器語言。 目標(biāo)程序是經(jīng)翻譯程序加工后用目標(biāo)語言表示的程序。 ㈤ 翻譯程序 (Translator) 將源程序譯成邏輯上等價的目標(biāo)程序的程序。 解釋程序 Interpreter 源程序 結(jié)果 輸入數(shù)據(jù) 解釋、執(zhí)行 解釋方式主要特點是:用戶程序是消極的。 ① 解釋方式 (Interpret) 以源程序作為輸入,輸入一句解釋執(zhí)行一句,不產(chǎn)生完整的目標(biāo)程序,相應(yīng)的翻譯程序稱為解釋程序 (Interpreter) 。 ?編譯程序以 ASCII碼形式的源程序為輸入,它的工作結(jié)果是二進制形式的目標(biāo)程序,但并未包括用戶程序中所使用的系統(tǒng)函數(shù)的目標(biāo)代碼。 ?將二進制形式的用戶程序和系統(tǒng)函數(shù)目標(biāo)代碼連接成一個程序,對未確定的地址進行定位。程序在運行過程中讀入數(shù)據(jù),經(jīng)處理加工后輸出計算結(jié)果。用戶程序執(zhí)行時,
點擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦