關於3型文法


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

上面的話是大多數教材中的解釋,十分了抽象,其中最不理解的是下面一句話

它是在2型文法的基礎上滿足:A→α|αB(右線性)或A→α|Bα(左線性)。

分析這句話,什么是左線性,什么是右線性

我覺得,左右線性其實說的就是在推導式的右邊中,非終結符所位於的位置,例如aB,B(非終結符)位於a的右側,所以是右線性

 

之后我在網上找到了這樣的解釋:
如有: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型文法。

 

很多情況下我們是看不懂這樣的解釋的,我也是在研究了一會后,才明白,所以我就歸結了一下,什么是3型文法

1. 首先他要是2型文法

2. 推導式的右邊必須是一個終結符或者是一個終結符加上一個非終結符

3. 在一串推導式中,只能有一套規則,就是說,只能全部都是左線性,或者是全部都是右線性

 

上面解釋中一共列舉了3個例子:

A->a,A->aB,B->a,B->cB      這個例子是正確的,他符合上面的三條

A->ab,A->aB,B->a,B->cB     這個例子中A->ab不符合上面的第2條,所以不是3型文法

A->a,A->Ba,B->a,B->cB      A->Ba,是左線性的,但是B->cB是右線性的,違反第3條所以,也不是3型文法

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


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com