編譯原理第二講_第1頁
編譯原理第二講_第2頁
編譯原理第二講_第3頁
編譯原理第二講_第4頁
編譯原理第二講_第5頁
已閱讀5頁,還剩57頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

形式語言及其文法2.1語言概述2.2基本定義2.3文法2.4推導(dǎo)2.5文法的分類2.6文法的構(gòu)造本節(jié)主要內(nèi)容2.1語言概述什么是語言?2.1語言概述自然語言(NaturalLanguage)是人與人的通訊工具是人類概念形成和進行思維的工具,是人之所以為人的主要特征復(fù)雜,多歧義——難以形式化計算機語言(ComputerLanguage)計算機系統(tǒng)間、人機間通訊工具嚴(yán)格的語法(Grammar)、語義、易于形式化形式語言與自動機理論的關(guān)系NoamChomsky(1928——)形式語言與自動機理論的關(guān)系語言學(xué)家Chomsky最初從產(chǎn)生語言的角度研究語言。1956年,通過抽象,他將語言形式地定義為是由一個字母表中的字母組成的一些串的集合??梢栽谧帜副砩习凑找欢ǖ囊?guī)則定義一個文法(Grammar),該文法所能產(chǎn)生的所有句子組成的集合就是該文法產(chǎn)生的語言。1959年,Chomsky通過深入研究,不僅確定了文法和自動機分別從生成和識別的角度去表達語言,而且證明了文法與自動機的等價性。形式語言與自動機理論的關(guān)系20世紀(jì)50年代,人們用巴科斯范式(BackusNourForm或BackusNormalForm,簡記為BNF)成功地對高級語言ALGOL-60進行了描述。實際上,巴科斯范式就是上下文無關(guān)文法(ContextFreeGrammar)的一種表示形式。這一成功,使得形式語言在20世紀(jì)60年代得到了大力的發(fā)展。2.1語言概述形式語言的描述方法文法——數(shù)學(xué)語言(符號)嚴(yán)格、準(zhǔn)確、形式化高度的抽象,嚴(yán)格的理論基礎(chǔ)和方便的計算機表示。2.1語言概述形式語言的組成要素語言(Language):滿足一定條件的句子集合句子(Sentence):滿足一定規(guī)則的單詞序列單詞(Token):滿足一定規(guī)則的字符串2.1語言概述程序設(shè)計語言的組成要素程序設(shè)計語言(ProgrammingLanguage):組成程序的所有語句的集合。程序(Program):滿足語法規(guī)則的語句序列。語句(Sentence):滿足語法規(guī)則的單詞序列。單詞(Token):滿足詞法規(guī)則的字符串。例:變量:=表達式if條件then語句while條件do語句2.2基本定義字母表(Alphabet)∑是一個非空有窮集合,字母表中的元素稱為該字母表的一個字母(Letter),也叫字符(Character)。例以下是不同的字母表: ⑴{a,b,c,d} ⑵{a,b,c,……,z} ⑶{0,1}

(4)ASCII字母表2.2基本定義符號串的定義由字母表中的符號所組成的任何有窮序列被稱之為該字母表上的符號串,也稱作"字"。(1)ε是∑上的一個符號串。(2)若x是∑上的符號串,而a是∑的元素,則xa是∑上的符號串。(3)y是∑上的符號串,當(dāng)且僅當(dāng)它由(1)和(2)導(dǎo)出。2.2基本定義設(shè)s是符號串,則s的前綴:移走s的尾部的零個或多于零個符號后綴:刪去s的頭部的零個或多于零個符號子串:從s中刪去一個前綴和一個后綴逆轉(zhuǎn):將S中的符號按相反次序?qū)懗龆玫降姆柎L度:是該符號串中的符號的數(shù)目。例如|aab|=3,|ε|=0。2.2基本定義符號串的連接和方冪1.連接:設(shè)x和y是符號串,它們的連接xy是把y的符號寫在x的符號之后得到的符號串。例如,x=ba,y=nana,xy=banana.2.方冪:x0=;x1=x;x2=xx;……;xn=xn-1x;例如,設(shè)x=ba,則x1=ba,x2=baba,x3=bababa,……2.2基本定義定義1設(shè)∑1、∑2是兩個字母表,∑1與∑2的乘積(Product)定義為∑1∑2={ab|a∈∑1,b∈∑2}例:∑1={0,1},∑2={a,b},∑1∑2={0a,0b,1a,1b}定義2設(shè)∑是一個字母表,∑的n次冪(Power)遞歸地定義為:⑴∑0={ε}⑵∑n=∑n-1∑n≥1例:∑13={000,001,010,011,100,101,110,111}2.2基本定義定義3設(shè)∑是一個字母表,∑的正閉包定義為:∑+=∑∪∑2∪∑3∪∑4∪……∑的閉包為:∑*=∑0∪∑+=∑0∪∑∪∑2∪∑3∪……

