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