LL ve LR gramerlerinin dil teorik karşılaştırması


67

İnsanlar genellikle LR (k) ayrıştırıcılarının LL (k) ayrıştırıcılardan daha güçlü olduğunu söyler . Bu ifadeler çoğu zaman belirsizdir; Özellikle, biz sabit için sınıfları karşılaştırmak gerekir her yerinde veya birlik k ? Peki durum gerçekten nasıl? Özellikle, LL (*) 'nin nasıl uyduğuyla ilgileniyorum.kk

Bildiğim kadarıyla, LL ve LR ayrıştırıcılarının kabul ettiği ilgili dilbilgisi kümeleri dikeydir, bu nedenle ilgili dilbilgisi kümelerinin oluşturduğu diller hakkında konuşalım. Let bir tarafından ayrıştırılır edilebilir gramerlerin tarafından oluşturulan dil sınıfını belirtmektedir L R ( k ) başka sınıfları için benzer ayrıştırıcı ve.LR(k)LR(k)

Aşağıdaki ilişkilerle ilgileniyorum:

  • LL(k)?LR(k)
  • i=1LL(k)?i=1LR(k)
  • i=1LL(k)=?LL()
  • LL()?i=1LR(k)

Bunlardan bazıları muhtemelen kolaydır; Amacım "tam" bir karşılaştırma toplamaktır. Kaynaklar takdir edilmektedir.


2
Belki bu size yardımcı olabilir! Dilbilgisi Hiyerarşi görüntüsü
Andrea Tucci,

1
@AndreaTucci: Evet, ama bu oluşturulan dilleri değil sadece gramerleri kapsıyor.
Raphael

Yanıtlar:


60

Bilinen çok sayıda sınır var. Let çevreleme ve ifade uygun biçimde barındırılmasını. Let × , mukayese belirtir.×

Let , L R, = k L R ( k ) .LL=kLL(k)LR=kLR(k)

Dilbilgisi seviyesi

LL için

  • LL(0)LL(1)LL(2)LL(2)LL(k)LLLL()
  • SLL(1)=LL(1),SLL(k)LL(k),SLL(k+1)×LL(k)

SLL(k+1)×LL(k)LL()LLLLRLLLL()

LR için

  • LR(0)SLR(1)LALR(1)LR(1)
  • SLR(k)LALR(k)LR(k)
  • SLR(1)SLR(2)SLR(k)
  • LALR(1)LALR(2)LALR(k)
  • LR(0)LR(1)LR(2)LR(k)LR

Bunların hepsi basit egzersizler.

LL LR'ye karşı

  • LL(k)LR(k)
  • LL(k)×SLR(k),LALR(k),LR(k1)
  • LLLR
  • LL()×LR

Dil seviyesi

LL için

  • LL(0)LL(1)LL(2)LL(k)LLLL()
  • SLL(k)=LL(k)

LL(k)LL()LLLLRLLLL()

LR için

  • LR(0)SLR(1)=LALR(1)=LR(1)=SLR(k)=LALR(k)=LR(k)=LR

Bunlardan bazıları Knuth tarafından, LR'yi (k) tanıttığı Soldan Sağa Dillerin Tercümesinde , geri kalanının LR (k) Dilbilgilerinin LR (1), SLR (1) 'e Dönüştürülmesi ispatlanmıştır. ve (1,1) Mickunas et al.

LL LR'ye karşı

  • LLLR(1){aibj|ij}
  • LL()×LR{aibj|ij}
  • LR(1)=DCFL

Yine de mükemmel bir cevap, zaten çoktan oy aldım. Frank deRemer'ın LALR belgesinde LALR <= LR olduğunu kanıtladığını düşünebilir miydim? (1969?)
user207421

LALR(k)LR(k)LALRLR

1
@AlextenBrink Ben kağıdı okudum ve Frank de Remer tarafından öğretildi, ancak 30+ yıl önce ;-) Tüm detay için teşekkürler.
user207421

Her eşitsizlik için örnek dilbilgisi toplamak iyi olabilir.
o11c

1
@ o11c Bunun tek bir cevabı atacağını düşünüyorum. Benim izlenimim, Alex'in gerektiğinde iyi referanslar verdiği; bazıları için "kolay egzersiz" olduğunu söylüyor. Bir okuyucunun gramer ile gelememesi durumunda, bu özel durumu soran yeni bir soru gönderebilirler.
Raphael
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.