如何判斷乙個文法能否寫成ll 1 文法?

時間 2021-06-01 21:25:17

1樓:Joan Tsao

根據LL(1) 文法的定義來判斷,分三步走:

(1) 文法不含左遞迴

(2) 對文法中的任乙個非終結符A的各個產生式的侯選首終結符集兩兩不相交,即:若

A->α1|α2|…|αn,則

First(αi)∩ First(αj) =φ(ij)

(3) 對文法中的每個非終結符A,若它的某個首終結符集含有ε,則

First(A)∩Follow(A) =φ

如:判斷下述文法是否是LL(1)文法:

S -> aAS|b

A -> bA|ε

(1) 該文法不含左遞迴

(2)First(S ->aAS)= First(S ->b)=

First(A ->bA)= First(A ->ε)=

S和A的侯選式的first集都不相交,滿足條件2

(3) 由於ε∈First(A ->ε)

Follow(A)=First(S)=

Follow(A)First(A->bA))≠ φ

不滿足條件3,則不是LL(1)文法

2樓:yeshengm

操作上說,eleminate left recursion並且left factor這個文法。如果這個文法沒有歧義的話,就可以寫成ll(1)文法。

你要證明它是ll(1)的話,書上都有定義:

對於乙個nonterminal

1. first set沒有交的部分

2. 至多有乙個epsilon production3. 如果有epsilon production,則follow與first交集為空。

3樓:

先提取左公共因子,再消除左遞迴,這樣就有可能變為LL(1)文法。然後要分別寫出改寫後文法的FIRST集、FOLLOW集、SELECT集,如果相同左部的SELECT集的交集不為空集,則為LL(1)文法。

Mathematica 怎麼判斷乙個數能否由兩個兩位數相乘得到?

cvgmt MemberQ Flatten Table i j, ProductOfTwoDigitNumberQ num Integer Block TwoDigitDivisors Divisors num IntersectingQ num TwoDigitDivisors TwoDigitD...

如何把 NBA 寫成乙個武俠故事?

半知半曉 第一回 十一家紐約聚義勇士派問鼎費城 第二回 開先河麥肯揚威定後世紫金風骨 第三回 鮑勃背後傳巧技二十四秒定規章 第四回 綠軍慧眼識索倫貝勒立派模側翼 第五回 兩萬北斗初入江湖費城勇士舉派搬遷 第六回 大北斗星一怒百人屠紅衣主教八年當盟主第七回 麥巨俠開宗自立門戶江湖裡變化豪傑輩出第八回 ...

怎樣判斷乙個女孩能否追求到呀

奇怪的打野 我可以告訴你有戲,但是你不要太著急不要追太緊,繼續保持這份熱度,時不時撩一下但不要太過,期間也努力提公升自己,讓感情慢慢公升溫,最後找個機會奔現再搞個浪漫一點的正式表白。如果沒有神秘感,欣賞夠了之後可能就過了,而提公升自己是要讓對方知道你在公升值。 淘氣貓 和她聊天,看她回覆的長短和時間...