




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1第3章程序設(shè)計(jì)語(yǔ)言的語(yǔ)法描述3.1
文法的引入3.2
上下文無(wú)關(guān)文法3.3文法舉例(略)
使用文法對(duì)程序設(shè)計(jì)語(yǔ)言的結(jié)構(gòu)進(jìn)行定義和描述。23.1文法的引入
先討論自然語(yǔ)言的文法。例:thebigelephentateabanana㈠語(yǔ)法樹(shù)根據(jù)英語(yǔ)的語(yǔ)法,上述句子的語(yǔ)法結(jié)構(gòu)可用圖(語(yǔ)法樹(shù))表示如下:非葉結(jié)點(diǎn)稱(chēng)為語(yǔ)法單位,在形式語(yǔ)言中稱(chēng)為非終結(jié)符。處于根結(jié)點(diǎn)位置的結(jié)點(diǎn)又稱(chēng)為開(kāi)始符號(hào)。葉結(jié)點(diǎn)稱(chēng)為單詞符號(hào),在形式語(yǔ)言中稱(chēng)為終結(jié)符。3㈡規(guī)則可以通過(guò)建立一組規(guī)則,來(lái)描述上述句子的語(yǔ)法結(jié)構(gòu),規(guī)則在形式語(yǔ)言中稱(chēng)為產(chǎn)生式。<句子>→<主語(yǔ)><謂語(yǔ)> <主語(yǔ)>→<冠詞><形容詞><名詞><冠詞>→the|a<形容詞>→big<名詞>→elephant|banana<謂語(yǔ)>→<動(dòng)詞><直接賓語(yǔ)><直接賓語(yǔ)>→<冠詞><名詞><動(dòng)詞>→ate㈢由規(guī)則推導(dǎo)句子可用規(guī)則來(lái)推導(dǎo)出句子。從開(kāi)始符號(hào)出發(fā),若能從規(guī)則推導(dǎo)出某符號(hào)串,則該符號(hào)串就是該文法的合法的句子,反之語(yǔ)法錯(cuò)誤。上述英文句子可用下述規(guī)則來(lái)描述:4 <句子><主語(yǔ)><謂語(yǔ)> <冠詞><形容詞><名詞><謂語(yǔ)> the<形容詞><名詞><謂語(yǔ)> thebig<名詞><謂語(yǔ)> thebigelephant<謂語(yǔ)> thebigelephant<動(dòng)詞><直接賓語(yǔ)> thebigelephantate<直接賓語(yǔ)> thebigelephantate<冠詞><名詞> thebigelephantatea<名詞> thebigelephantateabanana
上述推導(dǎo)可簡(jiǎn)單表示為:
<句子>thebigelephantateabanana。值得注意的是用上述規(guī)則可推導(dǎo)出多個(gè)句子,因存在推導(dǎo)
<句子>abigbananaatetheelephant
所以,abigbananaatetheelephant也是文法的一個(gè)合法的句子。但意義是荒謬的,也就是說(shuō)句子的語(yǔ)義是錯(cuò)誤的。一個(gè)語(yǔ)法正確的句子不能保證其語(yǔ)義是正確的,故一個(gè)句子是否正確,需要進(jìn)行語(yǔ)法和語(yǔ)義兩方面檢查。綜上所述,語(yǔ)言結(jié)構(gòu)通常是用文法來(lái)定義和描述,文法是由終結(jié)符、非終結(jié)符、開(kāi)始符號(hào)(特殊非終結(jié)符)及產(chǎn)生式四個(gè)要素構(gòu)成。從開(kāi)始符號(hào)出發(fā),根據(jù)產(chǎn)生式能推導(dǎo)出的句子全體稱(chēng)為文法所規(guī)定的語(yǔ)言5㈣遞歸規(guī)則和遞歸文法遞歸是編譯技術(shù)中的一個(gè)重要概念。①遞歸定義:定義某事物,又用到該事物本身。②遞歸規(guī)則(直接遞歸):在規(guī)則的左部和右部有相同的非終結(jié)符。例:U→xUy,通常用大寫(xiě)字母表示非終結(jié)符,用小寫(xiě)字母表示終結(jié)符。 ⑴左遞歸規(guī)則:x=ε,U→Uy(ε表示空串) ⑵右遞歸規(guī)則:y=ε,U→xU③間接遞歸:由規(guī)則推導(dǎo)產(chǎn)生。例:V→Uy|Z,U→xV
因存在推導(dǎo)VUyxVy,故存在間接遞歸。 ⑴間接左遞歸:若x=ε,則VVy。 ⑵間接右遞歸:若y=ε,則VxU。④遞歸文法:含有遞歸規(guī)則和間接遞歸的文法,稱(chēng)為遞歸文法。利用遞歸文法,可以用有窮的規(guī)則來(lái)描述無(wú)窮的語(yǔ)言,這不但解決了語(yǔ)言的定義問(wèn)題,而且使得對(duì)語(yǔ)言的語(yǔ)法檢查成為可能。63.2 上下文無(wú)關(guān)文法
形式語(yǔ)言的奠基人喬姆斯基(Chomsky)將文法分為4種類(lèi)型,它們是:短語(yǔ)文法(0型文法)上下文有關(guān)文法(1型文法)上下文無(wú)關(guān)文法(2型文法)正規(guī)文法(3型文法)這四種文法在形式語(yǔ)言中都有嚴(yán)格的定義。但對(duì)于程序設(shè)計(jì)語(yǔ)言來(lái)說(shuō),上下文無(wú)關(guān)文法已經(jīng)夠用了,上下文無(wú)關(guān)文法有足夠的能力描述大多數(shù)現(xiàn)今使用的程序設(shè)計(jì)語(yǔ)言的語(yǔ)法結(jié)構(gòu)。以后,“文法”一詞若無(wú)特別說(shuō)明,則指“上下文無(wú)關(guān)文法”。7㈠文法和語(yǔ)言一個(gè)文法G是一個(gè)四元式(VT,VN,S,P),其中VT是一個(gè)終結(jié)符的非空有限集,終結(jié)符通常用小寫(xiě)字母表示。VN是一個(gè)非終結(jié)符的非空有限集,非終結(jié)符通常用大寫(xiě)字母表示。S是一個(gè)特殊的非終結(jié)符(S∈VN),稱(chēng)為開(kāi)始符號(hào)。P是一個(gè)產(chǎn)生式(規(guī)則)的有限集合,每個(gè)產(chǎn)生式的形式是A→α,其中A∈VN,α∈(VT∪VN)*。①終結(jié)符是語(yǔ)言的基本符號(hào),即程序設(shè)計(jì)語(yǔ)言的單詞。語(yǔ)法分析時(shí),終結(jié)符用單詞的種別表示。根據(jù)前面約定: 標(biāo)識(shí)符(簡(jiǎn)單變量): i
無(wú)符號(hào)整常數(shù): x
無(wú)符號(hào)實(shí)常數(shù): y
單字符單詞: 用單詞本身表示(例單詞“+”的 種別用+表示) 多字符單詞: 需特別指定(例“++”用$表示)8②非終結(jié)符表示抽象的語(yǔ)法單位.
例“算術(shù)表達(dá)式”、“布爾表達(dá)式”、“賦值語(yǔ)句”、“說(shuō)明語(yǔ)句”和“程序”等。非終結(jié)符通常用大寫(xiě)字母表示,也可以用帶尖括號(hào)的漢字表示。③開(kāi)始符號(hào)是一個(gè)特殊的非終結(jié)符,它代表我們最感興趣的語(yǔ)法單位。例如討論算術(shù)表達(dá)式,那么描述算術(shù)表達(dá)式文法的開(kāi)始符號(hào)就是<算術(shù)表達(dá)式>。在程序設(shè)計(jì)語(yǔ)言中,我們最感興趣的語(yǔ)法單位是<程序>。④產(chǎn)生式是定義語(yǔ)法單位的一種書(shū)寫(xiě)規(guī)則。上下文無(wú)關(guān)文法產(chǎn)生式的左部必定是一個(gè)非終結(jié)符,該非終結(jié)符稱(chēng)為左部符號(hào)。產(chǎn)生式的右部是終結(jié)符和非終結(jié)符經(jīng)有限次連接構(gòu)成的文法符號(hào)串,可以是空字ε。四種文法的區(qū)別主要是對(duì)產(chǎn)生式的左部和右部的限制不同。若干個(gè)左部符號(hào)相同的產(chǎn)生式,可合并為一個(gè),例: A→α1|α2|……|αn,其中αi稱(chēng)為A的候選式(1≤i≤n)。9
例1:描述算術(shù)表達(dá)式文法G=(VT,VN,S,P),其中
VT={+,-,*,/,i,x,y,(,)} VN={<算術(shù)表達(dá)式>,<項(xiàng)>,<因子>} S=<算術(shù)表達(dá)式> P={ <算術(shù)表達(dá)式>→<算術(shù)表達(dá)式>+<項(xiàng)> <算術(shù)表達(dá)式>→<算術(shù)表達(dá)式>-<項(xiàng)> <算術(shù)表達(dá)式>→<項(xiàng)> <項(xiàng)>→<項(xiàng)>*<因子> <項(xiàng)>→<項(xiàng)>/<因子> <項(xiàng)>→<因子> <因子>→(<算術(shù)表達(dá)式>) <因子>→i //標(biāo)識(shí)符
<因子>→x //無(wú)符號(hào)整常數(shù)
<因子>→y //無(wú)符號(hào)實(shí)常數(shù)
}
根據(jù)上述文法,可推導(dǎo)出任何僅包含加減乘除的算術(shù)表達(dá)式。10
因已約定非終結(jié)符和終結(jié)符的書(shū)寫(xiě)方式,非終結(jié)符和終結(jié)符在產(chǎn)生式中一目了然,故終結(jié)符集VT和非終結(jié)符集VN無(wú)需再顯式列出。若規(guī)定左部符號(hào)為開(kāi)始符號(hào)的產(chǎn)生式寫(xiě)在所定義文法的第一行,上述文法G又可簡(jiǎn)單表示為如下形式:
<算術(shù)表達(dá)式>→<算術(shù)表達(dá)式>+<項(xiàng)> <算術(shù)表達(dá)式>→<算術(shù)表達(dá)式>-<項(xiàng)> <算術(shù)表達(dá)式>→<項(xiàng)> <項(xiàng)>→<項(xiàng)>*<因子> <項(xiàng)>→<項(xiàng)>/<因子> <項(xiàng)>→<因子> <因子>→(<算術(shù)表達(dá)式>) <因子>→i <因子>→x <因子>→y
若用E表示<算術(shù)表達(dá)式>、T表示<項(xiàng)>、F表示<因子>,借助符號(hào)'|',算術(shù)表達(dá)式文法G可表示成如下最簡(jiǎn)形式:
E→E+T︱E–T︱T T→T*F︱T/F︱F F→(E)︱i︱x︱y11
例2:描述算術(shù)表達(dá)式文法G=(VT,VN,S,P),其中
VT={+,-,*,/,i,x,y,(,)} VN={<算術(shù)表達(dá)式} S=<算術(shù)表達(dá)式> P={ <算術(shù)表達(dá)式>→<算術(shù)表達(dá)式>+<算術(shù)表達(dá)式> <算術(shù)表達(dá)式>→<算術(shù)表達(dá)式>-<算術(shù)表達(dá)式> <算術(shù)表達(dá)式>→<算術(shù)表達(dá)式>*<算術(shù)表達(dá)式> <算術(shù)表達(dá)式>→<算術(shù)表達(dá)式>/<算術(shù)表達(dá)式> <算術(shù)表達(dá)式>→(<算術(shù)表達(dá)式>) <算術(shù)表達(dá)式>→i //標(biāo)識(shí)符
<算術(shù)表達(dá)式>→x //無(wú)符號(hào)整常數(shù)
<算術(shù)表達(dá)式>→y //無(wú)符號(hào)實(shí)常數(shù)
}
根據(jù)上述文法,同樣可推導(dǎo)出任何僅包含加減乘除的算術(shù)表達(dá)式。用E表示<算術(shù)表達(dá)式>,上述文法可簡(jiǎn)記為:
E→E+E|E-E|E*E|E/E|(E)|i|x|y12㈡基本術(shù)語(yǔ)以文法G:
E→E+E|E*E|(E)|i為例,進(jìn)行下述討論。①直接推出和直接歸約②推導(dǎo)和歸約若α1α2…αn,則稱(chēng)該直接推出序列是從α1到αn的一個(gè)推導(dǎo),記作α1αn或α1αn。
α1αn:從α1始,經(jīng)一步或一步以上可推導(dǎo)出αn。
α1αn:從α1始,經(jīng)0步或0步以上可推導(dǎo)出αn,即 α1αn或α1=αn。也可稱(chēng)直接歸約序列αn,αn-1,…,α1為αn到α1的一個(gè)歸約。③句型若存在推導(dǎo)Sα(S為文法的開(kāi)始符號(hào)),則稱(chēng)α是文法的一個(gè)句型。④句子僅包含終結(jié)符的句型稱(chēng)為句子。13⑤語(yǔ)言文法G所能推導(dǎo)出的句子全體稱(chēng)為該文法的語(yǔ)言,記為:
L(G)={α|(Sα)∧(α∈VT*)}⑥等價(jià)文法G1和G2是二個(gè)不同的文法,若L(G1)=L(G2),則稱(chēng)G1和G2是等價(jià)文法。等價(jià)文法的存在,使我們能夠在不改變文法所規(guī)定的語(yǔ)言的前提下,為了某種目的改造文法。⑦最左推導(dǎo)和最右推導(dǎo)在各種推導(dǎo)中,考慮今后語(yǔ)法分析的需要,我們僅對(duì)兩種推導(dǎo)感興趣。1)最左推導(dǎo)在推導(dǎo)過(guò)程中始終對(duì)最左面的非終結(jié)符進(jìn)行替換,記為。2)最右推導(dǎo)在推導(dǎo)過(guò)程中始終對(duì)最右面的非終結(jié)符進(jìn)行替換,記為。14㈢文法的二義性①語(yǔ)法樹(shù)我們可以用一個(gè)有向圖表示一個(gè)句型的推導(dǎo),這種表示稱(chēng)為語(yǔ)法樹(shù)。語(yǔ)法樹(shù)有助于理解一個(gè)句子語(yǔ)法結(jié)構(gòu)的層次。在一般情況下,某一句型不論其推導(dǎo)過(guò)程如何,其最終形成的語(yǔ)法樹(shù)是相同的,故語(yǔ)法樹(shù)是不同推導(dǎo)過(guò)程的共性抽象。若僅進(jìn)行最左(右)推導(dǎo),則語(yǔ)法樹(shù)和最左(右)推導(dǎo)等價(jià)。②二義文法若一個(gè)文法所產(chǎn)生的語(yǔ)言中,只要存在一個(gè)句子,它有二個(gè)最左推導(dǎo),或有二個(gè)最右推導(dǎo),或句子的推導(dǎo)對(duì)應(yīng)兩棵語(yǔ)法樹(shù),則稱(chēng)該文法為二義文法。③二義文法的利用和處理
1)根據(jù)條件修改文法,語(yǔ)言不變。 算符優(yōu)先性:規(guī)定*優(yōu)先于+,i+i*i等價(jià)于i+(i*i)。 算符結(jié)合性:規(guī)定同級(jí)運(yùn)算服從左結(jié)合,i+i+i等價(jià)于 (i+i)+i。
2)根據(jù)條件修改編譯程序的語(yǔ)法分析表,文法保持不變(詳見(jiàn)第四、五章)。151)根據(jù)條件修改文法,語(yǔ)言不變。算符優(yōu)先性:規(guī)定*優(yōu)先于+,i+i*i等價(jià)于i+(i*i)。算符結(jié)合性:規(guī)定同級(jí)運(yùn)算服從左結(jié)合,i+i+i等價(jià)于(i+i)+i。例文法GG:E→E+E|E*E|(E)|i是一個(gè)二義文法。根據(jù)上述條件將文法G修改成G’,如下所示
G':E→E+T|TT→T*F|FF→(E)|i顯然G'不是二義文法,但L(G)=L(G'),故G和G'等價(jià)。例句子i+i*i的最右推導(dǎo):
EE+TE+T*FE+T*iE+F*iE+i*iT+i*iF+i*ii+i*iETT*F?+?*?…先形成+,才有可能形成*。若先形成*,只有帶括號(hào)才可能形成+。162)根據(jù)條件修改編譯程序的語(yǔ)法分析表,文法保持不變。例文法G:
<語(yǔ)句>→if
標(biāo)識(shí)符
then<語(yǔ)句>else<語(yǔ)句> S→fitSeS<語(yǔ)句>→if
標(biāo)識(shí)符
then<語(yǔ)句> S→fitS<語(yǔ)句>→標(biāo)識(shí)符=<算術(shù)表達(dá)式> S→i=E<算術(shù)表達(dá)式>→無(wú)符號(hào)整常數(shù)
E→x程序段
a=2 ifxthenifythena=4elsea=6相應(yīng)的語(yǔ)法結(jié)構(gòu)表示為
i=x fitfiti=xei=x句子fitf
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年湖南鴻峪建設(shè)工程有限公司招聘7人筆試參考題庫(kù)附帶答案詳解
- 2020浙教版高中信息技術(shù)2.3《網(wǎng)上資源檢索》教學(xué)設(shè)計(jì)
- 第15課 國(guó)共合作與北伐戰(zhàn)爭(zhēng) (教學(xué)設(shè)計(jì))八年級(jí)歷史上冊(cè)同步高效課堂(部編版)
- 第二章資源安全與國(guó)家安全大單元教學(xué)設(shè)計(jì)2023-2024學(xué)年高中地理人教版(2019)選擇性必修3
- 第五章發(fā)展與合作 教學(xué)設(shè)計(jì)2023-2024學(xué)年人教版地理七年級(jí)上冊(cè)
- 第一單元 探索生命的奧秘2023-2024學(xué)年七年級(jí)上冊(cè)生物同步教學(xué)設(shè)計(jì)(蘇教版)
- 教師職業(yè)道德與學(xué)前教育政策法規(guī) 教案 10. 第三節(jié)《幼兒園教師專(zhuān)業(yè)標(biāo)準(zhǔn)(試行)》解讀
- 柑橘交易中心建設(shè)項(xiàng)目可行性研究報(bào)告-柑橘產(chǎn)業(yè)規(guī)模擴(kuò)張交易需求日益旺盛
- Theme A Learning to Love Challenge Yourself A 教學(xué)設(shè)計(jì) -2024-2025學(xué)年高中英語(yǔ)重大版(2019)必修第二冊(cè)
- 第二章 直線和圓的方程小結(jié)教學(xué)設(shè)計(jì) -2024-2025學(xué)年高二上學(xué)期數(shù)學(xué)人教A版(2019)選擇性必修第一冊(cè)
- (高清版)JTGT 3650-01-2022 公路橋梁施工監(jiān)控技術(shù)規(guī)程
- 2024年黑龍江建筑職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)全面
- 北京市2024小升初數(shù)學(xué)模擬試卷一
- 一年級(jí)口算題100以?xún)?nèi)比大小
- 《提案與方案優(yōu)化設(shè)計(jì)》課件-第一部分 常見(jiàn)戶(hù)型問(wèn)題解析及平面布局優(yōu)化
- 《水電廠應(yīng)急預(yù)案編制導(dǎo)則》
- 產(chǎn)科抗磷脂綜合征診斷與處理專(zhuān)家共識(shí)
- (正式版)SHT 3078-2024 立式圓筒形料倉(cāng)工程設(shè)計(jì)規(guī)范
- 2024ABB IRB IRB6700Inv IRB6700I產(chǎn)品手冊(cè)指南
- 正弦函數(shù)圖像與性質(zhì).課件
- 成人住院患者靜脈血栓栓塞癥預(yù)防護(hù)理
評(píng)論
0/150
提交評(píng)論