
- •Лексический анализатор………………………………………………………….…..11
- •Синтаксический анализатор…………………………………………….……………15
- •Генератор кода………………………………………………………………..………..18
- •Теоретическая часть.
- •Транслятор.
- •Лексический анализатор.
- •Синтаксический анализатор.
- •1.4 Генератор кода.
- •Практическая часть.
- •2.1 Синтаксис языка в бнф. Терминалы, нетерминалы, начальный символ и правила.
- •2.2 Каркас транслятора.
- •2.3 Лексический анализатор.
- •2.3 Синтаксический анализатор.
- •2.4 Генератор кода.
- •Тестирование приложения.
Министерство образования и науки РФ
Федеральное государственное бюджетное
Образовательное учреждение высшего профессионального образования ТвГТУ
Кафедра программного обеспечения
Курсовой проект
по дисциплине теория зыков программирования
тема: «Разработка транслятора с ограниченного подмножества языка высокого уровня»
Выполнила:
Студент 4 курса
Специальности ПОВТ-0906
Старовойтов И.В.
Проверил:
Калабин А.Л.
Тверь 2012
Содержание.
Введение………………………………………………………………………………………………3
-
Теоретическая часть…………………………………………………………………………..4
-
Транслятор…………………………………………………………………………..…...4
-
Лексический анализатор………….……………………………………………………4
-
Синтаксический анализатор…………………………………………………………...5
-
Генератор кода…………………………………………………………………………..5
-
-
Практическая часть……………………………………………………………………………7
-
Синтаксис языка в БНФ. Терминалы, нетерминалы, начальный символ и правила………………………..……………………………………………………..…...7
-
Каркас транслятора…………………………………………………………….……….9
-
Лексический анализатор………………………………………………………….…..11
-
Синтаксический анализатор…………………………………………….……………15
-
Генератор кода………………………………………………………………..………..18
-
-
Тестирование приложения………………………………………………………..………..22
Заключение………………………………………………………………………………………….26
Введение.
Как известно, целью трансляции является преобразование исходного текста программы в текст, который будет понятен адресату. В качестве адресата может выступать как программное, так и техническое средство. Следовательно, с развитием вычислительных систем разработка качественного транслятора остаётся актуальной темой. Известно, что транслятор имеет ряд характеристик:
-
Корректная обработка исходного(входного) текста.
-
Корректная обработка всевозможных исключительных ситуаций.
-
Универсальность.
-
Оптимизированная работа.
-
Наличие на выходе корректного результата обработки исходного текста.
Выше перечисленные пункты значимы при разработке, потому что транслятор, который будет некорректно обрабатывать входные данные, или иметь на выходе ложный результат, никому не нужен. Так же очень важна скорость обработки входных данных, поэтому оптимизация играет не малую роль.
Целью данной курсовой работы является разработка транслятора. Для достижения поставленной цели необходимо решить следующие задачи:
-
Представить синтаксис языка в БНФ. Определить терминалы, нетерминалы, начальный символ и набор правил для данного языка.
-
Создать каркас транслятора.
-
Построить лексический анализатор. Результатом работы анализатора должна быть таблица лексем.
-
Построить синтаксический анализатор. Приведение выражений к обратной польской записи.
-
Построить генератор кода.
-
Протестировать приложение.
-
Теоретическая часть.
-
Транслятор.
Транслятор — программа или техническое средство, выполняющее трансляцию программы. Цель трансляции — преобразовать текст с одного языка на другой, который понятен адресату текста. В случае программ-трансляторов, адресатом является техническое устройство (процессор) или программа-интерпретатор.
Язык процессоров (машинный код) обычно является низкоуровневым. Существуют платформы, использующие в качестве машинного язык высокого уровня , но они являются исключением из правила в силу сложности и дороговизны. Транслятор, который преобразует программы в машинный язык, принимаемый и исполняемый непосредственно процессором, называется компилятором.
Процесс компиляции как правило состоит из нескольких этапов: лексического, синтаксического и семантического анализов, генерации промежуточного кода, оптимизации и генерации результирующего машинного кода. Помимо этого, программа как правило зависит от сервисов, предоставляемых операционной системой и сторонними библиотеками (например, файловый ввод-вывод или графический интерфейс), и машинный код программы необходимо связать с этими сервисами. Связывание со статическими библиотеками выполняется редактором связей или компоновщиком (который может представлять собой отдельную программу или быть частью компилятора), а с операционной системой и динамическими библиотеками связывание выполняется при начале исполнения программы загрузчиком.
Достоинство компилятора: программа компилируется один раз и при каждом выполнении не требуется дополнительных преобразований. Соответственно, не требуется наличие компилятора на целевой машине, для которой компилируется программа. Недостаток: отдельный этап компиляции замедляет написание и отладку и затрудняет исполнение небольших, несложных или разовых программ.