Формальные языки, грамматики и основы построения трансляторов. Кревский И.Г - 24 стр.

UptoLike

24
обеспечивают конечный способ описания языка, состоящего из бесконечного
числа строк, то здесь вторая грамматика применяется для генерирования
бесконечного числа правил, которые в свою очередь генерируют
предложения языка. Применение второй грамматики позволяет избежать
рутинной работы, связанной с написанием бесконечного числа
порождающих правил. С помощью двухуровневой грамматики можно
генерировать любой язык типа 0. Данная
концепция является даже слишком
мощной (КЗ свойства большинства машинных языков относительно просты).
Атрибутивные грамматики
. Атрибуты применяются для описания КЗ
(точнее К-несвободных) аспектов языка. Рассмотрим пример. Пусть в
некотором языке идентификаторы могут иметь тип int или char и являются
терминалами грамматики. Описание с помощью КС порождающих правил.
D
int I
D
char I
Описав идентификатор, мы хотим запомнить его тип. Этот тип будет
свойством описания, видоизменим грамматику, чтобы это указать:
D (.ID, MODE)
int (.MODE1) I(.ID1)
ID = ID1
MODE = MODE1
аналогично для char. MODE, MODE1, ID, ID1 пишутся в скобках после
терминала или нетерминала грамматики и представляют собой его признаки
(атрибуты). Преимущество атрибутивных грамматик в том, что они выглядят
как КС, но могут специфицировать КЗ конструкции языка. Фактически
любой язык типа 0 можно описать с помощью атрибутивной грамматики. Так
как языки программирования
представляется как КС, к которым добавляются
контекстные ограничения, атрибутивные грамматики хорошо подходят для
их описания.
Контрольные вопросы
1. Сколько типов грамматик насчитывает иерархия Хомского? Назовите
эти типы.
                                                                            24
обеспечивают конечный способ описания языка, состоящего из бесконечного
числа строк, то здесь вторая грамматика применяется для генерирования
бесконечного     числа   правил,     которые   в   свою   очередь   генерируют
предложения языка. Применение второй грамматики позволяет избежать
рутинной   работы,       связанной     с   написанием     бесконечного   числа
порождающих правил. С помощью двухуровневой грамматики можно
генерировать любой язык типа 0. Данная концепция является даже слишком
мощной (КЗ свойства большинства машинных языков относительно просты).
     Атрибутивные грамматики. Атрибуты применяются для описания КЗ
(точнее К-несвободных) аспектов языка. Рассмотрим пример. Пусть в
некотором языке идентификаторы могут иметь тип int или char и являются
терминалами грамматики. Описание с помощью КС порождающих правил.
     D → int I
     D → char I
     Описав идентификатор, мы хотим запомнить его тип. Этот тип будет
свойством описания, видоизменим грамматику, чтобы это указать:
     D (.ID, MODE) → int (.MODE1) I(.ID1)
     ID = ID1
     MODE = MODE1
аналогично для char. MODE, MODE1, ID, ID1 пишутся в скобках после
терминала или нетерминала грамматики и представляют собой его признаки
(атрибуты). Преимущество атрибутивных грамматик в том, что они выглядят
как КС, но могут специфицировать КЗ конструкции языка. Фактически
любой язык типа 0 можно описать с помощью атрибутивной грамматики. Так
как языки программирования представляется как КС, к которым добавляются
контекстные ограничения, атрибутивные грамматики хорошо подходят для
их описания.
                            Контрольные вопросы
 1. Сколько типов грамматик насчитывает иерархия Хомского? Назовите
    эти типы.