2017-05-15 74 views
0
P → PL | L 
L → N; | M; | C 
N → print E 
M → print "W" 
W → TW | ε 
C → if E {P} | if E {P} else {P} 
E → (EOE) | V (note: this has a variable O) 
O → + | - | * 
V → 0 | 1 | 2 | 3 (note: this has a terminal 0 (zero)) 
T → a | b | c | d 

對於上述語法G,是不是LL(1),因爲當試圖預測P的產生時會引起FIRST/FIRST衝突? 我真的在努力證明它不是LL(1)... 任何幫助或建議將非常感謝!如何確定語言是否爲LL(1)?

回答

0

對於任何k,左遞歸語法不能是LL(k)。 P → P L是左遞歸的。

另外,L有兩個生產開始於同一個終端,所以它們之間只有一個符號的前瞻是不可能的。