Транслятор языка высокого уровня

Автор работы: Пользователь скрыл имя, 11 Марта 2012 в 19:46, курсовая работа

Описание работы

Объектом исследования является синтаксический анализатор транслятора

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

К полученным результатам относятся пояснительная записка и программа, написанная на языке программирования «Delphi».

Содержание работы

Введение………………………………………………………………...5
1 Общие сведения о трансляторах…………………………………….6
1.1 Лексический блок……………………………………………..7
1.2 Синтаксический блок………………………………………….8
1.3 Генератор кода…………………………………………………8
2 Описание транслируемого языка…………………………………….9
3 Синтаксический анализатор транслятора…………………………...10
3.1 Формальная грамматика……………………………………....10
3.2 Нахождение множества «Выбор»…………………………….12
4 Описание программы…………………………………………………23
4.1 Общие сведения………………………………………………..23
4.2 Работа с программой…………………………………………..23
Заключение……………………………………………………………...26

Файлы: 1 файл

Курсовая.doc

— 357.50 Кб (Скачать файл)


Министерство  общего  и  профессионального  образования

Российской  Федерации

 

Государственное образовательное учреждение

высшего профессионального образования

 

 

КУБАНСКИЙ  ГОСУДАРСТВЕННЫЙ  ТЕХНОЛОГИЧЕСКИЙ

УНИВЕРСИТЕТ

 

      Кафедра       Вычислительной  техники  и  АСУ                       р

                    (наименование кафедры)

 

 

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

                 к курсовому  проэкту

 

   по дисциплине   Теория языков программирования и методов трансляции  в ительные систдел процессов                                 т                                                       (наименование дисциплины)

  на тему:                  Транслятор  языка высокого уровня                                    в                                                                        к                                          у             (тема курсовой работы)

Выполнил студент группы   06-ЗКс-ПО1                                                             л

                        Перегняк Михаил Александрович_________________________                                                                                                                                                          а                                                                   (ф.и.о.)

Допущен к защите_________________________________________________

 

Руководитель работы _____Ключко В. И._______________________________

 

 

Защищен __________________________  Оценка ______________________

                                                     (дата)

 

 

 

 

 

 

 

 

Краснодар

2008

 

Государственное образовательное учреждение

высшего профессионального образования

 

 

КУБАНСКИЙ  ГОСУДАРСТВЕННЫЙ  ТЕХНОЛОГИЧЕСКИЙ

УНИВЕРСИТЕТ

 

      Кафедра   Вычислительной  техники  и  АСУ                                          т

                    (наименование кафедры)

                                     УТВЕРЖДАЮ:

                                                                                             Зав. кафедрой   ВТ  и  АСУ              м

                                                                               Д.т.н.  проф.  В.И. Ключко          р                                                                                                                        

 

З А Д А Н И Е

на курсовой проэкт

 

Студенту:  Перегняку М.А.    группы      06-ЗКс-ПО1    2-го  курса                 

                                          (Ф.И.О.)                                                             (№  группы и курса)

факультета                   КТАС                                                                                    с

специальности 230105 Программное обеспечение ВТ и АСУ                              п   

                                                                      (шифр и наименование)

Тема работы: Транслятор  языка высокого уровня                                                м

                                                                                                                                     с

 

Содержание задания:  разработать программу, которая представляет собой синтаксический анализатор транслятора                                                                 м м    

     Объем работы:

а) пояснительная записка к работе      26  с.

б) задачи

и

Срок выполнения работы: с "___" ______по"___"____20__г.

Срок защиты:                                                    "___"____20__г.

Дата выдачи задания:                                       "___"____20__г.

Дата сдачи работы на кафедру:                      "___"____20__г.

Руководитель работы          д.т.н., проф. В. И. Ключко                                            с

                                                                         (подпись, ф.и.о., звание, степень)

 

 

 

КУБАНСКИЙ  ГОСУДАРСТВЕННЫЙ  ТЕХНОЛОГИЧЕСКИЙ

УНИВЕРСИТЕТ

 

 

РЕФЕРАТ

 

 

              Пояснительная записка курсовому проэкту 26 с., 12 рис.

 

          СИНТАКСИЧЕСКИЙ АНАЛИЗАТОР ТРАНСЛЯТОРА

 

Объектом исследования  является  синтаксический анализатор транслятора

 

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

 

К полученным результатам относятся  пояснительная  записка и программа, написанная на языке программирования «Delphi».

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Содержание

 

Введение………………………………………………………………...5

