4624
правки
Glk (обсуждение | вклад) (Создана новая страница размером '''Задача трансляции''' (''Compilation problem'') - Логически трансляция содержит две ос...) |
KEV (обсуждение | вклад) Нет описания правки |
||
Строка 1: | Строка 1: | ||
'''Задача трансляции''' (''Compilation problem'') - | '''Задача трансляции''' (''[[Compilation problem]]'') - Логически трансляция содержит две основные части: ''анализ'' и ''синтез''. Первая часть распознает во входном тексте конструкции абстрактной программы, а вторая реализует собственно перевод --- построение эквивалентной ей выходной программы. | ||
Логически трансляция содержит две основные части: ''анализ'' и ''синтез''. | |||
Первая часть распознает во входном тексте конструкции | |||
абстрактной программы, а вторая реализует собственно перевод | |||
--- построение эквивалентной ей выходной программы. | |||
Процесс извлечения абстрактной программы из исходного текста | Процесс извлечения абстрактной программы из исходного текста осуществляется в три этапа. На этапе ''[[лексический анализ|лексического анализа]]'' происходит построение по тексту входной программы ее лексической свертки. В лексической свертке каждая лексема приводится к единому формату и представляется посредством дескриптора, содержащего два вида информации: тип (или класс) лексемы как синтаксической единицы (идентификатор, служебное слово и т.п.), а также местоположение данной конкретной лексемы (вход в таблицу объектов). Затем лексическая свертка преобразуется на этапе | ||
осуществляется в три этапа. На этапе ''лексического анализа'' происходит построение по тексту входной программы ее лексической | ''[[синтаксический анализ|синтаксического анализа]]'' в ''[[дерево разбора]]'', описывающего | ||
свертки. В лексической свертке каждая лексема приводится к | иерархическое строение составляющих ее вхождений понятий и лексем. Завершающим в построении абстрактной программы по исходному тексту является этап ''[[контекстныйо анализ|контекстного анализа]]'', который приписывает [[вершина|вершинам]] [[дерево|дерева]] разбора значения всех так называемых статических атрибутов и тем самым осуществляет построение ''[[атрибутное дерево|атрибутного дерева]]'' транслируемой программы. Атрибуты вершин дерева кодируют ту часть синтаксических свойств транслируемой программы, которые не описываются ''[[КС-грамматика|КС-грамматикой]]'' (например, такой атрибут, как класс конструкции, связанной с идентификатором), а | ||
единому формату и представляется посредством дескриптора, | также ряд других (семантических) ее свойств, позволяющих осуществлять построение выходной программы (на этапе генерации) при систематическом обходе дерева разбора и за счет вызовов | ||
содержащего два вида информации: тип (или класс) лексемы как | генерационных процедур (трансдукторов), обрабатывающих вершины дерева вместе с их атрибутами и соответствующих понятиям и лексемам языка. | ||
синтаксической единицы (идентификатор, служебное слово и т.п.), а | |||
также местоположение данной конкретной лексемы (вход в таблицу | |||
объектов). Затем лексическая свертка преобразуется на этапе | |||
''синтаксического анализа'' в ''дерево разбора'', описывающего | |||
иерархическое строение составляющих ее вхождений понятий и | |||
лексем. Завершающим в построении абстрактной программы по | |||
исходному тексту является этап ''контекстного анализа'', который | |||
приписывает вершинам дерева разбора значения всех так называемых | |||
статических атрибутов и тем самым осуществляет построение | |||
''атрибутного дерева'' транслируемой программы. Атрибуты вершин | |||
дерева кодируют ту часть синтаксических свойств транслируемой | |||
программы, которые не описываются ''КС-грамматикой'' (например, такой | |||
атрибут, как класс конструкции, связанной с идентификатором), а | |||
также ряд других (семантических) ее свойств, позволяющих | |||
осуществлять построение выходной программы (на этапе генерации) | |||
при систематическом обходе дерева разбора и за счет вызовов | |||
генерационных процедур (трансдукторов), обрабатывающих вершины | |||
дерева вместе с их атрибутами и соответствующих понятиям и | |||
лексемам языка. | |||
''Схемой процесса трансляции'' называется схема | ''[[Схема процесса трансляции|Схемой процесса трансляции]]'' называется схема организации и взаимодействия просмотров с распределением по просмотрам функций этапов трансляции. На практике | ||
организации и взаимодействия просмотров с распределением по | встречаются одно-, двух- или многопросмотровые схемы процесса трансляции. Основной является двухпросмотровая схема. Она приемлема для большинства входных языков и достаточно проста и эффективна. Многопросмотровые (при числе просмотров больше двух) схемы трансляции, как правило, | ||
просмотрам функций этапов трансляции. На практике | требуются для таких языков, как, например, Алгол 68 или Ада, в которых синтаксическое определение существенно связано с контекстными условиями, и позволяют включать в процесс трансляции дополнительные функции (например, [[''оптимизация программ|оптимизацию'' транслируемой программы]]). | ||
встречаются одно-, двух- или многопросмотровые схемы | |||
процесса трансляции. Основной является двухпросмотровая | |||
схема. Она приемлема для большинства входных языков и | |||
достаточно проста и эффективна. Многопросмотровые (при числе | |||
просмотров больше двух) схемы трансляции, как правило, | |||
требуются для таких языков, как, например, Алгол 68 или Ада, | |||
в которых синтаксическое определение существенно связано с | |||
контекстными условиями, и позволяют включать в процесс | |||
трансляции дополнительные функции (например, ''оптимизацию'' транслируемой программы). | |||
==Литература== | ==Литература== | ||
[Касьянов-Поттосин], | [Касьянов-Поттосин], | ||
[Евстигнеев-Касьянов/98] | [Евстигнеев-Касьянов/98] |