2017-05-15 1 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については、Pの生成を予測しようとするときにFIRST/FIRST競合を引き起こすので、LL(1)ではありませんか? 私はそれがLL(1)でないことを証明する方法について本当に苦労しています... 助けやアドバイスは非常に感謝しています!言語がLL(1)かどうかを調べる方法は?

答えて

0

左回帰文法は、任意のkのLL(k)にすることはできません。 P → P Lは左回帰です。

さらに、Lには同じ端末から2つのプロダクションがあるため、1つの先読みシンボルでそれらの間を選択することはできません。

関連する問題