Изменения

Перейти к: навигация, поиск

LR(1)-разбор

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

Навигация