Студопедия

Главная страница Случайная лекция


Мы поможем в написании ваших работ!

Порталы:

БиологияВойнаГеографияИнформатикаИскусствоИсторияКультураЛингвистикаМатематикаМедицинаОхрана трудаПолитикаПравоПсихологияРелигияТехникаФизикаФилософияЭкономика



Мы поможем в написании ваших работ!




LL-разбор КС-грамматики автоматом с магазинной памятью

 

Пусть задана КС-грамматика. Построим по ней МПА, выполняющий грамматический LL-разбор. Множество входных символов Σ в МПА будет совпадать с множеством терминальных символов грамматики. Множество состояний Q будет состоять из единственного состояния q0, оно же будет начальным и заключительным. Множество магазинных символов Γ будет содержать все терминальные и нетерминальные символы грамматики: Γ = Σ U N. Начальный магазинный символ Z0 будет совпадать с начальным символом грамматики S. Правила перехода δ для МПА будем строить следующим образом. Для каждого порождающего правила вида A → γ будет правило перехода:

(λ, A, q0) → (λ, γ–1, q0), (*)

где γ–1 – правая часть правила γ в обратном порядке, а для каждого терминального символа a правило перехода:

(a, a, q0) → (λ, λ, q0). (**)

Этот МПА будет повторять левое каноническое порождение. Действительно, до начала работы в магазине находится единственный символ S – начальный символ грамматики, который при построении дерева помещается в корень. Далее S в магазине заменяется символами правой части правила порождения (по правилу вида (*)), при занесении в магазин их можно одновременно помещать в дерево порождения. Как только на вершине магазина появится терминальный символ, и если он совпадет с очередным входным символом, то он удаляется из магазина (по правилу вида (**)), при этом далее будет читаться следующий входной символ. Таким образом, МПА полностью повторяет левое каноническое порождение, и если получающиеся при этом терминальные символы совпадают с символами входной цепочки, то в конце работы магазин будет пуст, и вся цепочка прочитана. Это значит, что входная цепочка распознана. Если же входная цепочка не принадлежит языку, т.е. для нее не существует левого канонического порождения, то на каком-либо шаге работы верхний в магазине терминальный символ не совпадет с очередным входным символом, и МПА попадет в тупик.

Обычно в КС-грамматике имеются группы различных порождающих правил с одним и тем же нетерминалом в левой части. Тогда МПА будет недетерминированным, в этом случае он должен параллельно проверять все варианты левого канонического порождения. Если при этом некоторые из вариантов будут попадать в тупики, то работа по ним будет прекращаться. Если при этом хотя бы при одном варианте левого канонического порождения разбор дойдет до конца входной цепочки и стек будет пуст, то это значит, что найден такой вариант разбора, который соответствует этой входной цепочке.

Таким образом, входная цепочка будет распознана тогда и только тогда, когда для нее существует левое каноническое порождение. Заметим, что на КС-грамматику не накладывалось никаких дополнительных ограничений, в частности, она может быть даже неоднозначной. В этом случае НМПА отследит все варианты левого канонического порождения входной цепочки.

 

Пример 5. Пусть задана грамматика простых арифметических выражений (S – начальный нетерминал):

SS + T | T

TT * F | F

F → (S) | a

Пусть цепочка на входе: a + a. В табл. 6 представлен тот вариант шагов LL-разбора, который приводит к успешному распознаванию.

Табл. 6

№ шага Входные символы Содержимое магазина Порождающее правило
a + a S SS + T
a + a S + T ST
a + a T + T TF
a + a F + T Fa
a + a a + T  
+ a + T  
a T TF
a F Fa
a a  
λ λ  

 

В табл. 6 не приведены другие варианты шагов разбора, которые приводят в тупик или зацикливают. Для этого примера неудачных вариантов оказывается бесконечно много. Так, при применении переходов с многократным повторением одного и того же порождающего правила SS + T содержимое магазина будет неограниченно увеличиваться: S, S + T, S + T + T, S + T + T + T, … Применение переходов с порождающими правилами ST, TF, Fa приведет к тому, что содержимое магазина будет изменяться так: S, T, F, a, λ. После этого во входной цепочке останутся непросмотренными символы: + a, т.е. возникнет тупик.

Конец примера.

 

 


<== предыдущая страница | следующая страница ==>
Автомат с магазинной памятью | Левая рекурсия и ее устранение

Дата добавления: 2015-07-26; просмотров: 134; Нарушение авторских прав




Мы поможем в написании ваших работ!
lektsiopedia.org - Лекциопедия - 2013 год. | Страница сгенерирована за: 0.009 сек.