engineerklub | Дата: Четверг, 16.11.2023, 05:44 | Сообщение # 1 |
Генералиссимус
Группа: Администраторы
Сообщений: 28530
Статус: Offline
| Написать программу для автоматического построения грамматики, эквивалентной заданному регулярному выражению
Тип работы: Работа Курсовая Сдано в учебном заведении: СибГУТИ
Описание: Курсовая работа по дисциплине: Теория языков программирования и методы трансляции. Вариант №6
Вариант 6 Задание: Написать программу для автоматического построения грамматики, эк-вивалентной заданному регулярному выражению (РВ). Вход программы: регулярное выражение в виде строки символов, 2 числа – диапазон длин для генерации цепочек. Выход: построенная грамматика (все 4 элемента), результат генерации цепочек. Подробно: Язык задан регулярным выражением. При его записи могут быть ис-пользованы символы алфавита языка, а также: «+» (выбор одного из слага-емых), круглые скобки, «*» для обозначения итерации. Программа должна: 1. по предложенному регулярному выражению строить эквивалентную грамматику, генерирующую этот же язык, в том виде, как она рассматрива-лась в теории, раздел 1.3.1; 2. с помощью построенной грамматики генерировать все цепочки язы-ка в заданном пользователем диапазоне длин. Грамматика может строиться любая – контекстно-свободная или регу-лярная, по выбору разработчика. Отдельно следует указывать, какой нетер-минальный символ является целевым. Если в грамматике используется пу-стое правило, то необходимо дать пояснение, каким именно символом обо-значается пустая цепочка. После построения грамматики пользователь может убедиться в её пра-вильности путём генерации всех цепочек языка в том диапазоне длин, ко-торый он задаст. Генерацию каждой цепочки языка следует поэтапно отоб-ражать на экране в виде цепочки вывода (в соответствии с примерами раз-дела 1.4.1.). Генерация осуществляется в соответствии с лабораторной ра-ботой №1. Описание алгоритма решения задачи с иллюстрацией его на сво-ём примере. 1. На вход программы подаётся регулярное выражение. 2. Производится разбор регулярного выражения: 1. Каждая скобка обозначается своим нетерминалом. 2. Если на скобке стоит звёздочка (итерация), значит, на этом нетер-минале будет явная рекурсия и пустое правило. 3. Если в выражении стоит «+», то это означает альтернативу в пра-вилах. 3. Вывод результата в виде КС-грамматики.
СКАЧАТЬ
|
|
| |