Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
13
Добавлен:
07.08.2013
Размер:
50.18 Кб
Скачать

1 Анализ технического задания

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

Основным требованием заказчика к транслятору является поддержка:

  • Целочисленные константы

  • Директива описания переменных типа integer

  • Условный оператор if, then, else

  • Простое логическое выражение

  • Оператор присваивания

Программа должна выполнять следующие функции, обусловленные задачами составления программы: читать данные из файла, обрабатывать и анализировать их (разбивать содержимое на лексемы, на основании алфавита языка и грамматики, а также должно приниматься решение о принадлежности лексемы к тому или иному классу, и записывать в соответствующую таблицу – массивы), по предыдущим результатам должна заполняться таблица стандартных символов, таблица литералов, таблица идентификаторов; по данным таблицы стандартных символов должен происходить синтаксический разбор с целью проверки правильности синтаксиса, по методу рекурсивного спуска, т.е. нисходящего детерминированного разбора на основе LL(K) грамматики, и потому происходит диагностика ошибок и трансляция данных с подмножества языка Pascal в язык ассемблера, вывод результата в файл.

Лексический анализ подразумевает разбиение содержимого входного файла на лексемы и, в зависимости от принадлежности лексемы к тому или иному классу, ее запись в соответствующую таблицу (таблицу идентификаторов, таблицу литералов). А также формирование таблицы стандартных символов, которая состоит из списка лексических единиц, расположенных в том порядке, в котором они встречаются в тексте программы . На этом этапе транслятор языка Pascal должен обнаруживать и отмечать лексические ошибки.

На этапе синтаксического анализа будет происходить разбор сложных логических выражений. Синтаксический анализ будет выполняться по нисходящему детерминированному методу разбора на основе LL(K) грамматик, цель которого – проверка правильности синтаксиса содержимого входного файла.

Завершающий этап – генерация кода.

Генерация кода – это перевод транслятором внутреннего представления ис­ход­ной программы в цепочку символов выходного языка. Для компилятора это – объектный код, для транслятора это может быть программа на другом язы­ке про­грам­мирования. Транслятор выполняет генерацию кода поэ­тап­но на основе законченных синтаксических конструкций входной программы.

Соседние файлы в папке Курсач