Автор работы: Пользователь скрыл имя, 10 Ноября 2011 в 22:42, реферат
Искусственные языки, предназначенные для записи программ, называются языками программирования. Каждая ЭВМ имеет свой собственный язык программирования – язык команд или машинный язык и может исполнять программы, написанные только на этом языке. В машинном языке каждой команде соответствует определенная операция, которую может выполнять машина. Однако на машинном языке программировать трудно из-за чрезмерной детализации программы.
ВВЕДЕНИЕ 3
ЯЗЫКИ ПРОГРАММИРОВАНИЯ 4
ТРАНСЛЯТОРЫ 5
ВИДЫ ТРАНСЛЯТОРОВ 5
РЕАЛИЗАЦИИ 6
КОМПИЛЯТОРЫ И ИНТЕРПРЕТАТОРЫ 8
ИНТЕРПРЕТАТОР 9
ЭТАПЫ ТРАНСЛЯЦИИ 9
ЛЕКСИЧЕСКИЙ АНАЛИЗ 11
ЗАДАЧИ ЛЕКСИЧЕСКОГО АНАЛИЗА 11
СКАНЕР 12
ЗАМЕЧАНИЕ: 14
СИНТАКСИЧЕСКИЙ И СЕМАНТИЧЕСКИЙ АНАЛИЗ 14
ЗАКЛЮЧЕНИЕ 15
СПИСОК ЛИТЕРАТУРЫ 16
0, если si ошибочный
символ
Тогда диаграмма состояний имеет вид:
ЗАМЕЧАНИЕ:
Изобразим блок - схему работы лексического анализатора (рис.3.).
Так как сканер строится по диаграмме состояний, то для простоты программирования был построен конечный автомат. Матрица переходов состояний сканера приведена в приложении.
Анализаторы
выполняют действительно
Обычный анализатор представляет собой синтаксически управляемую программу. В действительности стремятся отделить синтаксис от семантики настолько, насколько это возможно. Когда синтаксический анализатор (распознаватель) узнает конструкцию исходного языка, он вызывает соответствующую семантическую процедуру, или семантическую программу, которая контролирует данную конструкцию с точки зрения семантики и затем запоминает информацию о ней в таблице символов или во внутреннем представлении программы. Например, когда распознается описание переменных, семантическая программа проверяет идентификаторы, указанные в этом описании, чтобы убедиться в том, что они не были описаны дважды, и заносит их вместе с атрибутами в таблицу символов.
Когда встречается инструкция присваивания вида:
<переменная> = <выражение>
семантическая программа проверяет переменную и выражение на соответствие типов и затем заносит инструкцию присваивания в программу во внутреннее представление.
Синтаксический анализ можно представить диаграммой состояний, так же как и сканер. Поэтому их частично объединяют и если возможно, то совмещают полностью. В данной работе процесс лексического, синтаксического и семантического анализа для всех блоков разделен. Матрицы состояний конечных автоматов синтаксического анализа блоков приведены в приложении. Семантический анализ выполняется в процессе интерпретации.
Стоит также помнить, что процессы трансляции и интерпретации нельзя смешивать.
Трансляция
и интерпретация — разные процессы:
трансляция занимается переводом программ
с одного языка на другой, а интерпретация
отвечает за исполнение программ. Однако,
поскольку целью трансляции, как правило,
является подготовка программы к интерпретации,
то эти процессы обычно рассматриваются
вместе. Например, языки программирования
часто характеризуются как «компилируемые»
или «интерпретируемые», в зависимости
от того, преобладает при использовании
языка компиляция или интерпретация. Причём
практически все языки программирования
низкого уровня и третьего поколения, вроде ассемблера, Си или
С другой стороны, существует взаимопроникновение процессов трансляции и интерпретации: интерпретаторы могут быть компилирующими (в том числе с динамической компиляцией), а в трансляторах может требоваться интерпретация для конструкций метапрограммирования (например, для макросов в языке ассемблера, условной компиляции в Си или для шаблонов в C++).
Более того, один и тот же язык программирования может и транслироваться, и интерпретироваться, и в обоих случаях должны присутствовать общие этапы анализа и распознавания конструкций и директив исходного языка. Это относится и к программным реализациям, и к аппаратным — так, процессоры семейства x86 перед исполнением инструкций машинного языка выполняют их декодирование, выделяя в опкодах поля операндов (регистров, адресов памяти, непосредственных значений), разрядности и т. п., а в процессорах Pentium с архитектурой NetBurst машинный код перед сохранением во внутреннем кэше вообще транслируется в последовательность микроопераций.
Сб. Алгоритмы и алгоритмические языки, вып.5, ВЦ АН СССР, 2001 г.