Нужно выполнить две лабораторные работы
Вариант №3.
Лаб. раб. №1
На вход программы подается текстовый файл (с именем INPUT.TXT), содержащий только описания переменных на языке C++.
Программа должна проанализировать имеющееся в текстовом файле описание переменных при помощи регулярного выражения и выдать (в текстовый файл OUTPUT.TXT или на экран) результат проверки. Это может быть:
1. Сообщение о том, что описание корректное.
2. Сообщение о синтаксической ошибке. Указывать тип ошибки не обязательно, требуется только указать строку и позицию в строке входного файла, где наблюдается ошибка. Достаточно находить только первую ошибку в описании.
3. Сообщение о дублировании имен переменных. В этом случае на выходе программы необходимо указать имя дублируемой переменной, а также строку и позицию в строке, где встретился дубликат.
Лаб.раб.№2
На вход программы подаются два текстовых файла (с именами GRAMMAR.TXT и INPUT.TXT). Первый содержит LR(1)-грамматику, второй — описание функций на языке C++. Необходимо проверить, является ли описание функций корректным с точки зрения заданной грамматики и не содержатся ли в нем конфликты имен.
Таким образом, задание разбивается на две части:
1. Проверка синтаксиса.
2. Проверка семантики.
Грамматика должна быть универсальной, т. е. должна позволять задавать любые правила для разбора функций. Например, должны быть доступны изменения: ключевых слов, знаков пунктуации, правил разбора идентификаторов, а также добавление новых языковых конструкций и т. п.
Программа должна проанализировать имеющееся в текстовом файле описание функций и выдать (в текстовый файл OUTPUT.TXT) результат проверки. Это может быть:
1. Сообщение о том, что грамматика во входном файле не является LR(1)-грамматикой.
2. Сообщение о том, что описание корректное.
3. Сообщение о синтаксической ошибке. Указывать тип ошибки не обязательно, требуется только указать строку и позицию в строке входного файла, где наблюдается ошибка. Достаточно находить только первую ошибку в описании.
4. Сообщение о конфликте имен. В этом случае на выходе программы необходимо указать конфликтующее имя, а также строку и позицию в строке, где произошел конфликт.
Есть наработки по этим работам, но они не прошли по антиплагиату.
Методички прилагаю