Задача трансляции: различия между версиями

Перейти к навигации Перейти к поиску
нет описания правки
Нет описания правки
Нет описания правки
 
Строка 1: Строка 1:
'''Задача трансляции''' (''[[Compilation problem]]'') - Логически трансляция содержит две основные части: ''анализ'' и ''синтез''. Первая часть распознает во входном тексте конструкции абстрактной программы, а вторая реализует собственно перевод --- построение эквивалентной ей выходной программы.
'''Задача трансляции''' (''[[Compilation problem]]'') Логически трансляция содержит две основные части: ''анализ'' и ''синтез''. Первая часть распознает во входном тексте конструкции абстрактной программы, а вторая реализует собственно перевод построение эквивалентной ей выходной программы.


Процесс извлечения абстрактной программы из исходного текста осуществляется в три этапа. На этапе ''[[лексический анализ|лексического анализа]]'' происходит построение по тексту входной программы ее лексической свертки. В лексической свертке каждая лексема приводится к единому формату и представляется посредством дескриптора, содержащего два вида информации: тип (или класс) лексемы как синтаксической единицы (идентификатор, служебное слово и т.п.), а также местоположение данной конкретной лексемы (вход в таблицу объектов). Затем лексическая свертка преобразуется на этапе
Процесс извлечения абстрактной программы из исходного текста осуществляется в три этапа. На этапе ''[[лексический анализ|лексического анализа]]'' происходит построение по тексту входной программы ее лексической свертки. В лексической свертке каждая лексема приводится к единому формату и представляется посредством дескриптора, содержащего два вида информации: тип (или класс) лексемы как синтаксической единицы (идентификатор, служебное слово и т.п.), а также местоположение данной конкретной лексемы (вход в таблицу объектов). Затем лексическая свертка преобразуется на этапе
''[[синтаксический анализ|синтаксического анализа]]'' в ''[[дерево разбора]]'', описывающего
''[[синтаксический анализ|синтаксического анализа]]'' в ''[[дерево разбора]]'', описывающего
иерархическое строение составляющих ее вхождений понятий и лексем. Завершающим в построении абстрактной программы по исходному тексту является этап ''[[контекстныйо анализ|контекстного анализа]]'', который приписывает [[вершина|вершинам]] [[дерево|дерева]] разбора значения всех так называемых статических атрибутов и тем самым осуществляет построение ''[[атрибутное дерево|атрибутного дерева]]'' транслируемой программы. Атрибуты вершин дерева кодируют ту часть синтаксических свойств транслируемой программы, которые не описываются ''[[КС-Грамматика|КС-грамматикой]]'' (например, такой атрибут, как класс конструкции, связанной с идентификатором), а
иерархическое строение составляющих ее вхождений понятий и лексем. Завершающим в построении абстрактной программы по исходному тексту является этап ''[[контекстный анализ|контекстного анализа]]'', который приписывает [[вершина|вершинам]] [[дерево|дерева]] разбора значения всех так называемых статических атрибутов и тем самым осуществляет построение ''[[атрибутное дерево|атрибутного дерева]]'' транслируемой программы. Атрибуты вершин дерева кодируют ту часть синтаксических свойств транслируемой программы, которые не описываются ''[[КС-Грамматика|КС-грамматикой]]'' (например, такой атрибут, как класс конструкции, связанной с идентификатором), а
также ряд других (семантических) ее свойств, позволяющих осуществлять построение выходной программы (на этапе генерации) при систематическом обходе дерева разбора и за счет вызовов
также ряд других (семантических) ее свойств, позволяющих осуществлять построение выходной программы (на этапе генерации) при систематическом обходе дерева разбора и за счет вызовов
генерационных процедур (трансдукторов), обрабатывающих вершины дерева вместе с их атрибутами и соответствующих понятиям и лексемам языка.
генерационных процедур (трансдукторов), обрабатывающих вершины дерева вместе с их атрибутами и соответствующих понятиям и лексемам языка.
Строка 9: Строка 9:
''[[Схема процесса трансляции|Схемой процесса трансляции]]'' называется схема организации и взаимодействия просмотров с распределением по просмотрам функций этапов трансляции. На практике
''[[Схема процесса трансляции|Схемой процесса трансляции]]'' называется схема организации и взаимодействия просмотров с распределением по просмотрам функций этапов трансляции. На практике
встречаются одно-, двух- или многопросмотровые схемы процесса трансляции. Основной является двухпросмотровая схема. Она приемлема для большинства входных языков и достаточно проста и эффективна. Многопросмотровые (при числе просмотров больше двух) схемы трансляции, как правило,
встречаются одно-, двух- или многопросмотровые схемы процесса трансляции. Основной является двухпросмотровая схема. Она приемлема для большинства входных языков и достаточно проста и эффективна. Многопросмотровые (при числе просмотров больше двух) схемы трансляции, как правило,
требуются для таких языков, как, например, Алгол 68 или Ада, в которых синтаксическое определение существенно связано с контекстными условиями, и позволяют включать в процесс трансляции дополнительные функции (например, [[''оптимизация программ|оптимизацию'' транслируемой программы]]).
требуются для таких языков, как, например, Алгол 68 или Ада, в которых синтаксическое определение существенно связано с контекстными условиями, и позволяют включать в процесс трансляции дополнительные функции (например, [[оптимизация программ|''оптимизацию'' транслируемой программы]]).
==Литература==
==Литература==
[Касьянов-Поттосин],
* Евстигнеев В.А., Касьянов В.Н. Теория графов: алгоритмы обработки деревьев. — Новосибирск: Наука. Сиб. отд-ние, 1994.


[Евстигнеев-Касьянов/98]
* Касьянов В.Н., Поттосин И.В. Методы построения трансляторов. — Новосибирск: Наука. Сиб. отд-ние, 1986.

Навигация