文法


文法:

認(rèn)識(shí)終結(jié)符非終結(jié)符

? ? ? ? 終結(jié)符? ? ? ? ? ? ? ? ? 非終結(jié)符

? ? (小寫,不可再分元素)? ? ? (大寫,可再分元素)

例如:

有文法G2[S]為

? ? S->Ap

? ? S->Bq

? ? A->a

? ? A->cA

? ? B->b

? ? B->dB

? ? 這里S為開始符,S,A,B為非終結(jié)符,而p,q,a,b,c,d為終結(jié)符

注意:終結(jié)符不能單獨(dú)在左邊,即a->b 這是錯(cuò)誤的。a不能單獨(dú)在左邊;

文法類型:

? ? *? 0型文法

? ? *? 1型文法

? ? *? 2型文法

? ? *? 3型文法

0型文法:

? ? 設(shè)(Vn,Vt,P,S),如果它的每個(gè)產(chǎn)生式 α->β 是這樣的一種結(jié)構(gòu):

? ? α∈(Vn ∪ Vt)*? '(且至少含有一個(gè)非終結(jié)符)',而β∈(Vn ∪ Vt)*.則G是一個(gè)0型文法。

? ? (

? ? ()*稱為閉包,

? ? Vn:非終結(jié)符集合,

? ? Vt:終結(jié)符集合,

? ? P:推導(dǎo)式集合,

? ? S:開始符


? ? )

? ? 0型文法也稱 “ 短語文法 ”。一個(gè)非常重要的理論結(jié)果是:0型文法相當(dāng)于圖靈機(jī)(Turing)。

? ? 或者說,任何0型文法語言都是遞歸可枚舉的,反之,遞歸可枚舉集必定是一個(gè)0型文法;

? ? 0型文法是這幾類文法中,限制最少的一個(gè)。所以我們?cè)谠囶}中見到的,至少是0型文法


? ? 例如上面的G2[S]文法

? ? S,A,B? p,q,a,b,c,d都屬于(Vn ∪ Vt)*

? ? Sa,BacB,Ab,AB,SA,abc組合元素也屬于(Vn ∪ Vt)*

? ? 一個(gè)串的所有元素都∈(Vn ∪ Vt),不管這個(gè)串多長(zhǎng),它都屬于(Vn ∪ Vt)*


? ? 所以:G2[S]文法屬于0型文法.


1型文法:

? ? 1型文法也叫上下文有關(guān)文法,此文法對(duì)應(yīng)于線性有界自動(dòng)機(jī)。它是在0型文法的基礎(chǔ)上每一個(gè)α->β,

? ? 都有 |α|->|β|? ,這里的|β|表示的是β的長(zhǎng)度。

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

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

2型文法:

? ? 2型文法也叫上下文無關(guān)文法,它對(duì)應(yīng)于下推自動(dòng)機(jī)。2型文法是在1型文法的基礎(chǔ)上,再滿足:

? ? 每一個(gè) α->β 都有α是非終結(jié)符。

? ? 例如A->Ba,符合2型文法要求。

? ? 如:Ab->Bab 雖然符合1型文法要求,但不符合2型文法要求,因?yàn)槠洇?Ab,而Ab不是一個(gè)非終結(jié)符,如何AB則為一個(gè)非終極符

3型文法:

? ? 3型文法也叫正規(guī)文法,它對(duì)應(yīng)于有限狀態(tài)自動(dòng)機(jī),它是在2型文法的基礎(chǔ)上滿足:A->α|αB (右線性)或A->α|Bα (左線性)

? ? 如有:A->a,A->aB,B->a,B->cB,則符合3型文法的要求

? ? 但如果推導(dǎo)為:

? ? ? ? ? ? A->ab,A->aB,B->a,B->cB

? ? 或推導(dǎo)為:

? ? ? ? ? ? A->a,A->Ba,B->a,B->cB

? ? ? ? ? ? 則不符合3型文法的要求了。


? ? 要不全部統(tǒng)一右線性,要不全部統(tǒng)一左線性,才符合3型文法的要求;

? ? 左右線性混合不符合3型文法的要求

? ? 3型文法 (含于) 2型文法 (含于) 1型文法 (含于) 0型文法


? ? 例題:

? ? 有文法G為:

? ? ? ? A->∑|aB

? ? ? ? B->Ab|a

? ? 請(qǐng)判斷文法G屬于哪一類文法?

? ? ? ? 首先看到 |,先把文法拆分出來,得到

? ? ? ? ? ? A->∑? ? A->aB

? ? ? ? ? ? B->Ab? B->a

? ? ? ? 從0型文法開始算起;

? ? ? ? 所以文法G屬于2型文法,不屬于3型文法


? ? 例題:

? ? 在文法G=(Vn,Vt,P,S),G=({S,A,B},{0,1},P,S)中,P的生成式有:

? ? ? ? S->0A

? ? ? ? S->0

? ? ? ? S->A0

? ? ? ? S->0A0

? ? 這時(shí),G屬于3型文法嗎?

? ? ? ? 答案:不屬于3型文法。S->0A0 既不屬于右線性,也不屬于左線性


如何判斷一個(gè)串是否為某個(gè)文法的句型

? ? 兩種判斷方法:構(gòu)造推導(dǎo)樹直接進(jìn)行推導(dǎo)

? ? 例題:

? ? ? ? 已知文法G[S]:S->A0|B1,A->S1|1,B->S0|0;該文法屬于喬姆斯基定義的___文法,它不能產(chǎn)生的串___;

? ? ? ? (1)A.0型? ? ? ? B.1型? ? ? C.2型? ? ? D.3型

? ? ? ? (2)A.0011? ? ? B.1010? ? ? C.1001? ? ? D.0101

? ? ? ? 分析:

? ? ? ? 此文法的推導(dǎo)式有:

? ? ? ? ? ? S->A0

? ? ? ? ? ? S->B1

? ? ? ? ? ? A->S1

? ? ? ? ? ? A->1

? ? ? ? ? ? B->S0

? ? ? ? ? ? B->0

? ? ? ? 這些推導(dǎo)式完全與:A->α|Bα (左線性)形式相符,所以此文法是3型文法

? ? ? ? S為開始符,所以從S開始推導(dǎo)

? ? ? ? (直接推導(dǎo))由于:

? ? ? ? S->A0->S10->A010->1010

? ? ? ? S->B1->S01->A001->1001

? ? ? ? S->B1->S01->B101->0101

? ? ? ? 此文法不能產(chǎn)生的串為:0011

構(gòu)造推導(dǎo)樹



為上面例題的推導(dǎo)樹
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容