Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Определение и свойства АТ-грамматики



АТ-грамматика — это транслирующая грамматика, дополнен­ная следующим образом.

1. Каждый терминал, нетерминал и операционный символ имеет конечное множество атрибутов, и каждый атрибут имеет множество (возможно, бесконечное) допустимых значений.

2. Все атрибуты нетерминалов и операционных символов де­лятся на наследуемые и синтезируемые.

3. Наследуемые атрибуты вычисляются следующим образом:

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

б) начальные значения наследуемых атрибутов аксиомы грам­матики полагаются известными.

4. Синтезируемые атрибуты вычисляются так:

а) значение синтезируемого атрибута нетерминала из левой
части правила грамматики вычисляется как функция некоторых
других атрибутов символов из левой или правой части данного
правила;

б) значение синтезируемого атрибута операционного симво­ла вычисляется как функция некоторых других атрибутов этого
символа.

5. Значения атрибутов терминалов считаются заданными, они
не относятся ни к наследуемым, ни к синтезируемым.

Исходя из этого определения и анализа грамматик, убеждаемся, что в грамматике выражений атрибуты всех нетерми­налов — синтезируемые, а в грамматике описаний — наследуемые. В обоих грамматиках атрибуты операционных символов — насле­дуемые. Значения атрибутов терминалов устанавливает лексичес­кий анализатор. Атрибуты отдельных символов не указывались, поскольку не играли никакой роли.

АТ-грамматики используют для построения атрибутных де­ревьев разбора, атрибутных активных цепочек и атрибутных пе­реводов (трансляций). Атрибутное дерево строится следующим образом.

1. По Т-грамматике построить дерево разбора активной це­почки, состоящей из терминалов и операционных символов без атрибутов.

2. Присвоить значения атрибутам терминалов, входящих в
дерево разбора.

3. Присвоить начальные значения наследуемым атрибутам
аксиомы грамматики на дереве разбора.

4.Вычислять значения атрибутов символов на дереве, пока это возможно, по правилу: найти атрибут, которого еще нет на де­реве, но аргументы для функции его вычисления уже известны; вы­числить значение этого атрибута; разместить атрибут на дереве. Если по завершении п.4 значения всех атрибутов всех сим­волов дерева оказываются вычисленными, то такое дерево назы­вают завершенным.

Причиной незавершенности дерева может оказаться так называемая круговая зависимость между атрибутами, входящими в одну формулу. АТ - грамматика, обеспечивающая завершенность любого дерева разбора, называется корректной. Именно коррек­тные грамматики представляют интерес для разработчиков транс­ляторов.

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

Теорема 1.Любая трансляция, определяемая L-AT-грамматикой, может быть выполнена недетерминированной атрибутной МП - машиной.

АТ - грамматика называется L-AT-грамматикой, если вы­полняются следующие условия (ограничения на АТ - грамматику).

1. Значение наследуемого атрибута символа из правой части правила может зависеть только от наследуемых атрибутов левой части правила и от любых атрибутов символов, стоящих в пра­вой части правила левее рассматриваемого символа.

2. Значение синтезируемого атрибута нетерминала из левой части правила может зависеть только от наследуемых атрибутов этого символа и от любых атрибутов символов правой.

3. Значение синтезируемого атрибута операционного символа зависит только от наследуемых атрибутов этого символа. Условие 1 делает наследуемые атрибуты некоторого узла дерева разбора зависящими (прямо или косвенно) от атрибутов терминалов, расположенных на дереве левее данного узла. Отсюда и наименование грамматики (Left - левая). Условия 2 и 3 делают грамматику корректной.

Теорема 4.Любую трансляцию, определяемую L-AT-грамматикой, у которой входная грамматика является LL(k)-грамматикой, можно выполнить на атрибутной детерминированной МП-I машине с концевым маркером.

Отметим, что здесь, как и в случае с МП-распознавателем, LL(k)-грамматика обеспечивает применение нисходящей страте­гии анализа.