2.2基本定義例{0,1}+={0,1,00,01,10,11,000,001,010,011,100,……}{0,1}*={ε,0,1,00,01,10,11,000,001,010,011,100,…}

2.2基本定義定義5設(shè)∑是一個字母表,L∑*,L稱為字母表∑上的語言(Language),x∈L,x叫做L的一個句子。例:字母表{0,1}上的語言{0,1}{00,11}{0,1,00,11}{0,1,00,11,01,10}{00,11}*{01,10}*2.3文法如何實現(xiàn)語言結(jié)構(gòu)的形式化描述?考慮一個句子——文法要素的提取分析:Thegreywolfwilleatthegoat〈謂語〉〈主語〉〈形容詞〉〈名詞〉〈動詞〉〈直接賓語〉情態(tài)動詞〈句子〉動原冠詞名詞Thegreywolfwilleatthegoat〈冠詞〉句子主語

謂語(1)主語冠詞形容詞名詞(2)冠詞the

(3)形容詞grey

(4)謂語

動詞直接賓語(5)動詞情態(tài)動詞動詞原形(6)情態(tài)動詞will

(7)動詞原形eat

(8)直接賓語

冠詞名詞(9)名詞wolf

(10)

名詞goat

(11)句子的組成規(guī)則問題:如何用符號來描述?即如何形式化?終結(jié)符號集VT= {the,grey,wolf,will,eat,goat}非終結(jié)符號集VN= {句子,主語,謂語,冠詞,形容詞,名詞,

動詞,直接賓語,助動詞,動詞原形}語法規(guī)則集P={句子

主語謂語,

……}開始符號S=句子定義句子的規(guī)則的語法組成問題:有了定義句子的規(guī)則,如何推導(dǎo)出語言?句子主語謂語冠詞形容詞名詞謂語the

形容詞名詞謂語thegrey名詞謂語thegreywolf

謂語thegreywolf

動詞直接賓語

…...thegreywolfwilleatthegoat句子的推導(dǎo)

句子thegreywolfwilleatthegoat

thegreywolfwilleatthewolf

thegreygoat

willeatthewolfthegreygoat

willeatthegrey符合語法且符合語義的句子僅是:

thegreywolfwilleatthegoat句子的語義約束文法G的形式定義文法G為一個四元組: G=(VT,VN,P,S)VT:終結(jié)符(Terminal)集VN:非終結(jié)符(Variable)集,VT∩VN=Φ語法成分——代表某個語言的各種子結(jié)構(gòu)S:開始符號(StartSymbol),S∈VN代表文法所定義的語言,至少在產(chǎn)生式左側(cè)出現(xiàn)一次文法G的形式定義P:產(chǎn)生式(Product)集合α→β,被稱為產(chǎn)生式(定義式),讀作:α定義為β。其中α∈(VT∪VN)+,且α中至少有VN中元素的一個出現(xiàn)。β∈(VT∪VN)*。α稱為產(chǎn)生式α→β的左部(LeftPart),β稱為產(chǎn)生式α→β的右部(RightPart)。產(chǎn)生式定義各個語法成分的結(jié)構(gòu)(組成規(guī)則)

產(chǎn)生式的簡寫對一組有相同左部的產(chǎn)生式α→β1,α→β2…,α→βn可以簡單地記為:α→β1|β2|…|βn讀作:α定義為或者β1,或者β2,…,或者βn。并且稱它們?yōu)棣廉a(chǎn)生式。β1,β2,…,βn稱為候選式(Candidate)。例2-1算術(shù)表達式的文法考慮簡單算術(shù)表達式組成的語言G=({id,+,*,(,)},{E},P,E)P:E→E+EE→E*EE→(E)E→id簡寫E→E+E|E*E|(E)|id推導(dǎo)舉例EE+E (1)串中含有變量

id+E (4)串中含有變量

id+E*E (2)串中含有變量

id+id*E (4)串中含有變量

