Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Пример 38

Читайте также:
  1. A) В примере сформировать прерывания вручную
  2. II. Примеры слов, имеющих древнейшее германское происхождение
  3. III.9. Пример Ирландии
  4. IV.4. Пример Северной Норвегии
  5. SWOT – анализ на примере фабрики по производству обуви.
  6. А28. Выговор, увольнение с работы, штраф, лишение свободы являются примерами
  7. Администрирование распределенных систем на примере Oracle
  8. Администрирование распределенных систем на примере Oracle
  9. Актуальный пример разработки программы в случае моббинга
  10. Актуальный пример разработки программы в случае моббинга
  11. Аренда по МСФО. Учет на примерах
  12. Б/ Входной модуль пульта перезаписи (на примере блока SL505).



Схемы трансляции

Пример 37

L-атрибутные определения

Другой класс синтаксически управляемых определений - L-атрибутные определения.

Синтаксически управляемое определение является L-атрибутным, если каждый на­следуемый атрибут символа Xj,1 ≤ j ≤ п, из правой части продукции А → X1X2...Xn зави­сит только от

1. атрибутов символов X1,X2, ..., Xj-1, расположенных в продукции слева от Xj-1;

2. наследуемых атрибутов А.

Например, каждое S-атрибутное определение является L-атрибутным, так как ог­раничения (1) и (2) относятся только к наследуемым атрибутам.

Синтаксически управляемое определение на рис. 58 не является L-атрибутным, по­скольку наследуемый атрибут Q.i грамматического символа Q зависит от атрибута R.s грамматического символа справа.

 

Продукция Семантические правила
A → L M L.i := l(A.i)
M.i := m(L.s)
A.s := f(M.s)
A → Q R R.i := r(A.i)
Q.i := q(R.s)
  A.s := f(Q.s)

 

Рис. 58. Синтаксически управляемое определение, не являющееся

L-атрибутным

Другой способ записи семантических правил – это схемы трансляции. Для определения трансляции используем процедурную спецификацию.

Схема трансляции – это контекстно-свободная грамматика, в ко­торой атрибуты, связанные с символами грамматики, и семантические действия за­ключены в фигурные скобки ( { } ) и вставлены в правые части продукций. Схемы трансляции являются удобным способом записи определения трансляции, выполняемой в процессе син­таксического анализа.

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

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

E TR

R addop T{print (addop.lexeme)}R1 | λ

T num{print(num.val)}

На рис. 59 показано дерево разбора для входной строки 9-5+2, на котором семан­тические действия показаны как дочерние узлы по отношению к узлам, представляющим левые части соответствующих продукций. По сути, действия рассматриваются как тер­минальные символы, что удобно для определения момента выполнения этих действий. Вместо лексем num и addop указываются реальные числа и операция сложения. При выполнении действий в порядке обхода в глубину действия на рис. 59 приводят к вы­воду 95-2 + .

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



Рис. 59. Дерево разбора с семантическими действиями

для выражения 9-5+2

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

Т → T1 * Fи семантическое правило T1.vа1 := T1val ×F.val дают следующую продукцию и семантическое действие.

T → T1* F { T.vаl := T1.val × F.val}

Если имеются и синтезируемые, и наследуемые атрибуты, необходимо соблюдать следующие правила.

1. Наследуемый атрибут для символа из правой части продукции должен вычисляться в действии перед этим символом.

2. Действие не должно обращаться к синтезируемому атрибуту символа справа от действия.

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

Например, следующая схема трансляции не удовлетворяет первому из трех требований.

S → A1А2 { А1.iп := 1; А2.iп := 2 }

А → а {print(А. in)}

При попытке вывести его значение в процессе обхода в глубину дерева разбора входной строки аа наследуемый атрибут А.in во второй продукции не определенОбход в глубину начинается в S и проходит поддеревья A1 и А2 до того, как устанавлива­ются значения A1.iп и А2.in. Если действие, определяющее значения A1 .iп и A2 .iп, вставить перед символами А в правой части продукции S—> A1 А2, то А.in будет определено при каждом вызове print(А. in).

Начав с L-атрибутного синтаксически управляемого определения, всегда можно по­строить схему трансляции, удовлетворяющую трем приведенным выше требованиям.





Дата добавления: 2014-12-27; Просмотров: 130; Нарушение авторских прав?;


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



ПОИСК ПО САЙТУ:


Читайте также:



studopedia.su - Студопедия (2013 - 2017) год. Не является автором материалов, а предоставляет студентам возможность бесплатного обучения и использования! Последнее добавление ip: 54.224.102.26
Генерация страницы за: 0.009 сек.