《編譯原理實(shí)用教程》-楊德芳-電子教案 第2章 形式語(yǔ)言概述_第1頁(yè)
已閱讀1頁(yè),還剩96頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第二章 形式語(yǔ)言概述,本章學(xué)習(xí)目標(biāo),形式語(yǔ)言由Chomsky于1956年提出,主要討論語(yǔ)言和文法的數(shù)學(xué)機(jī)制以及語(yǔ)言和文法的分類。形式語(yǔ)言 的形成和發(fā)展,對(duì)編譯原理和技術(shù)產(chǎn)生了重要的影響。本章主要內(nèi)容是:文法和語(yǔ)言的形式定義文法的分類句型的分析和語(yǔ)法樹(shù),2.1字母表和符號(hào)串,任何一種語(yǔ)言都是由基本符號(hào)構(gòu)成的。計(jì)算機(jī)高級(jí)語(yǔ)言作為計(jì)算機(jī)的語(yǔ)言,程序有語(yǔ)句構(gòu)成,語(yǔ)句有一些基本符號(hào)構(gòu)成,這些基本符號(hào)是保留字如main,if,then等、字母

2、、數(shù)字和專用符號(hào)等。每個(gè)程序可以看成基本符號(hào)串。將所有的基本符號(hào)定義成一個(gè)基本符號(hào)集合,則語(yǔ)言可以看成是在這個(gè)基本符號(hào)集合上定義的,按一定的規(guī)則構(gòu)成的一切基本符號(hào)串組成的集合,給出如下的一些基本概念。,2.1.1字母表,定義2.1 字母表是元素的非空有窮集合,字母表中的元素稱為符號(hào),因此字母表也稱為符號(hào)表。高級(jí)語(yǔ)言如C語(yǔ)言的字母表是由字母、數(shù)字、特殊符號(hào)和一些專用符號(hào)構(gòu)成。例?={a,b}, ?={0,1},?={0,1,

3、2,3,4,5,6,7,8,9},∑={a,b,c,…z,if,then,else,main,1,2,3,4,…,9,0,=,==,>,<,;(,)},2.1.2符號(hào)串,1.符號(hào)串定義2.2 符號(hào)串是由字母表中的符號(hào)所組成的有窮序列。例2.1 某個(gè)字母表∑={a,b,c,…z,if,then,else,main,1,2,3,4,…,9,0,=,==,>,<,;},則建立在∑上的符號(hào)串有:if (2+3

4、==5) then a=6 else b=8;2.符號(hào)串的長(zhǎng)度符號(hào)串x中所包含的符號(hào)的個(gè)數(shù)稱為符號(hào)串x的長(zhǎng)度,記為|x| 。例如字母表{0,1},則|010110|=6。ε記為空串,長(zhǎng)度為0。,3.子字符串定義2.3 設(shè)有非空符號(hào)串u=xvy,其中x、v、y是符號(hào)串,且v≠ε,則稱v為符號(hào)串u的子符號(hào)串。例題2.2設(shè)字母表Σ={a,b,c,d,+,-,*,/,(,)}上有符號(hào)串x=a+b*(c+d),則a、a+b*與(c+d)等

5、都是x的子符號(hào)串,且其長(zhǎng)度分別為∣a∣=1、∣a+b*∣=4與∣(c+d)∣=54.符號(hào)串的頭和尾定義2.4 如果z=xy是一個(gè)符號(hào)串,則x是z的頭,而y是z的尾。如果y非空,則x是z的固有頭,又稱為真前綴;若x非空,則y是z的固有尾,又稱為真后綴。,例題2.3 假設(shè)字母表?={a,b,c}上的符號(hào)串z=abc,則ε、a、ab、abc都是z的頭,且除abc外都是x的固有頭;ε、c、bc、abc都是z 的尾,且除abc外都是z的固有

6、尾。若只對(duì)符號(hào)串的頭部感興趣,記做z=x…。若只對(duì)尾部感興趣,則記為z=…x。5.符號(hào)串的運(yùn)算定義2.5 符號(hào)串的連接運(yùn)算 :設(shè) x與y是同一個(gè)字母表上的兩個(gè)符號(hào)串,把y的各個(gè)符號(hào)相繼寫(xiě)在x的符號(hào)后所得到的符號(hào)串稱為x與y的連接,記為xy。,例題2.4設(shè)在字母表{a,b,c}上有符號(hào)串 x=ab與y=cba,則z=xy=abcba。這里∣x∣=2, ∣y∣=3, ∣z∣=5。對(duì)于字母表上的任何符號(hào)串x,都有εx=xε=x定義2.

7、6 符號(hào)串的方冪:設(shè)x是某個(gè)字母表上的符號(hào)串,把x自身連接n次,即z=xx…x(n個(gè)x),稱為符號(hào)串x的n次方冪,記為z=xn。例如,x=ab則x3=ababab,2.1.3符號(hào)串集合,1.符號(hào)串集合的定義定義2.6 若集合A中一切元素都是某字母表∑上的符號(hào)串,則稱A是該字母表∑上的符號(hào)串的集合。字母表上的符號(hào)串的集合通常用大寫(xiě)字母來(lái)表示A、B、C、…表示。例題2.5 設(shè)某個(gè)字母表{a,b,c,d}上有兩個(gè)符號(hào)串的集合記為A

8、={a,bc},B={abc,cd,ab},2.符號(hào)串集合的運(yùn)算定義2.7 兩個(gè)符號(hào)串集合A和B的乘積AB定義為:AB={xy∣x∈A ,且y∈B}例題2.6 設(shè)A={a,b},B={c,d,e} 則AB={ac,ad,ae,bc,bd,be}對(duì)于任何空集合Φ,都有ΦA(chǔ)=AΦ=A類似于符號(hào)串的方冪,可以定義符號(hào)串集合的方冪,特別地定義字母表A的方冪為:A0={ε},A1=A,An=An-1A (n>0),3.字母表的

9、閉包與正閉包的運(yùn)算設(shè)有字母表A,由它做方冪A0,A1,A2,… An, …。A的閉包定義如下:定義 2.8 A的閉包A*=A0∪A1 ∪ A2 ∪…∪An∪…,其中,An (n=0,1,2,3,…)中所有的符號(hào)串的長(zhǎng)度為n,因此字母表A的閉包 A*為字母表上一切長(zhǎng)度為n的符號(hào)串所組成的集合。如果不允許包含空串ε,則得到字母表A的正閉包。定義2.9 A的正閉包 A+=A1 ∪ A2 ∪…∪An∪…顯然,A*= A0

