262
правки
Изменения
Нет описания правки
<wikitex>
В некоторых случаях SLR-разбор может дать неправильный результат разбора. В таких случаях используют более сложные методы, такие как $LR(1)$ и $LALR$ - разбор. Рассмотрим первый из них.
==Отличия от SLR-разбора==
Приведём пример, ситуации, в которой SLR-разбор не справится с задачей:
Чтобы решить эту проблему, необходимо хранить в пункте больший объём информации, который позволит не делать таких ошибочных свёрток
==Канонические LR(1)-пункты==
Основная идея заключается в том, чтобы хранить в пунктах больше информации, чтобы не производить некорректных свёрток.
Добавим в пункт второй компонент: терминальный символ. Таким образом, $LR(1)$-пункты будут выглядеть следующим образом:
$[A\rightarrow\alpha\cdot\beta, a]$, где первая часть - продукция, а вторая - терминал или маркер конца входной строки $\char36$. Здесь $a$ называется предпросмотром (англ. ''lookahead'') пункта, а цифра $1$ в $LR(1)$ означает его длину.
* $w=\epsilon$ и $a=\char36$
}}
===Построение множеств LR(1)-пунктов===
</wikitex>