Jump to content

Грамматика атрибутов

Грамматика атрибутов — это формальный способ дополнить формальную грамматику обработкой семантической информации. Семантическая информация хранится в атрибутах, связанных с терминальными и нетерминальными символами грамматики. Значения атрибутов являются результатом правил оценки атрибутов, связанных с постановкой грамматики. Атрибуты позволяют передавать информацию из любого места абстрактного синтаксического дерева в любое другое место контролируемым и формальным способом. [1]

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

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

История [ править ]

Грамматики атрибутов были изобретены Дональдом Кнутом и Питером Вегнером . [3] Хотя Дональду Кнуту приписывают общую концепцию, Питер Вегнер изобрел унаследованные атрибуты во время разговора с Кнутом. Некоторые эмбриональные идеи восходят к [3] работам Эдгара Т. «Неда» Айронса, [4] автор ИМП .

Пример [ править ]

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

 ExprExpr + Term
 ExprTerm
 TermTerm * Factor
 TermFactor
 Factor → "(" Expr ")"
 Factorinteger

Следующая грамматика атрибутов может использоваться для вычисления результата выражения, записанного в грамматике. Обратите внимание, что эта грамматика использует только синтезированные значения и, следовательно, является с атрибутом S. грамматикой

 Expr1Expr2 + Term [ Expr1.value = Expr2.value + Term.value ]
 ExprTerm [ Expr.value = Term.value ]
 Term1Term2 * Factor [ Term1.value = Term2.value * Factor.value ]
 TermFactor [ Term.value = Factor.value ]
 Factor → "(" Expr ")" [ Factor.value =  Expr.value ]
 Factorinteger [ Factor.value = strToInt(integer.str) ]

Синтезированные атрибуты [ править ]

Синтезированный атрибут вычисляется на основе значений атрибутов дочерних элементов. Поскольку сначала необходимо вычислить значения дочерних элементов, это пример распространения снизу вверх. [5] Чтобы формально определить синтезированный атрибут, пусть быть формальной грамматикой, где

  • это набор нетерминальных символов
  • это набор терминальных символов
  • это набор постановок
  • является отличительным или стартовым символом

Тогда, учитывая строку нетерминальных символов и имя атрибута , является синтезированным атрибутом, если соблюдены все три условия:

  • (т.е. это одно из правил грамматики)
  • (т.е. каждый символ в теле правила является либо нетерминальным, либо терминальным)
  • , где (т.е. значение атрибута является функцией применяется к некоторым значениям символов в теле правила)

Унаследованные атрибуты [ править ]

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

С → АВС

где A может получать значения от S, B и C. B может принимать значения от S, A и C. Аналогично, C может принимать значения от S, A и B.

Специальные типы грамматик атрибутов [ править ]

См. также [ править ]

Ссылки [ править ]

  1. ^ Кнут 1968 , с. 134.
  2. ^ Кнут 1968 , с. 132.
  3. ^ Jump up to: Перейти обратно: а б Д. Е. Кнут: Происхождение атрибутивных грамматик . Материалы международной конференции по грамматикам атрибутов и их приложениям (1990), LNCS, vol. 461 , 1–12.
  4. ^ "Основной" .
  5. ^ Кнут 1968 , с. 130.

Внешние ссылки [ править ]

Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 6ba7a6b6b75816c8be551646ca40dfc9__1709954100
URL1:https://arc.ask3.ru/arc/aa/6b/c9/6ba7a6b6b75816c8be551646ca40dfc9.html
Заголовок, (Title) документа по адресу, URL1:
Attribute grammar - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)