10、 ∪A+ ,且A+=AA*=A*A。,例題2.7 設(shè)字母表Σ={a,b,c},依次寫(xiě)出長(zhǎng)度為1、2…的符號(hào)串,可得到 Σ的正閉包Σ+ :Σ+={a,b,c,aa,ab,ac,bb,bc,…},在Σ+上添入空串ε即得Σ*。說(shuō)明:根據(jù)閉包和正閉包的定義,則有Σ+=Σ*Σ=ΣΣ* 由于一個(gè)字母表的正閉包包含了該字母表中的符號(hào)所能組成的一切符號(hào)串,而語(yǔ)言是該字母表上某個(gè)符號(hào)串的集合,因此,在某個(gè)字母表上的語(yǔ)言是該字母表上正閉包的子集,且

11、是真子集。對(duì)于C語(yǔ)言,可以說(shuō),C語(yǔ)言是基本符號(hào)集合的正閉包的真子集。,2.2 文法的定義及其分類,什么是文法,文法的直觀概念是,文法作為一種工具,不僅嚴(yán)格地定義句子的結(jié)構(gòu),也是為了用適當(dāng)條數(shù)的規(guī)則把語(yǔ)言的全部句子描述出來(lái),是以有窮的集合刻劃無(wú)窮的集合的工具。。,2.2.2文法的形式定義,1.重寫(xiě)規(guī)則定義2.10重寫(xiě)規(guī)則,也叫產(chǎn)生式規(guī)則,或稱為生成式,是形如α→β或α::═β的(α,β)有序?qū)?其中, α是某個(gè)字母表V+中的一個(gè)元素,

12、β是V* 中的一個(gè)元素。α稱為規(guī)則的左部,β稱為規(guī)則的右部。例如 A??B?讀作“A定義為?B?”,也就是說(shuō)它是一條關(guān)于A的規(guī)則(產(chǎn)生式)。2.文法定義2.11 文法G是一個(gè)四元組,G=(VN,VT,P,S),其中,VN、VT分別是非空有限的非終結(jié)符號(hào)集和終結(jié)符號(hào)集,VN∩VT=?,P是產(chǎn)生式的集合,S∈VN 稱為文法的識(shí)別符號(hào)或開(kāi)始符號(hào)。例題2.8在程序設(shè)計(jì)語(yǔ)言中,假設(shè)我們定義標(biāo)識(shí)符的命名規(guī)則為字母a、b、c開(kāi)頭的,字母a、

13、b、c和數(shù)字1、2、3的序列。命名規(guī)則為:,→→→→a→b→c→1→2→3,我們一般用大寫(xiě)字母代表左邊的非終結(jié)符,設(shè)N 代表,D代表,L代表,則定義標(biāo)識(shí)符的文法是:G=(VN,VT,P,N)其中,VN={N,L,D}VT={a,b,c,1,2,3}P為產(chǎn)生式的規(guī)則:{N→L, N→NL ,N→ND ,L→a ,L→b ,L→c ,D→1 ,D→2,D→3}S 是開(kāi)始符號(hào),為N.關(guān)于產(chǎn)生式的規(guī)則說(shuō)明一點(diǎn),

14、即若A→α,A→β,A→γ可寫(xiě)成A→α|β|γ ?!皘”讀做“或者”。上面的產(chǎn)生式規(guī)則可以改寫(xiě)為:,P為產(chǎn)生式的規(guī)則:{N→L|NL|NDL→a|b| cD→1|2|3},2.2.3文法的分類,自從喬姆斯基(Chomsky)于1956年建立形式語(yǔ)言的描述以來(lái),把文法分成四種類型,即0型、1型、2型和3型文法。0型文法(短語(yǔ)文法)設(shè)G=(VN,VT,P,S),如果它的每個(gè)產(chǎn)生式α→β是這樣一種結(jié)構(gòu):α∈(VN∪VT )+ ,

15、且至少含有一個(gè)非終結(jié)符,而β∈(VN∪VT )*,則稱G是一個(gè)0型文法。0型文法又稱短語(yǔ)文法,它的能力相當(dāng)于一個(gè)圖靈機(jī)。例如,?A?→?,1型文法(上下文有關(guān)文法)設(shè)G=(VN,VT,P,S)為一文法,若P中的每一個(gè)產(chǎn)生式α→β均滿足∣β∣≥∣α∣,僅僅S→ε除外,則文法G是1型文法或上下文有關(guān)文法。所謂上下文有關(guān)文法即:α=γ1Aγ2,β=γ1δγ2,符號(hào)串γ1 和γ2可以認(rèn)為是上下文,A只有出現(xiàn)在上下文之間中,才可以被符號(hào)串δ

16、替代,成為α=γ1Aγ2?β=γ1δγ2因此,1型文法又稱為上下文有關(guān)文法。,3.2型文法(上下文無(wú)關(guān)文法)設(shè)G=(VN,VT,P,S),若P中的每個(gè)產(chǎn)生式α→β滿足: α是一個(gè)非終結(jié)符, β∈(VN∪VT ) *,則此文法稱為2 型文法或上下文無(wú)關(guān)文法。有時(shí)將2型文法的產(chǎn)生式表示為形如:A→β,其中A∈VN 。 也就是當(dāng)用β取代非終結(jié)符A時(shí),與A所在的上下文無(wú)關(guān)。上下文無(wú)關(guān)文法有足夠的能力描述現(xiàn)今的程序設(shè)計(jì)語(yǔ)言。,例題2.10

17、2 型文法G=(VN,VT,P,N)其中,VN={N,D}VT={0,1,2,3,4,5,6,7,8,9}P={N→ND∣D,D→0∣1∣2∣3∣4∣5∣6∣7∣8∣9}該文法描述的符號(hào)串的集合是整數(shù)。,3型文法(右線性文法或正規(guī)文法)對(duì)2型文法的產(chǎn)生式做進(jìn)一步的限制,限制產(chǎn)生式右部是單一終結(jié)符或單一終結(jié)符跟著單一非終結(jié)符,即:A→a A→aB則稱該文法為3型文法,又稱為右線性文法或正規(guī)文法,其中A、B∈VN,a∈

