Под ключ по требованиям из методички. Вариант 2
С возможностью правок замечаний.
При выполнении использование C#
Лабораторные работы:
Необходимо полную версию программного проекта, включающего все исходные файлы, исполняемый файл, а также образцы входных и выходных файлов.
По итогам выполнения контрольной работы оформляется отчет. Правила его оформления описаны в разделе 4.
Написанная программа должна читать входные данные из текстового файла (например, имеющего имя «input.txt») и выдавать результат работы в текстовый файл (например, имеющий имя «output.txt»).
Для ввода и вывода данных допускается использование в программе визуального интерфейса вместо файлового ввода/вывода.
Текстовая лабораторная работа № 1. Задание на лабораторную работу № 1.Тема задания: «Синтаксический анализ с использованием конечных автоматов и регулярных выражений».
На вход программы подается единственная строка символов. Данная строка задает присваивание переменной значения арифметического выражения в виде.
ПЕРЕМЕННАЯ = ВЫРАЖЕНИЕ.
Выражение может включать:
– знаки сложения и умножения («+» и «*»);
– круглые скобки («(» и «)»);
– константы (например, 5; 3.8; 1e+18, 8.41E-10);
– имена переменных (последовательности букв и цифр, начинающи-еся с буквы).
Программа должна с помощью ДКА или ДМПА построить дерево, соответствующее заданному во входном файле выражению, и выдать для данного выражения:
1) таблицу имен;
2) неоптимизированный код;
3) оптимизированный код.
Текстовая лабораторная работа № 2. Задание на лабораторную работу № 2. Тема задания: «Синтаксический анализ с использованием КС-грамматик».
На вход программы подается описание структур (записей) на выбранном языке (Pascal, C++, C#), а также описание LL(1)-грамматики. Необходимо проверить, является ли описание структур/записей корректным
с точки зрения заданной грамматики и не содержатся ли в нем конфликты имен.
Таким образом, задание разбивается на две части:
1. Проверка синтаксиса.
2. Проверка семантики.
Семантика зависит от выбранного языка, и поэтому ее проверка жестко привязана к анализатору (в данном случае – вашей программе). Грамматика же должна быть универсальной, т. е. должна позволять задавать любые правила для разбора структур/записей (и не только). Например, должны быть доступны изменения: ключевых слов, знаков пунктуации, пра-вил разбора идентификаторов, а также добавление новых языковых кон-струкций и т. п.
Программа должна проанализировать имеющееся описание струк-тур/записей и выдать результат проверки. Это может быть:
1. Сообщение о том, что грамматика во входном файле не является LL(1)-грамматикой.
2. Сообщение о том, что описание корректное.
3. Сообщение о синтаксической ошибке. Указывать тип ошибки не обязательно, требуется только указать строку и позицию в строке входного файла, где наблюдается ошибка. Достаточно находить только первую ошибку в описании.
4. Сообщение о конфликте имен. В этом случае на выходе программы необходимо указать конфликтующее имя, а также строку и пози-цию в строке, где произошел конфликт.
Кроме того, программа может быть написана на одном языке, но про-верять правильность описания записей, структур и т. п. для другого языка.
| Гарантия на работу | 1 год |
| Средний балл | 4.53 |
| Стоимость | Назначаете сами |
| Эксперт | Выбираете сами |
| Уникальность работы | от 70% |