電腦編譯原理---文法

來源:互聯網
上載者:User

標籤:style   ar   sp   on   bs   size   演算法   as   設計   

喬姆斯基把方法分成四種類型,即0型、1型、2型和3型。這幾種文法類型的概念一定要掌握,是一個非常重要的考點。對於這幾種文法,一般書上都只有簡單的

概念介紹,比較抽象,所以很多學員都沒有真正理解。下面我將把概念結合例題進行講解。 

0型文法 

設G=(VN,VT,P,S),如果它的每個產生式α→β是這樣一種結構:α∈(VN∪VT)*且至少含有一個非終結符,而β∈(VN∪VT)*,則G是一個0型文法。0型文

法也稱短語文法。一個非常重要的理論結果是:0型文法的能力相當於圖靈機(Turing)。或者說,任何0型文語言都是遞迴可枚舉的,反之,遞迴可枚舉集必定是

一個0型語言。0型文法是這幾類文法中,限制最少的一個,所以我們在試題中見到的,至少是0型文法。 


1型文法 

1型文法也叫上下文有關文法,此文法對應於線性有界自動機。它是在0型文法的基礎上每一個α→β,都有|β|>=|α|。這裡的|β|表示的是β的長度。 

注意:雖然要求|β|>=|α|,但有一特例:α→ε也滿足1型文法。 

如有A->Ba則|β|=2,|α|=1符合1型文法要求。反之,如aA->a,則不符合1型文法。 


2型文法 

2型文法也叫上下文無關文法,它對應於下推自動機。2型文法是在1型文法的基礎上,再滿足:每一個α→β都有α是非終結符。如A->Ba,符合2型文法要求。 

如Ab->Bab雖然符合1型文法要求,但不符合2型文法要求,因為其α=Ab,而Ab不是一個非終結符。 


3型文法 

3型文法也叫正規文法,它對應於有限狀態自動機。它是在2型文法的基礎上滿足:A→α|αB(右線性)或A→α|Bα(左線性)。 

如有:A->a,A->aB,B->a,B->cB,則符合3型文法的要求。但如果推導為:A->ab,A->aB,B->a,B->cB或推導為:A->a,A->Ba,B->a,B->cB則不符合3型方法的要求

了。具體的說,例子A->ab,A->aB,B->a,B->cB中的A->ab不符合3型文法的定義,如果把後面的ab,改成“一個非終結符+一個終結符”的形式(即為aB)就對了

。例子A->a,A->Ba,B->a,B->cB中如果把B->cB改為B->Bc的形式就對了,因為A→α|αB(右線性)和A→α|Bα(左線性)兩套規則不能同時出現在一個文法中,

只能完全滿足其中的一個,才能算3型文法。 


注意:上面例子中的大寫字母表示的是非終結符,而小寫字母表示的是終結符。 


討論上下文有關文法(context-sensitive grammar)和0型文法(type-0 grammar)。

   我們首先討論上下文有關文法。

   上下文有關文法的重寫規則P的形式為

                   φ→ψ,

其中,φ和ψ都是符號串,並且要求|φ|≤|ψ|,也就是ψ的長度不小於φ的長度。

    現在有一種形式語言L={anbncn},它是由n個a,n個b和n個c相互毗連而成的符號串,並且要求n≥1。產生這種語言的文法G是:

             G = {Vn, Vt, S, P}

                 Vn = {S, B, C}

                 Vt = {a, b, c}

                 S = S

                 P:

                    S → aSBC                 ①

                    S → aBC                  ②

                   CB → BC                   ③

                   aB → ab                   ④

                   bB → bb                   ⑤

                   bC → bc                   ⑥

                   cC → cc                   ⑦

   從S開始,用規則① n-1次,得到

              S => an-1S(BC)n-1

   然後,用規則②一次,得到

                  S => an(BC)n

   規則③可以把(BC)n變換成BnCn。例如,如果n=3,則有

       aaaBCBCBC => aaaBBCCBC => aaaBBCBCC => aaaBBBCCC,

   這樣,便有

             S => anBnCn

   接著,用規則④一次,得到

                   S => anbBn-1Cn

    然後,用規則⑤n-1次,得到

                   S => anbnCn

    然後,用規則⑥一次,得到

                   S => anbncCn-1

    最後,用規則⑦n-1次,得到

                   S => anbncn

    這就是我們要產生的形式語言。

    這個文法的各個重寫規則中,右邊的符號數總是大於或者等於左邊的符號數,滿足條件

                  |φ|≤|ψ|

    因此,這個文法是上下文有關文法。

    Chomsky指出,上下文有關文法和上下文無關文法之間存在著如下的關係:

    第一,每一個上下文無關文法都包含在上下文有關文法之中。

      在上下文有關文法的重寫規則φ→ψ中,φ和ψ都是符號串,當重寫規則左邊的符號串蛻化為一個單獨的非終極符號A時,就有A→ψ,由於ψ是符號串,


