語法制導(dǎo)翻譯和中間代碼生成演示文稿_第1頁
語法制導(dǎo)翻譯和中間代碼生成演示文稿_第2頁
語法制導(dǎo)翻譯和中間代碼生成演示文稿_第3頁
語法制導(dǎo)翻譯和中間代碼生成演示文稿_第4頁
語法制導(dǎo)翻譯和中間代碼生成演示文稿_第5頁
已閱讀5頁,還剩45頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

語法制導(dǎo)翻譯和中間代碼生成演示文稿第一頁,共五十頁。優(yōu)選語法制導(dǎo)翻譯和中間代碼生成第二頁,共五十頁。目標(biāo)程序源程序詞法分析語法分析語義分析中間代碼生成代碼優(yōu)化目標(biāo)代碼生成表格管理出錯(cuò)處理第三頁,共五十頁。語義分析基礎(chǔ)語義分析的內(nèi)容主要是類型相容檢查,有以下幾種:各種條件表達(dá)式的類型是不是boolean型?運(yùn)算符的分量類型是否相容?賦值語句的左右部的類型是否相容?形參和實(shí)參的類型是否相容?下標(biāo)表達(dá)式的類型是否為所允許的類型?函數(shù)說明中的函數(shù)類型和返回值的類型是否一致?第四頁,共五十頁。語義分析基礎(chǔ)-語義分析的內(nèi)容(續(xù))其它語義檢查:V[E]中的V是不是變量,而且是數(shù)組類型?V.i中的V是不是變量,而且是記錄類型?i是不是該記錄的域名?x+f(…)中的f是不是函數(shù)名?形參個(gè)數(shù)和實(shí)參個(gè)數(shù)是否一致?每個(gè)使用性標(biāo)識符是否都有聲明?有無標(biāo)識符的重復(fù)聲明?第五頁,共五十頁。語義分析基礎(chǔ)在語義分析同時(shí)產(chǎn)生中間代碼,在這種模式下,語義分析的主要功能如下:語義審查在掃描聲明部分時(shí)構(gòu)造標(biāo)識符的符號表在掃描語句部分時(shí)產(chǎn)生中間代碼中間代碼:獨(dú)立于機(jī)器,復(fù)雜性介于源語言和機(jī)器語言之間,十分接近目標(biāo)機(jī)器指令的一種表示形式。對于中間代碼的產(chǎn)生,是很困難的,因?yàn)檎Z義形式化比語法形式化難得多。目前普遍采用的語義分析方法——語法制導(dǎo)翻譯方法 使用屬性文法為工具來說明程序設(shè)計(jì)語言的語義。第六頁,共五十頁。6.1屬性文法(AttributeGrammar)屬性 對文法的每一個(gè)符號,引進(jìn)一些屬性,這些屬性代表與文法符號相關(guān)的信息,如類型、值、存儲位置等。語義規(guī)則 為文法的每一個(gè)產(chǎn)生式配備的計(jì)算屬性的計(jì)算規(guī)則,稱為語義規(guī)則。屬性文法是帶屬性的一種文法 它的主要思想:首先對于每個(gè)文法符號引進(jìn)相關(guān)的屬性符號;其次對于每個(gè)產(chǎn)生式寫出計(jì)算屬性值的語義規(guī)則第七頁,共五十頁。6.1屬性文法(續(xù))屬性文法的形式定義 一個(gè)屬性文法是一個(gè)三元組,A=(G,V,F)G是一個(gè)上下文無關(guān)文法;V是屬性的有窮集;F是關(guān)于屬性的斷言的有窮集。說明: 每個(gè)屬性與文法符號相聯(lián),N.t表示文法符號N的屬性t。屬性值又稱語義值。存儲屬性值的變量又稱語義變量。每個(gè)斷言與文法的某個(gè)產(chǎn)生式相聯(lián),寫在{}內(nèi)。屬性的斷言又稱語義規(guī)則,它所描述的工作可以包括屬性計(jì)算、靜態(tài)語義檢查、符號表的操作、代碼生成等,有時(shí)寫成函數(shù)或過程段。第八頁,共五十頁。6.1屬性文法(續(xù))例完成類型檢查的屬性文法E→T1+T2 {T1.t=intANDT2.t=int}E→T1orT2 {T1.t=boolANDT2.t=bool}T→num {T.t:=int}T→true {T.t:=bool}T→false {T.t:=bool}

