Как разобрать список слов в соответствии с упрощенной грамматикой?

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

Представьте, что у вас есть грамматика для английского предложения вроде этого:

S => NP VP | VP
NP => N | Det N | Det Adj N
VB => V | V NP
N => i you bus cake bear
V => hug love destroy am
Det => a the
Adj => pink stylish

Я искал несколько часов, и у меня действительно нет идей. Я нашел статьи, посвященные поверхностному синтаксическому анализу, поиску с возвратом в глубину и другим подобным вещам, и хотя я знаком с большинством из них, я все еще не могу применить их к этой проблеме. Я пометил Lisp и Haskell, потому что это языки, на которых я планирую реализовать это, но я не возражаю, если вы будете использовать другие языки в своих ответах.

Буду признателен за подсказки, хорошие статьи и все в целом.

8
задан Ben 18 October 2011 в 07:02
поделиться