Трансляторы

Автор работы: Пользователь скрыл имя, 10 Ноября 2011 в 22:42, реферат

Описание

Искусственные языки, предназначенные для записи программ, называются языками программирования. Каждая ЭВМ имеет свой собственный язык программирования – язык команд или машинный язык и может исполнять программы, написанные только на этом языке. В машинном языке каждой команде соответствует определенная операция, которую может выполнять машина. Однако на машинном языке программировать трудно из-за чрезмерной детализации программы.

Содержание

ВВЕДЕНИЕ 3
ЯЗЫКИ ПРОГРАММИРОВАНИЯ 4
ТРАНСЛЯТОРЫ 5
ВИДЫ ТРАНСЛЯТОРОВ 5
РЕАЛИЗАЦИИ 6
КОМПИЛЯТОРЫ И ИНТЕРПРЕТАТОРЫ 8
ИНТЕРПРЕТАТОР 9
ЭТАПЫ ТРАНСЛЯЦИИ 9
ЛЕКСИЧЕСКИЙ АНАЛИЗ 11
ЗАДАЧИ ЛЕКСИЧЕСКОГО АНАЛИЗА 11
СКАНЕР 12
ЗАМЕЧАНИЕ: 14
СИНТАКСИЧЕСКИЙ И СЕМАНТИЧЕСКИЙ АНАЛИЗ 14
ЗАКЛЮЧЕНИЕ 15
СПИСОК ЛИТЕРАТУРЫ 16

Работа состоит из  1 файл

translyator.doc

— 199.00 Кб (Скачать документ)

                0, если si ошибочный символ 

    Тогда диаграмма состояний имеет вид:

    

    

ЗАМЕЧАНИЕ:

  1. В каждом состоянии сканер может выполнять дополнительные действия по контролю правильности лексемы и преобразования во внутреннюю форму.
  2. Сканер выделяет самую длинную лексему пока возможно, а при выходе указатель стоит на начале следующей лексемы.

Изобразим блок - схему работы лексического анализатора (рис.3.).

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

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

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

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

    Когда встречается инструкция присваивания вида:

<переменная> = <выражение>

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

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

 

Заключение

Стоит также помнить, что процессы трансляции и интерпретации нельзя смешивать.

Трансляция  и интерпретация — разные процессы: трансляция занимается переводом программ с одного языка на другой, а интерпретация отвечает за исполнение программ. Однако, поскольку целью трансляции, как правило, является подготовка программы к интерпретации, то эти процессы обычно рассматриваются вместе. Например, языки программирования часто характеризуются как «компилируемые» или «интерпретируемые», в зависимости от того, преобладает при использовании языка компиляция или интерпретация. Причём практически все языки программирования низкого уровня и третьего поколения, вроде ассемблера, Си или Модулы-2, являются компилируемыми, а более высокоуровневые языки, вроде Python или SQL, — интерпретируемыми.

С другой стороны, существует взаимопроникновение процессов  трансляции и интерпретации: интерпретаторы могут быть компилирующими (в том  числе с динамической компиляцией), а в трансляторах может требоваться интерпретация для конструкций метапрограммирования (например, для макросов в языке ассемблера, условной компиляции в Си или для шаблонов в C++).

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

 

  Список  литературы

  • Фельдман  Дж., Грис Д.  Системы построения  трансляторов.

    Сб. Алгоритмы  и алгоритмические языки, вып.5, ВЦ АН СССР, 2001 г.

  • Касьянов В.Н. , Поттосин И.В. Методы построения трансляторов.- Новосибирск: Наука, 1996. -343с.
  • http://ru.wikipedia.org/wiki/Транслятор
  • Грис Д. Конструирование компиляторов для цифровых вычислительных машин, - М: Мир, 1995

Информация о работе Трансляторы