第九頁,共五十頁。6.1屬性文法(續(xù))屬性的分類:綜合屬性:從語法樹的角度來看,如果一個(gè)結(jié)點(diǎn)的某一屬性值是由該結(jié)點(diǎn)的子結(jié)點(diǎn)的屬性值計(jì)算來的,則稱該屬性為綜合屬性。內(nèi)在屬性是綜合屬性。用于“自下而上”傳遞信息第十頁,共五十頁。6.1屬性文法(續(xù))繼承屬性從語法樹的角度來看,若一個(gè)結(jié)點(diǎn)的某一屬性值是由該結(jié)點(diǎn)的兄弟結(jié)點(diǎn)和(或)父結(jié)點(diǎn)的屬性值計(jì)算來的,則稱該屬性為繼承屬性。用于“自上而下”傳遞信息特別說明:終結(jié)符只有綜合屬性,它們由詞法分析器提供非終結(jié)符既有綜合屬性也有繼承屬性,但文法開始符沒有繼承屬性第十一頁,共五十頁。6.1屬性文法(續(xù))例簡單算術(shù)表達(dá)式求值的屬性文法L→E {Print(E.val)}E→E1+T {E.val:=E1.val+T.val}E→T {E.val:=T.val}T→T1*F {T.val:=T1.val*F.val}T→F {T.val:=F.val}F→(E) {F.val:=E.val}F→digit {F.val:=digit.lexval}

E.val、T.val、F.val都是綜合屬性終結(jié)符digit只有綜合屬性lexval

,它的值由詞法分析器提供第十二頁,共五十頁。6.2語法制導(dǎo)翻譯概論語法制導(dǎo)翻譯基本思想:

在語法分析過程中,隨著分析的步步進(jìn)展,每當(dāng)使用一條產(chǎn)生式進(jìn)行推導(dǎo)(對于自上而下分析)或歸約(對于自下而上分析),就執(zhí)行該產(chǎn)生式所對應(yīng)的語義動作(語義子程序),完成相應(yīng)的翻譯工作(產(chǎn)生中間代碼)。語法制導(dǎo)翻譯法不論對自上而下分析或自下而上分析都適用。第十三頁,共五十頁。例簡單算術(shù)表達(dá)式求值的屬性文法E→E1+T {E.val:=E1.val+T.val}E→T {E.val:=T.val}T→T1*digit{T.val:=T1.val*digit.lexval}T→digit {T.val:=digit.lexval}

2+3*5的語法樹:EE1+TT1*5T23T.val=2T.val=3T.val=15E.val=2E.val=17自下而上語法制導(dǎo)翻譯過程:一旦語法分析確認(rèn)輸入符號串是一個(gè)句子,它的值也同時(shí)由語義規(guī)則計(jì)算出來第十四頁,共五十頁。6.3中間代碼的形式定義: 中間代碼是獨(dú)立于機(jī)器,復(fù)雜性介于源語言和機(jī)器語言之間,十分接近目標(biāo)機(jī)器指令的一種表示形式。使用中間代碼的好處:中間代碼與具體機(jī)器無關(guān),便于編譯程序改變目標(biāo)機(jī)便于對中間代碼進(jìn)行與機(jī)器無關(guān)的優(yōu)化表示形式: 逆波蘭式、四元式、三元式、間接三元式和樹形表示第十五頁,共五十頁。6.3.1逆波蘭表示法(后綴式)

逆波蘭表示法 將運(yùn)算對象寫在前面,把運(yùn)算符寫在后面,因而也稱后綴式。 例如:程序設(shè)計(jì)語言中的表示逆波蘭表示a+bab+a+b*cabc*+(a+b)*cab+c*第十六頁,共五十頁。bt1dct1t2t1t3t1=-bt2=c*dt3=t1+t2例:表達(dá)式-b+c*d的后綴式b@cd*+的計(jì)值過程后綴式的計(jì)算機(jī)處理后綴式的最大優(yōu)點(diǎn)是易于計(jì)算機(jī)處理處理過程: 從左到右掃描后綴式,每碰到運(yùn)算對象就推進(jìn)棧;碰到運(yùn)算符就從棧頂彈出相應(yīng)目數(shù)的運(yùn)算對象施加運(yùn)算,并把結(jié)果推進(jìn)棧。最后的結(jié)果留在棧頂。第十七頁,共五十頁。逆波蘭表示法的擴(kuò)充 逆波蘭表示法很容易擴(kuò)充到表達(dá)式以外的范圍 例如:語句逆波蘭表示備注a:=b+cabc+:=:=看作二目運(yùn)算符GOTOLLjumpjump看成一目運(yùn)算符,表示GOTOIfEthenS1elseS2ES1S2¥把¥看成三目運(yùn)算符,表示if–then–else第十八頁,共五十頁。6.3.2三元式三元式

