Презентация Лекция 8. Автоматы для КС-грамматик

Скачать презентацию  Лекция 8. Автоматы для КС-грамматик Скачать презентацию Лекция 8. Автоматы для КС-грамматик

lekciya_8._avtomaty_dlya_ks-grammatik.ppt

  • Размер: 406 Кб
  • Количество слайдов: 18

Описание презентации Презентация Лекция 8. Автоматы для КС-грамматик по слайдам

Языки программирования и методы трансляции Лекция 8.  Распознающие автоматы для контекстно-свободных грамматик Языки программирования и методы трансляции Лекция 8. Распознающие автоматы для контекстно-свободных грамматик

Распознающие автоматы Линейная последовательность символов из Σ. За один такт считывается один символ. Поддерживает функции доступаРаспознающие автоматы Линейная последовательность символов из Σ. За один такт считывается один символ. Поддерживает функции доступа к памяти и преобразования памяти (например, замена символа в вершине стека на цепочку). Множество состояний и отображение, описывающее переход к следующему состоянию в зависимости от текущего входного символа и данных из вспомогательной памяти

Конечный автомат Недетерминированный конечный автомат – пятерка объектов: К=( Q,  Σ ,  δ ,Конечный автомат Недетерминированный конечный автомат – пятерка объектов: К=( Q, Σ , δ , q 0 , F) Q – множество состояний УУ , Σ – алфавит входных символов , δ : Q× Σ→ P(Q) – функция переходов , q 0 – начальное состояние, F – множество заключительных состояний

Конечные преобразователи   Такт работы конечного преобразователя – переход от конфигурации (q, ax, y) кКонечные преобразователи Такт работы конечного преобразователя – переход от конфигурации (q, ax, y) к конфигурации ( r, x, yz), если δ ( q, a) содержит ( r, z). Недетерминированный конечный преобразователь – шестерка объектов: К=( Q, Σ , Δ , δ , q 0 , F) Q – множество состояний УУ , Σ – алфавит входных символов , Δ – алфавит выходных символов δ : Q× Σ→ P(Q) × Δ – функция переходов , q 0 – начальное состояние, F – множество заключительных состояний Конфигурация конечного преобразователя — тройка (q, ax, y) , где q – состояние, x – необработанная часть входной цепочки, y – построенная часть выходной цепочки.

Регулярный перевод Формализация такта КП как отношения ├ на множестве конфигураций:  Для всех q QРегулярный перевод Формализация такта КП как отношения ├ на множестве конфигураций: Для всех q Q , а , х и у Δ , таких, что δ ( q, a) содержит ( r, z ), конфигурации ( q, ax, y) ├ (r, x, yz). Транзитивное замыкание отношения ├ обозначим ├ + Рефлексивно-транзитивное замыкание отношения ├ обозначим ├ * Цепочка у Δ называется выходом для цепочки х , если ( q 0, x, ) ├ * (q, , y) для некоторого q из множества конечных состояний. Переводом, определяемым конечным преобразователем, называется множество пар цепочек : (М) = { (x, y) | (q 0, x, ) ├ * (q, , y) для некоторого q F} (регулярный, или конечный, перевод)

Пример конечного преобразователя:  распознавание действительных чисел М= {(q 0, q 1, q 2, q 3,Пример конечного преобразователя: распознавание действительных чисел М= {(q 0, q 1, q 2, q 3, q 4), {d, . }, {1, 2, 3}, δ , q 0, {q 4} } δ (q 0, d) = {(q 1, )} δ (q 0, . ) = {(q 3, )} δ (q 1, d) = {(q 1, )} δ (q 1, . ) = {(q 2, ), (q 4, 1)} δ (q 2, d) = {(q 2, ), (q 4, 3)} δ (q 3, d) = {(q 3, ), (q 4, 2)} Выход: 1 – dd…d. 2 -. dd…d 3 – dd…d q 0 q 1 q 2 q 3 q 4d d / 3 d / 2d dd. . . / 1 Пример: входная цепочка 234. 17 ( q 0, 234. 17, ) ├ (q 1, 34. 17, ) ├ ├ (q 1, 4. 17, ) ├ (q 1, . 17, ) ├ (q 2, 17, ) ├ ├ (q 2, 7, ) ├ (q 4, , 3)

Конфигурация МП-автомата (q,  х , Z) :  q Q – состояние УУ х Конфигурация МП-автомата (q, х , Z) : q Q – состояние УУ х * — необработанная часть входной цепочки Z Г* — содержимое магазина (левый символ – вершина стека)Автомат с магазинной памятьюм агазин (стек) Такт работы МП-автомата: переход от конфигурации (q, aw, Z) к конфигурации ( r, w, ), если δ ( q, a, Z) содержит ( r, ). (q, aw, Z) ├ ( r, w, )МП-автоматом называется семерка P = (Q, , Г , , q 0, Z 0, F), где Q – множество состояний УУ — алфавит входных символов Г – алфавит выходных символов — функция переходов: Q ( { }) Г →Q Г* q 0 – начальное состояние УУ Z 0 – начальный символ (дно) магазина F – множество заключительных состояний

Пример: МП-автомат для распознавания симметричных цепочек P = ({q 0, q 1, q 2}, {a, b},Пример: МП-автомат для распознавания симметричных цепочек P = ({q 0, q 1, q 2}, {a, b}, {Z, a, b}, , q 0, Z, {q 2}) Функции переходов: )1 ( q 0, a, Z)={(q 0, a. Z)} 2) ( q 0, b, Z)={(q 0, b. Z)} 2) ( q 0, a, a)={(q 0, aa), (q 1, )} 2) ( q 0, a, b)={(q 0, ab)} 2) ( q 0, b, a)={(q 0, ba)} 2) ( q 0, b, b)={(q 0, bb), (q 1, )} 2) ( q 1, a, a)={(q 1, )} 2) ( q 1, b, b)={(q 1, )} 2) ( q 1, , Z)={(q 2, )} Примеры: (q 0, baab, Z) ├ (q 0, aab, b. Z) ├ ├ (q 0, ab. Z) ├ (q 1, b, b. Z) ├ ├ (q 1, , Z) ├ (q 2, )( q 0, baab, Z) ├ (q 0, aab, b. Z) ├ ├ (q 0, ab. Z) ├ (q 0, b, aab. Z) ├ ├ (q 0, , baab. Z) – ошибка