Теорема 6.Всякая трансляция, определяемая некоторой S-атрибутной польской транслирующей грамматикой (S-АПТ-грамматикой) с входной LR(к)-грамматикой, может быть выполнена детерминированной атрибутной МП - машиной с концевым мар­кером.

В данном случае МП - машина работает с использованием вос­ходящей стратегии анализа. АТ - грамматика называется польской, если все операционные символы встречаются только в качестве последних символов правых частей правил грамматики. Нако­нец, L-AT-грамматика называется S-атрибутной, если все атри­буты нетерминалов — синтезируемые.

Формирование АТ-грамматики

Теперь покажем, как по конкретной входной КС-грамматике можно построить АТ-грамматику и определить ее класс.

ЗадачаДана КС-грамматика G = (VT, Vn, P, S) описания вещественных переменных, где VT- {real, имя, , }, VN = {DCL, LIST), S = DCL и P - множество правил:

1)DCL -> real имя LIST

2)LIST ->, имя LIST

3)LIST-> ε

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

Решение

1. Определим класс входной грамматики G. Следуя методике, изложенной в разделе LL(k)-грамматики, устанавливаем, что грамматика G обладает свойствами LL(1)-грамматик.

2. Преобразуем входную грамматику в Т-грамматику. Адрес должен быть назначен переменной сразу после чтения во входной строке символа имя. Поэтому операционный символ, который обозначим [ALLOC], располагается в Т-грамматике пос­ле каждого терминала имя:

1) DCL -> real имя [ALLOC] LIST

2)LIST-*, имя [ALLOC]LIST

3)LIST-> ε

3. Определим атрибуты символов Т-грамматики. Атрибут символа имя - указатель на строку таблицы имен. Атрибуты символа DCL:

1) указатель на начальную ячейку блока памяти для переменных - наследуемый;

2) указатель на свободную ячейку после обработки всего опи­сания - синтезируемый (от символа LIST в правой части прави­ла).

Атрибуты символа LIST:

1) указатель на очередную свободную ячейку блока памяти - наследуемый (из левой части правила);

2) указатель на свободную ячейку после обработки всего опи­сания — синтезируемый (от символа в левой или правой части правила).

Атрибуты символа [ALLOC]:

1) указатель на строку таблицы имен — наследуемый (от лево­го символа имя);

2) адрес ячейки памяти для значения переменной — наследуе­мый (от символа в левой части правила).

4. Выберем обозначения для атрибутов символов правила, положив i=0, 1, ...:

pi — указатель на строку таблицы имен;

bi — указатель на свободную ячейку блока памяти;

ai — адрес, назначенный переменной.

5. Запишем грамматику, приписав символам атрибуты, а за­ тем пополнив ее комментариями для атрибутов и правилами вы­числения их значений. В результате этих действий получим АТ-грамматику:

/*** DCLx1, x2 - наследуемый x1, синтезируемый х2; ***/

/*** LISTy1, y2 - наследуемый y1, синтезируемый у2; ***/

/*** [ALLOC]z1, z2 - наследуемые z1 и z2. ***********/

1) DCLb0, b1 -> real имяр0[АLLОС]p1, a0LISTb2, b3

p1 = p0, a0 = b0, b2 = b0+1, b1 = b3

2) LISTb0, b1 ->, имяр0[АLLОС]p1, a0LISTb2, b3

p1 = p0, a0 = b0, b2 = b0+1, b1 = b3

3) LISTboM -> ε

b1 = b0

Поясним отдельные формулы для вычисления значений атри­бутов. Предварительно еще раз уточним функцию операционно­го символа [ALLOC]. По своей сути это подпрограмма, которая по указателю р1 на элемент таблицы имен для информации о пе­ременной, предшествующей [ALLOC], помещает в определенное поле этого элемента адрес a0 ячейки для значения переменной. Носителем указателя является терминал имя, отсюда формула р1 = р0. Носителем адреса является первый атрибут нетерминала в левой части правила, отсюда формула a0 = b0. Информация о текущей свободной ячейке передается к другим правилам посред­ством атрибута b2 нетерминала LIST вправой части правила. Номер свободной ячейки на 1 больше последней занятой (фор­мула b2 = b0 + 1). Атрибут b0 символа LIST в правиле 3 будет содержать адрес свободной ячейки после назначения адресов всем элементам списка переменных. Поэтому второй атрибут в этом правиле должен получить значение первого (формула b1 = b0). Формула b1 = b3 позволяет передать это значение атрибуту b1 нетерминала DCL.

