Где можно прочитать доходчивое описание алгоритма LR(1)-анализатора?

Рейтинг: 0Ответов: 1Опубликовано: 13.01.2015

Мне нужно написать программу, которая читает из текстового файла LR(1)-грамматику и по ней проверяет некоторый текст.

В учебнике описан алгоритм, но это сделано через математические описания и выглядит довольно сложно для понимания.

Ответы

▲ 3

Если есть время, почитайте классику: «Алгоритмы + структуры данных = программы» Никлауса Вирта (легко гуглится). Там есть целая глава, посвящённая автоматическому разбору LR(1)-грамматики, и дан пример программы, делающей именно то, что вам нужно. (Теоретическую часть можно при первом чтении пропустить или быстро пробежать.)

Я учился писать парсеры по этой книге.


Обновление

Ох. Я перепутал LR(1) и LL(1). Если вам нужна именно LR(1)-грамматика, это гораздо сложнее. Тогда почитайте про lex/yacc (опять-таки, книги есть в интернете), эти утилиты работают с LALR(1), что является упрощённым вариантом LR(1). Если вам нужно написать подобные утилиты самому и поддерживать именно LR(1), придётся постараться.

И «быстро» разобраться с проблемой не получится. Потребуйте с заказчика много денег, это серьёзная задача. Если вы работаете за зарплату, потребуйте позицию сениора.