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