版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、編譯原理第五章 語法制導翻譯第1頁,共96頁,2022年,5月20日,20點33分,星期二第五章 語法制導翻譯本章內(nèi)容5.1 語法制導翻譯概述 一、語法制導翻譯定義 二、語法制導翻譯原理 三、語法制導翻譯實現(xiàn)5.2 中間語言 一、簡介 二、逆波蘭表示 三、三元式 四、樹形表示 五、四元式5.3 自底向上語法制導翻譯 一、簡單算術(shù)表達式和賦值語句的翻譯 二、布爾表達式的翻譯 三、控制語句翻譯第2頁,共96頁,2022年,5月20日,20點33分,星期二5.1 語法制導翻譯概述 一、語法制導翻譯定義1、問題的引入一個程序成功地通過詞法分析和語法分析,只能說明它是一個合適程序,但是對程序內(nèi)部的邏輯含
2、義并未加以考慮,從整個編譯程序來看,詞法分析和語法分析僅僅是編譯程序一部分,編譯程序最終的目的是將源程序翻譯成可供計算機直接執(zhí)行的目標程序。某些編譯程序是直接生成機器語言或匯編語言形式的目標代碼,而有些則并非如此。語法制導翻譯方法先將源程序單詞序列翻譯成中間語言,然后再將中間語言翻譯成目標程序。第3頁,共96頁,2022年,5月20日,20點33分,星期二5.1 語法制導翻譯概述 一、語法制導翻譯定義2、定義語法制導翻譯就是以語法分析為主導的語義處理。在語法分析過程中嵌入語義動作,即調(diào)用對應的語義子程序。E+EE*EEabc例如在前面語法分析時分析a+b*c表達式。語法分析是將a歸約E,再將b
3、歸約E,將c歸約為E,然后再將 E*E 歸約成E,再將 E+E 歸約成E,所以a+b*c是一個合法的句子。如果考慮語義,在歸約過程中加上語義動作,先將a歸約為E,將a值賦給E后,b歸約成E,同時將b值賦給E,在將c值賦給E,然后再將b*c(E*E)給右E,再將a 給E,最后再將兩個E值相加就是最終結(jié)果。這就是語法制導翻譯的基本思想,在語法分析同時進行語義分析。第4頁,共96頁,2022年,5月20日,20點33分,星期二5.1 語法制導翻譯概述二、語法制導翻譯原理1、語法制導翻譯的原理語法制導翻譯的原理就是先為每個文法規(guī)確定相應的語義,即編寫出相應語義處理子程序,整個分析是以語法分析為主導。在
4、自頂向下語法分析時,若某一個規(guī)則右部與輸入串相匹配時,或者,在自底向上語法分析時,當一個規(guī)則被用于進行歸約時,此時該規(guī)則對應的語義子程序就進入工作,完成既定翻譯任務,產(chǎn)生與語義相應的中間代碼或目標代碼。第5頁,共96頁,2022年,5月20日,20點33分,星期二5.1 語法制導翻譯概述二、語法制導翻譯原理2、語義動作語義動作:給每個文法符號X賦以各種不同的語義值 這里的語義值不一定指具體數(shù)值,可以是“類型”、“種屬”、“地址”或“代碼”等,我們用記號XTYPE、XCAT或XVAL來表示這些值。如果某規(guī)則的右部有同一符號若干個出現(xiàn),那么我們就用上角標來區(qū)別這些符號第6頁,共96頁,2022年,
5、5月20日,20點33分,星期二5.1 語法制導翻譯概述二、語法制導翻譯原理2、語義動作舉例:假定有如下規(guī)則和語義動作 :E=E(1)+E(2) EVAL:=E(1)VAL+E(2)VAL語義動作寫在規(guī)則之后的花括號里,這里語義動作是表明與規(guī)則左部文法符號E相關(guān)的語義值EVAL,它是通過把規(guī)則右部文法符號的語義值E(1)VAL和E(2)VAL加在一起來決定的,規(guī)則中終結(jié)符號“+”按語義規(guī)則被解釋成通常“加”的意思。各規(guī)則的語義動作可以對表達式計算,也可以生成中間代碼,甚至還可以來產(chǎn)生目標指令。第7頁,共96頁,2022年,5月20日,20點33分,星期二5.1 語法制導翻譯概述二、語法制導翻譯
6、原理2、語義動作舉例: 設(shè)有文法 E=E+E E=digitdigit代表0和9之間任一數(shù)字,如果僅是為了求值,則語義動作: (1) E=E(1)+E(2) EVAL:=E(1)VAL+E(2)VAL(2) E=digit EVAL:=digit假定語義動作中的“+”代表是整型加算術(shù)運算。 規(guī)則(1)的語義動作為:E的語義值EVAL等于E(1) 和E(2)的語義值E(1) VAL和E(2)VAL之“和.規(guī)則(2)的語義動作為: E的語義值為09之間任一個數(shù).這樣,按照它們的語義動作,我們在分析每個句子的同時一步一步地算出每個句子的值 .第8頁,共96頁,2022年,5月20日,20點33分,星
7、期二5.1 語法制導翻譯概述二、語法制導翻譯原理2、語義動作舉例: 設(shè)有文法 E=E+E E=digit如果采用自底向上歸約過程。首先考慮底層最左E的結(jié)點,這個結(jié)點對應于規(guī)則E=1和語義動作EVAL:=1。這樣,在底層最左的E處值1與語義值EVAL相關(guān)。E+EE+EE123輸入串1+2+3,通過語法樹來看如何進行語法制導翻譯,來求出該句子最后值:第9頁,共96頁,2022年,5月20日,20點33分,星期二5.1 語法制導翻譯概述二、語法制導翻譯原理2、語義動作舉例: 設(shè)有文法 E=E+E E=digit輸入串1+2+3,通過語法樹來看如何進行語法制導翻譯,來求出該句子最后值:在圖所示子樹中,
8、子樹根處EVAL的語義值是3,這可用語義動作 EVAL:=E(1)VAL+E(2)VAL算出。使用這個語義動作時,以底部最左的 E 的EVAL的值來代替E(1)VAL ,而以右邊 E 的EVAL的值代替E(2)VAL 。E+EE VAL=1E12E VAL=2類似地,值2與該結(jié)點的右兄弟的語義值EVAL相關(guān)。如下圖所示第10頁,共96頁,2022年,5月20日,20點33分,星期二5.1 語法制導翻譯概述二、語法制導翻譯原理2、語義動作舉例: 設(shè)有文法 E=E+E E=digit輸入串1+2+3,通過語法樹來看如何進行語法制導翻譯,來求出該句子最后值:E+E VAL=6EE VAL=3EE V
9、AL=3+EE VAL=1EE VAL=2123以這種方法繼續(xù)下去,我們就推出如圖所示整個語法樹每個結(jié)點的語義值。第11頁,共96頁,2022年,5月20日,20點33分,星期二5.1 語法制導翻譯概述三、語法制導翻譯實現(xiàn)2、語義動作上面原則上討論了語法制導翻譯的原理,下面通過一個自底向上LR分析看如何實現(xiàn)語法制導翻譯。例如有規(guī)則: (1) X= 動作1 (2) Y= 動作2 (3) A=XY 動作3當使用規(guī)則(1)、(2)歸約時,動作1和動作2的工作結(jié)果有關(guān)信息(作為X和Y的語義值)應暫時保存下來,以便以后用規(guī)則(3)在歸約時(動作3)可引用這些值。 第12頁,共96頁,2022年,5月20
10、日,20點33分,星期二5.1 語法制導翻譯概述三、語法制導翻譯實現(xiàn)2、語義動作現(xiàn)在對LR分析器的分析棧加以擴充,為了在語法分析過程中平行地進行語義處理,使得每個文法符號之后都跟著它的語義值,因此,設(shè)置一個語義信息棧,為了清晰起見,我們把這個分析棧每一項分三部分組成:狀態(tài)STATE、文法符號SYM和語義值VAL。SmYVALYSm-1XVALXS0#TOPSTATEVALSYM第13頁,共96頁,2022年,5月20日,20點33分,星期二5.1 語法制導翻譯概述二、語法制導翻譯原理2、語義動作舉例: 考慮下面文法及其語義描述: 規(guī) 則 語義動作 (0) S=E print EVAL(1) E
11、=E(1)+E(2) EVAL:=E(1)VAL+E(2)VAL(2) E=E(1)*E(2) EVAL:=E(1)VAL*E(2)VAL(3) E=(E(1) EVAL=E(1)VAL(4) E=i EVAL:=LEXVAL其中:語義動作中的+、*代表整型加、乘算術(shù)運算,而且詞法分析程序?qū)⑺蛠砻總€i的整型內(nèi)部值LEXVAL。 假定語義動作是緊接在歸約之后執(zhí)行的。第14頁,共96頁,2022年,5月20日,20點33分,星期二5.1 語法制導翻譯概述二、語法制導翻譯原理2、語義動作舉例: 上面所列的語義動作就相當于下面所列的程序段:規(guī) 則 程序段 (0) S=E print VALTOP(1)
12、 E=E(1)+E(2) VALTOP:=VALTOP + VALTOP+2(2) E=E(1)*E(2) VALTOP:=VALTOP * VALTOP+2(3) E=(E(1) VALTOP:=VALTOP+1(4) E=i VALTOP:=LEXVAL由于有一個“+“號,所以為TOP+2由于有一個“(“號,所以為TOP+1由于有一個“*“號,所以為TOP+2第15頁,共96頁,2022年,5月20日,20點33分,星期二5.1 語法制導翻譯概述二、語法制導翻譯原理2、語義動作舉例:根據(jù)上述程序段,若輸入2*3+2,就有如圖所示的語法制導翻譯的分析樹。SEEEEE+*223E VAL=8E
13、 VAL=6E VAL=4E VAL=2E VAL=3LEXVAL=2LEXVAL=3LEXVAL=2第16頁,共96頁,2022年,5月20日,20點33分,星期二5.1 語法制導翻譯概述對2*3+2進行分析和翻譯(實為計算值)該輸入串過程如下表所示。當狀態(tài)1面臨#時對應的分析動作為acc(接受),此時,相應的語義動作為print VALTOP,即輸出語義程序的計值結(jié)果:8。步驟狀態(tài)棧語義值棧符號棧輸入串歸約規(guī)則及動作102*3+2S32032*3+2r43012E*3+2GOTO0,E=1, S540152E*3+2S3501532E*3+2r46015823E*E+2GOTO5,E=8,
14、 r2701(6)E+2GOTO0,E=1, S48014(6)E+2S390143(6)E+2r4100147(6)2E+EGOTO4,E=7, r11101(8)Eacc第17頁,共96頁,2022年,5月20日,20點33分,星期二第五章 語法制導翻譯本章內(nèi)容5.1 語法制導翻譯概述 一、語法制導翻譯定義 二、語法制導翻譯原理 三、語法制導翻譯實現(xiàn)5.2 中間語言 一、簡介 二、逆波蘭表示 三、三元式 四、樹形表示 五、四元式5.3 自底向上語法制導翻譯 一、簡單算術(shù)表達式和賦值語句的翻譯 二、布爾表達式的翻譯 三、控制語句翻譯第18頁,共96頁,2022年,5月20日,20點33分,星
15、期二5.2 中間語言一、簡介1、什么是中間語言就是和源程序等價的一種編碼形式,其復雜性介于源程序和機器語言中間。源程序前端中間代碼代碼優(yōu)化器中間代碼代碼生成器目標程序符號表第19頁,共96頁,2022年,5月20日,20點33分,星期二5.2 中間語言一、簡介2、為什么要引入中間語言(1)為了使編譯程序結(jié)構(gòu)上邏輯簡單明確(2)為了便于目標代碼優(yōu)化工作(3)便于目標代碼生成第20頁,共96頁,2022年,5月20日,20點33分,星期二5.2 中間語言二、逆波蘭表示1、表達式的逆波蘭表示(1)波蘭表示的概念 對于一個算術(shù)表達式A+B或邏輯表達式AB,根據(jù)運算符和運算 對象的位置關(guān)系,可分為三種等
16、價表示形式:1) 中綴表示法 運算符在運算對象中間,如:A+B,A B,a+b*(c+d*(e-f)等.2) 后綴表示法 將運算符放在運算對象后面,通常將后綴表示稱為逆波蘭表示. 如:A+B表示為AB+,A B表示為AB,a+b*c表示為abc*+ 對于逆波蘭表示非常適合機械處理,只要從左到右按運算順序計算3) 前綴表示法 即將運算符放在運算對象前面。如: +AB, AB,第21頁,共96頁,2022年,5月20日,20點33分,星期二5.2 中間語言二、逆波蘭表示1、表達式的逆波蘭表示(1)波蘭表示的概念舉例:表達式中綴表示和后綴表示中綴表示后綴表示a+b*ca*(b+c/d)a*b+(c-
17、d)/ca+b=3dc(a+b)*(c-d)ababcabc*+abcd/+*ab*cd-c/+ab+3=dcab+cd-*ababc#,向下進運算符棧#B*C#第28頁,共96頁,2022年,5月20日,20點33分,星期二5.2 中間語言二、逆波蘭表示1、表達式的逆波蘭表示(3)逆波蘭(后綴)表示的形成圖解形式來說明A+B*C形成的過程:AB運算對象B移進對象棧#*C#第29頁,共96頁,2022年,5月20日,20點33分,星期二5.2 中間語言二、逆波蘭表示1、表達式的逆波蘭表示(3)逆波蘭(后綴)表示的形成圖解形式來說明A+B*C形成的過程:AB*+,*向下進運算符棧*#C#第30頁
18、,共96頁,2022年,5月20日,20點33分,星期二5.2 中間語言二、逆波蘭表示1、表達式的逆波蘭表示(3)逆波蘭(后綴)表示的形成圖解形式來說明A+B*C形成的過程:ABC運算對象C移進對象棧*#第31頁,共96頁,2022年,5月20日,20點33分,星期二5.2 中間語言二、逆波蘭表示1、表達式的逆波蘭表示(3)逆波蘭(后綴)表示的形成圖解形式來說明A+B*C形成的過程:ABC*#*,*退棧往左#第32頁,共96頁,2022年,5月20日,20點33分,星期二5.2 中間語言二、逆波蘭表示1、表達式的逆波蘭表示(3)逆波蘭(后綴)表示的形成圖解形式來說明A+B*C形成的過程:ABC
19、*#,退棧往左#第33頁,共96頁,2022年,5月20日,20點33分,星期二5.2 中間語言二、逆波蘭表示2、逆波蘭表示的擴充 只要遵守在運算對象后直接緊跟運算符這條規(guī)則,就可以簡單地把這種后綴式擴充到比通常表達式更大范圍,即擴充到程序語言的其它語法成分。第34頁,共96頁,2022年,5月20日,20點33分,星期二5.2 中間語言二、逆波蘭表示2、逆波蘭表示的擴充(1)賦值語句 左部:=表達式 把賦值號“:=”看成是一個賦值運算符,它的后綴式為 左部表達式的后綴式:= 例如:x:=5 x:=a*b-c/d 的后綴式分別為 x5:= xab*cd/-:= 第35頁,共96頁,2022年,
20、5月20日,20點33分,星期二5.2 中間語言二、逆波蘭表示2、逆波蘭表示的擴充(1)賦值語句賦值語句的后綴式的處理方法和后綴式表達式處理方法類似。不同的是棧中保存的是左部變量的地址,而不是其值,在賦值運算處理結(jié)束后,不產(chǎn)生任何中間計算結(jié)果,因而也不存在保存中間計算結(jié)果的問題,而是把存放在運算棧中棧頂兩項左部和表達式的值這兩個量退掉。第36頁,共96頁,2022年,5月20日,20點33分,星期二5.2 中間語言二、逆波蘭表示2、逆波蘭表示的擴充(1)條件語句 if E then S1 else S對于用后綴式來表示條件語句,我們假定后綴式中各符號存放在一個一維數(shù)組POST1n之中,每一個數(shù)
21、組元素存放一個運算對象或運算符。同時約定如下幾個符號:JUMP表示無條件轉(zhuǎn);JLT表示小于轉(zhuǎn);JEZ表示零轉(zhuǎn)。后綴式P JUMP表示無條件轉(zhuǎn)移到下標P所指那個元素POSTp(即從該符號開始繼續(xù)執(zhí)行)。 后綴式e P JEZ表示當后綴表達式e的值為零時,則轉(zhuǎn)移至POSTP。后綴式e1 e2 P JLT表示當后綴表達式e1小于后綴表達式e2時, 則轉(zhuǎn)移至POSTP第37頁,共96頁,2022年,5月20日,20點33分,星期二5.2 中間語言二、逆波蘭表示2、逆波蘭表示的擴充(1)條件語句舉例:對于形如if e then S1 else S的條件語句可按后綴式寫成 ep1JEZ S1p2JUMP
22、S2我們約定e0時,該條件語句的值是S1,否則等于S2 。對于后綴式條件語句中:e、S1和S2 分別是e、S1和S2的后綴式。此外, p1表示S2 在數(shù)組POST的起始位置, p2表示S2 之后那個符號位置。上述后綴式條件語句的意思是,若e=0時,則轉(zhuǎn)至POSTp1對S2 進行計算,否則計算S1,然后轉(zhuǎn)到POST p1的位置。 第38頁,共96頁,2022年,5月20日,20點33分,星期二5.2 中間語言二、逆波蘭表示3、語法制導翻譯生成后綴式例4.15文法GE 如何按語法制導翻譯方法把一個中綴形式的簡單算術(shù)表達式翻譯成為后綴式? 規(guī)則 語義動作(1) E=E(1)+T ECODE:=E(1
23、).CODET.CODE+(2) E=T ECODE:=TCODE(3) T=T(1)*F TCODE:=T(1)CODEFCODE*(4) T=F TCODE:=FCODE(5) F=(E) FCODE:=ECODE(6) F=i FCODE:=i幾點說明: E.CODE,T.CODE,F.CODE表示構(gòu)成后綴式的符號串 符號“”表示兩個串的“捻接”運算,即并置運算 .顯然, E(1).CODET.CODE+ 是E.CODE , 因為符號在后,其它類似.第39頁,共96頁,2022年,5月20日,20點33分,星期二5.2 中間語言二、逆波蘭表示3、語法制導翻譯生成后綴式如果我們設(shè)置一個數(shù)組
24、存放后綴式,那么語義動作就可以不涉及捻接運算。令這個數(shù)組為POST,p為下標,初值為1。相應的語義子程序: (1) E=E(1)+T POSTp:=+;p:=p+1(2) E=T (3) T=T(1)*F POSTp:=*;p:=p+1(4) T=F (5) F=(E) (6) F=i POSTp:=i;p:=p+1E(1).CODET.CODE+POST(P)第40頁,共96頁,2022年,5月20日,20點33分,星期二5.2 中間語言二、逆波蘭表示3、語法制導翻譯生成后綴式以表達式a+b*c為例按照P118.表4.15文法GELR分析表給出語法制導翻譯產(chǎn)生后綴式過程,其中SUBK表示第K
25、個規(guī)則相對應的語義子程序。第41頁,共96頁,2022年,5月20日,20點33分,星期二步驟狀態(tài)棧符號棧輸入串歸約規(guī)則調(diào)用子程序后綴式10a+b*c#205a+b*c#F:=iSUB6a303F+b*c#T:=FSUB4a402T+b*c#E(1):=TSUB2a501E(1)+b*c#a6016E(1)+b*c#a70165E(1)+b*c#F:=iSUB6ab80163E(1)+F*c#T(1):=FSUB4ab90169E(1)+T(1) *c#ab1001697E(1)+T(1) * c#ab11016975E(1)+T* c#F:=iSUB6abc12016970E(1)+T(1)
26、 * F#T:=T(1) *FSUB3abc*130169E(1)+T#E:=E(1) +TSUB1abc*+1401E#abc*+第42頁,共96頁,2022年,5月20日,20點33分,星期二5.2 中間語言三、三元式1、三元式定義三元式的一般形式為 (i) (OP, ARG1, ARG2)其中:(i)為三元式的編號,不同三元式不能有相同的編號 OP是運算符部分 ARG1和ARG2是運算對象部分,它們或者指向符號表登記項指示器(對于運算對象是常數(shù)或標識符的情況),或者是一個指向三元式序列(或三元式表)中某一個三元式位置的指示器(對于運算對象是中間結(jié)果的情況)。 如:A+B*C對應的三元式表
27、示為: (1)(*,B,C) (2)(+,A,(1)第43頁,共96頁,2022年,5月20日,20點33分,星期二5.2 中間語言三、三元式1、三元式定義說明:運算符OP通常用一個整數(shù)碼表示,它除了標識運算符的種屬之外,還附帶地表示其它一些語義特性。若OP表示一個加法運算符,則相應的整數(shù)碼除了標識加法運算本身外,還兼有表示數(shù)據(jù)類型(如整型、實型等)、運算方式(定點、浮點)和運算精度等信息,且不同語義屬性使用不同的運算符代碼。 第44頁,共96頁,2022年,5月20日,20點33分,星期二5.2 中間語言三、三元式1、三元式定義說明:對于一目運算符OP,ARG1和ARG2只需其一。我們可以隨
28、意規(guī)定選用一個,例如,規(guī)定用ARG1。至于多目運算符可以用若干個相繼三元式表示如:賦值語句 x:=-b*(c+d)用三元式來表示,則可寫成(1) ( - ,b, )(2) (+, c, d)(3) (*,(1),(2)(4) (:=,x,(3) 三元式(3)就引用三元式(1)和(2)的結(jié)果作為它的兩個運算對象 三元式出現(xiàn)先后順序和表達式各部分計算順序相一致!第45頁,共96頁,2022年,5月20日,20點33分,星期二5.2 中間語言三、三元式2、三元式的生成同樣可以用語法制導翻譯來產(chǎn)生三元式:(1)E=E(1)+T EVAL:=TRIP(+,E(1)VAL,TVAL)(2)E=T EVAL
29、:=TVAL(3)T=T(1)*F TVAL:=TRIP(*,T(1)VAL,FVAL)(4)T=F TVAL:=FVAL(5)F=(E) FVAL:=EVAL(6)F=i FVAL:=ENTRY(i)其中語義值EVAL、TVAL和FVAL,是一個指示器,或指向有關(guān)符號表某一項,或指向三元式表自身某一項TRTP(OP,ARG1,ARG2)是一個語義子程序,回送新產(chǎn)生的三元式存放在三元式表位置。ENTRY(i)是一個語義子程序,通過ENTRY查i在符號表中位置,即對應地址,若查不到,認為有錯誤。第46頁,共96頁,2022年,5月20日,20點33分,星期二5.2 中間語言三、三元式3、間接三元
30、式 為了便于代碼優(yōu)化,常常采用間接三元式。這由兩張表組成:(1)三元式表,用來存放各三元式本身;(2)執(zhí)行表(間接碼表),它按執(zhí)行三元式順序, 依次列出相應各三元式在三元式表中位置 。第47頁,共96頁,2022年,5月20日,20點33分,星期二5.2 中間語言三、三元式3、間接三元式例如,對于如下賦值語句x:=a*b+c+a*b若按三元式表示,可寫成(1) (*,a,b)(2) (+,(1),c)(3) (*,a,b)(4) (+,(2),(3)(5) (:=,x,(4)其中,三元式(1)和(3)完全一樣,但是不能將(3)省去。 按間接三元式表示,則可寫成執(zhí)行表 三元式表(1) (1) (
31、*,a,b)(2) (2) (+,(1),c)(1) (3) (+,(2),(1)(3) (4) (:=,x,(3)(4)第48頁,共96頁,2022年,5月20日,20點33分,星期二5.2 中間語言三、三元式3、間接三元式間接三元式的優(yōu)點:(1)便于代碼優(yōu)化 在進行代碼優(yōu)化時,常常要從中間代碼刪去一些運算,或者把某些運算移到另外位置上,若采用一般三元式,則由于三元式之間引用太多,很難做到這一點 。 (2)節(jié)省空間 由于在間接三元式執(zhí)行表中已經(jīng)依次列出每次要執(zhí)行的那個三元式,所以,若有若干個相同三元式,則僅須在三元式表中保存其中之一。如上面賦值語句右部表達式中有兩個a*b子表達式,而三元式表
32、中只出現(xiàn)一次(*, a, b) 。第49頁,共96頁,2022年,5月20日,20點33分,星期二5.2 中間語言三、三元式3、間接三元式補充說明:對于間接三元式表示,語義子程序應增添產(chǎn)生執(zhí)行表的動作。在填寫三元式表時,應首先看一下此三元式是否在其中,如已在其中,則無需填入。 第50頁,共96頁,2022年,5月20日,20點33分,星期二5.2 中間語言四、樹形表示1、表示方法我們可以用樹形數(shù)據(jù)結(jié)構(gòu)來表示一個表達式或語句 。在樹表示中,葉子結(jié)點表示運算對象,即常量或變量,其它結(jié)點表示運算符,如表達式 a+b, a-b, -a的樹表示分別定義為:+ababa第51頁,共96頁,2022年,5月
33、20日,20點33分,星期二5.2 中間語言四、樹形表示1、表示方法雙目運算對應二叉樹,多目運算對應多叉樹,單目運算對應單叉樹。如表達式 a*b-(c+d)/(e-f)的二叉樹如下圖:后序遍歷上述二叉樹便得到該表達式的逆波蘭表示為 ab*cd+ef-/-*/ab+cdef第52頁,共96頁,2022年,5月20日,20點33分,星期二5.2 中間語言四、樹形表示2、樹表示生成對文GE翻譯成樹形表示語義動作描述如下:(1)E=E(1)+T EVAL:=NODE(+,E(1)VAL,TVAL)(2)E=T EVAL:=TVAL(3)T=T(1)*F TVAL:=NODE(*,T(1)VAL,FVA
34、L)(4)T=F TVAL:=FVAL(5)F=(E) FVAL:=EVAL(6)F=i FVAL:=LEAF(i) 其中:語義值EVAL、TVAL和FVAL是一個指示器,指向樹一個結(jié)點。 NODE (OP,LEFT,RIGHT)是一個函數(shù)子程序, OP是一個二元運算符,LEFT,RIGHT為指示器,每調(diào)用 此函數(shù)一次,就建立一個新結(jié)點,其標記為OP, LEFT和RIGHT分別指向左右子樹根結(jié)點指針,從NODE回送 的值是一個指示器,指向這棵新樹的根。 LEAF(i)是建立一個末端結(jié)點(葉結(jié)點)第53頁,共96頁,2022年,5月20日,20點33分,星期二5.2 中間語言五、四元式表示1、定
35、義四元式是一種用得比較多的一種中間語言代碼形式,四元式一般形式: (OP,ARG1,ARG2,RESULT)其中:OP是運算符,其含義與三元式中OP類似; ARG1和ARG2是運算對象, RESULT是運算結(jié)果第54頁,共96頁,2022年,5月20日,20點33分,星期二5.2 中間語言五、四元式表示2、示例賦值語句 a:=-b*(c+d) 用四元式表示,則可寫成:(1) ( - , b,T1)(2) (+,c,d,T2)(3) (*,T1,T2,T3)(4) (:=,T3, ,a) 四元式之間聯(lián)系是通過臨時變量實現(xiàn)的,調(diào)整四元式之間相對位置并不意味著一定要改變一系列指示器值。因此,對中間代
36、碼進行優(yōu)化處理時,四元式比三元式方便得多。第55頁,共96頁,2022年,5月20日,20點33分,星期二第五章 語法制導翻譯本章內(nèi)容5.1 語法制導翻譯概述 一、語法制導翻譯定義 二、語法制導翻譯原理 三、語法制導翻譯實現(xiàn)5.2 中間語言 一、簡介 二、逆波蘭表示 三、三元式 四、樹形表示 五、四元式5.3 自底向上語法制導翻譯 一、簡單算術(shù)表達式和賦值語句的翻譯 二、布爾表達式的翻譯 三、控制語句翻譯第56頁,共96頁,2022年,5月20日,20點33分,星期二5.3 自底向上語法制導翻譯一、簡單算術(shù)表達式和賦值語句翻譯1、翻譯成四元式(1)賦值語句的文法 1) A=V:=E 5) T=
37、F 2) E=E (1)+T 6) F=(E) 3) E=T 7) F=i 4) T=T(1)*F 8) V=i 為了實現(xiàn)到四元式的翻譯,需要引進一系列語義變量和語義子程序。這里討論僅含有簡單變量的表達式和賦值語句到四元式的翻譯。為簡便起見,假定賦值語句中所含的全部變量是同一類型的整型變量, 在翻譯過程中也不作語義檢查。第57頁,共96頁,2022年,5月20日,20點33分,星期二5.3 自底向上語法制導翻譯一、簡單算術(shù)表達式和賦值語句翻譯1、翻譯成四元式(2)語義子程序的描述(1) A=V:=E GEN(:=,EPLACE, ,VPLACE)(2) E=E(1)+T EPLACE:=NEW
38、TEMP; GEN(+,E(1)PLACE,TPLACE,EPLACE)(3) E=T EPLACE:=TPLACE(4) T=T(1)*F TPLACE:=NEWTEMP; GEN(*,T(1)PLACE,FPLACE,TPLACE)(5) T=F TPLACE:=FPLACE(6) F=(E) FPLACE:=EPLACE(7) F=i FPLACE:=ENTRY(i)(8) V=i VPLACE:=ENTRY(i)第58頁,共96頁,2022年,5月20日,20點33分,星期二5.3 自底向上語法制導翻譯一、簡單算術(shù)表達式和賦值語句翻譯1、翻譯成四元式(3)語義變量和語義子程序 NEWT
39、EMP是一個函數(shù),每次調(diào)用時,都定義一個新臨時變量,回送 一個代表新臨時變量名的整數(shù)碼作為函數(shù)值。為直觀起見,我們將 NEWTEMP產(chǎn)生的臨時變量依次記為T,等等。 ENTRY(i)是一個函數(shù)過程 ,查找符號名i在表中的入口地址。 XPLACE是和非終結(jié)符X相聯(lián)系的語義變量,表示存放X值的變量名在符號表的入口或整數(shù)碼(若此變量是一個臨時變量)。 如: F=i FPLACE:=ENTRY(i) 表示存放F值變量名i在符號表 中的入口地址。即從變量F.PLACE值可知i在符號表中的位置。 GEN (OP,ARG1,ARG2,RESULT)是一個語義過程,該過程把四元式 (OP,ARG1,ARG2,
40、RESULT)填入四元式表中。 第59頁,共96頁,2022年,5月20日,20點33分,星期二(4)文法GASLR(1)分析表狀態(tài)ACTIONGOTOi+*():=#AVETF0S2131acc2r83S44S9S85675S106r3S11r3r37r5r5r5r58S9S812679r7r7r7r710S9S813711S9S81412S10S1513r2S11r2r214r4r4r4r415r6r6r6r6第60頁,共96頁,2022年,5月20日,20點33分,星期二(5)對x:=a+b*c語法制導翻譯產(chǎn)生四元式過程(以賦值語句x:=a+b*c為例)步驟狀態(tài)棧符號棧PLACE輸入串歸
41、約規(guī)則調(diào)用子程序四元式10X:=a+b*c#SUB8202 x Vx:=a+b*c#V:=i303 V Vx:=a+b*c#4034 V:= Vx-a+b*c#50349 V:=a Vx-Fa+b*c#F:=iSUB760347 V:=F Vx-Fa+b*c#T:=FSUB570346 V:=T Vx-Ta+b*c#E:=TSUB380345 V:=E Vx-Ea+b*c#903450 V:=E+ Vx-Ea-b*c#10034509 V:=E+b Vx-Ea-Fb*c#F:=iSUB711034507 V:=E+F Vx-Ea-Tb*c#T:=FSUB512034503 V:=E+T Vx-
42、Ea-Tb*c#130345031 V:=E+T* Vx-Ea-Tb-c#1403450319 V:=E+T*c Vx-Ea-Tb-FC#F:=iSUB71503450314 V:=E+T*F Vx-Ea-T1#T:=T(1)*FSUB4(*,b,c,T1)16034503 V:=E+T Vx-T2#E:=E(1)+TSUB2(+,a,T1,T2)170345 V:=E Vx-T2#A:=V:=ESUB1(:=,T2, , x)1801 A#第61頁,共96頁,2022年,5月20日,20點33分,星期二5.3 自底向上語法制導翻譯一、簡單算術(shù)表達式和賦值語句翻譯1、翻譯成四元式分析表幾點說明
43、在分析表中Vx,Ea,Tb,Fc之類記號,表示與非終結(jié)符V,E,T,F相關(guān)聯(lián) 的VPLACE,E.PLACE,T.PLACE,F.PLACE中存放著ENTRY(x), ENTRY(a), ENTRY(b), ENTRY(c) 符號指針,指向符號表。在四元式中,如(*,b,c,T1),*實際上是某種整數(shù)編碼,反映 運算符本身及其信息特征,如類型等。b,c實際上也是指示器,指示符號表入口;T1是臨時變量,實際上 也是整數(shù)碼.第62頁,共96頁,2022年,5月20日,20點33分,星期二5.3 自底向上語法制導翻譯一、簡單算術(shù)表達式和賦值語句翻譯2、類型檢查與類型轉(zhuǎn)換(1)目的1) 類型檢查是編譯
44、程序語義檢查不可缺少的一部分。 類型檢查就是對訪問數(shù)據(jù)的操作和被訪問數(shù)據(jù)的類型進行檢查檢查操作的合法性和數(shù)據(jù)類型的相容性。例如,在PASCAL語言中,若算術(shù)運算符的操作數(shù)為布爾量,或者賦給實型變量值是個指針,則編譯程序報告“類型不相容”的診斷信息。2) 允許類型混合,但在處理時要統(tǒng)一,所以必須進行類型轉(zhuǎn)換。 例如,加法運算“+”允許運算對象是整型數(shù)或?qū)嵭蛿?shù),如果一個運算對象是實型,另一個運算對象是整型,其運算結(jié)果的類型是實型,由于實型數(shù)和整型數(shù)的內(nèi)部表示不相同,因此為了使整型數(shù)能參加實型數(shù)運算,必須事先將整型數(shù)轉(zhuǎn)換成實型數(shù)。第63頁,共96頁,2022年,5月20日,20點33分,星期二5.3
45、 自底向上語法制導翻譯一、簡單算術(shù)表達式和賦值語句翻譯2、類型檢查與類型轉(zhuǎn)換(2)類型檢查類型檢查可在生成中間代碼時進行,也可在生成目標代碼時進行,但最好是在生成中間代碼時進行,因為語法和語義檢查最好盡早進行,這樣能盡早避免徒勞的工作。在上面對簡單算術(shù)表達式和賦值語句翻譯到四元式的討論中,我們假定各個變量是同一類型整型變量,并且規(guī)定在四元式的op代碼中,本身就會有類型信息。所以,在上例各語義子程序中,我們并未考慮有關(guān)類型方面語義處理。第64頁,共96頁,2022年,5月20日,20點33分,星期二5.3 自底向上語法制導翻譯一、簡單算術(shù)表達式和賦值語句翻譯2、類型檢查與類型轉(zhuǎn)換(3)類型轉(zhuǎn)換方
46、法 為了簡單起見,我們僅考慮整型和實型的情況。 這種混合運算中,給每個非終結(jié)符的語義值增添類型信息X.MODE XMODE的值或為r(實型)或為int(整型)。原來X的信息除X.PLACE, 還有X.MODE。 對表達式的每一規(guī)則的語義子程序進行修改,增加關(guān)于類型信息 的語義規(guī)則。 必要時應產(chǎn)生對運算量進行類型轉(zhuǎn)換的四元式 , (itr , A, ,T) 把整型變量A轉(zhuǎn)換成實型變量,結(jié)果存在T中。此外,在書寫語義子程序時,為閱讀上的直觀性,我們用+i,*i等表示整型運算符,用+r,*r等表示實型運算符。第65頁,共96頁,2022年,5月20日,20點33分,星期二5.3 自底向上語法制導翻譯
47、一、簡單算術(shù)表達式和賦值語句翻譯2、類型檢查與類型轉(zhuǎn)換這樣,對于輸入串為 X*2+A*(I+1)其中I為整型量,X、A為實型量,則產(chǎn)生四元式序列 (itr,2,-,T1) (*r,X,T,T) (+i,I,1,T3) (itr,T3,-,T) (*r,A,T4,T5) (+r,T2,T5,T6) 第66頁,共96頁,2022年,5月20日,20點33分,星期二5.3 自底向上語法制導翻譯二、布爾表達式的翻譯1、概述布爾表達式由布爾運算符(與)、(或)和(非)等作用于布爾量或關(guān)系表達式構(gòu)成關(guān)系表達式的形式是E1 rop E2,其中rop是關(guān)系運算符(如、=及)。而E1和E2是算術(shù)表達式。第67頁
48、,共96頁,2022年,5月20日,20點33分,星期二5.3 自底向上語法制導翻譯二、布爾表達式的翻譯1、概述(1)布爾表達式的用途 在程序設(shè)計語言中,布爾表達式有兩個基本用途: 1)一個是求邏輯值,邏輯值的結(jié)果是真或假。 2)另一個用得最多的是在控制語句中用作條件表達式, 例如,在if-then、if-then-else和while-do語句里表示控制條件第68頁,共96頁,2022年,5月20日,20點33分,星期二5.3 自底向上語法制導翻譯二、布爾表達式的翻譯1、概述(2)布爾表達式的文法 布爾表達式文法GE如下 : E=EE|EE|E|(E)|i|i rop i 說明:1)布爾表達
49、式的文法是一個二義文法 例如:該文法的一個句子a b c 有兩棵不同的語法樹與之對應,所以 該文法是一個二義文法。EEEEEabcEEEaEEbc第69頁,共96頁,2022年,5月20日,20點33分,星期二5.3 自底向上語法制導翻譯二、布爾表達式的翻譯1、概述(2)布爾表達式的文法 布爾表達式文法GE如下 : E=EE|EE|E|(E)|i|i rop i 說明:2) 規(guī)定布爾運算符的優(yōu)先順序是: 、。并假定和為左結(jié)合。所有關(guān)系運算符優(yōu)先級相同,且高于任何布爾運算符,低于算術(shù)運算符。 3) i rop i 中i可認為是布爾表達式也可視為數(shù)值(1為真true,0為假false)。4) i
50、rop i 中rop是關(guān)系運算符。第70頁,共96頁,2022年,5月20日,20點33分,星期二5.3 自底向上語法制導翻譯二、布爾表達式的翻譯1、概述(3)布爾表達式求值方法 1)把真和假數(shù)值化,使布爾表達式計算類似于算術(shù)表達式的計算, 常用1表示真,0表示假,或者用非零整數(shù)表示真。 如:1(00)0= 1(10)0= 100=1第71頁,共96頁,2022年,5月20日,20點33分,星期二5.3 自底向上語法制導翻譯二、布爾表達式的翻譯1、概述(3)布爾表達式求值方法 2)采取某種優(yōu)化措施,有時不需要將一個布爾表達式從頭算到尾, 而只須計算它的一個子表達式,便能確定整個布爾表達式真和假
51、。 例如,對于AB,只要計算出A為真,則不管B值如何,AB之值 一定為真。又如對AB,只要計算出A為假,則AB必然為假。 對于三種邏輯運算,可作如下等價的解釋: AB: if A then true else B AB: if A then B else false A : if A then false else true 用這種方式實現(xiàn)控制語句的布爾表達式尤其方便。對應上述兩種 計算方法,其布爾表達式有兩種不同的翻譯方法第72頁,共96頁,2022年,5月20日,20點33分,星期二5.3 自底向上語法制導翻譯二、布爾表達式的翻譯2、布爾表達式的翻譯方法(1)如同翻譯算術(shù)表達式一樣,用于求
52、值例如, 布爾表達式 a(bc=d)將被翻譯成如下四元式: 1) ( ,a,-,T1) 2) (=,c,d,T2) 3) (,b,T2,T3) 4) (,T1,T3,T4)第73頁,共96頁,2022年,5月20日,20點33分,星期二5.3 自底向上語法制導翻譯二、布爾表達式的翻譯2、布爾表達式的翻譯方法(1)如同翻譯算術(shù)表達式一樣,用于求值仿照翻譯算術(shù)表達式的方法,布爾表達式文法GE的規(guī)則用于求值的語義動作(1) E= E(1) E(2) EPLACE:=NEWTEMP; GEN(,E(1) PLACE, E(2)PLACE ,EPLACE)(2) E= E(1) E(2) EPLACE:
53、=NEWTEMP; GEN(,E(1) PLACE, E(2).PLACE ,EPLACE)(3) E= E(1) EPLACE:=NEWTEMP; GEN( ,E(1)PLACE, ,EPLACE)(4) E=(E(1)) EPLACE:= E(1) PLACE (5) E= i EPLACE:=ENTRY(i)(6) E= i rop i EPLACE:=NEWTEMP; GEN(rop,ENTRY(i(1),ENTRY(i(2),E.PLACE)第74頁,共96頁,2022年,5月20日,20點33分,星期二5.3 自底向上語法制導翻譯二、布爾表達式的翻譯2、布爾表達式的翻譯方法(2)作
54、為條件控制的布爾表達式的翻譯 1)布爾表達式E作為條件控制的代碼結(jié)構(gòu) 對于條件語句 if E then S1 else S2中的布爾表達式E,它的作用就是控制S1和S2的選擇,我們賦于E代碼兩種出口,其一為“真出口”,另一個是“假出口”,它們分別指出當E值為true和false時,控制轉(zhuǎn)向的目標(即某一四元式所在位置或序號)。E的代碼S1的代碼truefalseS2的代碼第75頁,共96頁,2022年,5月20日,20點33分,星期二5.3 自底向上語法制導翻譯二、布爾表達式的翻譯2、布爾表達式的翻譯方法(2)作為條件控制的布爾表達式的翻譯 2)三種形式的四元式作為條件控制的布爾表達式E的翻譯
55、歸納起來有三種形式的四元式 (jnz , a1, ,p) 若a1為真時,則轉(zhuǎn)向第p個四元式。 (jrop,a1,a2,p) 若關(guān)系a1 rop a2成立時,轉(zhuǎn)向第p個四元式。 (j, , ,p) 無條件轉(zhuǎn)向第p個四元式。 除上述兩種真轉(zhuǎn)外,可用無條件表示假轉(zhuǎn)第76頁,共96頁,2022年,5月20日,20點33分,星期二5.3 自底向上語法制導翻譯二、布爾表達式的翻譯2、布爾表達式的翻譯方法(2)作為條件控制的布爾表達式的翻譯 例如,對于條件語句 if ab c then S1 else S2經(jīng)翻譯后,可得如下四元式序列:(1) (jnz,a, ,5)(2) (j, , ,3)(3) (j,b
56、,c,5)(4) (j, , ,p+1)(5) (關(guān)于S1的四元式序列)(P) (j, , ,q)(p+1) (關(guān)于S2的四元式序列)(q) (1) a為真, abc就為真,轉(zhuǎn)5執(zhí)行(2) a為假, abc的值取決于bc的值, 所以轉(zhuǎn)3執(zhí)行 (3) a為假,且bc,則abc為真,轉(zhuǎn)5執(zhí)行(4) a為假,且bc也是假,則abc為假, 執(zhí)行S2語句,即應轉(zhuǎn)p+1執(zhí)行(p) 執(zhí)行完S1(對應四元式為(5) 則應轉(zhuǎn)到條件語句的下一條語句執(zhí)行, 所以無條件跳轉(zhuǎn)到(q)執(zhí)行。 四元式(1)(4)中顯然含有多余的四元式,第77頁,共96頁,2022年,5月20日,20點33分,星期二5.3 自底向上語法制導
57、翻譯二、布爾表達式的翻譯3、翻譯成四元式的實現(xiàn)(1)回填 在自底向上的語法制導翻譯過程中,在產(chǎn)生一個條件或無條件轉(zhuǎn)移四元式時,它所要轉(zhuǎn)移到的那個四元式尚未產(chǎn)生,故無法立即產(chǎn)生一個完全控制轉(zhuǎn)移四元式。例如,對于上例,在產(chǎn)生第一個四元式時,因為語句S1的中間代碼尚未產(chǎn)生,故此時只得產(chǎn)生一個空缺轉(zhuǎn)移目標的四元式(jnz,a, ,0),且將此四元式的序號作為語義信息存起來,待開始翻譯語句S1時,再將S1的第一個四元式序號(即5)填入這個不完全條件轉(zhuǎn)移四元式中。 這種事后再填轉(zhuǎn)移目標叫做回填。第78頁,共96頁,2022年,5月20日,20點33分,星期二5.3 自底向上語法制導翻譯二、布爾表達式的翻譯
58、3、翻譯成四元式的實現(xiàn)(2)真鏈T和假鏈F 在翻譯過程中,有時會存在著若干個轉(zhuǎn)移四元式, 如例中的1和3兩個四元式,它們有同一個轉(zhuǎn)移目標5,但此目標的具體位置在形成四元式時還不知道,此時,我們將這些四元式鏈接起來,并且用一個指示器指示這條鏈的鏈頭,以后,便可以從鏈頭開始,沿著這條鏈逐個為其中各四元式填入轉(zhuǎn)移目標。 (1) (jnz,a, ,5)(2) (j, , ,3)(3) (j,b,c,5)(4) (j, , ,p+1)(5) (關(guān)于S1的四元式序列)(P) (j, , ,q)(p+1) (關(guān)于S2的四元式序列)(q)if ab c then S1 else S2第79頁,共96頁,202
59、2年,5月20日,20點33分,星期二5.3 自底向上語法制導翻譯二、布爾表達式的翻譯3、翻譯成四元式的實現(xiàn)(2)真鏈T和假鏈F在實際操作時,1)將要填真出口的各四元式鏈接起來,組成一個鏈稱真鏈T ,記為TC2)將要填假出口的各四元式鏈接起來,組成一個鏈稱假鏈F ,記為FC 首先定義兩個語義變量 E.TC和E.FC分別指示T鏈和F鏈的鏈頭。 如下圖:(1)(jnz, a, , 0)(2)(j , , ,3)ETC (3)(j, b, c, 1)EFC (4)(j , , ,0)(5)鏈中各個四元式RESULT字段為相應結(jié)點指針字段,當其不為零時,它是鏈中后繼四元式的序號如(2)中的3,否則,相
60、應四元式是鏈尾結(jié)點,如(1)中的0 第80頁,共96頁,2022年,5月20日,20點33分,星期二5.3 自底向上語法制導翻譯二、布爾表達式的翻譯3、翻譯成四元式的實現(xiàn)(3)改寫布爾表達式文法GE為了使用語法制導翻譯做回填工作,便于編制相應的語義子程序,我們對上面布爾表達式文法GE改寫為 E=EE|E|E|(E)|i|i rop i E=E E=E 當掃描到E和E并歸約到E 和E時就可以及時回填,知道真假出口,如果不是這樣改寫,當掃描到E和E時,還不能歸約,因此就不能及時回填。第81頁,共96頁,2022年,5月20日,20點33分,星期二5.3 自底向上語法制導翻譯二、布爾表達式的翻譯3、
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 感恩老師演講稿(集錦15篇)
- 小班保育員小結(jié)
- 婚禮上的致辭匯編15篇
- 易錯題25 古代詩歌閱讀之情感主旨題-不會見微知著探究主旨高考語文備戰(zhàn)2025年高考易錯題(新高考專用)含解析
- 2018安徽道法試卷+答案+解析
- 急救培訓心得體會匯編15篇
- 初級會計實務-《初級會計實務》??荚嚲?53
- 中國電池預制艙行業(yè)投資分析、市場運行態(tài)勢研究報告-智研咨詢發(fā)布(2024版)
- 智研咨詢-中國急救中心行業(yè)市場調(diào)查、產(chǎn)業(yè)鏈全景、需求規(guī)模預測報告(2024版)
- 智研咨詢發(fā)布:2024年中國心臟脈沖電場消融系統(tǒng)(PFA)行業(yè)市場現(xiàn)狀及投資前景分析報告
- 護理人文知識培訓課件
- 2025年春新人教版數(shù)學七年級下冊教學課件 7.2.3 平行線的性質(zhì)(第1課時)
- GB/T 16895.3-2024低壓電氣裝置第5-54部分:電氣設(shè)備的選擇和安裝接地配置和保護導體
- 安徽省合肥市2025年高三第一次教學質(zhì)量檢測地理試題(含答案)
- 計劃合同部部長述職報告范文
- 統(tǒng)編版八年級下冊語文第三單元名著導讀《經(jīng)典常談》閱讀指導 學案(含練習題及答案)
- 風光儲儲能項目PCS艙、電池艙吊裝方案
- 人教版高一地理必修一期末試卷
- GJB9001C質(zhì)量管理體系要求-培訓專題培訓課件
- 二手車車主寄售協(xié)議書范文范本
- 窗簾采購投標方案(技術(shù)方案)
評論
0/150
提交評論