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

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

Версия от 18:21, 20 октября 2009

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

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

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

Литература

[Касьянов-Поттосин],

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