18、VT.例題2.113型文法 G=(VN,VT,P,S)其中,VN={S,A,B}VT={0,1}P={S→0∣1∣1A∣0B,A→1A∣0B,B→0∣1∣0B}該文法產(chǎn)生的是二進(jìn)制整數(shù)。,2.2.4文法舉例,例題2.15正規(guī)文法G=(VN,VT,P,A)其中, VN={A,B,C,D}VT={x,y,z }P={A→xB∣yCB→zB ∣y∣yC C→xDD→ yD∣x}例題2.162型文法G=(VN,

19、VT,P,E)其中,VN={E,T,F(xiàn)}VT={+,*,(,),i}P={E→E+T|T, T→T*F|T, F→(E)|i}該文法能推出具有乘和加運(yùn)算的算術(shù)表達(dá)式。,例題2.17正規(guī)文法G=(VN,VT,P,S)其中VN={S,A,B,G,H},VT={d,·,+,-}P={S→dB|+A|-A|.GA→dB|.GB→dB|.H|dG→dHH→dH|d}其中,d代表十進(jìn)制數(shù)字。 根據(jù)以上我們對(duì)文法的定

20、義我們不難發(fā)現(xiàn)3型文法類是2型文法類的特殊情況,2型文法類是1型文法類的特殊情況。每一類文法都是在前一類文法的基礎(chǔ)上加上一些限定規(guī)則而產(chǎn)生的。因此,四類文法產(chǎn)生的語(yǔ)言就會(huì)有如下關(guān)系:3型語(yǔ)言?2型語(yǔ)言?1型語(yǔ)言?0型語(yǔ)言,2.2.5各類文法與自動(dòng)機(jī)的關(guān)系,語(yǔ)言是句子的集合,而句子又是由字母表上的符號(hào)串組成的。對(duì)于程序設(shè)計(jì)語(yǔ)言來(lái)講,程序由語(yǔ)句構(gòu)成,語(yǔ)句則有數(shù)字、標(biāo)識(shí)符、保留字、數(shù)字等單詞構(gòu)成。因此對(duì)程序的編譯事實(shí)上就是對(duì)句子進(jìn)行檢查。方

21、法就是編寫(xiě)一個(gè)檢查過(guò)程,運(yùn)行該過(guò)程來(lái)判斷編寫(xiě)的程序是否合法。合法就回答“正確”,不合法就回答“不正確”,并且將錯(cuò)誤報(bào)出。,編寫(xiě)該過(guò)程的算法,抽象成一個(gè)數(shù)學(xué)模型,該數(shù)學(xué)模型稱為自動(dòng)機(jī)。將算法對(duì)程序的合法與否的檢查轉(zhuǎn)化為數(shù)學(xué)模型對(duì)程序中的句子的識(shí)別過(guò)程。自動(dòng)機(jī)給出了用有窮方式來(lái)描述潛在的無(wú)窮的語(yǔ)言的另一種手段。自動(dòng)機(jī)能夠識(shí)別的句子的集合稱為語(yǔ)言。對(duì)于每一類Chomsky語(yǔ)言類,正好有一類自動(dòng)機(jī)與它相對(duì)應(yīng)。,1.0型語(yǔ)言與圖靈機(jī),圖靈機(jī)是識(shí)別

22、0型文法的識(shí)別裝置。圖靈機(jī)被引進(jìn)作為描述過(guò)程的數(shù)學(xué)模型,過(guò)程的直觀概念被看成是能機(jī)械實(shí)現(xiàn)的有窮指令的序列。圖靈機(jī)的基本模型如圖2-1所示。它有一個(gè)有限控制器、一個(gè)被分成若干單元的輸入帶和一個(gè)一次讀入一個(gè)單元的讀頭組成,2.1型文法與線性界限自動(dòng)機(jī)相對(duì)應(yīng),。上下文有關(guān)文法所對(duì)應(yīng)的自動(dòng)機(jī)稱為線性界限自動(dòng)機(jī)。其功能是能夠識(shí)別上下文無(wú)關(guān)語(yǔ)言,縮寫(xiě)為L(zhǎng)BA。,3.2型語(yǔ)言與下推自動(dòng)機(jī),2型語(yǔ)言或上下文無(wú)關(guān)語(yǔ)言對(duì)應(yīng)的自動(dòng)機(jī)稱為下推自動(dòng)機(jī)。它是識(shí)別

23、上下文無(wú)關(guān)語(yǔ)言的數(shù)學(xué)模型??s寫(xiě)為PDA。,3.3型語(yǔ)言與有窮狀態(tài)自動(dòng)機(jī),3型語(yǔ)言或正則語(yǔ)言所對(duì)應(yīng)的自動(dòng)機(jī)稱為有窮自動(dòng)機(jī)。縮寫(xiě)為FA。無(wú)論那種自動(dòng)機(jī)都分為確定性和非確定性之分,2.2.6文法分類的意義,一個(gè)文法實(shí)際上是某種語(yǔ)言的一個(gè)簡(jiǎn)明、確切的描述,它表示了該語(yǔ)言中所允許的一類語(yǔ)法結(jié)構(gòu)。從一個(gè)文法能推導(dǎo)出多個(gè)終結(jié)符的句子。但是知道了如何去構(gòu)造屬于某一個(gè)語(yǔ)言的一個(gè)合法串只是問(wèn)題的一個(gè)方面。同時(shí)我們還要有能力判定一個(gè)串是否合法。也就是說(shuō),我

