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

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


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


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


[Евстигнеев-Касьянов/98]
[Евстигнеев-Касьянов/98]

Навигация