Гибридный метод построения LR-автомата. LALR(1)-грамматика
LALR-автомат
LALR-автомат
Детерменированный конечный автомат, построенный по LR(1)-автомату следующим образом:
Link to original
- Формируемый автомат считать исходным LR(1)-автоматом
- Пока в формируемом автомате два множества (состояния) LR(1)-пунктов имеют одинаковое множество ядер, то объединить эти множества в одно, назвать полученный автомат формируемым
Пример LALR-автомата
Пример: LR(1)-автомат, построенный по грамматике в лекции является LALR-автоматом

Сокращенный способ построения LALR-автомата
Для построения LALR-автомата используется LR(0)-автомат, в котором к пунктам (находятся в состоянии автомата) добавляются необходимые символы после запятой (для получения LR(1)-пунктов). Соответственно количество состояний LALR-автомата совпадает с количеством состояний LR(0)-автомата, построенного по той же расширенной грамматике.
Пример построения LALR-автомата сокращенным способом

Часть LR(1)-автомата для . Видно, что данная грамматика является LR(1)-грамматикой

Часть LALR-автомата для грамматики . Видно, что грамматика не LALR(1)-грамматика, поскольку появился конфликт (можно увидеть наглядно, если построить LALR(1)-анализатор)
LALR(1)-анализатор
LALR(1)-анализатор
LR-анализатор, построенный по алгоритму построения LALR(1)-анализатора
Link to original
Алгоритм. Построение LALR(1)-анализатора
Комментарий: практически совпадает с алгоритмом построения LR(1)-анализатора, за исключением того, что строится по LALR-автомату вместо LR(1)-автомата
Вход
Выход
Алгоритм
Подготовка
Построить LALR-автомат по входной грамматике
Заполнение таблицы ACTION
- Занумеровать правила грамматики от 1 до
- В строке состояния в столбце заносим допуск
- В строках состояний (кроме ) в столбце заносим свертку (), где
- В строках , не заполненных ранее, для каждого : Если есть пункт , то в столбце заносим перенос
Заполнение таблицы GOTO
В каждой строке для каждого :
Link to original
- Если существует пункт , то в столбце заносим состояние ,
Комментарий: всякий LALR-автомат является LR(1)-автоматом (в смысле бесконфликтности соответствующих анализаторов (1, 2))
Следствие:
Замечание: