Алгоритм розбору IELR (1)
Алгоритм розбору IELR (1) був розроблений в 2008 році Джоелом Е. Денні в рамках його доктора наук. дослідження під керівництвом Брайана А. Маллой в Клемсонському університеті. Алгоритм IELR (1) - це варіація так званого алгоритму «мінімального» LR (1), розробленого Девідом Пейджером у 1977 р. , Який сам по собі є варіантом алгоритму розбору LR (k), винайденого Дональдом Кнутом у 1965 році . IE в IELR (1) означає усунення неадекватності (див. Останній розділ).
LR (1) Алгоритми
Частина LR (1) IELR (1) означає L eft вправо, R найменше виведення з 1 токеном lookahead. LR (1) парсери також називають канонічними аналізаторами. Цей клас алгоритмів розбору використовує стратегію розбору знизу вгору, зменшення зсуву зі зміною таблиці та стану переходу, визначаючи наступну дію, яку слід здійснити під час розбору.
Історично склалося, що алгоритми LR (1) були обмежені великими потребами в пам'яті для їх таблиць переходу. Удосконалення Пейджера полягало в розробці методу поєднання перехідних станів при створенні таблиці переходу, значно зменшуючи розмір таблиці. Таким чином, алгоритм Пейджера робить аналізатори LR (1) конкурентоспроможними щодо інших стратегій розбору щодо ефективності простору та часу. Фраза «мінімальний аналізатор LR (1)» стосується мінімального розміру таблиці переходу, введеного алгоритмом Пейджера.
Обмеження алгоритму Пейджера
Алгоритми мінімальних LR (1) виробляють таблицю переходу на основі конкретної вхідної граматики для розбору мови. Різні граматики можуть створювати одну і ту ж мову. Дійсно, для граматики, яка не є LR (1), можна створити мову, що розбирається LR (1). На практиці генератори LR (1) парсера приймають граматики не LR (1) із специфікацією для вирішення конфліктів між двома можливими переходами стану ("конфлікти зрушень-зменшення") для задоволення цього факту. Денні та Маллой встановили, що алгоритм Пейджера не може генерувати парсери, досить потужні для розбору мов LR (1), коли надаються певні граматики не LR (1), навіть якщо граматика не LR (1) генерує мову LR (1).
Денні і Маллой показують, що це обмеження не є просто академічним, демонструючи, що Gawk і Gpic, широко використовуване, зріле програмне забезпечення, виконують неправильні дії парсера.
Поліпшення IELR (1)
Денні та Маллой вивчили джерело недоліків алгоритму Пейджера, порівнявши таблицю переходів, згенеровану алгоритмом Пейджера, до таблиці переходу еквівалентної граматики LR (1) та визначили два джерела того, що вони називають недостатками, які відображаються в таблиці переходу від Пейджера алгоритм, але не в таблиці переходу LR (1). Алгоритм IELR (1) Денні і Маллой (1) (Iadequacy Elimination LR (1)) - це алгоритм, призначений для усунення цих недоліків при формуванні таблиці переходів, яка практично однакова за розмірами з алгоритмом Пейджера.