24、們需要確定這個(gè)給定串的推導(dǎo)序列。如果從文法出發(fā)找不到這個(gè)推導(dǎo)序列,則該串就是非法的。以上四類文法都分別與一個(gè)相當(dāng)簡(jiǎn)單但功能很強(qiáng)的自動(dòng)機(jī)相關(guān)。右線性文法可由一種有窮狀態(tài)自動(dòng)機(jī)識(shí)別。,2.3文法產(chǎn)生的語(yǔ)言和句型的語(yǔ)法樹(shù),2.3.1推導(dǎo)和規(guī)范推導(dǎo)為了定義文法產(chǎn)生的語(yǔ)言,我們必須給出推導(dǎo)的概念。推導(dǎo)分為三大類:直接推導(dǎo) 、?,長(zhǎng)度為n(n≥1)的推導(dǎo)和長(zhǎng)度為n( n≥0)的推導(dǎo)。定義2.12如α→β是文法G=(VN,VT,

25、P,S)的規(guī)則(或說(shuō)是P中的一產(chǎn)生式),γ,δ∈(VN∪VT)*,則稱符號(hào)串γβδ為符號(hào)串γαδ應(yīng)用產(chǎn)生式α→β所得到的直接推導(dǎo)。記為γαδ?γβδ。,定義2.13推導(dǎo)長(zhǎng)度大于0的推導(dǎo):如果 對(duì)于符號(hào)串v 與w存在一個(gè)直接推導(dǎo)序列u0 ? u1?u2?u3?…un (n>0)其中u0=v與un =w,則稱符號(hào)串v推導(dǎo)出w或稱w歸約到v,記作v ? *w,稱這個(gè)直接推導(dǎo)序列是長(zhǎng)度為n的推導(dǎo),且稱符號(hào)串w是相對(duì)于符號(hào)串v的一個(gè)字

26、。定義2.14推導(dǎo)長(zhǎng)度大于等于0的推導(dǎo):如果對(duì)于符號(hào)串v和w,v=>w或v=w,則記作v ? *w,稱符號(hào)串v廣義推導(dǎo)到符號(hào)串w,或稱w廣義歸約到v。,例2.18根據(jù)文法,考慮以C語(yǔ)言中的無(wú)正負(fù)號(hào)整數(shù)作為識(shí)別符號(hào)的文法。(1)?(2)?| (3 ) ? 0|1|2|3|4|5|6|7|8|9VT ={0,1,2,3,4,5,6,7,8,9} VN ={ , ,}判斷數(shù)據(jù)2634是否是C語(yǔ)言合法的數(shù)據(jù)。給

27、出數(shù)據(jù)2634的推導(dǎo)。???4?4?34?34?634?2634由此可見(jiàn),2634是C 語(yǔ)言的合法數(shù)據(jù)。每一步推導(dǎo)都是直接推導(dǎo)??梢员硎緸楠?634,定義2.15如果在推導(dǎo)的任何一步???,其中?、?是句型,都是對(duì)?中的最左非終結(jié)符進(jìn)行替換,則稱這種推導(dǎo)為最左推導(dǎo)。定義2.16如果在推導(dǎo)的任何一步???,其中?、?是句型,都是對(duì)?中的最右非終結(jié)符進(jìn)行替換,則稱這種推導(dǎo)為最右推導(dǎo)。定義2.17在形式語(yǔ)言中,最右推導(dǎo)常稱為規(guī)范

28、推導(dǎo),由規(guī)范推導(dǎo)所得的句型稱為規(guī)范句型。,定義2.15如果在推導(dǎo)的任何一步???,其中?、?是句型,都是對(duì)?中的最左非終結(jié)符進(jìn)行替換,則稱這種推導(dǎo)為最左推導(dǎo)。定義2.16如果在推導(dǎo)的任何一步???,其中?、?是句型,都是對(duì)?中的最右非終結(jié)符進(jìn)行替換,則稱這種推導(dǎo)為最右推導(dǎo)。定義2.17在形式語(yǔ)言中,最右推導(dǎo)常稱為規(guī)范推導(dǎo),由規(guī)范推導(dǎo)所得的句型稱為規(guī)范句型。,例2.19給出了下列文法G(1)?(2)?| (3 ) ? 0|

29、1|2|3|4|5|6|7|8|9VT ={0,1,2,3,4,5,6,7,8,9} VN ={ , ,}判斷數(shù)據(jù)2634是否是C語(yǔ)言合法的數(shù)據(jù)?!窘狻浚?)用最右推導(dǎo),每次用產(chǎn)生式的規(guī)則替換最右邊的非終結(jié)符,推導(dǎo)過(guò)程如下:???4?4?34?34?634?2634,(2)用最左推導(dǎo),每次直接推導(dǎo)都替換最左邊的非終結(jié)符,推導(dǎo)過(guò)程如下:??????2?26?263?2634,2.3.2句型、句子和語(yǔ)言,定義

30、2.18句型:設(shè)G[S]是一個(gè)文法,如果符號(hào)串x是從開(kāi)始符號(hào)S推導(dǎo)得到的,即有S=>+x,x?V+,則稱符號(hào)串x是該文法G的一個(gè)句型。定義2.19句子:G[S]是一個(gè)文法,如果符號(hào)串x是從開(kāi)始符號(hào)S推導(dǎo)得到的,即有S=>+x,并且x?VT,則稱該符號(hào)串為該文法的一個(gè)句子。實(shí)質(zhì)上,句子是句型的特殊情況,句子是由終結(jié)符組成,而句型是有終結(jié)符和非終結(jié)符組成。定義2.20語(yǔ)言G[S]是一個(gè)文法,文法G產(chǎn)生的語(yǔ)言L(G)={x

31、|S=>x,并且x?VT},即文法的語(yǔ)言是文法所有句子的集合。,例2.20 2型文法G=(VN,VT,P,S)其中,VN={S}VT={0,1}P={S→0S1,S→01}該文法產(chǎn)生的語(yǔ)言是L(G)={0n1n,,其中n≥1},例2.21 文法G[S]定義如下S?if E then S| if E then S else S|while E do S|begin L end|A該文法產(chǎn)生的語(yǔ)言就是程序設(shè)計(jì)語(yǔ)言中的單分

32、支、雙分支、循環(huán)語(yǔ)句和順序語(yǔ)句,其中每個(gè)非終結(jié)符的意義是:S代表語(yǔ)句,L代表語(yǔ)句串、A代表賦值語(yǔ)句,E代表布爾表達(dá)式。,例2.22 設(shè)文法G[S]:E?E+T|TT?T*F|FF?(E)|i證明符號(hào)串E+(E+T)*i是文法的句型,i+i*i 是文法的句子;并說(shuō)明該文法產(chǎn)生的語(yǔ)言是什么?!咀C明】,①由于E?E+T?E+T*F?E+T*i?E+F*i?E+(E)*i ?E+(E+T)*i所以 E+(E+T)*i是文法的句型。