id+id*id (4)串中沒有變量到此串中已經(jīng)沒有(語法)變量了,不能再推導(dǎo)了1、E→E+E2、E→E*E3、E→(E)4、E→id最左推導(dǎo)與最右推導(dǎo)最左推導(dǎo)(Left-mostDerivation)每次推導(dǎo)都施加在句型的最左邊的語法變量上。最右推導(dǎo)(Right-mostDerivation)每次推導(dǎo)都施加在句型的最右邊的語法變量上。id+id*id的不同推導(dǎo)

E

E+E

id+E

id+E*E

id+id*E

id+id*idE

E+E

E+E*E

E+E*idE+id*id

id+id*idE

E*E

E+E*E

E+id*E

id+id*E

id+id*id不做限制E*

id+id*id最右推導(dǎo)(規(guī)范)

E+

id+id*id最左推導(dǎo)

E5

id+id*idP:E→E+E|E*E|(E)|id直接推導(dǎo)設(shè)有文法Gα→β是文法G的一個產(chǎn)生式,且γ、σ∈(VT∪VN)*,且有v,ω,滿足v=γασ,

ω=γβσ,則ω是v的直接推導(dǎo),記做v=>ω(多步)推導(dǎo)α0α1α2…αn記為α0n

αn

(恰用n步)

α0+

αn

(至少一步)

α0*

αn

(若干步:零步或多步)遞歸設(shè)有文法GA→α是文法G的一個產(chǎn)生式,若α具有vAσ的形式,其中v,σ不同時為空,則A→α是直接遞歸的

若存在推導(dǎo)Aα

*

vAσ,則A→α是遞歸的特別的,當(dāng)v為空,σ不為空時,分別稱上述兩種情況的產(chǎn)生式為直接左遞歸和左遞歸若文法中至少含有一個遞歸的產(chǎn)生式,則稱為遞歸文法句型與句子句型:如果S*α,α∈(VT∪VN)*則稱α是G產(chǎn)生的一個句型(SententialForm)EE+EE+E*EE4id+id*E句子:如果S*x,且x∈VT*,則稱x是G產(chǎn)生的一個句子(Sentence)Eid+id*id文法G產(chǎn)生的語言定義 L(G)={x|S*

xandx∈VT*}文法G的作用——語言的有窮描述以有限的規(guī)則描述無限的語言現(xiàn)象有限:產(chǎn)生式集合、終結(jié)符集合、非終結(jié)符集合無限:可以導(dǎo)出無窮多個句子(L也可是有窮)2.4文法的分類(Chomsky體系)根據(jù)語言結(jié)構(gòu)的復(fù)雜程度(形式語言)涉及文法的復(fù)雜程度、分析方法的選擇反映文法描述語言的能力如果G滿足文法定義的要求,則G是0型文法(短語結(jié)構(gòu)文法PSG:PhraseStructureGrammar)。L(G)為PSL。上下文有關(guān)文法(CSG)若產(chǎn)生式集合中所有|α|≤|β|,除S→ε外,則G是1型文法即:上下文有關(guān)文法(CSG——ContextSensitiveGrammar)L(G)為1型/上下文有關(guān)/敏感語言(CSL)上下文無關(guān)文法(CFG)若α∈VN,β∈(VN∪VT)*,則G是2型文法即:上下文無關(guān)文法(CFG:ContextFreeGrammar)L(G)為2型/上下文無關(guān)語言(CFL)CFG能描述程序設(shè)計語言的多數(shù)語法成分例2-3標(biāo)識符的文法2S→L|LT T→L|N|TL|TN L→a|b|c|d N→0|1|2|3|4|5S→a|b|c|d S→aT|bT|cT|dT T→a|b|c|d|0|1|2|3|4|5 T→aT|bT|cT|dT|0T |1T|2T|3T|4T|5T正則文法(RG)設(shè)A、B∈VN,a∈VT或為右線性(RightLinear)文法:A→aB或A→a左線性(LeftLinear)文法:A→Ba或A→a都是3型文法(正規(guī)文法RegularGrammar-RG)L(G)為3型/正規(guī)集/正則集/正則語言(RL)能描述程序設(shè)計語言的多數(shù)單詞左、右線性文法不可混用例非CFL的文法L={anbncn|n>0}的文法SaBC|aSBCCBBCaBabbBbbbCbc“可以證明”不存在CFGG,使L(G)=L

在我們使用的程序設(shè)計語言中,有些語言結(jié)構(gòu)不能用上下文無關(guān)文法來描述。例2.4L1={wcw|w∈{a,b}+}。例,aabcaab就是L1的一個句子。這個語言是檢查程序中標(biāo)識符的聲明應(yīng)先于引用的抽象。

