Bu alıştırmada bir sorunum var:
G λ-hesabı için aşağıdaki belirsiz dilbilgisi olsun:
E → v | λv.E | EE | (E)
burada E, terminal olmayan tek bir simgedir, λv.E, E'deki v değişkeninden soyutlamayı temsil eder ve EE uygulamayı temsil eder.
- L (G ′) = L (G) ve G'nin belirsizliği aşağıdaki olağan kurallar uygulanarak çözülecek şekilde bir LL (1) dilbilgisi G ′ tanımlayın :
- soyutlama doğru ilişkiseldir;
- başvuru ilişkisel bırakılmıştır;
- uygulama soyutlamadan daha yüksek önceliğe sahiptir.
- G ′ için LL (1) ayrıştırma tablosunu ve dizeyi ayrıştırırken elde edilen ayrıştırma ağacını gösterin
λv1. λv2. v1v2v1
.
Bu dilbilgisini elde ederek belirsizlik belirleme önceliğini ve ilişkilendirmesini ortadan kaldırdım:
E -> EF | F
F -> λv.G | G
G -> (E) | v
üretim E -> EF
özyinelemeli bırakıldığı için LL (1) değildir . Ancak, elde ettiğim bu üretimden sol özyinelemeyi ortadan kaldırarak:
E -> FE¹
E¹-> FE¹ | ɛ
F -> λv.G | G
G -> (E) | v
gerekliliklere uymayan 1.2.
İnternette bir çözüm aradım, ancak sol birlikteliği koruyarak sol birleşmeyi ortadan kaldırmak mümkün değil gibi görünüyor.
Ancak, bu egzersiz birkaç yıl önce derleyiciler sınavında ortaya çıktı, bu yüzden doğru bir cevap olmalı.
Yardımın için teşekkürler.