⑴ 在文法的喬姆斯基體系中,文法被分為幾類各有什麼特點
在文法的喬姆斯基體系中,文法被分為4類,分別是0型文法、1型文法、2型文法、3型文法。具體釋義和特點如下:
一、0型文法:也叫短語結構文法或無限制文法,其描述能力相當於圖靈機,可使用任何的語法描述形式;
二、1型文法:也叫上下文有關文法,其描述能力相當於線性有界自動機,語法形式如下:
xSy -> xAy。也就是說,S推導出A是和上下文x, y相關的,即S只有在上下文x, y的環境中才能推導出A;
三、2型文法:也叫上下文無關文法,其描述能力相當於下推自動機,語法形式如下:
S -> A。S可以無條件的推導出A,和上下文無關,上下文無關文法因此得名;
四、3型文法:也叫正則文法,等價於正則表達式,其描述能力相當於有窮自動機,語法形式如下:S -> Aa。其中最後一個a必須為非終結符。
⑵ 編譯原理中,形式語言里怎麼區分2型文法與3型文法
二型文法如下:
S->Ac
S->Sc
A->ab
A->aAb
三型文法如下:
S->aS
A->bA
B->cB
B->c
A->Bb
A、2型文法是上下文無關文法,表現在產生式上就是產生式的左部只有一個非終結符;3型文法從廣義上講包括左線形文法、右線形文法和正規文法 。
B、左線形文法產生式的右部要麼沒有非終結符,如果有非終結符也只能有一個,且必須位於產生式右部的最左端。
C、右線形文法產生式的右部要麼沒有非終結符,如果有非終結符也只能有一個,且必須位於產生式右部的最右端 。
D、正規文法是右線形文法的一個子集,其產生式右部只有三種情況:
1)空串
2)只有一個終結符
3)只有一個終結符後接一個非終結符
E、所有的3型文法都是2型文法。
⑶ 編譯原理中,形式語言里怎麼區分2型文法與3型文法
通過演算法對文法的每一產生式進行分析,如果存在復雜遞歸,則必是上下文無關文法,否則就是正則文法.
1、像A->Aa|ε這樣的文法,雖然存在遞歸,但卻是單一的自遞歸,可以通過有窮自動機表示和分析處理,所以是正則文法;
2、但是像E->E+T,T->id|(E)這樣的文法顯然非單一的自遞歸,而是存在復雜遞歸,自動機是無法表示和處理的,必然是上下文無關文法.
另外還請注意:
1、正則文法是上下文文法的子集,正則文法也屬於上下文無法,但有的上下文文法不一定是正則文法;
2、同時再結合這兩個的形式定義認真揣摩必定能悟出一二.