因而可用ω代替,即得A→ω,這就是上下文無關文法的重寫規則。

    第二,存在著不是上下文無關語言的上下文有關語言。例如,Chomsky指出的不能用有限狀態文法來產生的語言L3={αα},也不能用上下文無關文法來產生


。但是,它卻可以用上下文有關文法來產生。產生語言L3的文法如下:

                G = {Vn, Vt, S, P}

                   Vn = {S}

                   Vt = {a, b}

                   S = S

                   P:

                      S → aS                      ①

                      S → bS                      ②

                      αS → αα                     ③

   在規則③中,α是集合{a, b}上的任意非空符號串,由於αS的長度不大於αα的長度,並且αS不是單個的非終極符號,而是符號串,所以,這個文法不可


能是上下文無關文法,而是上下文有關文法。

   例如,形式語言abbabb可以這樣來產生:從S開始,用規則①一次,得到S=>aS,用規則②兩次,得到S=>abbS,用規則③一次,得到S=>abbabb。

   可見,上下文有關文法的產生能力,比有限狀態文法和上下文無關文法都強。但是,由於上下文無關文法可以採用Chomsky範式這種有力的手段來實現層次分


析,所以,在自然語言的電腦處理中,人們還是樂於採用上下文無關文法。

   最後,我們來討論0型文法(type-0 grammar)。

   0型文法的重寫規則是φ→ψ,除了要求φ≠ψ之外,沒有任何別的限制。Chomsky證明了,每一個0型語言都是符號串的“遞迴可枚舉集”(recursively 


enumerable set);並且證明,任何一個上下文有關語言同時又是0型語言,而且還存在著不是上下文有關語言的0型語言。因此,上下文有關語言應包含於0型


語言之中,它是0型語言的子集合。

   不過,因為0型文法的重寫規則幾乎沒有什麼限制,用於描寫自然語言頗為困難,它的產生能力太強,會產生難以計數的不合格的句子。所以,在Chomsky的


四種類型的文法中,最適合於描述自然語言的還是上下文無關文法。這種文法,我國自然語言處理的學者習慣於把它叫做短語結構文法。

   Chomsky的形式語言理論,對於電腦科學發生了重大的影響。Chomsky把他的四種類型的文法分別與圖靈機、線性有界自動機、後進先出自動機和有限自動


機等四種類型的自動機(自動機是用來識別語言的抽象機器)聯絡起來,並且證明了文法的產生能力和語言自動機的識別能力的等價性的四個重要結果:

   ①若一語言能被圖靈機識別,則它就能用0型文法產生,反之亦然。

   ②若一語言能被線性有界自動機識別,則它就能用上下文有關文法產生,反之亦然。

   ③若一語言能被後進先出自動機識別,則它就能用上下文無關文法產生,反之亦然。

   ④若一語言能被有限自動機識別,則它就能用有限狀態文法產生,反之亦然。

   Chomsky的上述結論,提供了關於語言的產生過程和語言的識別過程的極為精闢的見解。這對於電腦程式語言的設計、演算法分析、編譯技術、圖象識別、人


工智能等,都是很有用處的,在自然語言處理中,也發揮了巨大的作用。


電腦編譯原理---文法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.