33、②由E?E+T?E+F?E+F*i?E+i*i?T+i*i?F+i*i?i+i*i所以i+i*i 是文法的句子。③該文法產(chǎn)生的語(yǔ)言是程序設(shè)計(jì)語(yǔ)言中的算術(shù)運(yùn)算式,其中包括加、乘和括號(hào)運(yùn)算。,2.3.3語(yǔ)法樹(shù),在自然語(yǔ)言中,句子結(jié)構(gòu)可以借助一種樹(shù)形表示進(jìn)行分析。如下面的句子:They are students and teachers of the Physics Department。對(duì)該句子的結(jié)構(gòu)進(jìn)行分析,其樹(shù)型結(jié)構(gòu)如圖2-3所

34、示,由此可以看出,該句子是由主語(yǔ)、系詞和表語(yǔ)組成,是一個(gè)語(yǔ)法正確的句子。,在自然語(yǔ)言中,可以通過(guò)樹(shù)型表示直觀地分析句子的結(jié)構(gòu);在形式語(yǔ)言中,我們提到了句型、推導(dǎo)的概念,在證明某個(gè)符號(hào)串是否是某個(gè)文法的句型時(shí),采用從文法開(kāi)始符號(hào)推導(dǎo)的方法,這個(gè)推導(dǎo)過(guò)程可以用語(yǔ)法樹(shù)直觀的表示出來(lái)。語(yǔ)法樹(shù)也稱為推導(dǎo)樹(shù),其定義如下:,給定文法G=(VN,VT,P,S) ,對(duì)于G的任何句型都能構(gòu)造與之關(guān)聯(lián)的語(yǔ)法樹(shù),這棵樹(shù)滿足下列四個(gè)條件:(1)每個(gè)結(jié)點(diǎn)都有一個(gè)

35、標(biāo)記,此標(biāo)記是V的一個(gè)符號(hào)。(2)根的標(biāo)記是S。(3)若一結(jié)點(diǎn)n至少有一個(gè)它自己除外的子孫,并且有標(biāo)記A,則A肯定在VN中。(4)如果結(jié)點(diǎn)n的直接子孫,從左到右的次序是結(jié)點(diǎn)n1,n2,n3….nk,其標(biāo)記分別為A1,A2,A3,…AK。那么A→A1A2A3AK一定是P中的一個(gè)產(chǎn)生式。,例2.23 設(shè)文法G[S] :E?E+T|TT?T*F|FF?(E)|i證明符號(hào)串E+(E+T)*i是文法的句型。,2.3.4二義性文法及其

36、他,1.二義性文法及其定義一個(gè)文法,如果它的一個(gè)句子或句型有兩棵或兩棵以上的語(yǔ)法樹(shù),則稱此句子具有二義性。如果一個(gè)文法含有二義性的句子,則稱該文法具有二義性。例2.24 設(shè)文法G[S]:S→if B then S|if B then S else S|i:=E給出符號(hào)串if B then if B then S else S的語(yǔ)法樹(shù)。語(yǔ)法樹(shù)的結(jié)構(gòu)如圖2-5所示。從上面的語(yǔ)法圖我們可以看出,字符串if B then if B

37、then S else S能夠畫(huà)出兩棵語(yǔ)法樹(shù),所以該文法是一個(gè)二義性文法。,在語(yǔ)言中,為了避免二義性的文法,往往對(duì)文法加以一定的限制,如限制條件語(yǔ)句then之后不允許再是條件語(yǔ)句,或者從語(yǔ)義解釋方面限制條件語(yǔ)句中的else只能與其前面的、還沒(méi)有和其他else配對(duì)的then配對(duì)。如此限制之后,符號(hào)串if B then if B then S else S就只有圖2-5左邊的樹(shù)形結(jié)構(gòu)了。,2.二義性文法的證明,要判定一個(gè)文法是否是二義性文法

38、,或它是否產(chǎn)生一個(gè)先天二義性的上下文無(wú)關(guān)語(yǔ)言,是個(gè)遞歸不可解的。即不存在一個(gè)算法,它能在有限的步驟內(nèi),確切的判斷出某個(gè)給定的文法是否是一個(gè)二義性文法。我們要證明一個(gè)文法是否是一個(gè)二義性文法,就是找到該文法的一個(gè)句型特例,能夠畫(huà)出這個(gè)句型的兩棵語(yǔ)法樹(shù),該文法就是二義性文法。,例2.25 文法G=({E},{+,*,I,(,)},P,E)其中P為:E?i E?E+EE?E*EE?(E)證明該文法是二義性文法,并將該文法改為等

39、價(jià)的非二義性文法(等價(jià)的文法是指產(chǎn)生的語(yǔ)言相等的文法)。,【證明】取句型i*i+i,寫(xiě)出該句型的兩個(gè)不同的推導(dǎo)。畫(huà)出推導(dǎo)的兩棵不同的語(yǔ)法樹(shù)。推導(dǎo)1:E?E+E?E*E+E?i*E+E?i*i+E?i*i+i推導(dǎo)2:E?E*E?i*E?i*E+E?i*i+E?i*i+i推導(dǎo)的兩棵語(yǔ)法樹(shù)如圖2-6所示。將文法改為非二義性文法為:E?T |E+TT?F |T*FF?(E)|i,2.3.5文法產(chǎn)生的語(yǔ)言和產(chǎn)生語(yǔ)言的文法,例2.26

40、 設(shè)G=(VN,VT,P,S),VN={S,B,E},VT={a,b,c},P由下列產(chǎn)生式組成:①S?aSBE②S?aBE③EB?BE④aB?ab⑤bB?bb⑥bE?be⑦eE?ee(1)問(wèn)該文法是Chomsky哪一類型的文法?(2)它生成的語(yǔ)言是什么?,答:根據(jù)文法分類定義,由于文法中存在產(chǎn)生式,其左部由長(zhǎng)度大于1的符號(hào)串構(gòu)成,如產(chǎn)生式“EB?BE”,顯然不符合Chomsky 的2型和3型文法的定義。該文法產(chǎn)生式左部

