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

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

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

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

 

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

                                                         

                                                                    К  защите  допустить “____”_________ 2003  г

                                                                    

Зав. кафедрой ___________



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

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

 
 


  ТЕМА:                                                                                                                                    


                                                                                                                                                  


                                                                                                                                                  

     

                                                                                                                                                  

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



 Выполнил студент группы    Д – 1061            _________ А.И. Кузнецов

                                   

 Руководитель проекта      ст. преподаватель  _________

                     

       Консультант  по          профессор, д.т.н.   _________

       охране труда


       Консультант   по эко-       доцент, к.т.н.    _________

       номической части




       Председатель  экс-          ст. преподаватель _________

       пертной  комиссии

      



Воткинск   2003


Определения



В настоящем дипломном проекте применяются следующие термины с соответствующими определениями.

Ассемблер - программа, которая переводит исходную программу, написанную на автокоде или на языке ассемблера (что, суть, одно и то же), в объектный (исполняемый) код.

БНФ (Бэкуса нормальная форма) – грамматика, состоящая из конечного множества правил, определяющих в совокупности язык программирования.

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

Идентификатор – имя переменной, процедуры, функции, программы.

Инструкция – синтаксическая структура, содержащая ключевые, шумовые слова и конструкции. Бывают простые и структурированные. Простые инструкции не содержат в себе других вложенных инструкций (присваивание, GOTO). Структурированные инструкции могут содержать вложенные инструкции (IF <булево выражение> THEN <безусловный оператор> ELSE <оператор>).

Компилятор – системная программа, выполняющая преобразование программы, написанной на  одном алгоритмическом языке, в  программу на языке, близком к машинному, и в определенном смысле  эквивалентную первой.

Лексема – единица программы, получающаяся в результате лексического анализа, например: for, i, 10, integer, + и т. п.

Лексический анализ – выделение в исходной программе элементарных составляющих: идентификаторов, ограничителей, символов операторов, чисел, ключевых слов, шумовых слов, пробелов, комментариев и т. п.

Литера – любой символ, множество литер составляют лексему.

Литерал – численное или строковое значение, заданное один раз, и не изменяемое в течение программы.

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

Нетерминальный символ – имя конструкции, определенной внутри грамматики.

Рекурсивный спуск – нисходящий метод грамматического разбора, основан на том, что для каждого нетерминального символа, определенного в грамматике, существует отдельная процедура обработки. При этом в процессе своей работы она может вызывать подобные процедуры

Семантика языка программирования - это смысл, который закладывается в каждую конструкцию языка.

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

Семантический анализ – в нем обрабатываются структуры, распознанные синтаксическим анализатором, и начинает обретать очертания выполняемый код.

Символьное имя – одно из имен, разрешенных в языке, не являющееся терминальным символом.

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

Синтаксический анализ (грамматический разбор) – формирует синтаксическую единицу – выражение, инструкцию, вызов подпрограммы, декларацию, которые далее обрабатываются семантическим анализатором. Пример структуры: FOR <выражение> TO int DO <body>.

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

Сканер (лексический анализатор) – программа распознавания лексем.

Спецификатор – порядковый номер в таблице, куда занесена лексема.

Терминальный символ – конечный неделимый элемент конструкции языка, является зарезервированным словом (например READ, (, +).

Транслятор – это системная программа, выполняющая преобразование программы, написанной на  одном алгоритмическом языке, в  программу на другом алгоритмическом  языке в определенном смысле  эквивалентную первой.


Содержание



Введение................................................................................................... 19

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

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

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

1.3 Лексический анализ. Сканер.................................................... 24

1.4 Синтаксический и семантический анализ.............................. 28

1.5 Грамматики............................................................................. 31

1.6 Формирование промежуточного кода..................................... 34

Метод четверок...................................................................... 36

1.7 Обоснование создания учебного комплекса.............................. 37

1.8 Обзор существующих разработок........................................... 38

1.9 Обоснование разработки......................................................... 39

2 Создание учебной разработки............................................................... 42

2.1 Краткое описание учебного компилятора.............................. 42

2.2 Описание учебного языка......................................................... 43

2.3 Лексический анализатор LEXAN............................................. 46

2.3.1 Таблица терминальных символов................................. 47

2.3.2 Таблица символических имен....................................... 48

2.3.3 Таблица литералов........................................................ 49

2.3.4 Работа сканера............................................................... 50

2.3.5 Структура листинга....................................................... 50

2.3.6 Структура выходного файла......................................... 50

2.3.7 Примерное задание для студента.................................. 52

2.3.8 Описание работы лексического анализатора............... 53

2.4 Синтаксический анализатор SinAn........................................ 56

2.4.1 Таблица переходов........................................................ 56

2.4.2 Правила работы с таблицей переходов......................... 60

2.4.3 Правила таблицы переходов для написания программы 62

2.4.4 Формируемая таблица переходов. Правила заполнения 65

2.4.5 Правила заполнения формируемой таблицы переходов 66

2.4.6 Построение деревьев..................................................... 81

2.4.7 Семантический анализ.................................................. 83

2.5 Формирование промежуточного кода..................................... 85

Циклы..................................................................................... 85

3 Определение трудоемкости по стадиям разработки............................. 89

3.1 Методика расчета.................................................................. 89

3.2 Определение затрат на выполнение проекта по стадиям разработки    92

3.3 Расчет затрат на выполнение проекта по этапам.............. 94

4 Рекомендации по охране труда при работе с учебным комплексом.... 95

Заключение............................................................................................... 97

Список использованных источников...................................................... 98

Приложения.............................................................................................. 99

Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.