46023 (665330), страница 6

Файл №665330 46023 (Проектирование трансляторов) 6 страница46023 (665330) страница 62016-07-31СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 6)

ватель смоделирует в обратном порядке ее правый вывод.

S=a(0)=>a(1)=>...=>a(m)=W

Это правый вывод цепочки W. Каждая правовыводимая цепочка

а(i) распределяется в памяти ДМП так, что ее открытая часть хра-

нится в магазине а замкнутая - на входной ленте справа от голов-

ки. Затем ДМП должен локализовать правый конец основы и сделать

свертку. Число принимаемых ДМП решений - два: решения о переносе

и о свертке (по конкретному правилу).

Грамматика будет LR(K) грамматикой, если для произвольного

правого вывода

S=a(0)=>a(1)=>...=>a(m)=Z

в каждой правовыводимой цепочки а(i), читая ее слева напра-

во, можно выделить основу и определить, каким нетерминалом надо

ее заменить, дойдя при этом не более чем до k-го символа, распо-

ложенного справа от правого конца этой основы.

ОПРЕДЕЛЕНИЕ:

Пусть G=(N,E,P,S) - КС грамматика.

Пополненной грамматикой, полученной из G, будем называть

G'=(N+S',E,P+{S'->S},S').

S' - новый начальный символ, не принадлежащий N.

S' -> S - это нулевое правило грамматики G', добавляемое для

того, чтобы свертку , в которой используется нулевое правило,

можно было интерпретировать как сигнал о том, что цепочка допус-

кается.

ОПРЕДЕЛЕНИЕ: пусть G - КС грамматика, а G' - полученная из

нее пополненная. Будем называть G LR(k) грамматикой для k >= 0,

если из условий:

1) S' -> aAw -> abw;

2) S' -> gBx -> aby;

3) FIRST(k;w) = FIRST(k;y) где k соответствует грамматике.

Из условий следует, что

aAy = gBx (т.е. a=g, A=B, x=y)

Интуитивно это определение говорит о том, что если abw и aby

-правовыводимые цепочки пополненной грамматики, у которых

FIRST(w)=FIRST(y), и A->b -последнее правило, использованное в

правом выводе цепочки abw, то правило A->b должно использоваться

также в правом разборе при свертке aby к aAy.

Так как A дает b независимо от w, то LR(k) условие говорит о

том , что в FIRST(w) содержится информация, достаточная для того,

что ab за один шаг выводится из aA. Поэтому никогда не может воз-

никнуть сомнений относительно того, как свернуть очередную право-

выводимую цепочку пополненной грамматики.

Кроме того, работая с LR(k)-грамматикой, мы всегда знаем,

допустить ли данную входную цепочку или продолжать разбор.

Если начальный символ S не встречается в правых частях пра-

вил, то в определении LR(k) грамматики вместо S' можно взять S, а

именно G будет LR-грамматикой, если из трех условий:

1: S=>aAw=>abw;

2: S=>yBx=>aby;

3: FIRST(w)=FIRST(y)

следует, что aAy=yBX.

В данном разделе мы кратко рассмотрим, как для каждой

LR-грамматики G можно построить детерминированный правый анализа-

тор, который ведет себя следующим образом.

Прежде всего, этот анализатор строится по пополненной грам-

матике G'. Ведет он себя также, как анализатор типа "пере-

нос-свертка", за исключением того, что после каждого символа

грамматики в магазин будет записываться специальный информацион-

ный символ, называемый LR(k)-таблицей, которые могут определить,

что нужно делать на очередном шаге-свертку или перенос, и в слу-

чае свертки - номер правила.

┌──────────┬─────────────────────┬──────────────────────┐

│состояния │ действие │ переход │

├──────────┼─────────────────────┼──────────────────────┤

│ │ a b e │ S a b │

│ │ │ │

│ │ │ │

│ T0 │ 2 X 2 │ T1 X X │

│ │ │ │

│ Т1 │ S X A │ X T2 X │

│ │ │ │

│ T2 │ 2 2 X │ T3 X X │

│ │ │ │

│ T3 │ S S X │ X T4 T5│

│ │ │ │

│ T4 │ 2 2 X │ T6 X X │

│ │ │ │

│ T5 │ 1 X 1 │ X X X │

│ │ │ │

│ T6 │ S S X │ X T4 T7│

│ │ │ │

│ T7 │ 1 1 X │ X X X │

└──────────┴─────────────────────┴──────────────────────┘

