Разработка транслятора

Автор работы: Пользователь скрыл имя, 22 Августа 2014 в 11:19, курсовая работа

Краткое описание

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

Содержание

ВВЕДЕНИЕ
4
1
ТЕХНИЧЕСКОЕ ЗАДАНИЕ
5
2
ФОРМАЛЬНОЕ ОПИСАНИЕ ЯЗЫКА ПРОГРАММИРОВАНИЯ
7
3
РАЗРАБОТКА АЛГОРИТМОВ СКАНЕРА, СИНТАКСИЧЕСКОГО АНАЛИЗАТОРА И ГЕНЕРАТОРА ПРОМЕЖУТОЧНОЙ ФОРМЫ ПРЕДСТАВЛЕНИЯ ПРОГРАММЫ
14
4
РАЗРАБОТКА ПРОГРАММНОГО КОМПЛЕКСА ПРОЕКТА
21
5
РЕЗУЛЬТАТЫ ТЕСТИРОВАНИЯ И ОТЛАДКИ ПС
24

ЗАКЛЮЧЕНИЕ
27

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
28

Прикрепленные файлы: 1 файл

курсовая по сис. прог. Межитханов.docx

— 121.52 Кб (Скачать документ)

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РЕСПУБЛИКИ КАЗАХСТАН 
РГП «КАРАГАНДИНКИЙ ГОСУДАРСТВЕННЫЙ ИНДУСТРИАЛЬНЫЙ УНИВЕРСИТЕТ»

 

 

 

Факультет:__МиС______

Специальность: ___ВТиПО  _                                       Группа: _ВТиПО-11с

 

 

 

 

 

 

 

ПОЯСНИТЕЛЬНАЯ ЗАПИСКА

К КУРСОВОЙ РАБОТЕ

По дисциплине: Системное программирование__________________________

Тема: Разработка транслятора______________________________________

Вариант:                                                    №2_____________________________

 

 

 

 

 

 

 

Студент(магистрант ) Межитханов И.С.                                      ____________

                                                                                                                   (подпись)       

Руководитель проекта(работы ) _Сергеева А.О.                                ___    ___           

                                                                                                                 (подпись)        

Оценка выполнения курсовой работы    _____________________               ____

Члены комиссии:______________                                                ______________ 

                                                                                                                   (подпись)  

                            ______________                                                ______________ 

                                                                                                                                                                                                            (подпись)       

 

 

       

 

 

 

 

ТЕМИРТАУ 2013 г.

 

 

 

Содержание

 

 

страницы

 

ВВЕДЕНИЕ

4

1

ТЕХНИЧЕСКОЕ ЗАДАНИЕ

5

2

ФОРМАЛЬНОЕ ОПИСАНИЕ ЯЗЫКА ПРОГРАММИРОВАНИЯ

7

3

РАЗРАБОТКА АЛГОРИТМОВ СКАНЕРА, СИНТАКСИЧЕСКОГО АНАЛИЗАТОРА И ГЕНЕРАТОРА ПРОМЕЖУТОЧНОЙ ФОРМЫ ПРЕДСТАВЛЕНИЯ ПРОГРАММЫ

14

4

РАЗРАБОТКА ПРОГРАММНОГО КОМПЛЕКСА ПРОЕКТА

21

5

РЕЗУЛЬТАТЫ ТЕСТИРОВАНИЯ И ОТЛАДКИ ПС

24

 

ЗАКЛЮЧЕНИЕ

27

 

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

28

 

ПРИЛОЖЕНИЕ. ЛИСТИНГ ПРОГРАММЫ

29



 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ВВЕДЕНИЕ

 

 

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

В общении человека и ЭВМ существуют естественные трудности. Машины на атомарном уровне оперируют битами и регистрами, а люди изъясняются на естественных языках или пользуются математическими обозначениями.

Трансляторы стали неотъемлемой частью любой ЭВМ. Поэтому они являются важной практической областью научных исследований, связанных с работой вычислительных систем.

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

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

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