Расширенный МП-автомат Лемма:  Если ( q, w, A)  ├ n (q’,  , Расширенный МП-автомат Лемма: Если ( q, w, A) ├ n (q’, , ), то ( q, w, A ) ├ n (q’, , ) для всех A и *. Расширенным МП-автоматом называется МП-автомат, который за один такт может заменять цепочку конечной длины в вершине магазина другой цепочкой конечной длины. Функция переходов : Q ( { }) Г* →Q Г* Пример расширенного МП-автомата для языка ww R P = ({q 0, q 1}, {a, b}, {S, Z, a, b}, , q 0, Z, {q 1}) Функции переходов: 2) ( q 0, a, )={(q 0, a)} 2) ( q 0, b, )={(q 0, b)} 2) ( q 0, , )={(q 0, S)} 2) ( q 0, , a. Sa)={(q 0, S)} 2) ( q 0, , b. Sb)={(q 0, S)} 2) ( q 0, , SZ)={(q 1, )}

Преобразователи с магазинной памятью стек Выходная очередь Преобразователи с магазинной памятью стек Выходная очередь

Размеченный вывод цепочек в КС-грамматике Грамматика: (1) (2) (3) (4) (5) (6) TEE TE PTT* PTРазмеченный вывод цепочек в КС-грамматике Грамматика: (1) (2) (3) (4) (5) (6) TEE TE PTT* PT i. P )(EP Предложение: i+i*i Левый вывод: E= >(1) E+T= >(2) T+T= >(4) P+T= > =>(5) i+T= >(3) i+T*P= > =>(4) i+P*P= >(5) i+i*i Правый вывод: E= >(1) E+T= >(3) E+T*P= >(5) E+T*i= > =>(4) E+P*i= >(5) E+i*i =>(2) T+i*i= > =>(4) P+i*i= >(5) i+i*i

}{NДерево вывода Упорядоченное дерево, каждый узел которого помечен символом из , называется деревом вывода в КС-грамматике}{NДерево вывода Упорядоченное дерево, каждый узел которого помечен символом из , называется деревом вывода в КС-грамматике G =( N, Σ , P, S ), если: 1. Корень дерева помечен основным символом грамматики S. 2. Каждый прямой потомок узла, помеченного символом А, помечен таким символом Х, что грамматика содержит правило вывода А→Х. 3. Если узел D i помечен символом Х i из N , то поддерево D i должно быть деревом вывода в грамматике G i =( N, Σ , P, Х i ). 4. Если Х i — символ из Σ , то поддерево D i состоит из одной вершины, помеченной Х i 5. Если корень дерева состоит из единственного потомка, помеченного , то этот потомок образует дерево, состоящее из единственной вершины, и в множестве правил грамматики содержится правило S→ .

Определение разбора Цепочка для КС-грамматики разобрана , если известно её дерево вывода. Пусть заданы КС-грамматика GОпределение разбора Цепочка для КС-грамматики разобрана , если известно её дерево вывода. Пусть заданы КС-грамматика G , правила которой перенумерованы целыми числами 1, 2, …, р, и цепочка терминальных символов . Тогда: левым разбором цепочки называется последовательность правил, примененных при её левом выводе из S ; правым разбором цепочки называется обращение последовательности правил, примененных при правом выводе цепочки из S.

Эквивалентность КС-грамматик и МП-автоматов Пусть G=(N, Σ , P, S) – КС-грамматика,  P =( {q},Эквивалентность КС-грамматик и МП-автоматов Пусть G=(N, Σ , P, S) – КС-грамматика, P =( {q}, Σ ᵕ N, δ , q, S, {q} ) – МП-автомат с правилами перехода δ : 1. Если А→ — правило вывода грамматики G , то δ ( q, , A) содержит ( q, ) 2. δ (q, a, a) = {(q, )} для всех а из Σ. Тогда А => m w тогда и только тогда, когда (q, w, A)├ n (q, , ) для некоторых m, n. Лемма о нисходящем разборе

Пример: МП-автомат для скобочных выражений Грамматика: G=({E, T, M}, {i, +, *, (, )}, {E→E+T, E→T,Пример: МП-автомат для скобочных выражений Грамматика: G=({E, T, M}, {i, +, *, (, )}, {E→E+T, E→T, T→T*M, T→M, M→(E), M→i}, E) МП-автомат: P=({q}, {i, +, *, (, ), E, T, M}, δ , q, E, {q}) с правилами перехода: 1) δ ( q, , E)={(q, E+T), {(q, T)}} 2) δ ( q, , T)={(q, T*M), {(q, M)}} 3) δ ( q, , M)={(q, (E) ), {(q, i)}} 4) δ ( q, a, a)={(q, )} для всех a из {i, +, *, (, )}