41、串的長(zhǎng)度均小于等于右部串的長(zhǎng)度,符合1型文法的定義,所以該文法是上下文有關(guān)文法。,,(2)根據(jù)如下推導(dǎo):對(duì)于每一個(gè)n≥1,我們將①號(hào)產(chǎn)生式使用n-1次,得到推導(dǎo)序列:S ? an-1S(BE)n-1,然后使用產(chǎn)生式(2)一次,得到:S ? an(BE)n,然后從an(BE)n.繼續(xù)推導(dǎo),總是對(duì)EB使用產(chǎn)生式③的右部進(jìn)行替換,而最終在得到的串中,所有的B都限于所有的E。設(shè)n=3,aaBEBEBE?aaaBBEEBE?aaaBBEBEE?a

42、aaBBBEEE。即有:S ? anBnEn.接著,使用產(chǎn)生式(4)一次,得到SanbBn-1En,然后使用產(chǎn)生式⑤n-1 次得到:S ? anbnEn,然后使用產(chǎn)生式⑥一次,使用產(chǎn)生式⑦n-1次,得到:S ? anbnen 因此該文法產(chǎn)生的語(yǔ)言是L(G)={anbnen|n≥1}。,,,,例2.27 設(shè)有上下文無(wú)關(guān)文法如下:G[S]:S?ABA?UTU?a|aUT?b|bTB?c|cC將文法的產(chǎn)生式代入

43、產(chǎn)生如下文法:G[S]: S?UTB U?a| aUT?b|bTB?c|cC,考察文法,用L(S),L(U),L(T)和L(B)分別表示從終結(jié)符S,U,T和B出發(fā)推導(dǎo)出的符號(hào)串的集合,不難發(fā)現(xiàn):L(U)={ai|i≥1}={a}+L(T)={bj|j≥1}={a}+L(B)={ck|k≥1}={a}+由于有S?UTB,則有:L(S)=L(U)L(T)L(B)=(aibjck|i≥1,j≥1, k≥1)={a}

44、++{c}+,例2.28 構(gòu)造一個(gè)上下文無(wú)關(guān)文法G,使其描述的語(yǔ)言L(G)是能夠被5整除的無(wú)符號(hào)整數(shù)集合。能夠被5整除的整數(shù)其結(jié)構(gòu)特點(diǎn)是,末位數(shù)一定是0或5。所以,只要保證生成的整數(shù)末位數(shù)字是0或5即可。據(jù)此,構(gòu)造描述能被5整除的無(wú)符號(hào)整數(shù)集合的文法如下:G[S]:S?N0|N5N?DN|?D?0|1|2|3|4|5|6|7|8|9,例2.29 寫(xiě)出一個(gè)上下文無(wú)關(guān)文法G,使得L(G)={anbmcmdn|n≥0,m≥1}

45、分析該語(yǔ)言的特點(diǎn),可以看出,a和d的個(gè)數(shù)是一樣的,b和c的個(gè)數(shù)是一樣的。m的取值范圍從1開(kāi)始,所以至少有一個(gè)bc,n的最小值為0。寫(xiě)出文法為:S?aAd|A A?bAc|bc,2.4句型分析與句柄,對(duì)于上下文無(wú)關(guān)文法,語(yǔ)法樹(shù)是句型推導(dǎo)過(guò)程的幾何表示;是進(jìn)行句型分析極好的工具。所謂句型分析就是識(shí)別一個(gè)符號(hào)串是否是某一個(gè)文法的句型。進(jìn)一步說(shuō)就是給定一個(gè)符號(hào)串時(shí),按照某文法的規(guī)則為該符號(hào)串

46、構(gòu)造推導(dǎo)或語(yǔ)法樹(shù),以此來(lái)識(shí)別它是文法的一個(gè)句型。對(duì)于上下文無(wú)關(guān)文法,其句型分析方法有兩大類,一類是自上而下的分析方法(又稱自頂向下),另一類是自下而上(自底向上)的分析方法。,2.4.1 自上向下的分析方法,1.基本思想 自上而下的分析方法就是從識(shí)別符號(hào)出發(fā),看是否能推導(dǎo)出待檢查的符號(hào)串,如果能推導(dǎo)出這個(gè)符號(hào)串,則表明此符號(hào)串是該文法的句型或句子,否則就不是?;蛘哒f(shuō),以文法的識(shí)別符號(hào)作為根結(jié)點(diǎn),看是否能構(gòu)造出一個(gè)語(yǔ)法樹(shù),而且此語(yǔ)法樹(shù)所

47、有葉子結(jié)點(diǎn)從左到右所構(gòu)成的符號(hào)串恰好是待檢查的符號(hào)串。如果能生成這樣的語(yǔ)法樹(shù),則表明待檢查的符號(hào)串是該文法的一個(gè)句型或句子,否則就不是。,,例2.30 設(shè)文法G[S]:S?aAbc| aBA?baB?beB|d輸入串:abed,識(shí)別該串是否是該文法的一個(gè)句子。方法:從文法的識(shí)別符號(hào)S開(kāi)始出發(fā),選擇它的一個(gè)產(chǎn)生式S?aAbc 得到直接推導(dǎo)S? aAbc以識(shí)別符S作為根結(jié)點(diǎn),構(gòu)造語(yǔ)法樹(shù),如下圖2-7所示,2.分析過(guò)程,符號(hào)串a(chǎn)A

48、bc與待檢查的符號(hào)串a(chǎn)bed的第一個(gè)符號(hào)相匹配。由于符號(hào)串a(chǎn)Abc的第2個(gè)符號(hào)是非終結(jié)符,因此需要對(duì)它進(jìn)行替換。A只有一個(gè)產(chǎn)生式A?ba。以其右部替換A,得推導(dǎo)S?aAbc?ababc得到語(yǔ)法樹(shù),如圖2-7(b)所示。符號(hào)串a(chǎn)babc與待查符號(hào)串a(chǎn)bed的第2個(gè)符號(hào)相匹配,但與第3個(gè)符號(hào)不相匹配,匹配失敗。此時(shí),需要退回到非終結(jié)符 A,重新選擇S另外的產(chǎn)生式,再做試探。這種選擇的過(guò)程稱之為回溯。,選擇S的另外一條產(chǎn)生式的規(guī)則S?aB,