С++ (произносится «Си плюс плюс») — стандартизированный процедурный язык программирования, разработанный в 1969—1973 годах сотрудниками Bell Labs Кеном Томпсоном и Деннисом Ритчи как развитие языка Би. Си был создан для использования в операционной системе UNIX. С тех пор он был перенесён на многие другие операционные системы и стал одним из самых используемых языков программирования.

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

 

 

 

 

 

 

 

 

 

 

1 ТЕХНИЧЕСКОЕ ЗАДАНИЕ

 

 

    1. ВВЕДЕНИЕ

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

    1. ОСНОВАНИЕ ДЛЯ РАЗРАБОТКИ

Программа разрабатывается на основании учебного плана кафедры ИТиЕНД по специальности 5В070400 ВТиПО в качестве курсовой работы по дисциплине «Системное программирование»

    1. НАЗНАЧЕНИЕ

Приобретение практических навыков в проектировании трансляторов,  порождающих объектный код для ЭВМ.

1.4. ТРЕБОВАНИЯ К ПРОГРАММЕ ИЛИ ПРОГРАММНОМУ ИЗДЕЛИЮ

1.4.1.Требования  к функциональным характеристикам

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

  • Открытие файла с данным входным языком программирования
  • Сканирование текста исходной программы
  • Осуществление грамматического разбора текста исходной программы на языке программирования высокого уровня
  • Формирование промежуточной формы представления программы с помощью четверок

1.4.1.2. Исходные данные:

  • Файл, содержащий текст исходной программы

1.4.1.3. Результаты:

  • Таблица, содержащая результаты сканирования программы
  • Дерево грамматического разбора текста исходной программы
  • Промежуточная форма представления исходной программы с помощью четверок

1.4.2.Требования  к надежности

  1. Предусмотреть контроль вводимой информации.
  2. Предусмотреть блокировку некорректных действий пользователя при работе с программой.

 

 

 

 

 

 

 

 

1.4.3. Требования к составу  и параметрам технических средств

  1. Программа должна работать на IBM совместимых персональных компьютерах
  2. Минимальная конфигурация:
  • тип процессора Pentium и выше;
  • объем оперативного запоминающего устройства 32 Мб и более.

1.4.4. Требования  к информационной и   программной  совместимости

Программа должна работать под управлением семейства операционных систем Win32 (Windows ХР, Windows 7, Windows 2000, Windows NT и т. п.).

1.5. ТРЕБОВАНИЯ К ПРОГРАММНОЙ ДОКУМЕНТАЦИИ

  1. Разрабатываемые программные модули должны быть самодокументированны,  тексты программ должны содержать все необходимые комментарии.
  2. Программа должна включать справочную информацию о работе программы.
  3. В состав сопровождающей документации должны входить:
  4. Пояснительная записка на 25-30 листах, содержащая описание разработки.
  5. Руководство пользователя.
  6. Графическая часть.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2 Формальное описание языка программирования

 

Спецификация языка транслятора в форме Бэкуса-Наура. Все нетерминальные символы заключены в угловые скобки <>. Варианты определений разделены метасвязкой |. Все остальное в определениях нетерминалов - это терминальные символы, в точном соответствии представляющие соответсвующие лексемы, за исключением EOF представлящего собой символ конца файла, а также E (эпсилон) - ничего, пустой символ. Кроме того, регистр символов латинского алфавита не имеет значения, например, t и T считаются идентичными.

 

<программа> ::= <определение класса> EOF

<определение  класса> ::= class <идентификатор> <определение компонентной фунции> end class

<определение  компонентной фунции> ::= function void <идентификатор> () <последовательность инструкций> end function

<последовательность  инструкций> ::= <инструкция> | <инструкция> <последовательность инструкций>

<инструкция> ::= <одиночная инструкция> | <составная  инструкция>

<составная  инструкция> ::= { <последовательность  инструкций> }

<одиночная  инструкция> ::= <инструкция определения  переменной (переменных)> | <инструкция-выражение> | <инструкция print> | <условная инструкция> | <цикл while> | <цикл for>

<инструкция  определения переменной (переменных)> ::= int <определение> <хвост определений> ;

<хвост  определений> ::= <определение> , <хвост  определений> | E

<определение> ::= <идентификатор> | <идентификатор> = <выражение присвоения>

<инструкция-выражение> ::= <выражение присвоения> ;

<инструкция  print> ::= print ( ) ; | print ( <выражение присвоения> ) ;

<условная  инструкция> ::= if ( <выражение присвоения> ) <инструкция> | if ( <выражение присвоения> ) <инструкция> else <инструкция>

<цикл while> ::= while ( <выражение присвоения> ) <инструкция>

<цикл for> ::= for ( <выражение присвоения> ; <выражение присвоения> ; <выражение присвоения> ) <инструкция>

<выражение  присвоения> ::= <идентификатор> = <выражение  присвоения> | <выражение ИЛИ>

<выражение  ИЛИ> ::= <выражение И> <хвост  выражения ИЛИ>

<хвост  выражения ИЛИ> ::= || <выражение  И> <хвост выражения ИЛИ>

 

 

 

 

 

 

| E

<выражение  И> ::= <выражение равенства> <хвост  выражения И>

<хвост  выражения И> ::= && <выражение  равенства> <хвост выражения И> | E

<выражение  равенства> ::= <выражение сравнения> <хвост выражения равенства>

<хвост  выражения равенства> ::= == <выражение  сравнения> <хвост выражения равенства> | != <выражение сравнения> <хвост выражения равенства> | E

<выражение  сравнения> ::= <аддитивное выражение> <хвост выражения сравения>

<хвост  выражения сравнения> ::= < <аддитивное  выражение> <хвост выражения сравнения> | <= <аддитивное выражение> <хвост  выражения сравнения> | > <аддитивное  выражение> <хвост выражения сравнения> | >= <аддитивное выражение> <хвост  выражения сравнения> | E

<аддитивное  выражение> ::= <мультипликативное  выражение> <хвост аддитивного  выражения>

<хвост  аддитивного выражения> ::= + <мультипликативное  выражение> <хвост аддитивного  выражения> | - <мультипликативное  выражение> <хвост аддитивного  выражения> | E

<мультипликтивное выражение> ::= <выражение степени> <хвост мультипликативного выражения>

<хвост  мультипликативного выражения> ::= * <выражение степени> <хвост  мультипликативного выражения> | / <выражение степени> <хвост мультипликативного  выражения> | % <выражение степени> <хвост мультипликативного выражения> | E

<выражение  степени> ::= <унарное выражение> ^ <константа>

<унарное  выражение> :: ! <унарное выражение> | ( <выражение присвоения> ) | <идентификатор> | <константа>

 

Си (англ. C) — стандартизированный процедурный язык программирования, разработанный в 1969—1973 годах сотрудниками Bell Labs Кеном Томпсоном и Деннисом Ритчи как развитие языка Би. Си был создан для использования в операционной системе UNIX. С тех пор он был перенесён на многие другие операционные системы и стал одним из самых используемых языков программирования. Си ценят за его эффективность. Он является самым популярным языком для создания системного программного обеспечения. Его также часто используют для создания прикладных программ. Несмотря на то, что Си не разрабатывался для новичков, он активно используется для обучения программированию. В дальнейшем синтаксис языка Си стал основой для многих других языков.

Си — это язык программирования общего назначения, хорошо известный своей эффективностью, экономичностью, и переносимостью. Указанные преимущества Си обеспечивают хорошее качество разработки почти любого вида программного продукта. Использование Си в качестве инструментального языка позволяет получать быстрые и компактные программы. Во многих случаях программы, написанные на Си, сравнимы по скорости с программами, написанными на языке ассемблера. При этом они имеют лучшую наглядность и их более просто сопровождать. Си сочетает эффективность и мощность в относительно малом по размеру языке. Хотя Си не содержит встроенных компонент языка, выполняющих ввод_вывод, распределение памяти, манипуляций с экраном или управление процессами, тем не менее, системное окружение Си располагает библиотекой объектных модулей, в которой реализованы подобные функции. Библиотека поддерживает многие из функций, которые требуются. Это решение позволяет изолировать языковые особенности от специфики процессора, на котором выполняется результирующая программа. Строгое определение языка делает его независимым от любых деталей операционной системы или машины. В то же время программисты могут добавить в библиотеку специфические системные программы, чтобы более эффективно использовать конкретной особенности машины. Перечислим некоторые существенные особенности языка Си:

Информация о работе Разработка транслятора