<<
>>

Атрибутные грамматики

Атрибутные грамматики можно рассматривать как обобщение аппарата синтезируемых атрибутов [70]. Они позволяют осмысливать конструкции в зависимости от окружающего контекста. В этом случае значения атрибутов передаются как вверх, так и вниз по дереву разбора.
Дело в том, что смысл узла на дереве разбора может зависеть не только от его поддерева, но и от информации из другой части дерева.

Предусматривается следующий порядок использования атрибутных грамматик для определения смысла конструкций:

1. Атрибуты — атрибуты добавляются к символам грамматики. Для каждого атрибута определяется, является ли он синтезируемым или наследуемым.

186

Глава 7. Формальная семантика языков программирования

2. Семантические правила — семантические правила добавляются к правилам подстановки.

3.

Если нетерминал N появляется в левой части правила подстановки, то добавляемые семантические правила определяют синтезируемые атрибуты для N.

4. Если нетерминал А появляется в правой части правила подстановки, то добавляемые семантические правила определяют наследуемые атрибуты для А. Именно наследуемые атрибуты инициируют передачу информации вниз по дереву разбора или по горизонтали этого дерева (в этом случае говорят о передаче информации от «братских» узлов).

Рассмотрим проблему трансляции десятичных чисел в диапазоне от 0 до 99 в русские фразы (табл. 7.2).

Таблица 7.2. Трансляция десятичных чисел

Трансляция тридцать один для числа 31 строится на основе фразы тридцать, трансляции цифры 3 в левой позиции числа и трансляции цифры 1 в правой позиции числа.
Однако есть исключения из этого правила. Трансляцией числа 30 является тридцать, а не тридцать ноль. Трансляцией числа 19 является фраза девятнадцать, а не десять девять.

Проиллюстрируем применение наследуемых атрибутов для трансляции чисел от 0 до 99, генерируемых по следующей грамматике:

Дерево разбора для числа 68 представлено на рис. 7.2, а.

а б

Рис. 7.2. Дерево разбора для числа 68

Нетерминал D имеет синтезируемый атрибут val, который представляет значение цифры, генерируемой по правилу подстановки для D. Нетерминал N имеет синте

Атрибутные грамматики

187

зируемый атрибут ¿гаж, который дает трансляцию числа, генерируемую по правилу для N. Нетерминал Р имеет наследуемый атрибут т и синтезируемый атрибут ¿тат.

Стрелки на рис. 7.2, б иллюстрируют, как синтезируемая для узла Р трансляция представляется в виде атрибута РХтж. Для создания РХтж используются значения обеих цифр. С правилом подстановки Р ::= Б ассоциируется семантическое правило, которое определяет РХтж в терминах Р.т (значения левой цифры) и Б.ьа1. На рис. 7.2, б Р.т = 6 и Б.ьа1 = 8, а РХтж является фразой для 68 = 10 * Р.т + Б.ьа1.

Полная атрибутная грамматика представлена в табл. 7.3. С правилом подстановки N :: = Б Р связаны два семантических правила:

РЛп := 0.ча1 ЫЛгапБ := РЛгапБ

Словом, Р.1и наследует значение Б.ьа1 от левой цифры, а Р.Ьтт становится трансляцией N¿№43 (почти волшебным образом превращается в эту трансляцию).

Таблица 7.3.
Атрибутная грамматика

С правилом подстановки Р:: = Б связано семантическое правило, которое определяет РХтт. Это правило основывается на следующем псевдокоде для трансляции числа п:

Синтезируемый атрибут РХтт определяется в терминах наследуемого атрибута Р.т и синтезируемого атрибута Б.ьа1.

Наследуемые атрибуты придают потоку информации ясность и недвусмысленность. Впрочем, без них можно обойтись, поскольку все, что определяется с помощью

188

Глава 7. Формальная семантика языков программирования

наследуемых и синтезируемых атрибутов, можно определить с использованием лишь синтезируемых атрибутов. Например, атрибутная грамматика из табл. 7.3 может быть модифицирована в эквивалентную грамматику, применяющую только синтезируемые атрибуты. Мы ввели эту грамматику лишь затем, чтобы проиллюстрировать, как можно использовать наследуемые атрибуты.

<< | >>

Еще по теме Атрибутные грамматики:

  1. Правописание и грамматика?
  2. Стилистика, грамматика и язык вопроса
  3. ГЛАВА 4 Грамматика программ
  4. И.П.Иванова, В.В.Бурлакова, Г.Г.Почепцов. Теоретическая грамматика современного английского языка, 1981
  5. Программы по иностранным языкам
  6. N. M. RAYEVSKA. MODERNENGLISHGRAMMAR, 1976
  7. Двойственное число
  8. РАСШИФРОВЫВАЯ РЕЧЕВОЙ КОД
  9. РАСШИФРОВЫВАЯ РЕЧЕВОЙ КОД
  10. Вопросы для самоконтроля
  11. Способ редактирования этой книги
  12. Реформа языка
  13. ПСИХОЛИНГВИСТИКА
  14. Строение предложения — мужчина и женщина
  15. Закон разума
  16. Ни в коем случае не следует изучать иностранный язык самостоятельно