Анализаторы предшествования

Автоматическое построение анализаторов опирается на отношение предшествования.

Пусть имеется КС-грамматика G =(VA, VT, I, S).

Рассмотрим пару символов a 1, a 2Î VA È VT.

1) Будем считать, что для пары (a 1, a 2) в грамматике G выполняется отношение (a 1, a 2)=., если в S содержится правило вывода А Þ x 1 a 1 a 2 x 2.

* * Þ
2) Будем считать, что для пары (a 1, a 2) выполняется отношение (a 1, a 2) <. если в S содержится правило вывода А Þ x 1 a 1 Вx 2, а из

В a 2 h.

3) Для пары (a 1, a 2) выполняется отношение (a 1, a 2).> если выполняется одно из следующих условий:

·

* * Þ
в S содержится правило вывода вида A Þ x 1 Ba 2 x 2, из В выводима цепочка, заканчивающаяся символом a 1

В ha 1;

·

* * Þ
* * Þ
в S содержится правило вывода вида А Þ x 1 ВCx 2, из В выводима цепочка, заканчивающаяся символом a 1, а из С – цепочка, начинающаяся с символа a 2

В ha 1 C a 2 z.

В этих отношениях А, В, С – некоторые нетерминальные символы, x 1, x 2, h, z -цепочки из (VT È VА)*.

F Определение: КС-грамматика называется грамматикой предшествования, если для каждой пары символов выполнено не более одного отношения предшествования.

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

LR(k)-анализатор

LR (k)-анализатор – устройство, состоящее из потенциально неограниченной вправо входной ленты и двух магазинов: верхнего и нижнего.

На входной ленте помещается еще не учтенная правая подцепочка анализируемой цепочки, к которой справа приписывается k маркеров. В верхнем магазине помещаются цепочки, состоящие из символов состояний, в нижнем – цепочки над объединением множеств нетерминальных и терминальных символов грамматики. Читая входную цепочку слева направо, анализатор пытается свернуть ее к начальному символу грамматики. В нижнем магазине находятся частично свернутые левые подцепочки входной цепочки, уже просмотренные анализатором. На каждом такте работы LR (k) – анализатор может выполнить одно из двух возможных действий: сдвиг или свертку. После выполнения определенного количества тактов анализатор допускает или отвергает анализируемую цепочку.

Число k анализатора определяет длину цепочки.

Глобальный анализатор

* * Þ
Глобальный анализатор работает по принципу сверху вниз. Он может быть построен для любой УКС- грамматики, не имеющей правила вывода вида: А А.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: