Реферат на тему "Программно методический комплекс для обучения процессу создания компиляторов"




Реферат на тему

текст обсуждение файлы править категориядобавить материалпродать работу




Диплом на тему Программно методический комплекс для обучения процессу создания компиляторов

скачать

Найти другие подобные рефераты.

Диплом *
Размер: 209.36 кб.
Язык: русский
Разместил (а): Кузнецов Александр Иванович
1 2 3 4 5 6 7 8 9 10 Следующая страница

добавить материал

МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ

                                   ВОТКИНСКИЙ ФИЛИАЛ    ИЖ   Г  Т  У

 

Кафедра    Организации  вычислительных  процессов и систем управления

                                                         
                                                                    К  защите  допустить “____”_________ 2003  г
                                                                   
Зав. кафедрой ___________

                              дипломный проект

Программно-методический комплекс для обучения процессу создания компиляторов
 
 

  ТЕМА:                                                                                                                                   
                                                                                                                                                  
                                                                                                                                                  
     
                                                                                                                                                  

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

 
 Выполнил студент группы    Д – 1061            _________ А.И. Кузнецов
                                   
 Руководитель проекта      ст. преподаватель  _________
                     
       Консультант  по          профессор, д.т.н.   _________
       охране труда
       Консультант   по эко-       доцент, к.т.н.    _________
       номической части
       Председатель  экс-          ст. преподаватель _________
       пертной  комиссии
      

Воткинск   2003

 

Определения
В настоящем дипломном проекте применяются следующие термины с соответствующими определениями.
Ассемблер - программа, которая переводит исходную программу, написанную на автокоде или на языке ассемблера (что, суть, одно и то же), в объектный (исполняемый) код.
БНФ (Бэкуса нормальная форма) – грамматика, состоящая из конечного множества правил, определяющих в совокупности язык программирования.
Выражение – правила получения нового значения с помощью знаков операций и скобок, частным случаем выражения может быть просто одиночный элемент, т.е. константа или переменная.
Идентификатор – имя переменной, процедуры, функции, программы.
Инструкция – синтаксическая структура, содержащая ключевые, шумовые слова и конструкции. Бывают простые и структурированные. Простые инструкции не содержат в себе других вложенных инструкций (присваивание, GOTO). Структурированные инструкции могут содержать вложенные инструкции (IF <булево выражение> THEN <безусловный оператор> ELSE <оператор>).
Компилятор – системная программа, выполняющая преобразование программы, написанной на  одном алгоритмическом языке, в  программу на языке, близком к машинному, и в определенном смысле  эквивалентную первой.
Лексема – единица программы, получающаяся в результате лексического анализа, например: for, i, 10, integer, + и т. п.
Лексический анализ – выделение в исходной программе элементарных составляющих: идентификаторов, ограничителей, символов операторов, чисел, ключевых слов, шумовых слов, пробелов, комментариев и т. п.
Литера – любой символ, множество литер составляют лексему.
Литерал – численное или строковое значение, заданное один раз, и не изменяемое в течение программы.
Метод операторного предшествования – восходящий метод грамматического разбора, основан на анализе пар последовательно расположенных операторов исходной программы и решении вопроса о том, какой из них должен выполняться первым.
Нетерминальный символ – имя конструкции, определенной внутри грамматики.
Рекурсивный спуск – нисходящий метод грамматического разбора, основан на том, что для каждого нетерминального символа, определенного в грамматике, существует отдельная процедура обработки. При этом в процессе своей работы она может вызывать подобные процедуры
Семантика языка программирования - это смысл, который закладывается в каждую конструкцию языка.
Семантический анализ - это проверка смысловой правильности конструкции. Например, если мы в выражении используем переменную, то она должна быть определена ранее по тексту программы, а из этого определения может быть получен ее тип. Исходя из типа переменной, можно говорит о допустимости операции с данной переменной.
Семантический анализ – в нем обрабатываются структуры, распознанные синтаксическим анализатором, и начинает обретать очертания выполняемый код.
Символьное имя – одно из имен, разрешенных в языке, не являющееся терминальным символом.
Синтаксис языка программирования - это правила составления предложений языка из отдельных слов. Такими предложениями являются операции, операторы, определения функций и переменных. Особенностью синтаксиса является принцип вложенности (рекурсивность) правил построения предложений. Это значит, что элемент синтаксиса языка в своем определении прямо или косвенно в одной из его частей содержит сам себя. Например, в определении оператора цикла телом цикла является оператор, частным случаем которого является все тот же оператор цикла.
Синтаксический анализ (грамматический разбор) – формирует синтаксическую единицу – выражение, инструкцию, вызов подпрограммы, декларацию, которые далее обрабатываются семантическим анализатором. Пример структуры: FOR <выражение> TO int DO <body>.
Синтаксический разбор – процесс получения дерева синтаксического разбора на основе заданной грамматики.
Сканер (лексический анализатор) – программа распознавания лексем.
Спецификатор – порядковый номер в таблице, куда занесена лексема.
Терминальный символ – конечный неделимый элемент конструкции языка, является зарезервированным словом (например READ, (, +).
Транслятор – это системная программа, выполняющая преобразование программы, написанной на  одном алгоритмическом языке, в  программу на другом алгоритмическом  языке в определенном смысле  эквивалентную первой.

Содержание
 TOC \o "1-3" Введение................................................................................................... PAGEREF _Toc42285692 \h 19
1 Анализ предметной области................................................................ PAGEREF _Toc42285693 \h 20
1.1 Компиляторы........................................................................... PAGEREF _Toc42285694 \h 20
1.2 Логическая структура компилятора..................................... PAGEREF _Toc42285695 \h 21
1.3 Лексический анализ. Сканер.................................................... PAGEREF _Toc42285696 \h 24
1.4 Синтаксический и семантический анализ.............................. PAGEREF _Toc42285697 \h 28
1.5 Грамматики............................................................................. PAGEREF _Toc42285698 \h 31
1.6 Формирование промежуточного кода................................... PAGEREF _Toc42285699 \h 34
Метод четверок..................................................................... PAGEREF _Toc42285700 \h 36
1.7 Обоснование создания учебного комплекса............................. PAGEREF _Toc42285701 \h 37
1.8 Обзор существующих разработок.......................................... PAGEREF _Toc42285702 \h 38
1.9 Обоснование разработки........................................................ PAGEREF _Toc42285703 \h 39
2 Создание учебной разработки............................................................. PAGEREF _Toc42285704 \h 42
2.1 Краткое описание учебного компилятора............................. PAGEREF _Toc42285705 \h 42
2.2 Описание учебного языка......................................................... PAGEREF _Toc42285706 \h 43
2.3 Лексический анализатор LEXAN............................................ PAGEREF _Toc42285707 \h 46
2.3.1 Таблица терминальных символов.............................. PAGEREF _Toc42285708 \h 47
2.3.2 Таблица символических имен..................................... PAGEREF _Toc42285709 \h 48
2.3.3 Таблица литералов...................................................... PAGEREF _Toc42285710 \h 49
2.3.4 Работа сканера............................................................. PAGEREF _Toc42285711 \h 50
2.3.5 Структура листинга..................................................... PAGEREF _Toc42285712 \h 50
2.3.6 Структура выходного файла...................................... PAGEREF _Toc42285713 \h 50
2.3.7 Примерное задание для студента............................... PAGEREF _Toc42285714 \h 52
2.3.8 Описание работы лексического анализатора............. PAGEREF _Toc42285715 \h 53
2.4 Синтаксический анализатор SinAn........................................ PAGEREF _Toc42285716 \h 56
2.4.1 Таблица переходов...................................................... PAGEREF _Toc42285717 \h 56
2.4.2 Правила работы с таблицей переходов...................... PAGEREF _Toc42285718 \h 60
2.4.3 Правила таблицы переходов для написания программы    PAGEREF _Toc42285719 \h 62
2.4.4 Формируемая таблица переходов. Правила заполнения     PAGEREF _Toc42285720 \h 65
2.4.5 Правила заполнения формируемой таблицы переходов     PAGEREF _Toc42285721 \h 66
2.4.6 Построение деревьев................................................... PAGEREF _Toc42285722 \h 81
2.4.7 Семантический анализ................................................. PAGEREF _Toc42285723 \h 83
2.5 Формирование промежуточного кода................................... PAGEREF _Toc42285724 \h 85
Циклы.................................................................................... PAGEREF _Toc42285725 \h 85
3 Определение трудоемкости по стадиям разработки........................... PAGEREF _Toc42285726 \h 89
3.1 Методика расчета.................................................................. PAGEREF _Toc42285727 \h 89
3.2 Определение затрат на выполнение проекта по стадиям разработки   PAGEREF _Toc42285728 \h 92
3.3 Расчет затрат на выполнение проекта по этапам.............. PAGEREF _Toc42285729 \h 94
4 Рекомендации по охране труда при работе с учебным комплексом. PAGEREF _Toc42285730 \h 95
Заключение.............................................................................................. PAGEREF _Toc42285731 \h 97
Список использованных источников...................................................... PAGEREF _Toc42285732 \h 98
Приложения............................................................................................. PAGEREF _Toc42285733 \h 99


Введение

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

1 Анализ предметной области

 

1.1 Компиляторы

 
Транслятор - это программа, которая переводит исходную программу в эквивалентную ей объектную программу. Если объектный язык представляет собой автокод или некоторый машинный язык, то транслятор называется компилятором.
Автокод очень близок к машинному языку; большинство команд автокода - точное символическое представление команд машины.
Ассемблер - это программа, которая переводит исходную программу, написанную на автокоде или на языке ассемблера (что, суть, одно и то же), в объектный (исполняемый) код.
Компиляторы пишутся как на автокоде, так и на языках высокого уровня. Кроме того, существуют и специальные языки конструирования компиляторов - компиляторы компиляторов.
Компилятор компиляторов (КК) – система, позволяющая генерировать компиляторы; на входе системы - множество грамматик, а на выходе, в идеальном случае, - программа. Иногда под КК понимают язык программирования, в котором исходная программа - это описание компилятора некоторого языка, а объектная программа - сам компилятор для этого языка. Исходная программа КК - это просто формализм, служащий для описания компиляторов, содержащий, явно или неявно, описание лексического и синтаксического анализаторов, генератора кодов и других частей создаваемого компилятора. Обычно в КК используется реализация схемы т.н. синтаксически управляемого перевода. Кроме того, некоторые из них представляют собой специальные языки высокого уровня, на которых удобно описывать алгоритмы, используемые при создании компиляторов.

1.2 Логическая структура компилятора

 
На рисунке 1 представлена структурная схема компилятора.


Рисунок 1 – Схема компилятора
Исходная программа – текст программы на языке высокого уровня (например Паскаль), который должен быть переведен в машинный код.
Информационные таблицы - самостоятельные структуры, заранее заполненные (таблица терминальных символов), а также заполняющиеся в ходе лексического анализа и дополняющиеся во время работы.
Лексический анализатор выполняет распознавание лексем языка и замену их соответствующими кодами. Под лексемами понимаются элементарные единицы, входящие  в структуру предложения языка,  такие как ключевые слова, константы, имена и т.п. Правильность задания структуры  предложения языка на фазе лексического анализа не выполняется. Результатом является поток лексем (кодов – ссылок на таблицы), эквивалентный исходному тексту.
Синтаксический анализатор необходим для того, чтобы выяснить, удовлетворяют ли предложения, из которых состоит исходная программа, правилам грамматики этого языка.
Семантический анализ. На этом этапе осуществляется контроль типа и вида всех идентификаторов и других операндов.
Генерация промежуточного кода. Происходит преобразование исходной программы в промежуточную (например, польскую) форму записи.
Оптимизация промежуточного кода – выделение общих подвыражений и вычисление константных подвыражений.
Фаза оптимизации предназначена для уменьшения избыточности  программы по затратам времени  и памяти. В зависимости от критериев  проектирования транслятора данная фаза обработки программы  может исключаться из цикла обработки программы.
Распределение памяти. На этом этапе выделяются конкретные адреса пользователя под переменные, которые генерируются компилятором.
Генератор объектного (ассемблерного) кода – выполняет подстановку кодовых образцов на выходном языке, соответствующих промежуточным кодам программы. Генератору кода могут не требоваться шаблоны, он весь может быть реализован в процедурном виде.
Машинно-зависимая компиляция. Зависит от того, какие используются регистры. Работа этой процедуры зависит от соглашений, принятых для исполняемой части программы. Например, выделяется базовый регистр для текущей активной записи в стеке.
На всех этих этапах происходит работа с различного рода таблицами. В частности, для каждого блока (если таковые существуют в языке) идентификаторы, описанные внутри, запоминаются вместе со своими атрибутами. Условно все эти этапы можно изобразить следующим образом:


Рисунок 2 – Работа с таблицами
Очевидна зависимость структуры компилятора от структуры ЭВМ, точнее, от имеющейся производительности системы. Например, при малой памяти увеличивается количество проходов компиляции (т.н. многопроходные компиляторы), а при наличии памяти большого объема можно все этапы компиляции произвести за один проход (и тогда мы имеем дело с однопроходным компилятором).
1 2 3 4 5 6 7 8 9 10 Следующая страница


Программно методический комплекс для обучения процессу создания компиляторов

Скачать дипломную работу бесплатно


Постоянный url этой страницы:
http://referatnatemu.com/544



вверх страницы

Рейтинг@Mail.ru
Copyright © 2010-2015 referatnatemu.com