Вариант 10
Написать программу для автоматического построения регулярной грамматики (леволинейной или праволинейной) по словесному описанию языка.
Вход программы: алфавит языка, обязательная конечная подцепочка, кратность длины всех цепочек языка, тип грамматики (ЛЛ либо ПЛ), 2 числа – диапазон длин для генерации цепочек.
Выход: построенная грамматика (все 4 элемента), результат генерации цепочек.
Подробно:
Язык задан своим алфавитом, обязательной конечной подцепочкой, которая должна присутствовать во всех цепочках языка, и указанием кратности длины всех цепочек языка. В конечной цепочке не должно находиться символов, не содержащихся в алфавите. В крайнем случае она может быть и пустой. Кратность длины цепочек задаётся любым натуральным числом. Кратность, равная единице, равносильна отсутствию ограничений на длину цепочек.
Программа должна:
по предложенному описанию регулярного языка строить регулярную грамматику, генерирующую этот язык, в том виде, как она рассматривалась в теории, раздел 1.3.1;
Грамматика должна строиться и праволинейная, и леволинейная. Желаемый тип грамматики выбирается пользователем в меню. Все правила грамматики должны соответствовать выбранному типу! Отдельно следует указывать, какой нетерминальный символ является целевым. Если в грамматике используется пустое правило, то необходимо дать пояснение, каким именно символом обозначается пустая цепочка.
После построения грамматики пользователь может убедиться в её правильности путём генерации всех цепочек языка в том диапазоне длин, который он задаст. Генерацию каждой цепочки языка следует поэтапно отображать на экране в виде цепочки вывода (в соответствии с примерами раздела 1.4.1.). Генерация осуществляется в соответствии с лабораторной работой №1.
Рассмотрим пример построения регулярной грамматики.
Задан язык: алфавит {a,b,c}, обязательная конечная цепочка ‘aab’, кратность длины 2. Анализируем задание: язык будет состоять из цепочек чётной длины, заканчивающихся на ‘aab’, например {сaab, аaab, bааb, caaааb, сabaab, …}.
Для примера выберем праволинейную грамматику (ПЛ). В правой части её правил вывода может быть только один нетерминал, и он должен располагаться справа от цепочек терминальных символов. Для соблюдения кратности длины цепочек будет использоваться чередование нетерминалов. Длина кратна двум, следовательно, потребуется два нетерминала: S→aA|bA|cA, А→aS|bS|cS. Выход должен происходить по обязательной конечной цепочке ‘aab’, в силу чётности длины цепочек перед ней должен быть как минимум один символ. Следовательно, эта цепочка должна порождаться нетерминалом А: А→aab.
Итак, построенная грамматика имеет вид:
G({a,b,c},{S,A},P,S), Р: S→aA|bA|cA; А→aS|bS|cS|aab.
Тип: Курсовая
Предмет: Другое
Курсовой проект "Модуль удалённого ввода/вывода цифровой и аналоговой информации"
Стоимость: 2375 руб.
Тип: Курсовая
Предмет: Другое
Курсовая. Организация и планирование производства, возведения инженерных систем (ТГАСУ)
Стоимость: 2700 руб.
Тип: Курсовая
Предмет: Другое
Правовые системы религиозного права: индусское право
Стоимость: 3075 руб.
Тип: Курсовая
Предмет: Другое
Курсовая работа по предмету : Программная инженерия
Стоимость: 2650 руб.
Тип: Курсовая
Предмет: Другое
30584 электромагнитная совместимость и средства защиты
Стоимость: 2675 руб.
Тип: Курсовая
Предмет: Другое
Эмоции и чувства младших школьников на уроках физической культуры
Стоимость: 2700 руб.
Выбрать тему курсовой работы — половина дела. А вот грамотно обосновать актуальность выбранной темы — это залог успеха курсовой уже на начальном этапе. Тем более, что наличие актуальности считается одним из основных требований ГОСТа к содержанию и оформлению курсовой.В нашей статье мы подробно расс…
Читать дальшеКак только приходит время писать курсовую работу, студент, по своему обыкновению, округляет глаза от страха, судорожно думает, как жить дальше, и рвёт на себе волосы от постоянного цейтнота. И хоть поводов для волнения предостаточно, но не стоит так уж сильно заострять на них внимание.В нашей стать…
Читать дальше