КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
КС-языки и магазинные автоматы
Эквивалентные преобразования КС-грамматик Пример 16 Следующая грамматика решает проблему "кочующего else": stmt à if expr then stmt | if expr then stmt else stmt | a expr à b (5.13) Будучи левофакторизованной, эта грамматика принимает следующий вид: stmt à if expr then stmt S' | а S' à else stmt | λ (5.14) E à b Таким образом, при получении на входе if используется продукция if expr then stmtS' и, только когда будет просмотрена if expr then stmt, можно решить, расширять ли S' до else stmt или λ. Однако, и грамматика (5.13), и грамматика (5.14) неоднозначны, и при входном символе else неясно, какая из альтернатив для S' должна быть выбрана.
Цель преобразования грамматик: упрощение правил грамматики и облегчение создания распознавателя. При создании компиляторов вторая цель наиболее важная, поэтому иногда упрощением грамматик пренебрегают. Грамматики, к которым применены преобразования в определенном порядке, называется приведенными. Последовательность правил преобразований грамматик должна быть следующей: 1) удаление всех бесполезных символов; (Нетерминальный символ грамматики является бесполезным, если он не играет никакой роли в построении правильных цепочек языка) 2) удаление всех недостижимых символов; (Нетерминальный символ грамматики является недостижимым, если он никогда не появляется в выводимых цепочках) 3) удаление λ-продукций; (Грамматика является λ-свободной, если множество продукций не содержит λ -продукций, или есть ровно одно λ -правило S–> λ и S не встречается в правых частях остальных продукций) 4) удаление цепных правил (Грамматика является грамматикой без циклов, если в ней нет выводов вида А=*>А).
Описание КС-языка с помощью порождающей КС-грамматики не является описанием алгоритма порождения предложений этого языка. Правила подстановки грамматики — это не последовательность предписаний, а совокупность разрешений, причем порядок применения правил в грамматике произволен, тогда как в алгоритме должен быть задан жесткий порядок применения отдельных инструкций. Получение алгоритмического описания процесса распознавания языка является одной из первоочередных задач при разработке блока синтаксического анализа транслятора. Одним из способов описания алгоритма распознавания языка является задание его в виде некоторого распознающего устройства. Для КС-языков такими устройствами являются магазинные автоматы (автоматы с магазинной памятью, МП-автоматы). Формальное определение и содержательное описание функционирования МП-автомата. Недетерминированным МП-автоматом называется семерка вида: М = <А, Q, Г, δ, q0, Z0, F>, где А — конечное множество входных символов (входной алфавит); Q — конечное множество внутренних состояний (алфавит состояний); Г — конечное множество магазинных символов; q0∈ Q — начальное состояние автомата; F⊆Q — множество заключительных состояний; δ — отображение QxAxГ в множество подмножеств QxГ*, т.е. отображение вида δ: QxAxГ → (QxГ*). Схема МП-автомата показана на рис. 26. Автомат имеет конечное множество состояний, конечное множество входных символов и неограниченную ленту, называемую лентой магазинной памяти или магазинной памятью. «Дно» магазина (самый нижний символ) отмечается специальным символом, называемым маркером дна (например, символом #). Магазинная память определяется свойством «первым пришел — последним ушел». При записи символа в магазин, его содержимое сдвигается на одну ячейку «вниз», а на освободившееся место записывается требуемый символ. В этом случае говорят, что символ «вталкивается» в магазин.
Рис. 26 Схема автомата с магазинной памятью
Для чтения доступен только самый верхний символ магазина. Этот символ после чтения может либо остаться в магазине, либо быть удален из него, т.е. «вытолкнут» из магазина. За один такт работы МП-автомата из магазина можно удалять не более одного символа. Каждый шаг работы МП-автомата задается множеством правил перехода автомата из одних состояний в другие. Переходы в общем случае определяются: · состоянием МП-автомата; · верхним символом магазина; · текущим входным символом. Множество правил перехода называется управляющим устройством. В зависимости от получаемой информации, управляющее устройство реализует один такт работы МП-автомата, который включает в себя три операции: 1) операции над магазином: · втолкнуть в магазин определенный символ; · вытолкнуть верхний символ из магазина; · оставить содержимое магазина без изменений; 2) операции над состоянием: · перейти в заданное новое состояние S; · остаться в прежнем состоянии; 3) операции над входом: · перейти к следующему входному символу и сделать его текущим; · оставить данный входной символ текущим, т.е. держать его до следующего шага. Обработку входной цепочки МП-автомат начинает в некотором выделенном состоянии при определенном содержимом магазина. Затем автомат выполняет операции, задаваемые его управляющим устройством. При этом выполняется либо завершение обработки, либо переход в новое состояние. Если выполняется переход, то он дает новый верхний символ магазина, новый текущий символ, автомат переходит в новое состояние и цикл работы автомата повторяется. МП-автомат называется МП-распознавателем, если у него два выхода ДОПУСТИТЬ и ОТВЕРГНУТЬ. Работа МП-автомата при распознавании конкретной цепочки описывается обычно в виде последовательности конфигураций МП-автомата. Конфигурация МП-автомата содержит (содержимое стека; состояние; необработанная часть входной цепочки). Более формальный способ описания МП-автомата — в виде последовательности команд. Команда записывается в виде: (q,a,z)→{(q1,γ1),...,(qm,γm)}, где q, q1,..., qm ∈ Q; a ∈ A; z ∈ Г, γ 1 γ2 …γm ∈ Г*. Команда интерпретируется следующим образом: МП-автомат находится в состоянии q, считывает входной символ а и верхний символ магазина z, переходит в состояние qi, заменяя в магазине символ z на символ γi, l≤i≤m и продвигает входную головку на один символ. Если же при выполнении команды сдвига входной ленты не выполняется, то команда записывается в виде: (q,λ,z)→{(q1,γ1),...,(qm,γm)}. и используется лишь для изменения содержимого магазина. Различают детерминированные и недетерминированные МП-автоматы. Если среди команд МП-автомата нет двух, у которых совпадают левые части и не совпадают части, стоящие справа от стрелки, то МП-автомат называют детерминированным. В противном случае, т.е. когда для заданного состояния и текущих входном и магазинном символах, возможны переходы автомата в различные состояния, его называют недетерминированным. Связь между КС-языками и недетерминированными автоматами выражается теоремами, которые показывают, что класс языков, допускаемых магазинными автоматами при пустом магазине, есть в точности класс КС-языков. Теорема: Пусть L(G) — КС-язык, порождаемый грамматикой G = <N, T, P, S> в нормальной форме Грейбах (правила вывода которой имеют вид A->bα). Тогда существует недетерминированный нисходящий МП-автомат М, допускающий все слова языка L(G). Автомат М = <А, Q, Г, δ, q0, Z0, F> строится следующим образом: 1)А = Т; 2)Q={q,}; 3)T = N; 4)q0=qq; 5)Z0 = S; 6) F = ∅; 7) δ: (q, а, В)–> (qp γ), когда подстановка В →aγ принадлежит множеству правил Р грамматики G, здесь В ∈N, а ∈Т, γ ∈ {N U T} * [5]. Пример 14
Дана КС-грамматика G = <N, T, P, S>, у которой N={S,D,B},T={a,b}, Р= {S→aB | bD D→aS | a | bDD В → аВВ | bS | b} В соответствии с теоремой МП-автомат М = <А, Q, Г, δ, q0, Z0, F>, допускающий данный КС-язык, будет включать в себя компоненты А = {а, Ь}, Q={q,}, Г = {S, D, В}, q0 = q1, z0 = S и отображение δ, заданное в виде: l.(q1,a, S)→(q1,B), т.к. (S → аВ) ∈ Р; 2.(q1,b, S)→ (q1, D); т.к. (S→bD)∈ P; 3.(q1, a, D) → {(q1, S), (q1, λ)}, т.к. (D → aS) и (D → a) входят в множество Р; 4. (q1, b, D) → (q1, DD), т.к. (D → bDD) ∈ P; 5. (q1, a, B) →(q1, BB), т.к. (В → аВВ) ∈Р; 6. (q1, b, B) → {(q1, S), (q1 λ)}, т.к. (B → bS) и (В → b) входят в множество Р. Построенный МП-автомат является недетерминированным, т.к. в нем в правилах 3 и 6 допускается неоднозначность перехода для одной и той же комбинации состояния входного и магазинного символов. В общем случае классы языков, допускаемых детерминированными и недетерминированными МП-автоматами не совпадают. На практике же получили наибольшее применение детерминированные методы разбора для, так называемых, детерминированных КС-языков, которые хотя и уже всего класса КС-языков, но большинство языков программирования можно отнести к классу этих языков.
Дата добавления: 2014-12-27; Просмотров: 1021; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |