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

正文內(nèi)容

《編譯原理實(shí)用教程》ppt-全文預(yù)覽

  

【正文】 9。,NUL) ?界符: ,(39。,NUL)、 *(39。,字符串 ) ?運(yùn)算符 :=(39。,NUL) ?標(biāo)識(shí)符: (39。,NUL)、 integer (39。 、 ( 、 ) 、 ③ 單詞編碼 ?基本字: begin (39。)39。39。*39。+39。039。a39。 ②根據(jù)正規(guī)式 Pi構(gòu)造 NFA Mi(1≤i≤N),假定初態(tài)均為 0。 5)用(確定的)狀態(tài)轉(zhuǎn)換圖表示 構(gòu)造過(guò)程采用子集法,從字的識(shí)別角度來(lái)看, DFA M39。 ?將所有含有原 NFA終態(tài) (即 Y)的 DFA M39。 3)結(jié)果處理 ?將 I中的每個(gè)子集視為 DFA M39。 設(shè) I={5,4,3},則 CLOSURE(I) = CLOSURE({5,4,3}) = {5, 4, 3, 6, 2, 8, 7}。 ① I的 ε閉包 I的 ε閉包記為 ε_(tái)CLOSURE(I)或 CLOSURE(I),設(shè) I是 NFA M狀態(tài)集的一個(gè)子集, I的 ε閉包定義為: ?若狀態(tài) s∈ I,則 s∈ ε_(tái)CLOSURE(I)。 對(duì)于 Σ上的每個(gè)正規(guī)式 V,存在一個(gè) Σ上的確定有限自動(dòng)機(jī) M,使得 L(V)=L(M)。等價(jià)。 ?非確定有限自動(dòng)機(jī) M所識(shí)別的字全體記為 L(M)。 ?Z S,是一個(gè)終態(tài)集。 0 1 1 非確定有限自動(dòng)機(jī)( NFA) ㈠ NFA定義 一個(gè)非確定的有限自動(dòng)機(jī) M是一個(gè)五元式 M=( S, Σ, f, S0, Z) ?S是一個(gè)有限集,它的每一個(gè)元素稱為狀態(tài)。 ?DFA M所識(shí)別的字全體記為 L(M)。 39。) = 1 ㈡ 狀態(tài)轉(zhuǎn)換矩陣 函數(shù) f可用矩陣表示,行表示狀態(tài),列表示輸入字符,該矩陣稱為狀態(tài)轉(zhuǎn)換矩陣。) = f(1, 39。}, f, 0, {1}) 其中 f的定義如下: f(0, 39。 例:一個(gè)識(shí)別二進(jìn)制數(shù)的確定有限自動(dòng)機(jī) M=( {0, 1}, {39。 ?Σ是一個(gè)有窮字母表,它的每個(gè)元素稱為一個(gè)輸入字符。 例子詳見(jiàn)本書(shū)第 21頁(yè) ㈡ 實(shí)際意義 ?有窮字母表 Σ是程序設(shè)計(jì)語(yǔ)言所使用的字符集的抽象 ?正規(guī)集是程序設(shè)計(jì)語(yǔ)言單詞集的抽象 ?正規(guī)式是程序設(shè)計(jì)語(yǔ)言構(gòu)詞規(guī)則的抽象 ㈢ 正規(guī)式相等原理 二個(gè)正規(guī)式是相等的,當(dāng)且僅當(dāng)二個(gè)正規(guī)式所表示的正規(guī)集是相等的。推廣到一般,正規(guī)式 α自身的 n次積αα…α 是正規(guī)式,可記為 αn,其相應(yīng)正規(guī)集記為 L(αn),顯然 L(αn)= L(α) n。 ?若 α、 β為正規(guī)式,相應(yīng)正規(guī)集分別記為 L(α)和 L(β),則 α|β是正規(guī)式,其相應(yīng)正規(guī)集記為 L(α|β) ,且令 L(α|β)=L(α)∪ L(β)。 ?根據(jù)定義可以證明 V+ = V1∪ V2∪ …… ∪ Vn(詳見(jiàn)本書(shū) 18頁(yè) )。 ε 空字 { } 空集 {ε} 集合僅有一個(gè)元素 ε ② ∑* ∑上所有字的全體,包括 ε。i39。i++) if(strcmp(token,table[i])==0) return code[i]。 char reserve(char token[]) {//基本字及編碼表 const char *table[]={begin,end,integer,real}。\039。\039。i39。)strcpy(,token)。) concat(token,buf[i++])。 amp。 buf[i]=39。){ while(buf[i]=39。 amp。 39。//用于存放單詞二元式,識(shí)別前清空。 //靜態(tài)局部變量,掃描緩沖區(qū)指示器。char val[20]。 //單詞識(shí)別程序 (掃描器 ),每調(diào)用一次返回一個(gè)單詞的二元式。 struct code_val{ //結(jié)構(gòu)用于存放單詞二元式 char code。若終態(tài)結(jié)點(diǎn)帶有星號(hào) 39。39。39。y39。+39。+39。+39。是預(yù)處理程序添加的),單詞識(shí)別程序(掃描器)共使用狀態(tài)轉(zhuǎn)換圖 5次。 下圖是識(shí)別 、 +和 ++的狀態(tài)轉(zhuǎn)換圖。 將上述三個(gè)圖合并視為一個(gè)圖,初始狀態(tài)為 0。 例,識(shí)別實(shí)常數(shù)和整常數(shù)的狀態(tài)轉(zhuǎn)換圖如下所示: 空格 數(shù)字 數(shù)字 數(shù)字 ③ 小數(shù)點(diǎn) ④ 非數(shù)字 * 非數(shù)字非小數(shù)點(diǎn) 小數(shù)點(diǎn) * 數(shù)字 ⑦ 數(shù)字 ⑧ 非數(shù)字 * 非數(shù)字 (出錯(cuò)) 設(shè)輸入串為 134.+ …… ,從初態(tài) 0出發(fā),經(jīng)路徑 到達(dá)終態(tài) 5,路徑上標(biāo)記依次連接而成的字符串為 134.+,退回多讀的字符 39。在識(shí)別標(biāo)識(shí)符的過(guò)程中,當(dāng)讀入的字符不是字母或數(shù)字,可能是空格,說(shuō)明當(dāng)前正在識(shí)別的單詞已完全讀入。 ④單詞的尾部空格作為單詞的結(jié)束標(biāo)志,單詞的前導(dǎo)空格在識(shí)別單詞前濾去,所以在初態(tài) 0有一個(gè)標(biāo)記為空格的自回路。 ② 一個(gè)狀態(tài)轉(zhuǎn)換圖包含若干個(gè)狀態(tài)(結(jié)點(diǎn)),其中有一個(gè)是初態(tài),用符態(tài)轉(zhuǎn)換圖至少有一個(gè)終態(tài),表示已識(shí)別出一個(gè)字符串(單詞),終態(tài)用雙圈表示。 ㈡ 狀態(tài)轉(zhuǎn)換圖基本概念及應(yīng)用 ①狀態(tài)轉(zhuǎn)換圖是一個(gè)有向圖。 ㈢ 遍和編譯程序的結(jié)構(gòu) 遍決定了編譯程序的結(jié)構(gòu)。當(dāng)一遍工作完之后,內(nèi)存空間大部分被釋放。詞法分析器對(duì)于所有單詞的識(shí)別,最多只要向前看一個(gè)字符就足夠了。 ②將空格、 TAB和換行符視為界符。 解決辦法是超前搜索,一直掃描到右括號(hào)后面的字符。 例標(biāo)準(zhǔn) Fortran對(duì)基本字不加保護(hù),用戶可以把它們用作普通標(biāo)識(shí)符。 then in_ment←false //離開(kāi)注釋 16. end if 17. old_c←cur_c: cur_c← 文件下一個(gè)字符 18. end while 19. i←i+1:buf[i] ←39。 then cur_c← cur_c+32 10. if cur_c=制表符 or cur_c=換行符 then cur_c← 空格 11. i←i+1:buf[i]← cur_c //送入掃描緩沖區(qū) 12. end if 13. end if 14. else //當(dāng)前字符處于注釋中 15. if old_c=39。 and cur_c=換行符 then i←i 1 //是續(xù)行符 8. else 9. if cur_c≥39。 and cur_c=39。 ?當(dāng)讀入 “ /*” ,布爾變量 in_ment的值由 false變?yōu)閠rue;當(dāng)讀入 “ */” , 布爾變量 in_ment的值由 true變?yōu)?false。 ?每調(diào)用一次,將經(jīng)預(yù)處理的源程序全部送入內(nèi)存中的掃描緩沖區(qū),供掃描器識(shí)別單詞。 b e g i n r e a l r , h , s 。為了簡(jiǎn)化判斷,可在預(yù)處理時(shí),將換行符和 TAB統(tǒng)一替換為空格。 詞法分析器可在輸入緩沖區(qū)上直接識(shí)別單詞,但從程序設(shè)計(jì)的角度來(lái)看,若把源程序預(yù)處理一下,則單詞識(shí)別就比較容易。 ?有些語(yǔ)言還提供續(xù)行功能(例 C語(yǔ)言中的續(xù)行符 39。為續(xù)行符。例如,由多個(gè)字符構(gòu)成的單詞有可能被緩沖區(qū)邊界所打斷(留作習(xí)題)。{39。 ㈤ 實(shí)例 設(shè)有某一程序設(shè)計(jì)語(yǔ)言,其部分單詞二元式編碼如下所示: 單詞 單詞種別 單詞值 integer a NUL real c NUL begin { NUL end } NUL 標(biāo)識(shí)符 i 字符串形式符號(hào)名 無(wú)符號(hào)整常數(shù) x 字符串形式數(shù)字 無(wú)符號(hào)實(shí)常數(shù) y 字符串形式數(shù)字 = = NUL * * NUL + + NUL ( ( NUL ) ) NUL , , NUL 。 ㈣ 編碼原則 ?通常將標(biāo)識(shí)符歸為一種,常數(shù)按類型分種,基本字、運(yùn)算符及界符采用一符一種。 ?code表示單詞的種別,用整數(shù)碼表示。 單詞類型及二元式編碼 ㈠ 單詞類型 任何程序設(shè)計(jì)語(yǔ)言的單詞都可將其分為 5種類型,它們是: ?基本字 real、 integer、 …… ?標(biāo)識(shí)符 通常為以字母開(kāi)始的數(shù)字字母串(簡(jiǎn)單變量、標(biāo)號(hào)、 …… ) ?常數(shù) 整常數(shù)( 123)、實(shí)常數(shù)( )、 …… ?運(yùn)算符 +、 *、 /、 …… ?界符 。 ②語(yǔ)法分析器的自動(dòng)構(gòu)造 輸入語(yǔ)法規(guī)則,編譯結(jié)果為語(yǔ)法分析器,例 YACC系統(tǒng) (Yet Another CompilerCompiler)。 編譯程序的實(shí)現(xiàn)方式 ㈠ 用機(jī)器指令或匯編語(yǔ)言手工編寫(xiě) 傳統(tǒng)方式,能充分發(fā)揮機(jī)器的硬件性能,但費(fèi)時(shí),工作量大。 ㈠編譯程序前端 (The Front End) 組成:詞法分析器、語(yǔ)法分析器和中間代碼產(chǎn)生器 特點(diǎn):依賴于被編譯的源語(yǔ)言,輸出結(jié)果用中間代碼描述,和目標(biāo)機(jī)器無(wú)關(guān)。 表達(dá)式 3+abc*128最終形成的匯編語(yǔ)言程序示意如下: Load R0,abc Mul R0,128 Store R0,T1 Load R0,3 Add R0,T1 Store R0,T2 編譯程序在工作過(guò)程中可發(fā)現(xiàn)源程序中各種錯(cuò)誤,錯(cuò)誤類型及錯(cuò)誤處理對(duì)策簡(jiǎn)述如下: ㈠錯(cuò)誤類型 ?詞法錯(cuò)誤(可在詞法分析階段發(fā)現(xiàn)) ?語(yǔ)法錯(cuò)誤(可在語(yǔ)法分析階段發(fā)現(xiàn)) ?語(yǔ)義錯(cuò)誤(可在語(yǔ)義分析階段發(fā)現(xiàn)) 出錯(cuò)處理 (Error Handle) ㈡ 出錯(cuò)處理 ?一旦發(fā)現(xiàn)錯(cuò)誤,暫停編譯程序工作,指出錯(cuò)誤的地點(diǎn)和類型。 內(nèi)存地址 符號(hào)名 種屬 類型 …… …… 未分配 abc 簡(jiǎn)單變量 整型 未分配 T1 簡(jiǎn)單變量 整型 未分配 T2 簡(jiǎn)單變量 整型 …… …… 符號(hào)表的結(jié)構(gòu)示意如下: ?常數(shù)表 (Constant Table) 常數(shù)表用于記錄在源程序中出現(xiàn)的常數(shù)。T2分別表示 T1和 T2在符號(hào)表中入口; 而 amp。T1,amp。abc,amp。 2)執(zhí)行語(yǔ)句的翻譯 根據(jù)不同語(yǔ)句的語(yǔ)義,生成邏輯上等價(jià)的中間代碼。 ?標(biāo)準(zhǔn) Fortran語(yǔ)言認(rèn)為是錯(cuò)誤的,其不允許不同類型的量進(jìn)行混合運(yùn)算。 依據(jù):語(yǔ)言的語(yǔ)義內(nèi)涵 語(yǔ)義分析(中間代碼產(chǎn)生)主要工作為: ?語(yǔ)義正確性檢查 ?語(yǔ)義翻譯 ①語(yǔ)義正確性檢查 例 2: begin real A。,128) ㈡ 語(yǔ)法分析 (Parsing) 執(zhí)行語(yǔ)法分析任務(wù)的程序稱為語(yǔ)法分析器。,abc) (39。,3) (39。當(dāng)一個(gè)單詞種別中可能有多個(gè)單詞時(shí),單詞的值才有意義。 圖示如下: 以算術(shù)表達(dá)式 3+abc*128 為例,來(lái)說(shuō)明編譯程序工作過(guò)程。 ?解釋方式占用內(nèi)存大 顯然解釋程序的優(yōu)點(diǎn)就是編譯程序的缺點(diǎn),反之亦然,對(duì)于編譯程序的優(yōu)缺點(diǎn)不再重復(fù)敘述。 1)解釋方式的優(yōu)點(diǎn) ?提供一種直接的交互調(diào)試功能,容易獲得較好的動(dòng)態(tài)調(diào)試效果。 編譯方式主要特點(diǎn)是:用戶程序是積極的。從整體上來(lái)看,程序是不完整的,程序中的部分地址尚未確定(例系統(tǒng)函數(shù)的調(diào)用)。用戶程序運(yùn)行時(shí),控制點(diǎn)在解釋程序,即用戶程序的執(zhí)行離不開(kāi)解釋程序。 ㈣二進(jìn)制文件 (Binary File) 二進(jìn)制文件由機(jī)器指令即二進(jìn)制數(shù)構(gòu)成,因二進(jìn)制數(shù)可能是 26,故文件尾用文件長(zhǎng)度 (文件的字節(jié)數(shù) )指示,擴(kuò)展名通常為 EXE。當(dāng)換行和回車(chē)二個(gè)控制字符從文本文件讀入內(nèi)存,在 C語(yǔ)言中是用一個(gè)字符(換行)表示。 ?對(duì)硬件操作困難,高級(jí)語(yǔ)言通常提供匯編語(yǔ)言接口。 ?程序設(shè)計(jì)語(yǔ)言接近于英語(yǔ),可理解性好。 ㈢ 程序設(shè)計(jì)語(yǔ)言 程序設(shè)計(jì)語(yǔ)言又稱高級(jí)語(yǔ)言。 ?可充分利用硬件特性 所以,匯編語(yǔ)言在一定程度上降低了程序編制和維護(hù)的難度。 ?編程者需協(xié)調(diào)內(nèi)存的使用 所以,機(jī)器語(yǔ)言形式的程序編制和維護(hù)困難,限制了計(jì)算機(jī)的推廣和應(yīng)用。 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。目標(biāo)計(jì)算機(jī)的系統(tǒng)結(jié)構(gòu)和匯編語(yǔ)言的使用方法詳見(jiàn)本書(shū)第 7章。 ①優(yōu)點(diǎn) ?計(jì)算機(jī)可直接識(shí)別執(zhí)行 ?可充分利用硬件特性 ② 缺點(diǎn) ?可讀性差 ?指令系統(tǒng)隨機(jī)種而異 ?由于機(jī)器指令直接或間接含有絕對(duì)地址,增加或減少一條指令,可能會(huì)引起多條指令的修改。 ?性能較好的匯編語(yǔ)言,可用符號(hào)名來(lái)表示存儲(chǔ)地址和匯編語(yǔ)句序號(hào),這樣避免了在匯編語(yǔ)句中絕對(duì)地址的出現(xiàn)。 ?需匯編程序,將匯編語(yǔ)言譯成機(jī)器語(yǔ)言。 ①優(yōu)點(diǎn) ?獨(dú)立于具體計(jì)算機(jī),面向過(guò)程(函數(shù))或?qū)ο蟆? ②缺點(diǎn) ?需翻譯程序,將高級(jí)語(yǔ)言譯成機(jī)器語(yǔ)言或匯編語(yǔ)言
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1