Изменения

Перейти к: навигация, поиск

Атрибутные транслирующие грамматики

3 байта убрано, 08:53, 5 июня 2015
Пример L-атрибутной грамматики
|-
|style="background-color:#FFF;padding:2px 30px"| $L \to L,id\ \{ENTRY addtype(key, value)\}$
|style="background-color:#FFF;padding:2px 30px"| $L_1.in=L.inh \\ ENTRY.key=id.entry text \\ ENTRY.value=L.inh$
|-
|style="background-color:#FFF;padding:2px 30px"| $L.id \to id\ \{ENTRY addtype(key, value)\}$
|style="background-color:#FFF;padding:2px 30px"| $ENTRY.key=id.entry text \\ ENTRY.value=L.inh$
|}
Семантическое правило $L.inh = T.type$, связанное с продукцией $D \to TL$, определяет наследуемый атрибут $L.inh$ как тип объявления. Затем приведенные правила распространяют этот тип вниз по дереву разбора с использованием атрибута $L.inh$. Транслирующий символ ENTRY, связанный с продукциями для $L$, вызывает процедуру $addtype$ для добавления типа каждого идентификатора к его записи в таблице символов (по ключу, определяемому атрибутом $entrytext$).
[[Файл:Real_id1,_id2,_id3.png|600px|center|thumb|аннотированное дерево разбора для '''real id1, id2, id3'''|600px]]
497
правок

Навигация