引用:
====================
S-> aaS|a是什么型的,為什么
S-> aSb|ab是什么型的,為什么
S-> SaS|b是什么型的,為什么
=====================
答:三種文法都屬於上下文無關文法。
四種文法的判斷非常簡單,說到到,四種文法就是規定產生式的左和右邊的字符的組成規則不同而已,其它的不能理解就不要去想了,你只要知道判斷的時候就是以產生式的左邊和右邊符合的規則進行判斷。下面解釋一下如何根據產生式左邊和右邊的特征來進行判斷。
首先,應該明確,四種文法,從0型到3型,其規則和約定越來越多,限制條件也越來越多,所以,我們判斷時可以從最復雜的3型進行判斷,依次向下判斷,如果不符合3型的,那再看是不是2型的,不是2型的,再看是不是1型的,當然,對於作題作的熟的朋友,不用這么復雜,可以一眼直接看出來。
3型文法遵循什么規范呢?
第一點:左邊必須只有一個字符,且必須是非終結符;
第二點:其右邊最多只能有兩個字符,且當有兩個字符時必須有一個為終結符而另一個為非終結符。當右邊只有一個字符時,此字符必須為終結符。
第三點:對於3型文法中的所有產生式,其右邊有兩個字符的產生式,這些產生式右邊兩個字符中終結符和非終結符的相對位置一定要固定,也就是說如果一個產生式右邊的兩個字符的排列是:終結符+非終結符,那么所有產生式右邊只要有兩個字符的,都必須前面是終結符而后面是非終結符。反之亦然,要么,就全是:非終結符+終結符。
依以上規則判斷,你所給的三個文法顯然都不屬於3型文法。
再看2型文法如何判斷:
第一點:與3型文法的第一點相同,即:左邊必須有且僅有一個非終結符。
第二點:2型文法所有產生式的右邊可以含有若干個終結符和非終結符(只要是有限的就行,沒有個數限制)。
依2型文法的判斷規則,你的三個文法都屬於2型文法,即:上下文無關文法。
再看1型文法如何判斷:
第一點:1型文法所有產生式左邊可以含有一個、兩個或兩個以上的字符,但其中必須至少有一個非終結符。
第二點:與2型文法第二點相同。
依1型文法判斷規則,顯然,你的文法也是屬於1型的。
最后是0型文法,這個就不用看了,只要你能描述出來,都屬於這個類型,即0型。
所以,取其最高的符合規則,最后的答案是其符合:上下文無關文法規則,即2型。
轉自:http://hi.baidu.com/topman8023/item/f0e0df6eb26300196895e608