(算符op,第一個(gè)運(yùn)算對象ARG1,第二個(gè)運(yùn)算對象ARG2)說明:三元式的某些運(yùn)算對象是另一個(gè)三元式的編號(代表其結(jié)果)一目算符只需選用一個(gè)運(yùn)算對象(ARG1)多目算符可用連續(xù)幾個(gè)三元式表示 例:

a:=b*c+b*d表示為(1)(*, b, c )(2)(*, b, d )(3)(+, (1), (2) )(4)(:=, (3), a )第十九頁,共五十頁。6.3.3樹形表示樹形表示 二目運(yùn)算對應(yīng)二叉子樹,多目運(yùn)算對應(yīng)多叉子樹,但通常通過引入新結(jié)點(diǎn)表示成二叉子樹。

例如:a:=b*c+b*d表示成:=a+**bcbd葉子結(jié)點(diǎn)代表運(yùn)算量,非葉子結(jié)點(diǎn)代表運(yùn)算符第二十頁,共五十頁。6.3.4四元式四元式 四元式是一種比較普遍采用的中間代碼形式

(算符op,ARG1,ARG2,運(yùn)算結(jié)果RESULT)例如:a:=b*c+b*d的四元式表示如下:(*, b, c, t1)(*, b, d, t2)(+, t1, t2, t3)(:=, t3, -, a)其中ti(i=1,2,3)是編譯程序引入的臨時(shí)變量第二十一頁,共五十頁。6.3.4四元式(續(xù))四元式的優(yōu)點(diǎn):四元式比三元式更便于優(yōu)化 優(yōu)化要求改變運(yùn)算順序或刪除某些運(yùn)算,引起編號的變化。 三元式通過編號引用中間結(jié)果,編號的變化引起麻煩;四元式通過臨時(shí)變量引用中間結(jié)果,編號變化無影響。四元式對生成目標(biāo)代碼有利 四元式表示很類似于三地址指令,很容易轉(zhuǎn)換成機(jī)器代碼。第二十二頁,共五十頁。6.3.4四元式(續(xù))四元式的另一種表示 有時(shí)為了更直觀,把四元式寫成簡單賦值形式或更易理解的形式(三地址碼)四元式直觀形式(1)(*,b,c,t1)(1)t1:=b*c(2)(*,b,d,t2)(2)t2:=b*d(3)(+,t1,t2,t3)(3)t3:=t1+t2(4)(:=,t3,-,a)(4)a:=t3第二十三頁,共五十頁。6.3.5間接三元式為了便于優(yōu)化處理,不直接使用三元式,而是另設(shè)一張指示器表(稱為間接碼表),它按照運(yùn)算的先后順序列出有關(guān)三元式在三元式表中的位置。即:用一張間接碼表輔以三元式表的方法來表示中間代碼。四元式、間接三元式的優(yōu)化同樣方便,三元式的優(yōu)化十分困難。第二十四頁,共五十頁。舉例:給出A+B*(C-D)+E/(C-D)^N的逆波蘭式、四元式、三元式、間接三元式的表示1、逆波蘭式:ABCD-*+ECD-N^/+2、四元式:(-,C,D,T1)(*,B,T1,T2)(+,A,T2,T3)(-,C,D,T4)(^,T4,N,T5)(/,E,T5,T6)(+,T3,T6,T7)第二十五頁,共五十頁。舉例:給出A+B*(C-D)+E/(C-D)^N的逆波蘭式、四元式、三元式、間接三元式的表示3、三元式:(-,C,D)(*,B,1))(+,A,2))(-,C,D)(^,4),N)(/,E,5))(+,3),6))4、間接三元式:(-,C,D)(*,B,1))(+,A,2))(^,1),N)(/,E,4))(+,3),5))間接碼表1)2)3)1)4)5)6)第二十六頁,共五十頁。6.4語法制導(dǎo)翻譯主要討論自下而上的語法制導(dǎo)翻譯在一個(gè)產(chǎn)生式進(jìn)行歸約時(shí),執(zhí)行相應(yīng)的語義動作進(jìn)行翻譯(產(chǎn)生中間代碼)第二十七頁,共五十頁。簡單賦值語句到四元式的翻譯簡單賦值語句 是指不含復(fù)雜數(shù)據(jù)類型(如數(shù)組,記錄等)的賦值語句。賦值語句的語義檢查包括:每個(gè)使用性標(biāo)識符是否都有聲明?運(yùn)算符的分量類型是否相容?賦值語句的左右部的類型是否相容?賦值語句的翻譯目標(biāo): 在賦值語句右部表達(dá)式產(chǎn)生的四元式序列后加一條賦值四元式第二十八頁,共五十頁。簡單賦值語句到四元式的翻譯考慮如下文法描述的簡單賦值句的翻譯:A→i:=EE→E+E|E*E|-E|(E)|i(6.1)A代表賦值語句,設(shè)只含整型變量的運(yùn)算1、需要定義一系列的語義變量和語義過程:NEWTEMP:函數(shù),生成臨時(shí)變量,每次調(diào)用生成一個(gè)新的臨時(shí)變量,如t1,t2,…返回一個(gè)整數(shù)碼作為函數(shù)值。ENTRY(i):函數(shù)過程,查找并取得與i相對應(yīng)的標(biāo)識符在符號表中的位置(入口),簡稱i值。E.PLACE:與E相聯(lián)系的語義變量,表示存放E值的變量名在符號表的入口。GEN(OP,ARG1,ARG1,RESULT):語義過程,將四元式(OP,ARG1,ARG1,RESULT)填進(jìn)四元式表中。第二十九頁,共五十頁。使用上述變量和過程,對文法6.1所定義的賦值語句的翻譯算法可由下述語義動作予以描述簡單賦值語句到四元式的翻譯產(chǎn)生式語義動作A→i:=E{GEN(:=,E.PLACE,-,ENTRY(i))}E→E(1)+E(2){E.PLACE:=NEWTEMP;GEN(+,E(1).PLACE,E(2).PLACE,E.PLACE)}E→E(1)*E(2){E.PLACE:=NEWTEMP;GEN(*,E(1).PLACE,E(2).PLACE,E.PLACE)}E→-E(1){E.PLACE:=NEWTEMP;GEN(@,E(1).PLACE,-,E.PLACE)}E→(E(1)){E.PLACE:=E(1).PLACE}E→i{E.PLACE:=ENTRY(i)}第三十頁,共五十頁。輸入串棧PLACE四元式A:=-B*(C+D):=-B*(C+D)iA-B*(C+D)i:=A_B*(C+D)i:=-A__*(C+D)i:=-iA__B*(C+D)i:=-EA__B(@,B,-,T1)*(C+D)i:=EA_T1(C+D)i:=E*A_T1_C+D)i:=E*(A_T1__+D)i:=E*(iA_T1__C+D)i:=E*(EA_T1__CD)i:=E*(E+A_T1__C_)i:=E*(E+iA_T1__C_D)i:=E*(E+EA_T1__C_D(+,C,D,T2))i:=E*(EA_T1__T2i:=E*(E)A_T1__T2_i:=E*EA_T1_T2(*,T1,T2,T3)i:=EA_T3(:=,T3,-,A)A2例:寫出下面賦值語句A:=-B*(C+D)的自下而上語法制導(dǎo)翻譯的過程,及生成的四元式。A→i:=EE→E+E|E*E|

-E|(E)|i四元式為:(1)(@,B,-,T1)(2)(+,C,D,T2)(3)(*,T1,T2,T3)(4)(:=,T3,-,A)第三十一頁,共五十頁。3、類型轉(zhuǎn)換表達(dá)式中可能出現(xiàn)不同類型的變量和常量若不接受不同類型的運(yùn)算對象混合運(yùn)算,則應(yīng)指出錯(cuò)誤;若接受混合運(yùn)算則要進(jìn)行類型轉(zhuǎn)換處理。例:假定表達(dá)式可以有混合運(yùn)算,變量可以是整型和實(shí)型,且當(dāng)兩個(gè)不同類型的變量進(jìn)行運(yùn)算時(shí)先把整型變量轉(zhuǎn)換成實(shí)型,再進(jìn)行運(yùn)算。用+i,*i,

@i表示整型運(yùn)算,用+r,*r,@r表示實(shí)型運(yùn)算,用一目算符itr表示將整型量轉(zhuǎn)換成實(shí)型量的運(yùn)算令文法6.1中的i既可以是整型也可以是實(shí)型用E.MODE表示E的類型信息,其值為int或r,則產(chǎn)生式E→E(1)opE(2)的語義動作中,關(guān)于E.MODE的語義規(guī)則可定義為:{ifE1.MODE=intANDE2.MODE=intthenE.MODE:=intelseE.MODE:=r}第三十二頁,共五十頁。3、類型轉(zhuǎn)換(續(xù))E→E(1)opE(2)

的語義程序應(yīng)該修改,必要時(shí)產(chǎn)生對運(yùn)算量進(jìn)行類型轉(zhuǎn)換的四元式:(itr,A,-,T),表示把整型A轉(zhuǎn)換成實(shí)型量,結(jié)果存于T中。例:假定輸入串為X:=Y+I*J,其中X,Y為實(shí)型,I,J為整型,則其產(chǎn)生的四元式為:

(1)(*i,I,J,T1)(2)(itr,T1,-,T2)(3)(+r,Y,T2,T3)(4)(:=,T3,-,X)例:關(guān)于產(chǎn)生式E→E(1)opE(2)

的語義子程序更為具體的描述為:第三十三頁,共五十頁。T:=NEWTEMP;IFE1.MODE=intANDE2.MODE=intTHENBEGINGEN(opi,E1.PLACE,E2.PLACE,T);E.MODE:=intENDELSEIFE1.MODE=rANDE2.MODE=rTHENBEGINGEN(opr,E1.PLACE,E2.PLACE,T);E.MODE:=rENDELSEIFE1.MODE=int/*ANDE2.MODE=r*/THENBEGIN U:=NEWTEMP;GEN(itr,E1.PLACE,-,U); GEN(opr,U,E2.PLACE,T);E.MODE:=rENDELSE/*E1.MODE=rANDE2.MODE=int*/

BEGIN U:=NEWTEMP;GEN(itr,E2.PLACE,-,U); GEN(opr,E2.PLACE,U,T);E.MODE:=rENDE.PLACE:=TE→E(1)opE(2)第三十四頁,共五十頁。布爾表達(dá)式的兩個(gè)作用:用于邏輯運(yùn)算,計(jì)算邏輯值作為控制語句(如if-then,while)的條件表達(dá)式布爾表達(dá)式由布爾算符(not,and,or)作用于布爾變量(或常數(shù))或關(guān)系表達(dá)式而形成的。關(guān)系表達(dá)式的形式:E1ropE2,rop是關(guān)系算符(如<=,<,=,≠,>,>=)布爾表達(dá)式到四元式的翻譯第三十五頁,共五十頁。為簡單起見,只考慮如下形式的布爾表達(dá)式的翻譯,文法(6.2) E→EorE|EandE|notE|(E)|idropid|id布爾算符的優(yōu)先順序(從高到低)為:not,and,or,且and和or都服從左結(jié)合,not服從右結(jié)合關(guān)系算符的優(yōu)先級都相同,而且高于任何布爾算符,低于任何算術(shù)算符布爾表達(dá)式到四元式的翻譯-續(xù)第三十六頁,共五十頁。1.布爾表達(dá)式的計(jì)算方法:

采用兩種方法:數(shù)值表示的直接計(jì)算與邏輯表示的短路計(jì)算直接計(jì)算與算術(shù)表達(dá)式計(jì)算方法基本相同 如:1or0and1=1or0的結(jié)果為:1短路計(jì)算即布爾表達(dá)式計(jì)算到某一部分就可以得到結(jié)果,而無需對布爾表達(dá)式進(jìn)行完全計(jì)算。可以用if-then-else來解釋

AorB ifAthentrueelseB AandB ifAthenBelsefalse notA ifAthenfalseelsetrue第三十七頁,共五十頁。2、直接計(jì)算的語法制導(dǎo)翻譯布爾表達(dá)式有兩種翻譯方法。(視計(jì)算機(jī)硬件條件來確定,如果執(zhí)行條件轉(zhuǎn)移效率較低,就用第一種方法)直接計(jì)算的語法制導(dǎo)翻譯如同翻譯算術(shù)表達(dá)式一樣來翻譯布爾表達(dá)式如:AorBandnotC被翻譯成:

(1)(not, C, -, T1) (2)(and, B, T1, T2) (3)(or, A, T2, T3)第三十八頁,共五十頁。3.作為條件控制的布爾式翻譯基本翻譯方法 當(dāng)布爾表達(dá)式用于控制條件時(shí),并不需要計(jì)算表達(dá)式的值,而是一旦確定了表達(dá)式為真或?yàn)榧?,就將控制轉(zhuǎn)向相應(yīng)的代碼序列。S2的代碼S1的代碼E的代碼E.falseE.trueifEthenS1elseS2為布爾表達(dá)式E引入兩個(gè)新的屬性:E.true:表達(dá)式的真出口,它指向表達(dá)式為真時(shí)的轉(zhuǎn)向E.false:表達(dá)式的假出口,它指向表達(dá)式為假時(shí)的轉(zhuǎn)向第三十九頁,共五十頁。把布爾表達(dá)式E翻譯成下述形式的條件轉(zhuǎn)移和無條件轉(zhuǎn)移的四元式序列:(jnz,A,-,p)