49、得到直接推導(dǎo)S?aB,得到語(yǔ)法樹(shù)2-7(c),再選取其中的一條產(chǎn)生式B?beB,得到推導(dǎo)S?aB?abeB,得到語(yǔ)法樹(shù)如圖(d),將B?d代入即可得到該字符串a(chǎn)bed。。,3.存在問(wèn)題,自上而下分析方法是從文法的識(shí)別符號(hào)開(kāi)始,選擇相應(yīng)的產(chǎn)生式規(guī)則進(jìn)行推導(dǎo)。但在推導(dǎo)過(guò)程中會(huì)出現(xiàn)回溯現(xiàn)象。我們把出現(xiàn)回溯的分析稱為不確定的自頂上下分析方法。這種方法花費(fèi)時(shí)間多,效率低,編程實(shí)現(xiàn)時(shí)復(fù)雜,如果對(duì)文法加以限制,就可以避免回溯,這就出現(xiàn)了我們后面要提

50、到的LL(1)分析方法,2.4.2確定的自上而下的分析方法,例2.31 設(shè)文法G[S]S?aBc|bCdB?eB|fC?dC|c試檢查符號(hào)串a(chǎn)efc是不是該文法的句子。,識(shí)別符S有兩條產(chǎn)生式,它們的右部首符號(hào)分別是終結(jié)符a和b。待檢查符號(hào)串a(chǎn)efc的首符號(hào)是a,所以從識(shí)別符S出發(fā),只能選擇其產(chǎn)生式S?aBc得到直接推導(dǎo)S?aBc得到語(yǔ)法樹(shù)如圖2-8(a)所示。其中,非終結(jié)符B有兩條產(chǎn)生式,它們右部首符號(hào)分別是終結(jié)符e與f,而待檢

51、查的符號(hào)串a(chǎn)efc的第2個(gè)符號(hào)是終結(jié)符e,所以選擇B的產(chǎn)生式B?eB得到推導(dǎo)S?aBc?aeBc,得到語(yǔ)法樹(shù)如圖2-8(b)所示。,由于待檢查的符號(hào)串a(chǎn)efc的第3個(gè)符號(hào)是終結(jié)符f,因而對(duì)句型aeBc中的非終結(jié)符B選擇其產(chǎn)生式B?f的推導(dǎo)S?aBc?aeBc?aefc得到語(yǔ)法樹(shù)如圖2-8(c)所示。如此推導(dǎo)出的符號(hào)串a(chǎn)efc,語(yǔ)法樹(shù)的葉子結(jié)點(diǎn)序列是aefc,與待檢查的符號(hào)串a(chǎn)efc相匹配。,例2.32 若有文法G[S]S?Ap|B

52、qA?aA?cAB?bB?dB當(dāng)輸入串W=ccap,那么試圖推出輸入串的推導(dǎo)過(guò)程為:S?Ap?cAp?ccAp?ccap很容易構(gòu)造相應(yīng)語(yǔ)法樹(shù),如圖2-9所示。,2.4.3自下而上的分析方法,1.基本思想自下而上的分析方法的基本思想是從待檢查的符號(hào)串出發(fā),看最終是否能歸約到文法的識(shí)別符號(hào)。如果能歸約到文法的開(kāi)始的識(shí)別符號(hào),則表明此待檢查的符號(hào)串是該文法的一個(gè)句型或句子,否則便不是。,例2.33 若有文法G[S]①S?c

53、Ad②A?ab③A?a識(shí)別輸入串w=cabd是否是該文法的句子。首先從輸入串開(kāi)始,掃描cabd,從中尋找一個(gè)子串,該子串與某一產(chǎn)生式的右端相匹配。子串a(chǎn)和子串a(chǎn)b都是合格的,假若我們選用了ab,用產(chǎn)生式②的左端A去替代它,即把a(bǔ)b歸約到A,得到串cAd。構(gòu)造一個(gè)直接推導(dǎo)cAd?cabd,即從cabd葉子開(kāi)始向上構(gòu)造語(yǔ)法樹(shù),接下去在得到的串cAd中又找到了子串cAd與產(chǎn)生式①的右端相匹配,則用S替代cAd,或稱將cAd歸約到S,

54、得到了又一直接推導(dǎo)S?cAd,形成了最終的語(yǔ)法樹(shù)。分析過(guò)程如圖2-10所示。,2.存在問(wèn)題,在自上向下的分析中,假定要被代換的最左非終結(jié)符的符號(hào)是V,且有n條規(guī)則:V??1|?2|?3|…|?n,那么如何確定用哪個(gè)右部去替換V?有一種解決方法是從各種可能的選擇中挑選一種,并希望它是正確的。如果發(fā)現(xiàn)它是錯(cuò)誤的,我們必須退回,再試著進(jìn)行另外的選擇,這種方式稱為回溯。,在自下向上的分析方法中,在分析程序工作的每一步中,都從當(dāng)前串中選擇一個(gè)子串

55、,將它歸約到某個(gè)非終結(jié)符號(hào),我們暫且把這個(gè)子串稱為“可歸約串”。出現(xiàn)的問(wèn)題是如何確定這個(gè)“可歸約串”?比如在上例中,我們?cè)趯?duì)輸入串cabd 的分析中,如果不是選擇ab,用產(chǎn)生式②,而是選擇a,用產(chǎn)生式③將a歸約到A,那么最終就達(dá)不到S的結(jié)果,也就不知道cabd是一個(gè)句子。因此在歸約時(shí),ab是“可歸約串”而不是a。如何求“可歸約串”成為自下而上進(jìn)行分析的關(guān)鍵。下面我們用“句柄”的概念來(lái)描述“可歸約,3.句柄的概念,(1)形式化定義定義2

56、.21令G是一文法,S是文法的開(kāi)始符號(hào),??? 是文法的一個(gè)句型。如果有:S?A?且A?則稱?是句型???相對(duì)于非終結(jié)符A的短語(yǔ)。特別地,如有A??則稱?是句型???相對(duì)于規(guī)則A??的直接短語(yǔ)。一個(gè)句型的最左直接短語(yǔ)稱為該句型的句柄。(2)求一個(gè)句型的句柄給定某個(gè)句型,要求出該句型的句柄,比較直觀的方法就是畫(huà)出該句型的語(yǔ)法樹(shù)。該語(yǔ)法樹(shù)的一棵子樹(shù)的葉子結(jié)點(diǎn)(從左到右)組成的符號(hào)串便是這個(gè)句型關(guān)于子樹(shù)根結(jié)點(diǎn)的一個(gè)短語(yǔ)。,語(yǔ)法樹(shù)的一棵

