C# Теория языков программирования и методы трансляции

Иван17 лет в сервисе
Данные заказчика будут вам доступны после подачи заявки
06.05.2015

Программа №1:

На вход программы подается текстовый файл (с именем INPUT.TXT), содержащий только описания переменных на выбранном языке(Pascal, C++, C# и т.д.). Программа должна проанализировать имеющееся в текстовом файле описание переменных при помощи ДМП-автомата и выдать(в текстовый файл OUTPUT.TXT или на экран) результат проверки. Это может быть:

1. Сообщение о том, что описание корректное.

2. Сообщение о синтаксической ошибке. Указывать тип ошибки не обязательно, требуется только указать строку и позицию в строке входного файла, где наблюдается ошибка. Достаточно находить только первую ошибку в описании.

3. Сообщение о дублировании имен переменных. В этом случае на выходе программы необходимо указать имя дублируемой переменной, а также строку и позицию в строке, где встретился дубликат.

Программа №2:

На вход программы подаются два текстовых файла(с именами GRAMMAR.TXT и INPUT.TXT). Первый содержит LL(1)-грамматику, второй — описание процедур и функций на выбранном языке(Pascal, C++) либо делегатов на языке C#. Необходимо проверить, является ли описание процедур/функций/делегатов корректным с точки зрения заданной грамматики и не содержатся ли в нем конфликты имен. Таким образом, задание разбивается на две части:

1. Проверка синтаксиса.

2. Проверка семантики.

Семантика зависит от выбранного языка, и поэтому ее проверка жестко привязана к анализатору(в данном случае — Вашей программе). Грамматика же должна быть универсальной, т.е. должна позволять задавать любые правила для разбора процедур/функций/делегатов(и не только). Например, должны быть доступны изменения: ключевых слов, знаков пунктуации, правил разбора идентификаторов, а также добавление новых языковых конструкций и т.п. Программа должна проанализировать имеющееся в текстовом файле описание процедур/функций/делегатов и выдать(в текстовый файл OUTPUT.TXT) результат проверки. Это может быть:

1. Сообщение о том, что грамматика во входном файле не является LL(1)-грамматикой.

2. Сообщение о том, что описание корректное.

3. Сообщение о синтаксической ошибке. Указывать тип ошибки не обязательно, требуется только указать строку и позицию в строке входного файла, где наблюдается ошибка. Достаточно находить только первую ошибку в описании.

4. Сообщение о конфликте имен. В этом случае на выходе программы необходимо указать конфликтующее имя, а также строку и позицию в строке, где произошел конфликт.