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

бесплатно 0
4.5 165
Схема разбора арифметического и логического выражения. Внешняя спецификация конвертора и алгоритм перевода программ на языке Паскаль в текст на языке Си. Назначение подпрограмм, особенности констант и переменных. Код программы и ее тестирование.

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

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


Аннотация к работе
В данной курсовой работе осуществляется попытка создать мини-транслятор, для того что бы получить навыки написания программ осуществляющих синтаксический анализ и трансляцию.Разработать конвертор на языке Си для перевода программ на языке Паскаль в текст программы на языке Си. Согласно варианту следует перевести следующие конструкции: - real; Программа должна так же обрабатывать операцию присваивания и комментарии. При встрече неизвестной конструкций программа должна выдавать сообщение об ошибке.В консоли после ввода пути и названия входящего файла пользователю будет выведено одно из двух возможных сообщений: 1. Сообщение об ошибке. При втором варианте развития событий на экран будет выведено сообщение об ошибке ввода. Сообщение об ошибке для открытия файла: Ошибка! Невозможно открыть файл!Программа проводит 2 типа анализ: лексический и синтаксический. Работа лексического анализатора состоит в том, чтобы сгруппировать определенные терминальные символы в единые синтаксические объекты, называемые лексемами. Лексема - это цепочка терминальных символов, с которой мы связываем лексическую структуру, состоящую из пары вида (тип* лексемы, некоторые данные).конвертор алгоритм перевод паскаль константа put_stroku - Процедура записи строки в выходной буфер. put_simvol - Процедура записи символа в выходной буфер. skip_space - Процедура пропуска пробела. inc_otstup - Процедура увелечения отступа. dec_otstup - Процедура уменьшения отступа. put_otstup - Процедура вывода отступа. Заносит данные о количестве ошибок в специальную переменную. func_Comment, func_COMMENTEND - Функция проверки строки на наличие комментария, и обработка его, если это так. func_begin - Функция обработки блока операторов, запускается после того как во входном файле встречено слово begin. func_Real_Bool_Label - Функция обработки переменных. Начинает обработку после слова var. func_var - Функция описывающая блок переменных. func_vardescr - Функция обрабатывающая блок описания переменных. read_slovo - Функция посимвольно просматривает файл и определяет к чему можно отнести данный символ. skip_space - Функция пропуска пробелов и слова. func_goto-Функция обработки конструкции goto в тексте.KS_kol - число, обозначающее размер словаря ключевых слов. max_dlin - число, обозначающее максимальное количество символов в программе.in_str[max_dlin]-строка, в которую записывается входящий файл out_str[max_dlin]-строка, в которую записывается выходящий файл in_len - длина входного файла. out_len - длина выходного файла. in_pos - позиция во входной строке kol_oper_1 - количество операторов во входящем файле kol_oper_2 - количество операторов в выходящем файле k_er - количество ошибок. s_dlin - длина слова s_type - тип слова otstup - длина отступа in_str[max_dlin] - входной файл. out_str[max_dlin]; - выходной файл.Ключевое слово Идентификационный номер ks_begin 1 ks_end 2 ks_var 3 ks_real 4 ks_boolean 5 ks_false 6 ks_true 7 ks_read 8 ks_readln 9 ks_and 10 ks_or 11 ks_label 12 ks_goto 13 Тип Идентификационный номер type_Real 1 type_Bool 2 type_Label 3"begin", "end", "var", "real", "boolean", "false", "true", "read", "readln", "and", "or", "label", "goto" #define type_Real 1 #define type_Label 3 } void set_type(int gl, int type){ var *p; {s_dlin = 1; return s_type = s_char; } else {s_dlin = 0; return s_type = s_error; } break;Сначала введем файл с текстом без ошибочных конструкций, который должна транслировать программа: Рисунок 6.1 - Вид консоли при обработке текста без ошибочной конструкции Текст test.pas: (* comment1 *) label k; Текст test.cpp: #include Введем файл с текстом содержащую ошибочную конструкцию. Текст test2.pas: (* comment1 *) label k;Приобретены навыки написания трансляторов.

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

Введение

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

2. Внешняя спецификация

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

4. Описание функций и операторов

4.1 Назначение подпрограмм

4.2 Константы

4.3 Переменные

4.4 Таблицы идентификаций

5. Код программы

6. Тестирование

Вывод

Список используемой литературы

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

Вывод
Приобретены навыки написания трансляторов. В курсовой работе реализован мини-транслятор, переводящий лишь ограниченное число конструкций. Но навыки, приобретенные в данной работе можно применить для создания полноценного транслятора. Были изучены основные виды синтаксических и лексических анализаторов и способы их применения, а так же узнали принципы работы таких программ.

Список литературы
1. Компиляторы: принципы, технологии и инструменты. - М: Вильямс, - А. Ахо (2001)

2. Си, Язык программирования.- М: Вильямс. Б. Керниган, Д. Р. (2009).

3. Язык программирования Си. Практический курс. - Поляков К.Ю. (2009)

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

Размещено на

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


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

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





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