57、簡(jiǎn)單子樹(shù)(只有單層子樹(shù))的葉子結(jié)點(diǎn)組成的符號(hào)串是這個(gè)句型關(guān)于簡(jiǎn)單子樹(shù)根結(jié)點(diǎn)的一個(gè)直接短語(yǔ)。語(yǔ)法樹(shù)的最左的簡(jiǎn)單子樹(shù)葉子結(jié)點(diǎn)組成的符號(hào)串就是這個(gè)句型的句柄。例2.34 已知文法G[S]:S?(R)|a|∧R?TT?S,T|S句型?=(a,(T),(S,T))的語(yǔ)法樹(shù)如圖2-11所示。,【解答】觀察該語(yǔ)法樹(shù),共有10個(gè)非葉子結(jié)點(diǎn),10棵子樹(shù)。因此有短語(yǔ)aT(T)S,T(S,T)(T), (S,T)a, (T),

58、(S,T)(a, (T), (S,T)),2.4.4文法的存儲(chǔ),一個(gè)文法的語(yǔ)法圖由該文法所有非終結(jié)符的定義圖組成。每個(gè)非終結(jié)符號(hào)的定義圖是一個(gè)結(jié)構(gòu)型數(shù)據(jù)。名字定義下一個(gè)候選式右部后繼寫(xiě)成高級(jí)語(yǔ)言的結(jié)構(gòu)型數(shù)據(jù)形式,則為:type struc=↑boxesboxes=recordname:array[1‥10] of char;def:struc;nextp:struc;righ

59、ts:struc;end;,其中,“名字”是用某種內(nèi)部形式表示的終結(jié)符號(hào)或非終結(jié)符號(hào)的名字?!岸x”是一個(gè)指針,對(duì)于非終結(jié)符號(hào),它指向其第一個(gè)侯選式結(jié)構(gòu)圖的開(kāi)始位置。對(duì)于終結(jié)符號(hào),它為0;“下一個(gè)侯選式”是一個(gè)指針,指向相同左部的下一個(gè)侯選式的開(kāi)始位置。若無(wú)侯選式,則它為0;“右部后繼”是一個(gè)指針,指向同一個(gè)右部的下一個(gè)符號(hào)。另用一個(gè)一維數(shù)組記錄所有的非終結(jié)符號(hào)定義圖的開(kāi)始地址。也就是說(shuō),這個(gè)數(shù)組的每個(gè)元素都是一個(gè)指針,分別

60、指向相應(yīng)的非終結(jié)符號(hào)的第一個(gè)候選式的定義圖。,例2.35文法E?EAT|TT?TMF|FF?(E)|iA?+|-M?*|/按照上面的存儲(chǔ)結(jié)構(gòu),畫(huà)出文法的存儲(chǔ)結(jié)構(gòu)如圖2-12所示:,小 結(jié),文法是形式語(yǔ)言的一個(gè)十分重要的基本概念。文法可定義為一個(gè)四元組,文法G=(VN,VT,P,S),其中,VN是一個(gè)非終結(jié)符集,VT是一個(gè)終結(jié)符集,P是一個(gè)產(chǎn)生式集,S是文法的開(kāi)始符號(hào)。Chomsky 將文法分為0 型,1型,2型和3型文法

61、。程序設(shè)計(jì)語(yǔ)言的詞法規(guī)則屬于3型文法(正規(guī)文法),程序設(shè)計(jì)語(yǔ)言的語(yǔ)法和語(yǔ)義部分一般是采用2型文法來(lái)描述。,對(duì)于一個(gè)文法,我們需要研究它的句型,句子和語(yǔ)言。要識(shí)別一個(gè)符號(hào)串是不是一個(gè)文法的句子,需要對(duì)它進(jìn)行語(yǔ)法分析。分析方法有兩類,一類是自上而下分析法,另一類是自下而上的分析方法。為了進(jìn)行語(yǔ)法分析,需要事先將產(chǎn)生式存儲(chǔ)在計(jì)算機(jī)中??梢詾槲姆ń⒁粋€(gè)產(chǎn)生式表,把文法的所有的產(chǎn)生式都放在這個(gè)產(chǎn)生式表中。為了在分析過(guò)程中能迅速查找到相應(yīng)的產(chǎn)生

62、式,還可以建立一個(gè)目錄表。,習(xí) 題,1.設(shè)字母表A={a},符號(hào)串x=aaa,寫(xiě)出下列符號(hào)串及其長(zhǎng)度:x0,xx,x5以及A+和A*。2.令?={a,b,c},又令x=abc,y=b,z=aab,寫(xiě)出下列符號(hào)串及它們的長(zhǎng)度:xy,xyz,(xy)3。3.設(shè)文法G[S]:S→SS*|SS+|a,寫(xiě)出符號(hào)串a(chǎn)a+a*規(guī)范推導(dǎo),并構(gòu)造語(yǔ)法樹(shù)。4.已知文法①S?AB ②A??|aA ③B?bc|bBc寫(xiě)出該

63、文法描述的語(yǔ)言。,5.已知文法①E?T|E+T|E-T②T?F|T*F|T/F③F?(E)|i寫(xiě)出該文法的開(kāi)始符號(hào)、終結(jié)符集合VT、非終結(jié)符集合VN。,6.對(duì)于文法①E?T|E+T|E-T②T?F|T*F|T/F③F?(E)|i寫(xiě)出句型T+T*F+i的短語(yǔ)、簡(jiǎn)單短語(yǔ)以及句柄。7.設(shè)計(jì)出語(yǔ)言{anbm|n,m≥1}的文法。8.文法G=({A,B,S},{a,b,c},P,S)其中P為:S→Ac|AbA→abB→

64、bc寫(xiě)出LG[S])的全部元素。,9.已知文法Z→aZb Z→ab 寫(xiě)出L(G[Z])的全部元素。10.為句子i+i*i構(gòu)造兩棵語(yǔ)法樹(shù),從而證明下述文 法是二義性的。 →i|()| →+|-|*|/11.寫(xiě)出生成下述語(yǔ)言的上下文無(wú)關(guān)文法。 (1){anbnambm|n,m≥0} (2) {1n0m1m0n|n,m≥0}12.句型、句子和語(yǔ)言之間有

溫馨提示

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

評(píng)論

0/150

提交評(píng)論