2012-01-29 74 views
4

一個LL我有三個語法:確定語法是否是使用兩兩不相交測試

A - > AB | b | CBB

B - > aB | ba | aBb

C - > aaA | b |駕駛室

我需要「確定(他們)是LL語法通過執行兩兩不相交測試,顯示第一組的每個非終結點的RHS各的。

這是我迄今爲止...

A - > AB | b | CBB

第一(AB)=一個

第一(b)= b

第一(CBB)= AAA =一個

這是我遇到的問題之一。我做了CBB嗎?如果是這樣,我會說他們相交&規則未通過測試。 (對吧?)

B - > aB | ba | ABB

第一(AB)=一個

第一(BA)= B

第一(ABB)=一個

它們相交&因此規則未通過測試。

C - > aaA | b | CAB

第一(AAA)=一個

第一(B)= B

第一(CAB)= C

它們不相交&因此規則傳遞

回答

6

點的測試是看看,看看第一個終端,你可以知道使用哪個規則(對LL的要求)。對B來說很明顯,有兩條規則可以適用於終端a;它也非常明顯,C的每個規則從不同的終端開始。您可以看到,C(因此CBB)的可能的第一個終端與A的其他規則重疊。

底線:看起來不錯(但是,如果您已停止在CBB的單個終端並且碰巧選擇c,你會得出錯誤的結論)。

+0

這是完美的,謝謝! – tommy1370 2012-01-29 20:27:56

0

我相信FIRST將A規則設置爲{a},{b}和{a,b,c}。語法不是LL,因爲它至少有一個交點,所以不通過成對不相交測試。實際上,在這種情況下有兩個交叉終端,a和b。