若A為真,則轉(zhuǎn)向四元式p(jrop,A,B,p)

若AropB為真,則轉(zhuǎn)向四元式p(j,-,-,p)

無條件轉(zhuǎn)向四元式p3.作為條件控制的布爾式翻譯-續(xù)第四十頁,共五十頁。(1) (jnz,A,-,5) A的真出口為5(2) (j,-,-,3) A的假出口為3(3) (j<,B,D,5) B<D的真出口為5(4) (j,-,-,p+1) B<D的假出口為(p+1)(5) (關(guān)于S1的四元式序列)(p) (j,-,-,q) 跳過S2的代碼段(p+1) (關(guān)于S2的四元式序列)(q)(1)-(4)是布爾式AorB<D

翻譯產(chǎn)生的代碼,全部是條 件轉(zhuǎn)移和無條件轉(zhuǎn)移四元式,沒有布爾運(yùn)算。例:ifAorB<DthenS1elseS2翻譯成如下四元式序列第四十一頁,共五十頁。具體說明如下:

用E.true和E.false分別表示E的“真”和“假”出口轉(zhuǎn)移目標(biāo),在翻譯E時(shí)并未能確定。對于E為aropb

形式,生成代碼如下:

(jrop,a,b,E.true) (j,-,-,E.false)

