Как мне создать анализатор конечного автомата LR?
-
08-07-2019 - |
Вопрос
Я хочу поиграть с созданием генераторов парсера LR. Кто-нибудь знает хороший (бесплатный) ресурс, описывающий, как создать таблицу конечного автомата из грамматики? Р>
Решение
Для бесплатного ресурса рассмотрите исходный код Python для PLY - полной реализации Lex и Yacc в Python.
Однако я бы порекомендовал книгу, и вы вряд ли добьетесь большего успеха, чем получить Книга Дракона .
Другие советы
Лучший ресурс, с которым я столкнулся, это:
Очевидный ответ - стандартный текст компилятора от Aho / Ullman / Ravi, Компиляторы: Принципы, методы и инструменты
В нем есть полные главы о разборе. Это не бесплатно, но стоит каждой копейки, и если вы собираетесь создавать парсеры или другие подобные компилятору инструменты, вы просто с ума сошли, если у вас нет этой книги.
Может быть, вы найдете Grammatica полезным. Это бесплатный генератор Parser для .NET. У меня есть некоторый опыт с этим, и это было хорошо. Вы можете попробовать и изучить его код. http://grammatica.percederberg.net/