Изменения

Перейти к: навигация, поиск

Атрибутные транслирующие грамматики

2669 байт добавлено, 14:44, 3 июня 2015
Новая страница: «<wikitex>Часто, осуществляя разбор, мы хотим извлечь какие-то данные или что-то сделать, а не ...»
<wikitex>Часто, осуществляя разбор, мы хотим извлечь какие-то данные или что-то сделать, а не просто выяснить, разбирается ли текст в данной грамматике.
Вообще говоря, сначала можно получить дерево разборы, а потом уже, обойдя дерево разбора, по нему производить какие-то действия.
В этом случае происходит дублирование функционала: промежуточное сохранение данных в виде дерева разбора не нужно, а иногда это дерево слишком расточительно хранить в памяти.
В связи с этим хочется какие-то действия производить уже на этапе разбора.
Такой подход называется '''Синтаксически управляемой трансляцией'''.

{{Определение
|definition =
'''Синтаксически управляемое определение''' {{---}} обобщение контекстно-свободной грамматики, в которой каждый грамматический символ имеет связанное с ним множество атрибутов.
}}

{{Определение
|definition =
'''Синтаксически управляемая трансляция''' {{---}} это трансляция, при которой в процессе разбора строки сразу выполняются какие-то действия, не используя промежуточное представление в виде дерева разбора.
}}

Синтаксически управляемая трансляция вводит две новые сущности: '''атрибут''' и '''транслирующий символ'''.

{{Определение
|definition =
'''Атрибут''' {{---}} дополнительное поле с данными у терминалов и нетерминалов. (Более строгое определение требует ввести систему типов).
}}

{{Определение
|definition =
'''Транслирующий символ''' {{---}} нетерминал, который раскрывается в $\varepsilon$ и вместе с раскрытием выполняет какое-то действие, которое с ним связано.
}}





</wikitex>
497
правок

Навигация