Атрибутные транслирующие грамматики — различия между версиями
Slavian (обсуждение | вклад) (Новая страница: «<wikitex>Часто, осуществляя разбор, мы хотим извлечь какие-то данные или что-то сделать, а не ...») |
(нет различий)
|
Версия 14:44, 3 июня 2015
<wikitex>Часто, осуществляя разбор, мы хотим извлечь какие-то данные или что-то сделать, а не просто выяснить, разбирается ли текст в данной грамматике. Вообще говоря, сначала можно получить дерево разборы, а потом уже, обойдя дерево разбора, по нему производить какие-то действия. В этом случае происходит дублирование функционала: промежуточное сохранение данных в виде дерева разбора не нужно, а иногда это дерево слишком расточительно хранить в памяти. В связи с этим хочется какие-то действия производить уже на этапе разбора. Такой подход называется Синтаксически управляемой трансляцией.
Определение: |
Синтаксически управляемое определение — обобщение контекстно-свободной грамматики, в которой каждый грамматический символ имеет связанное с ним множество атрибутов. |
Определение: |
Синтаксически управляемая трансляция — это трансляция, при которой в процессе разбора строки сразу выполняются какие-то действия, не используя промежуточное представление в виде дерева разбора. |
Синтаксически управляемая трансляция вводит две новые сущности: атрибут и транслирующий символ.
Определение: |
Атрибут — дополнительное поле с данными у терминалов и нетерминалов. (Более строгое определение требует ввести систему типов). |
Определение: |
Транслирующий символ — нетерминал, который раскрывается в $\varepsilon$ и вместе с раскрытием выполняет какое-то действие, которое с ним связано. |
</wikitex>