Пример: разбор цепочки i*(i+i) (q, i*(i+i), E)├ (q, i*(i+i), T*M) ├ (q, i*(i+i), i*M)├ (q, *(i+i),Пример: разбор цепочки i*(i+i) (q, i*(i+i), E)├ (q, i*(i+i), T*M) ├ (q, i*(i+i), i*M)├ (q, *(i+i), *M) ├ (q, (i+i), M)├ (q, (i+i), (E) )├ (q, i+i), E+T) ) ├ (q, i+i), T+T) )├(q, i+i), M+T) )├(q, i+i), i+T) ) ├ (q, +i), +T) )├ (q, i), T) )├(q, i), M) )├ (q, i) ) ├ (q, ), ) )├ (q, , ) Последовательность тактов МП-автомата соответствует левому выводу цепочки i*(i+i) в грамматике G.

Восходящий синтаксический анализ (свертка слева) Правый вывод цепочки i+i*i : E= (1) E+T= (3) E+T*P= (5)Восходящий синтаксический анализ (свертка слева) Правый вывод цепочки i+i*i : E= >(1) E+T= >(3) E+T*P= >(5) E+T*i =>(4) E+P*i= >(5) E+i*i =>(2) = > T+i*i= >(4) P+i*i= >(5) i+i*i Обращение правого вывода цепочки i+i*i : i+i*i <= P+i*i <= T+i*i <= E+P*i <= E+T*P <= E+T α Aw=> α w=>xw – правый вывод в ней. Правовыводимую цепочку α w можно свернуть слева к правовыводимой цепочке α Aw с помощью правила вывода A→ . Это вхождение цепочки в цепочку α w называется основой цепочки α w. Пример: правила вывода {S→Ac, S →Bd, A →a. Ab, A →ab, B →a. Bbb, B →abb}. Цепочка aabbbbd – правовыводимая, abb – основа этой цепочки (т. к. abb – правая часть правила B →abb и a. Bbbd – правовыводимая цепочка. Цепочка ab – не основа, т. к. это правая часть правила A →ab , но a. Abbbd – не правовыводимая цепочка.

Лемма о восходящем разборе Пусть G=(N, Σ , P, S) – КС-грамматика. Тогда можно построить такойЛемма о восходящем разборе Пусть G=(N, Σ , P, S) – КС-грамматика. Тогда можно построить такой расширенный МП-автомат, что L(G)=L(P). P= ( {q, r}, Σ ᵕ N {┴}ᵕ , δ , q, ┴ , {r}) Правила перехода: 1. δ ( q, a, ) = {(q, a)} для всех терминальных a , т. е. символы со входной ленты переносятся в стек. 2. Если A→ α – правило вывода грамматики G , то δ ( q, , α ) содержит ( q, A). 3. δ ( q, , ┴S ) = {(r, )}. Автомат P строит правовыводимые цепочки грамматики G , начиная с терминальной цепочки на входной ленте и заканчивая цепочкой S.