Б1 В4

 

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

 

ОПР) Языковым процессором называют – программу на машинном языке, позволяющую Вычислительной машине понимать и выполнять программы на входном языке.

 

Различают 2 вида языковых процессов интерпретаторы и трансляторы.

 

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

 

ОПР) Транслятор – это программа которая допускает на входе исходную программу и порождает на своем выходе программу, функционально эквивалентную исходной, называемую объектной.

 

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

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

 

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

 

1)      Для промежуточного языка имеется (или разрабатывается) другой транслятор – с промежуточного языка на машинный и он используется в качестве последнего блока проектируемого транслятора.

2)      2) Построить интерпретатор команд промежуточного языка и его  м/о использовать в качестве последнего блока транслятора.

Преимущество интерпретатора проявляется в отладочных и диалоговых трансляторах,

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

 

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

 

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

Удобно считать основными фазами трансляции анализ и синтез объектной программы

 

 

1)      Лексический анализ

2)      Работа с таблицами

3)      Синтаксический анализ или разбор

4)      генерация кода, или трансляция в промежуточный код.

5)      Оптимизация кода

6)      Генерация объектного кода (ассемблирование)

 

В соответствии с упрощенной функциональной моделью входная программа прежде всего подвергается лексической обработке. Цель лексического анализа – перевод исходной программы на внутренний язык компилятора, в котором ключевые слова, идентификаторы, метки и константы приведены к одному формату и заменяются условными кодами: числовыми или символьными, которые называются дескрипторами. Каждый дескриптор состоит из 2х частей. Класса (типа) лексем и указателя на адрес памяти, где хранится информация о конкретной лексеме. Обычно эта информация организуется в виде таблиц. Одновременно с переводом проводится лексический контроль выявления в программе недопустимых слов.

 

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

Промежуточная программа является представлением синтаксического дерева программы.

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

 

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

 

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

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

Hosted by uCoz