Разработка конвертора на языке Си для перевода программ на языке Паскаль в текст программы на языке Си - Курсовая работа

бесплатно 0
4.5 188
Создание программы для перевода кодов с языка Pascal на язык Си. Обработка программ операторами case, assign, rewrite и write. Способы объявления файла, комментария, переменных, логических и арифметических выражений. Виды синтаксических анализаторов.

Скачать работу Скачать уникальную работу

Чтобы скачать работу, Вы должны пройти проверку:


Аннотация к работе
Существуют различные методики для трансляции программы. Существуют различные виды трансляторов: адресный, диалоговый, многопроходной, обратный, однопроходной, оптимизирующий, синтаксически-ориентированный (синтаксически-управляемый), тестовый. От компиляторов, что позволили говорить с компьютером "на человеческом языке", до современных переводчиков и, даже, спеллчекеров, встроенных повсеместно - в браузерах, текстовых редакторах, клиентах передачи сообщений.Программа предназначена для трансляции кода на языке Pascal в код на языке программирования C. Программа переводит текст программы, сохраненный в файле filename1 с расширением .PAS.Исходный код находится в файле filename1.pas с кодом на языке Pascal: filename1 имя входного файла, содержащего исходный текст программы на языке Pascal, в котором используются операторы case, assign, rewrite,write, file, комментарии, Begin, end и тип данных: real После работы программы программа создает файл filename2.c, а так же счетчики операторов до транслирования и после, а также количество ошибочных операторов: filename2 имя выходного файла, содержащий конвертированный текст программы на язык C; Для более удобного понимания целей нашей программы составим таблицу 1, в которой сравним синтаксис по операторам на языке C и на языке Pascal по нашему варианту. Оператор case: case k of 1: Begin End; 2:Begin End; switch(k){ case 1: {break; case 2: {break; Оператор assign, rewrite, write assign(fl,"c:tuc\tuc.txt"); rewrite(fl); write(fl,"bla"); fl = fopen("c:tuc\tuc.txt","w"); fcreate(fl); fprintf(fl,"bla");Исходный текст программы, написанный на языке Pascal, filename1.pas вводится после запроса программы: Имя входного файла: После работы программы, ввести имя файла:filename2, в который записывается код после трансляции: Имя выходного файла: После работы программы, выводится на экран количество операторов исходных, успешно обработанных и которые оказались ошибочные(koper1, koper2, ker).Работа лексического анализатора состоит в том, чтобы сгруппировать определенные терминальные символы в единые синтаксические объекты, называемые лексемами. Какие объекты считать лексемами зависит от определения языка программирования, в нашей программе это массив ключевых слов. Лексический анализатор - это транслятор, входом которого служит цепочка символов, представляющая исходную программу, а выходом - последовательность лексем. этот выход образует выход синтаксического анализатора.Назначение подпрограмм: errore_program - Подпрограмма обработки ошибок, включает в себя функции определения места ошибки, а так же выделение полной ошибочной конструкции. Заодно пропускает пробелы. process_begin - Подпрограмма обработки блока Begin…End, запускается после того как во входном файле встречено слово begin и заменяет их на {…} READINGWORDS - Подпрограмма посимвольно просматривает файл и определяет к чему можно отнести данный символ. process_rewrite - Подпрограмма обработки ключевого слова rewrite. process_assign - Подпрограмма обработки ключевого слова assign. process_write - Подпрограмма обработки ключевого слова write Это такие слова как: "begin", "end", "var", "real", "boolean", "false", "true", "type, "and", "or", "case", "assign", "rewrite"ю allbuf - При обработке кода мы преобразовываем массив строк одну единственную строку, поэтому мы вводим ограничитель на длину этой строки. Функции и процедуры void INCDT() - функция увеличение отступа. void DECDT() - функция уменьшения отступа. void copychar() - копирует слово из входного файла в выходной без изменений. int fae() - вспомогательная подфункция обработки арифметического выражения. int ae() - функция обработки арифметического выражения.int inlen,outlen,inpos;//текущие позиции (строки входные, выходные, позиция в строке входной) int koper1,koper2,ker;//эти переменные считают количество операторов во входном, выходном файле и колво ошибок int wlen; //длина "слова" int wtype; //тип "слова" int wnumf; //0 - целое число, 1 - дробное int dt; //размер отступа (от начала строки) typedef struct var{ //элемент списка переменных char s[64]; //идент-р переменной int tp; //тип переменной var * next; while (p) {if (strlen(p->s)==wlen&& // если слово во входном тексте равно названию переменной (в списке), !memcmp(p->s,&instr[inpos],wlen)) return p->tp; // то вернуть тип переменной p = p->next; while (p) {if (strlen(p->s)==wlen&& // если слово во входном тексте равно названию переменной (в списке), !memcmp(p->s,&instr[inpos],wlen)) return p->s; // то вернуть тип переменной p = p->next; {wlen = 1; return wtype = Word_char; }//возвращает, что это символ else {wlen = 0; return wtype = Word_errore; } break; else return wtype = Word_space; ///возвращает, что это символ пробел break;fl:file of integer; begin assign(fl,"

План
Оглавление

Аннотация

Введение

1. Техническое задание

2. Постановка задачи

3. Внешняя спецификация программы

4. Описание алгоритма

5. Структура программы

6. Листинг кода

7. Результаты тестирования программы

Заключение

Список литературы

Введение
Существуют различные методики для трансляции программы. Существуют различные виды трансляторов: адресный, диалоговый, многопроходной, обратный, однопроходной, оптимизирующий, синтаксически-ориентированный (синтаксически-управляемый), тестовый.

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

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

Список литературы
Основная

Зайцева, Л. В. Алгоритмические языки и программирование / Л. В. Зайцева. - М. : МГГУ, 1996.

Фаронов, В. В. Программирование на ПЭВМ в среде Турбо-Паскаль / В. В. Фаронов. - М. : МГТУ, 1999.

Alfred V. Aho Jeffrey D. Ullman The theory of parsing, translation and compiling Prentice-Hall, inc Englewood Clifis, N. J., 1972

Дополнительная

1. Красов, A. В. Программирование на Borland C под MS Windows / A. В. Красов. - СПБ. : СПБГУТ, 2001.

2. Зайцева, Л. В. Методические указания для выполнения курсового проекта по дисциплине "Алгоритмические языки и программирование" по спец. 2203 / Л. В. Зайцева, В. Г. Ссорин, E. A. Ерохина, 2005.

Размещено на

Вы можете ЗАГРУЗИТЬ и ПОВЫСИТЬ уникальность
своей работы


Новые загруженные работы

Дисциплины научных работ





Хотите, перезвоним вам?