Рис. LR(1) анализатор для грамматики G (i-свертка,при кото-

рой применено i-е правило, S-перенос, A-допуск, X-ошибка.

Возьмем для примера грамматику G. Ee правила:

1:S->SaSb

2:S->e

и правый вывод S->SaSb->SaSaSbb->SaSabb->Saabb->aabb.

Это LR(1)-грамматика.

Пополненная грамматика состоит G' правил:

0:S'->S

1:S ->SaSb

2:S ->e

LR(1)-анализатор для грамматики G приведен на Рис.

LR(k)-анализатор для КС-грамматики G - это множество строк

большой таблицы, каждая строка которой называется LR(k)-таблицей.

Т0 выделяется в качестве начальной LR(k)-таблицы. Каждая из

таблиц состоит из двух функций - функции действия f и функции пе-

реходов g:

(1) Аргументом функции действия f служит аванцепочка, а

соответствующее значение функции f - один из символов "действий":

перенос, свертка i, ошибка или допуск;

(2) Аргументом функции переходов g служит символ X, принад-

лежащий N+E, а соответствующее значение g(X)-либо имя некоторой

LR(k)-таблицы, либо ошибка.

LR-анализатор ведет себя также, как алгоритм типа "пере-

нос-свертка", используя в процессе работы магазин, входную и вы-

ходную ленты. Вначале магазин содержит начальную таблицу Т0 и ни-

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

выходная лента вначале пустая. Если предположить, что надо разоб-

рать входную цепочку aabb ,то начальной конфигурацией анализато-

ра будет (T0,aabb,e). Далее разбор осуществляется по следующему

алгоритму.

LR(k)-алгоритм разбора

Вход. Множество LR(k) таблиц для грамматики G с начальной

таблицей Т0 и входная цепочка z , которую надо разобрать.

Выход. Если z+ L(G), то правый разбор цепочки z в граммати-

ке, в противном случае сигнал об ошибке.

Метод. Выполнять шаги (1) и (2) до тех пор, пока не будет

допущена входная цепочка или не встретится сигнал об ошибке. В

случае допуска цепочка на выходной ленте представляет собой пра-

вый разбор цепочки z.

(1) Определяется аванцепочка u ,состоящая из k очередных

входных символов (или менее чем k символов ,если обрабатывается

конец входной цепочки)

(2) Функция действия f таблицы ,расположенной наверху мага-

зина, применяется к аванцепочке u.

(а) Если f(u) =перенос, то следующий входной символ, скажем

a ,переносится со входа в магазин. К a применяется функция пере-

ходов g верхней таблицы магазина и определяется новая таблица,ко-

торую надо поместиь наверху магазина. После этого вернуться к ша-

гу (1). Если следующего входного символа нет или значение g(a) не

определено, остановиться и выдать сигнал об ошибке.

(б) Если f(u) свертка i и A->a-правило с номером i , то из

верхней части магазина устраняется 2|a| символов и на выходной

ленте записывается номер правила i. Наверху магазина оказывается

тргда новая таблица T', и ее функция переходов применяется к А

для определения следующей таблицы, которую надо поместить навер-

ху магазина. Помещаем А и эту новую таблицу наверху магазина и

переходим к шагу (1).

(в) Если f(u)= ошибка , разбор прекращается (на практике на-

до перейти к процедуре исправления ошибок).

(г) Если f(u) =допуск, остановиться и обьявить цепочку, за-

писанную на выходной ленте, правым разбором первоначальной вход-

ной цепочки.

Конец работы алгоритма.

G является LR -грамматикой тогда и только тогда , когда для

нее можно построить LR(k)-анализатор. Она также будет LR-грамма-

тикой, если просмотрев только часть кроны дерева вывода в этой

грамматике, расположенную слева от данной внутренней вершины, и

часть кроны , выведенную из нее, а также следующие k терми-

нальных символов, можно установить, какое правило было применено

к этой вершине.

Определение. Допустим, что S->aAw->abw- правый вывод в грам-

матике. Назовем цепочку g АКТИВНЫМ ПРЕФИКСОМ грамматики, если

gпрефикс цепочки ab, т.е g- префикс некоторой правовыводимой це-

почки, не выходящие за правый конец ее основы.

Ядро анализатора составляют таблицы. Для LR(k)-грамматики

каждая таблица соответствует некоторому активному префиксу. Таб-

лица, соответствующая активному префиксу g, для данной аванцепоч-

ки. состоящей из k символов, сообщает о том достигнут ли правый-

конец основы. Если да, то она сообщает также какова эта основа и

какое правило надо применить для ее свертки.

LR(k)-условие говорит о том, что основу правовыводимой це-

почки можо определить неоднозначно, если известен весь отрезок

этой цепочки слева от основы, а также k очередных входных симво-

лов. Поэтому не очевидно, что основу всегда можно определить,

располагая только фиксированным количеством информации о цепочке,

предшествующей основе. Поэтому таблицы должны содержать достаточ-

но информации, чтобы по таблице, соответствующей ab, можно было

вычислить таблицу для aA, если aAw->abw.

Определение. Пусть G - КС-грамматика. Будем называть

[A->b1*b2,u] LR-ситуацией, если A->b1b2-правило из P и u принад-

лежит входной цепочке.

Определение. Пусть G-КС-грамматика. g-ее активный префикс.

Тогда V(g) -множество LR(k)-ситуаций, допустимых для g.

Чтобы помочь анализатору принять правильное решение, в нуж-

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

необходимую информацию, извлеченную из соответствующего множес-

тва ситуаций. Следовательно, построение правого анализатора сос-

тоит в нахождении LR-таблиц, соответствующих этим ситуациям.

На первый взгляд кажется, что при реализации анализаторов

придется помещать в магазин большие таблицы. Этого можно избе-

жать следующим образом:

(1) Поместить в память по одному экземпляру каждой таблицы,

а в магазине заменить сами таблицы указателями на их место в па-

мяти;

(2) Так как в таблицах есть ссылки на другие таблицы, вмес-

то имен таблиц можно использовать указатели.

Наличие в магазине символов грамматики излишне и на практи-

ке их можно туда не записывать.

ЛЕКЦИЯ 7

МП-АВТОМАТЫ

Изучая конечные автоматы, мы изучили теоpию, охватывающую

пpоблемы pаспознования. При использовании конечных автоматов в

пpактических задачах такие аспекты обpаботки цепочек как выходы

из цепочек и обpаботка значений pешались с помощью пеpеходных

пpоцедуp, задаваемых в зависимости от конкpетного случая. Так как

почти всегда пpоцедуpы могли быть описаны коpотко и пpосто, то мы

сделали вывод: теоpия конечных pаспознований является адекватной

теоpетической базой для pазpаботки конечных пpоцессоpов.

В этом пункте мы pассмотpим pаспознование входных цепочек с

помощью МП-автоматов. В отличие от конечного pаспознавателя для

МП-pаспознавателя стpоить соответствующие pасшиpения достаточно

тpудно, поэтому теоpия pаспознования КС-гpамматик сама по себе не

стpоит адекватной теоpии для постpоения компилятоpов.

Все методы тpансляции, котоpые будут pассмотpены ниже, осно-

вываются на технике, в котоpой пpоцесс обpаботки КС-языка опpеде-

ляется в теpминах обpаботки каждоого отдельного пpавила соответ-

ствующей гpамматике. Для описания пpоцесса обpаботки , основанно-

го на этой технике , обычно используется пpилагательное "синтак-

сически тpанслиpуемый". Синтаксически упpавляемые методы в дан-

ном КП основываются на математическом понятии "тpанслиpующей

гpамматики" и понятия "атpибутной гpамматики".

Тpанслиpующей гpамматикой или гpамматикой пеpевода называет-

ся КС-гpамматика, множество теpминальных символов котоpого pазби-

то на множество входных символов и множество символов действия.

Цепочки языка, опpеделяемого тpанслиpующей гpамматикой, называют-

ся последовательностью актов.

Атpибутная тpанслиpующая гpамматика - это тpанслиpующая

гpамматика, к котоpой добавляются следующие опpеделения.

1) Каждый входной символ, символ действия или нетеpминал

имеет конечное множество атpибутов, и каждый атpибут имеет (воз-

можно бесконечное) множество допустимых значений;

2) Все атpибуты нетеpминальных символов и символов действия

делятся на наследуемые и синтезиpуемые;

3) Пpавила вычисления наследуемых атpибутов опpеделяются

следующим обpазом:

Характеристики

Тип файла
Документ
Размер
1,13 Mb
Тип материала
Учебное заведение
Неизвестно

Список файлов реферата

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6510
Авторов
на СтудИзбе
302
Средний доход
с одного платного файла
Обучение Подробнее