1 Общие сведения о трансляторах…………………………………….6

        1.1 Лексический блок……………………………………………..7

        1.2 Синтаксический блок………………………………………….8

        1.3 Генератор кода…………………………………………………8

2 Описание транслируемого языка…………………………………….9

3 Синтаксический анализатор транслятора…………………………...10

        3.1 Формальная грамматика……………………………………....10

        3.2 Нахождение множества «Выбор»…………………………….12

4 Описание программы…………………………………………………23

        4.1 Общие сведения………………………………………………..23

        4.2 Работа с программой…………………………………………..23

Заключение……………………………………………………………...26

 

 

 

 

 

 

 

 

 

 

 

 

 

Введение

 

В последнее время круг задач, решаемых с помощью ЭВМ, значительно расширился, а сложность задач возросла. В этой ситуации все чаще используются языки высокого уровня, а также специализированные языки. Кроме того, всем известен тот факт, что ЭВМ понимает программы, состоящие только из внутренних команд процессора. В связи с этим возникает задача перевода программы с языка высокого уровня на язык, понятный процессору ЭВМ (трансляция). В этом процессе одним из наиболее важных этапов является синтаксический анализ программы, написанной на языке программирования высокого уровня с использованием формальных грамматик. Разрабатывается один из вариантов программы, выполняющей такую процедуру — синтаксический анализатор транслятора.

 

 

 

 

 

 

 

 

 

 

 

 

 

1 Общие сведения о трансляции

 

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

        Объектный язык обычно является машинным языком некоторой вычислительной машины, причем программу в этом случае можно сразу же выполнять.

       Транслятор можно представить как сложный вычислительный процесс, включающий отдельные более простые процедуры обработки. На рисунке 1 представлена упрощенная схема транслятора, который содержит:

-         лексический блок;

-         синтаксический блок;

-         генератор кода;

-         таблицы.

Рисунок 1

 

 

 

 

1.1 Лексический блок

 

Входом транслятора служит набор двоичных символов (цепочка).

Лексический блок предназначен для того, чтобы разбивать цепочку символов на слова, из которых она состоит.

Например, цепочка символов может быть такой: 

ifb1=10thengoto5.

Лексический блок устанавливает, что цепочка представляет слово if, за которым следует переменная b1, знак равенства, число 10, слова then, goto и метка 5. Таким образом 16 символов преобразуются в 7 новых единиц.

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

Так b1 принадлежит классу "переменная" и имеет значение, которое служит указателем на элемент таблицы имен для b1. Этот указатель на таблицу имен фактически является внутренним именем переменной b1.

Лексема 10 принадлежит классу "константа" и имеет в качестве значения набор битов, изображающих число 10.

Знак равенства относится к классу "знак отношения", а его значение - указывает - какое именно отношение.

Лексема if принадлежит классу "if" (служебное слово) и информирования о ее значении не требуется.

Если рассматривать таблицу имен как словарь, то лексическая обработка аналогична группировке букв в слова и нахождению этих слов в словаре.

 

 

 

1.2 Синтаксический блок

 

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

Например, если в программе написано a+b*c - это значит, что числа, представляемые идентификаторами b, c будут перемножены и к результату будет прибавлено число, представляемое идентификатором а.

Указанные выражения можно перевести так:

УМНОЖИТЬ (b, c, r1),

СЛОЖИТЬ (a, r1, r2),

где первое выражение идентифицируется как "умножить b на с и заслать результат в r1", а второе - "сложить а и r1 и заслать результат в r2".

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

 

1.3 Генератор кода

 

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

Точный характер этого развертывания зависит от многих признаков. Например, от типа операторов (b, c) - с фиксированной или плавающей точкой, от используемых регистров машины и др.

Будет рассмотрена одна и самая важная процедура  транслятора:

-                    синтаксический анализ программы на наличие или отсутствие в ней ошибок.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2 Описание транслируемого языка

 

За основу языка высокого уровня транслятора был взят язык программирования Pascal. Он был упрощен, а часть правил изменена или отсутствует.

Отличия заданного языка от Pascal:

1)  Необходимы разделы PROGRAM и VAR.

2)  Определен только 1 тип:Real,Integer .

3)  Идентификатор представляется одной  буквой.

4)  Между любыми лексемами обязательно необходим пробел.

5)  Из операторов описаны: оператор присваивания ‘=’; aрифметические операции; составной оператор BEGIN-END, циклический оператор REPEAT-UNTIL.

Информация о работе Транслятор языка высокого уровня