Редактирование: Атрибутные транслирующие грамматики

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

Внимание! Вы не авторизовались на сайте. Ваш IP-адрес будет публично видимым, если вы будете вносить любые правки. Если вы войдёте или создадите учётную запись, правки вместо этого будут связаны с вашим именем пользователя, а также у вас появятся другие преимущества.

Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.
Текущая версия Ваш текст
Строка 9: Строка 9:
 
Такой подход называется '''синтаксически управляемой трансляцией'''.
 
Такой подход называется '''синтаксически управляемой трансляцией'''.
  
==Синтаксически управляемая трансляция==
+
=Синтаксически управляемая трансляция=
 
<wikitex>
 
<wikitex>
 
{{Определение
 
{{Определение
Строка 62: Строка 62:
 
</wikitex>
 
</wikitex>
  
==Синтезируемые атрибуты==
+
=Синтезируемые атрибуты=
 
<wikitex>
 
<wikitex>
 
{{Определение
 
{{Определение
Строка 74: Строка 74:
 
}}
 
}}
 
</wikitex>
 
</wikitex>
===Пример S-атрибутной грамматики===
+
==Пример S-атрибутной грамматики.==
 
<wikitex>
 
<wikitex>
 
Выпишем синтаксически управляемое определение для грамматики арифметических выражений с операторами $+$ и $*$ (здесь $\{ADD {{...}} \}$ и $\{MUL {{...}} \}$ {{---}} [[Атрибутные_транслирующие_грамматики#tr_char|транслирующие символы]]. Если в продукции несколько раз встречается одинаковый нетерминал, будем добавлять к нему индексы, считая от начала продукции.):
 
Выпишем синтаксически управляемое определение для грамматики арифметических выражений с операторами $+$ и $*$ (здесь $\{ADD {{...}} \}$ и $\{MUL {{...}} \}$ {{---}} [[Атрибутные_транслирующие_грамматики#tr_char|транслирующие символы]]. Если в продукции несколько раз встречается одинаковый нетерминал, будем добавлять к нему индексы, считая от начала продукции.):
Строка 120: Строка 120:
 
</wikitex>
 
</wikitex>
  
==Наследуемые атрибуты==
+
=Наследуемые атрибуты=
  
 
<wikitex>
 
<wikitex>
Строка 133: Строка 133:
 
}}
 
}}
 
</wikitex>
 
</wikitex>
===Пример L-атрибутной грамматики===
+
==Пример L-атрибутной грамматики==
 
<wikitex>
 
<wikitex>
 
Для наглядности рассмотрим грамматику объявления переменных  
 
Для наглядности рассмотрим грамматику объявления переменных  
Строка 253: Строка 253:
 
</wikitex>
 
</wikitex>
  
==Атрибуты в ANTLR==
+
=Атрибуты в ANTLR=
  
 
Общедоступный генератор разборщиков ANTLR<ref>[http://www.antlr.org/ ANTLR {{---}} Parser generator]</ref> поддерживает синтаксически управляемое определение.  
 
Общедоступный генератор разборщиков ANTLR<ref>[http://www.antlr.org/ ANTLR {{---}} Parser generator]</ref> поддерживает синтаксически управляемое определение.  
Строка 303: Строка 303:
 
<references/>
 
<references/>
  
== Источники информации ==
+
= Источники информации =
 
* Альфред Ахо, Рави Сети, Джеффри Ульман. Компиляторы. Принципы, технологии, инструменты. Издательство Вильямс. Первое издание. 2003. Стр. 279 {{---}} 305.
 
* Альфред Ахо, Рави Сети, Джеффри Ульман. Компиляторы. Принципы, технологии, инструменты. Издательство Вильямс. Первое издание. 2003. Стр. 279 {{---}} 305.
 
* Альфред Ахо, Рави Сети, Джеффри Ульман. Компиляторы. Принципы, технологии, инструменты. Издательство Вильямс. Второе издание. 2008. Стр. 383 {{---}} 398.
 
* Альфред Ахо, Рави Сети, Джеффри Ульман. Компиляторы. Принципы, технологии, инструменты. Издательство Вильямс. Второе издание. 2008. Стр. 383 {{---}} 398.

Пожалуйста, учтите, что любой ваш вклад в проект «Викиконспекты» может быть отредактирован или удалён другими участниками. Если вы не хотите, чтобы кто-либо изменял ваши тексты, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений, или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого (см. Викиконспекты:Авторские права). НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ МАТЕРИАЛЫ!

Чтобы изменить эту страницу, пожалуйста, ответьте на приведённый ниже вопрос (подробнее):

Отменить | Справка по редактированию (в новом окне)

Шаблоны, используемые на этой странице: