Я играю с написанием приключений MUD/text (пожалуйста, не смейтесь) в Ruby. Может ли кто-нибудь дать мне какие-либо указания относительно элегантного решения на основе oop для синтаксического анализа входного текста?Элегантный командный синтаксический анализ в текстовой игре на основе ООП
Мы говорим о нечем более сложном, чем «положить палочку на стол», здесь. Но все должно быть мягким; Я хочу продлить набор команд безболезненно, позже.
Мои текущие мысли, немного упрощены:
Каждый класс элемент (окно, стол, комната, игрок) знает, как распознать команду, которая «принадлежит» к нему.
Класс игры понимает своего рода язык, предметно-ориентированного с участием таких действий, как «двигаться объект X внутри объекта Y», «показать описание объекта X» и т.д.
Класс игра просит каждого пункт в комнате, если он распознает команду ввода. Сначала сказать «да».
Затем он передает управление методу в классе элементов, который обрабатывает команду. Этот метод перефразирует команду в DSL, передает ее обратно игровому объекту, чтобы это произошло.
Должны быть изношенные, элегантные способы сделать это. Однако, похоже, Google ничего не может понять.
Как сноска, волосатый бит с моим текущим планом реализует действия, которые включают в себя два объекта. – Shadowfirebird
Вы можете начать с http://stackoverflow.com/questions/tagged/natural-language и посмотреть, к чему это ведет. – dmckee
Ta! Я только что добавил этот тег к вопросу. – Shadowfirebird