例2.5L2={anbmcndm|n,m≥0},它是檢查過程聲明的形參個數(shù)和過程引用的參數(shù)個數(shù)是否一致問題的抽象。非上下文無關(guān)的語言結(jié)構(gòu)Chomsky體系——總結(jié)G=(VT,VN,P,S)是一個文法,α→β∈P* G是0型文法,L(G)是0型語言;

---其能力相當(dāng)于圖靈機* |α|≤|β|:G是1型文法,L(G)是1型語言(除S→ε);

---其識別系統(tǒng)是線性界限自動機* α∈VN:G是2型文法,L(G)是2型語言;

---其識別系統(tǒng)是不確定的下推自動機* A→aB或A→a:G是右線性文法,L(G)是3型語言

A→Ba或A→a:G是左線性文法,L(G)是3型語言

---其識別系統(tǒng)是有窮自動機文法的類型四種文法之間的關(guān)系是將產(chǎn)生式作進一步限制而定義的。四種文法之間的逐級“包含”關(guān)系如下:2型文法1型文法0型文法3型文法BNF范式——Backus-NaurForm

Backus-NormalFormα→β表示為α∷=β非終結(jié)符用“<”和“>”括起來終結(jié)符:基本符號集其他β(α1|α2…|αn)≡βα1|βα2…|βαn[α]≡α|ε……BNF范式——BackusNormalForm例簡單算術(shù)表達式(只寫產(chǎn)生式)<算術(shù)表達式>∷=<簡單表達式>+<簡單表達式><簡單表達式>∷=<簡單表達式>*<簡單表達式><簡單表達式>∷=(<簡單表達式>)<簡單表達式>∷=id即:<算術(shù)表達式>∷=<簡單表達式>+<簡單表達式>|<簡單表達式>*<簡單表達式>|(<簡單表達式>)|id哪些是終結(jié)符?哪些是變量?例2-6句子結(jié)構(gòu)的表示

(文法E→E+E|E*E|(E)|id)EE+EE→E+EidE→idEE*E→E*EidE→ididE→idEE+Eid+Eid+E*Eid+id*Eid+id*id一棵樹!2.5CFG的分析樹ParseTree用樹的形式表示句型的生成樹根:開始符號中間結(jié)點:非終結(jié)符葉結(jié)點:終結(jié)符或者非終結(jié)符每個推導(dǎo)對應(yīng)一個中間結(jié)點及其兒子——一個二級子樹-直接短語又稱為語法分析樹EE+TT+TF+T

a1+T

a1+T*F

a1+F*F

a1+a2*FE+TT,T+TF,F+Ta1,a1+Ta1,T*F,a1+T*Fa1,F,F*F,a1+F*F

a1,a2,a1+a2*F,a2*F

a1,a2,a3,a2*

a3

a1+a2*a3EE+TTFa1T*FFa2a3a1+a2*a3短語二義性文法與先天二義性語言對同一句子存在兩棵語法分析樹在理論上不可判定EE*EidEE+ididEE+EEEid*idid1.描述一個句子的文法不是唯一的;2.對于一個句子的分析應(yīng)是唯一的??紤]表達式下面的文法G[E],其產(chǎn)生式如下:

EE+EE*E(E)a

對于句子a+a*a,有如下兩個最左推導(dǎo):

EE+Ea+Ea+E*Ea+a*Ea+a*a

EE*EE+E*Ea+E*Ea+a*Ea+a*a文法的二義性

EE+Ea+Ea+E*Ea+a*Ea+a*a

EE*EE+E*Ea+E*Ea+a*Ea+a*aEE+EE*EaaaEE*E+EEaaa最左推導(dǎo)

EE+EE+E*EE+E*aE+a*aa+a*a

EE*EE*aE+E*aE+a*aa+a*aEE+EE*EaaaEE*E+EEaaa最右推導(dǎo)如果一個文法的句子存在兩棵分析樹,那么,該句子是二義性的。如果一個文法包含二義性的句子,則稱這個文法是二義性的;否則,該文法是無二義性的。幾點說明:1.一般來說,程序語言存在無二義性文法,對于表達式來說,文法(2.1)是二義性的。對于條件語句,經(jīng)常使用二義性文法描述它:SifexprthenSifexprthenSelseSother二義性的句子:ife1thenife2thens1elses2

二義性(歧義性,ambiquity)的定義

下面是

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論