Мовне теоретичне порівняння граматики LL та LR


67

Люди часто кажуть, що LR (k) парсери є більш потужними, ніж LL (k) парсери. Ці твердження більшу частину часу є невиразними; зокрема, чи слід порівнювати класи для фіксованого або об'єднання по всіх ? То як справді ситуація? Зокрема, мене цікавить, як LL (*) вписується.kk

Наскільки я знаю, відповідні набори граматики LL та LR парсери приймають ортогональні, тому давайте поговоримо про мови, породжені відповідними наборами граматик. Нехай позначає клас мов, породжений граматиками, які можна проаналізувати парсером, і подібний для інших класів.LR(k)LR(k)

Мене цікавлять такі відносини:

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

Деякі з них, ймовірно, прості; моя мета - зібрати "повне" порівняння. Список літератури оцінений.


2
Можливо, це може вам допомогти! Образ граматичної ієрархії
Андреа Туччі

1
@AndreaTucci: Так, але це стосується лише граматик, а не створених мов.
Рафаель

Відповіді:


60

Відомо численні утримання. Нехай позначає стримування та належне утримання. Нехай позначає непорівнянність.×

Нехай , .LL=kLL(k)LR=kLR(k)

Граматичний рівень

Для LL

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

Більшість з них виявилися в властивості детермінованих зверху вниз граматик по Розенкранц і Stearns. - досить тривіальна вправа. Ця презентація Теренса Парра розміщує на слайді 13. У паперових LL-звичайних граматиках Ярзабека та Кравчика відображаються , і їх доказ тривіально поширюється наSLL(k+1)×LL(k)LL()LLLLRLLLL()

Для LR

  • 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

Це все прості вправи.

LL проти LR

  • LL(k)LR(k) ( властивості детермінованих граматик зверху вниз плюс будь-яка ліва рекурсивна граматика)
  • LL(k)×SLR(k),LALR(k),LR(k1) (проста вправа)
  • LLLR (будь-яка ліва рекурсивна граматика)
  • LL()×LR (ліва рекурсія проти довільної точки пошуку)

Мовний рівень

Для LL

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

Більшість із них підтверджені у властивостях детермінованих граматик зверху вниз . Проблема еквівалентності граматичних норм для та LR від Nijholt посилається на документи, що показують . Паперові звичайні граматики Ярзабека та Кравчика показують , і їх доказ тривіально поширюється наLL(k)LL()LLLLRLLLL()

Для LR

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

Деякі з них було доведено Кнутом у своїй праці "Переклад мов з лівої на праву", в якій він ввів LR (k), решта - у " Трансформації граммарів LR (k) у LR (1), SLR (1)", та (1,1) Обмежені право-контекстні граматики Mickunas et al.

LL проти LR

  • LLLR(1) (стримування випливає з вищесказаного, є канонічним прикладом для суворого стримування){aibj|ij}
  • LL()×LR (мова показує половину твердження, і введення Ніехолтом задачі про еквівалентність граматиків LL- та LR-регулярних посилань на документи показ другої половини){aibj|ij}
  • LR(1)=DCFL (див., Наприклад, тут посилання ).

Чудова відповідь, хоча я вже підтримав. Я міг би подумати, що Френк де Ремер виявив LALR <= LR у своєму оригінальному документі LALR? (1969?)
користувач207421

@EJP: є негайним, якщо ви визначаєте шляхом згортання станів . deRemer лише довів, що його конструкція створила той самий аналізатор. Граматичні заняття не рівні, що це приємна вправа (або навіть приємне запитання для цього сайту). Рівність мовного класу набагато складніша: прочитайте документ, якщо ви дійсно хочете деталі;)LALR(k)LR(k)LALRLR
Олексій десять Бринк

1
@AlextenBrink Я читав статтю, і її навчав Франк де Ремер, але це вже 30 років тому ;-) Дякую за всі подробиці.
користувач207421

Можливо, буде непогано зібрати приклади граматики для кожної нерівності.
o11c

1
@ o11c Я думаю, що це обтяжене єдиною відповіддю. Моє враження, що Алекс дав хороші довідники там, де це було потрібно; він заявляє, що "легкі вправи" для деяких. Я думаю, якщо читач не може придумати граматику, він може поставити нове запитання, задаючи конкретний випадок.
Рафаель
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.