Создание транслятора, обрабатывающего код программы на языке Паскаль и за счет эквивалентных операторов генерирующего программу на Си. Особенности внешней спецификации и работы лексического анализатора. Структура программы, вывод результатов на экран.
Аннотация к работе
С другой же стороны язык Паскаль был создан для обучения, и не столь гибок и эффективен. Написание транслятора позволит увеличить рынок потенциальных разработчиков, а так же повысит быстродействие программы.Заданием курсового проекта является написание транслятора, обрабатывающего следующие конструкции: - char Транслятор пишется на языке Си. Программа должна обрабатывать код программы на языке Паскаль и за счет эквивалентных операторов генерировать программу на Си. = file of FILE * case of : ; : ; end; switch(){ case : ; case : {комментарий 1 } (*комментарий 2*) /*комментарий 1*/ /*комментарий 2*/ Паскаль Си var i,k:integer; m:char; fl:file of char; begin assign(fl,"c:tuc\tuc.txt"); rewrite(fl); Case k of 1 : Begin write("text"); End; 2 : Begin write("text1"); End; 3 : Begin write(fl,"text to file"); End; End; {End Case1} end.При этом на экран будет выведено сообщение: Пожалуйста, укажите файл для трансляции: Имя результирующего файла тоже задается пользователем, таким образом, на экран будет выведено сообщение: Пожалуйста, введите имя для транслята: Программой должны быть предусмотрены ошибки ввода, такие как, к примеру: файла не существует, файл не подходит, файл не может быть создан.Практически во всех трансляторах (и в компиляторах, и в интерпретаторах) в том или ином виде присутствует большая часть перечисленных ниже процессов: · лексический анализ В интерпретаторах и при смешанной стратегии трансляции некоторые этапы могут вообще отсутствовать. В нашей работе мы не будем реализовывать этап оптимизации и генерации объектной программы, т.к это этапы построения компиляторов, а мы лишь касаемся первой части - трансляции. Лексический анализатор читает фрагмент исходного текста, необходимый для получения одной лексемы. Если синтаксический анализатор может построить очередной элемент промежуточного представления, то он делает это и передает построенный фрагмент генератору кода.Назначение подпрограмм: Main - главная программа, осуществляющая проход синтаксического и лексического анализатора Var - подпрограмма обработки блока var и определяющие их типы как file или char в соответствии запускаются подпрограммы: File - подпрограмма обработки файловой переменной char - подпрограмма обработки символьной переменной Write - подпрограмма обрабатывающая оператор write и в зависимости от его записи запускает подпрограммы: TOFILE - подпрограмма обрабатывающая write при записи в файл TOSCREEN - обрабатывает write как обычный вывод сообщения на экран rewrite - подпрограмма обрабатывающая оператор rewrite assign - подпрограмма обрабатывающая оператор assign(,) и переводящая его в = fopen(,”w”) case - подпрограмма обрабатывающая оператор case. Возможно указание вложенных операторов case, операторных скобок или же их отсутствие. begin - подпрограмма обработки сложных case функций, может так же обрабатывать любые блоки начинающиеся с begin и заканчивающиеся ключевым словом end simple - подпрограмма обрабатывающая простые конструкции case"begin", "end", "var", "char", "boolean", "false", "true", "and", "or", "case", "assign", "write", "rewrite" #define ww_char 4 {WORDLEN = 1; return WORDTYPE = w_char; } else {WORDLEN = 0; return WORDTYPE = w_error; } break; } void put_char(char c){ cfile[outlen] = c; } int TREQU(char * s){ return (!scmp(&pasfile[paspos],s,WORDLEN));1 : Begin write("text"); 2 : Begin write("text1"); 3 : Begin write(fl,"text to file"); End; {End Case1} end. 1 : Begin write("text");Конечно, данную программу не следует рассматривать как полноценный транслятор с языка Паскаль на Си, но ее можно расширять, модифицировать и дорабатывать, что бы в конечном итоге получить полностью работоспособную версию.
План
Оглавление
Введение
1. Постановка задачи
2. Внешняя спецификация
3. Описание алгоритма
4. Структура программы и описание функций и операторов
5. Листинг программы
6. Распечатка тестов и результатов
Выводы
Список литературы
Введение
Язык программирования Си, а точнее его развитие Си , на сегодняшний день является самым распространенным языком программирования. Он завоевал такую славу благодаря своей гибкости и скорости работы. С другой же стороны язык Паскаль был создан для обучения, и не столь гибок и эффективен. Но, несмотря на это, на нем написано множество различных программ. Написание транслятора позволит увеличить рынок потенциальных разработчиков, а так же повысит быстродействие программы. Конечно, после этого программу следует доработать человеком, но вся рутинная работа по переводу программы будет выполнено транслятором.
Вывод
Конечно, данную программу не следует рассматривать как полноценный транслятор с языка Паскаль на Си, но ее можно расширять, модифицировать и дорабатывать, что бы в конечном итоге получить полностью работоспособную версию. Тем не менее, мы приобрели полезные базовые знания и навыки построения компиляторов и трансляторов, а так же ознакомились с основными фазами анализа текстовой информации.
Список литературы
1. А.Б., К. Изучаем C . - Санкт-Петербург: Питер, 2004.
2. Либерти Д. Освой самостоятельно C за 21 день. - Москва: Вильямс, 2007.
3. Саммер Г. Новые сложные задачи на C . - Москва: Вильямс, 2005.