Я чувствую себя довольно ностальгическим, поэтому я решил написать создателя приключенческой игры, который позволяет вводить сложные предложения для пользователя.Удаление левой рекурсии
У меня есть руки скрутили лексер и синтаксический анализатор, который использует шаблон посетителя и она работает очень хорошо, пока я не столкнулся с левой рекурсией вопроса с одним из моих BNF (Бэкус-Наур) правил:
object ::= {adjective} noun
| object AND {adjective} noun
После удаления левой рекурсии by following this wiki entry это выглядит правильно?
object ::= {adjective} noun object2
object2 ::= AND {adjective noun}
| !Empty
Отредактировано:
Я рука прокатка лексера и анализатор с использованием C#, следуя инструкции, данные here. Я не использую генераторы парсеров для этого упражнения.
Кроме того, я получил правила BNF для синтаксического анализатора от this website.
Было бы полезно, если бы вы объяснили, какие инструменты или алгоритмы вы используете для синтаксического анализа. Поскольку у вас возникают проблемы с левой рекурсией, я выводю, что вы используете рекурсивный спуск, что хорошо, но было бы полезно знать наверняка и какой генератор парсера (если таковой имеется) вы используете. –
Я обновил свой оригинальный вопрос с дополнительной информацией. – Intrepid