以結(jié)構(gòu)圖表示:E的代碼E.falseE.true第四十二頁,共五十頁。對于E為E1orE2的形式,生成代碼結(jié)構(gòu)如下:E1.的代碼E2.的代碼E1.falseE2.falseE.falseE1.trueE2.trueE.true若E1為真,則可知E為真,即E1的真出口和E的真出口一樣;若E1為假,則必須計(jì)算E2,因此E1的假出口應(yīng)是E2代碼的第一個(gè)四元式序號;E2的真出口和假出口分別與E的真出口和假出口一樣第四十三頁,共五十頁。E1.的代碼E2.的代碼E1.falseE2.falseE.falseE1.trueE2.trueE.true對于E為E1andE2的形式,生成代碼結(jié)構(gòu)如下:對于E為notE1形式,只需調(diào)換E1的真假出口,即可得到E的真假出口。第四十四頁,共五十頁。例:E為a<borc<dande>f

,翻譯為四元式序列:(1)

( j<, a, b, E.true)(2)

( j, -, -, (3))(3)

( j<, c, d, (5))(4)

( j, -, -, E.false)(5)

( j>, e, f, E.true)(6)

( j, -, -, E.false)舉例真假出口的拉鏈與回填在把布爾式翻譯成一串條件轉(zhuǎn)和無條件轉(zhuǎn)四元式時(shí),真假出口未能在生成四元式時(shí)確定;而且多個(gè)四元式可能有相同的出口第四十五頁,共五十頁。說明:E.true和E.false不能在產(chǎn)生四元式的同時(shí)確定,要等將來目標(biāo)明確時(shí)再回填,為此要記錄這些要回填的四元式。通常采用“拉鏈”的辦法,把需要回填E.true的四元式拉成一條“真”鏈,把需要回填E.false的四元式拉成一條“假”鏈。ifa<borc<dande>fthenS1elseS2翻譯為四元式序列:(1)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論