6. Определим класс АТ-грамматики.

Для этого проверим выполнение условий для атрибутов из определения L-AT-грамматики. Все эти условия выполняются. Значит, полученная грамматика есть L-AT-грамматика с входной LL(1)-грамматикой.

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

ПримерДля входной строки real имя5, имя4 и L-AT-грам­матики из предыдущей задачи дерево разбора соответствующей активной атрибутной цепочки показано на рис. 5.5. В этом примере на­чальный адрес в блоке принят равным нулю.

Рисунок 5.5 Дерево разбора активной атрибутной цепочки

real имя5 [ALLOC]5 имя4 [ALLOC]4

После построения безатрибутного дерева оно заполнялось значениями атрибутов. Вычисление наследуемых атрибутов вы­полнялось раньше синтезируемых и велось в направлении от корня дерева к его листьям. Синтезируемые атрибуты, напротив, вы­числялись при движении от листьев к корню. Интересно просле­дить, как пришедшая сверху информация (номер 2 очередной сво­бодной ячейки) направляется снова вверх после применения правила 3 грамматики. Заметим также, что свойство L-атрибутной грамматики обеспечивает вычисление атрибутов в порядке, при­годном для нисходящей обработки входной строки.

Атрибутную трансляцию, описанную формально АТ - грамматикой, можно выполнить с помощью атрибутного МП - преобра­зователя, который называют также атрибутным МП - процессором или атрибутной МП - машиной. Выполнение атрибутной трансля­ции предполагает следующие действия МП - преобразователя:

- последовательное чтение входных символов вместе с их атрибутами;

- проверку принадлежности входной строки языку, определенному входной грамматикой;

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

Атрибутный МП - преобразователь представляет собой обыч­ный МП- преобразователь, у которого состоя­ния, входные, выходные и магазинные символы имеют атрибу­ты. На каждом шаге работы преобразователя значения атрибу­тов нового состояния, нового верхнего символа магазина (если этот шаг — не выталкивание из магазина) и выходных символов вычисляются как функции атрибутов старого состояния, верхне­го символа магазина и входного символа (если это не пустой шаг). Вопросы построения атрибутных МП - преобразователей здесь рассматривать не будем.

 

 


Поделиться:



Популярное:

  1. PEST-анализ макросреды предприятия. Матрица профиля среды, взвешенная оценка, определение весовых коэффициентов. Матрицы возможностей и матрицы угроз.
  2. Анализ баланса реактивной мощности на границе раздела энергоснабжающей организации и потребителя, и при необходимости определение мощности батарей конденсаторов для сети напряжением выше 1 кВ
  3. Блок 1. Понятие о морфологии. Имена. Имя существительное: определение, грамматические признаки, правописание
  4. В случае непринятия судом признания иска ответчиком суд выносит об этом определение и продолжает рассмотрение дела по существу.
  5. Вопрос 1. Какое определение Маркетингу дал Филип Котлер и на чем базируется теория маркетинга?
  6. Вопрос 1. Определение триггера. Классификация, назначение, таблицы переходов.
  7. Вопрос 34 Определение радиационно-опасного объекта. Основные радиационные источники. Классификации аварий на РОО
  8. Вопрос № 39 Представительные органы в системе местного самоуправления, порядок их формирования и определение численности.
  9. Глава 1. Определение состояния здоровья собаки.
  10. Глава 3. День третий. Определение своих границ
  11. Глава I. Определение облигации: цели выпуска, основные характеристики и параметры
  12. Голосование. Определение итогов голосования и результатов выборов.


Последнее изменение этой страницы: 2016-04-11; Просмотров: 728; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.025 с.)
Главная | Случайная страница | Обратная связь