По заданному тексту праволинейной формальной грамматики построить соответствующий конечный автомат для распознавания предложений языка, порождаемого этой грамматикой.
Грамматика задается как конечный набор правил вида T = aN|b (вместо знака | используется буква i большая),
альтернативы в правых частях правил не могут быть пустыми. Нетерминальные символы грамматики записываются заглавными латинскими буквами S H T M, а терминальные – заглавными латинскими буквами A B C D либо X Y Z V W. Начальный символ грамматики обозначается буквой H для праволинейной грамматики.
Построенный автомат представляет собой ориентированный и помеченный граф. Вершины графа соответствуют состояниям автомата и помечены нетерминальными символами грамматики; в множество вершин входит начальное состояние H и заключительное состояние S. Рёбра графа соответствуют переходам между состояниями автомата и помечены терминальными символами грамматики. Граф записывается в виде списка входящих в него рёбер, каждое ребро представлено трехэлементным списком вида (метка_вершины метка_ребра метка_вершины).
При записи исходной грамматики можно заключить в круглые скобки каждое её правило и составить из них лисповский список, в котором все символы грамматики разделены пробелами, а знак | и строчные буквы записаны как особые символы языка Лисп. Например: ((H = \a N \| \b N) (N = \c N \| \d)) .
Можно использовать только встроенные базовые функции лиспа, ассоциативные списки, функционалы, рекурсию и накапливающий параметр. Все функции, которые можно использовать, можно найти здесь: http://recyclebin.ru/BMK/LISP/PosobieLisp.pdf
Цена договорная, т.к. не знаю уровень сложности задания и сколько времени вам потребуется. Предлагайте свою цену.
Гарантия на работу | 1 год |
Средний балл | 4.96 |
Стоимость | Назначаете сами |
Эксперт | Выбираете сами |
Уникальность работы | от 70% |