Вступление

Цели семантического анализа

Слово - текст компьютерной программы

  1. Проверка корректности программы на более глубоком уровне, чем обычный анализ средствами контекстно-свободных грамматик
  2. Сбор и систематизация дополнительной информации о программе
  3. Атрибутная грамматика - расширение контекстно-свободной грамматики

Основные понятия

Грамматический символ

В грамматике грамматическим символом называется элемент из множества

Link to original

Атрибут грамматического символа

Атрибутом грамматического символа называется параметр, приписанный и имеющий название (идентификатор)

Всякому грамматическому символу может соответствовать конечное множество его атрибутов (возможно пустое)

Один и тот же атрибут может быть приписан к разным грамматическим символам (важно совпадение его имени)

Так как атрибут является параметром, он должен обладать значением. Значение атрибута вычисляется “динамически” с привязкой к слову, подвергаемому семантическому анализу

Link to original

Домен атрибута грамматического символа

Область значений атрибута грамматического символа

Link to original

Для терминального символа в качестве атрибута используется только его лексическое значение, хранимое в таблице символов. Имя такого атрибута может быть, например lexval. Тогда факт, что терминальный символ имеет атрибут с именем записывают следующим образом через точку:

Для нетерминального символа, например его атрибут с именем может быть записан аналогично:

Семантическое правило

Семантическим правилом, поставленным в соответствие правилу вывода контекстно-свободной грамматики , , называется функциональная зависимость

- атрибуты грамматических символов из множества

Для каждого правила грамматики существует конечное (возможно пустое) множество семантических правил

Link to original

Выделяют 2 класса атрибутов: синтезируемые и наследуемые

flowchart

Атрибут --> Синтезируемый
Атрибут --> Наследуемый

Синтезируемый атрибут

Атрибут символа называется синтезируемым, если он вычисляется по семантическому правилу*

поставленным в соответствие правилу вывода в КС-грамматике

- атрибуты символов, принадлежащих символам из цепочки

Link to original

Наследуемый атрибут

Атрибут символа называется наследуемым, если он вычисляется по семантическому правилу*

поставленному в соответствие правилу вывода

- атрибуты символов, принадлежащих символам из цепочек и символу

Link to original

Атрибутная грамматика

Атрибутной грамматикой называется набор из трех элементов:

Link to original

Замечание: Грамматику можно преобразовать в атрибутную многими способами

Контекстно-свободная грамматика легко достраивается до атрибутной добавлением в набор пустого множества атрибутов и пустого множества семантических правил

Аннотированное дерево вывода слова

Аннотированным деревом вывода слова атрибутной грамматики называется дерево вывода слова в грамматике , где каждому узлу дерева соответствует список значений атрибутов грамматического символа

Link to original

Замечание:

В аннотированном дереве синтезируемый атрибут зависит от значений атрибутов сыновей узла . Следовательно, значения всех синтезируемых атрибутов вычисляются снизу-вверх. Наследуемый атрибут зависит от значений атрибутов отца узла , или от значений атрибутов братьев узла . Следовательно, его значение вычисляется либо «сверху-вниз», либо комбинированным способом обхода дерева.

Пример построения атрибутной грамматики

стр. 186 из учебного пособия А.Ф. Шура и А.П. Замятина

В качестве КС-грамматики возьмем

В качестве множества атрибутов:

  • - значение арифметического выражения
  • - лексическое значение

В качестве множества семантических правил (принято записывать в виде таблицы):

Номер правила выводаПравило выводаСемантическое правило
1
2
3
4
5
6

Пример построения аннотированного дерева по атрибутной грамматике

По атрибутной грамматике , построенной выше, построим аннотированное дерево вывода арифметического выражения

дерево вывода

Аннотированное дерево вывода слова