Грамматический анализатор

Артем16 лет в сервисе
Данные заказчика будут вам доступны после подачи заявки
01.12.2008

Необходимо написать программу, на C++ или просто на C.

Задание следующее:

Грамматический анализатор.

Написание анализатора, проверяющего произвольный текст на соответствие грамматике, заданной набором форм Бэкуса-Наура. Грамматика и текст загружаются из разных файлов.

То есть, грамматика должна выглядеть примерно следующим образом:

предложение::=подлежащее сказуемое дополнение

подлежащее::=прилагательное существительное

сказуемое::=глагол

дополнение::=прилагательное существительное

глагол::=украшает

существительное::=куб|шар

прилагательное::=прозрачный|синий

Таким образом, в другом файле указан текст, состоящий из описанных слов. В результате выполнения программы выдается соответствует данный текст заявленной грамматике или нет (вывод соответствующего сообщения на экран). Причем при изменении слов (куб, шар, украшает...) на другие слова проверка все равно должна проходить корректно.

Также нужно, чтобы можно было проводить обратные действия: то есть, чтобы компьютер сам составлял предложения из заданных слов по заданной грамматике, результат записывается в еще один (третий) файл.

Еще есть два пожелания: 1. Использование бинарных деревьев при написании программы.

2. Хотелось бы, чтобы все было написано в Borland C++ for DOS

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