Опубликован: 06.08.2007 | Доступ: свободный | Студентов: 1183 / 407 | Оценка: 4.45 / 4.29 | Длительность: 18:50:00
Специальности: Программист
Лекция 5:

Синтаксический анализ

Аннотация: В данной лекции рассматривается понятие синтаксического анализа. Приводятся определения понятий упорядоченного графа, дерева вывода, автомата с магазинной памятью и его конфигурации. Приведены примеры задач, алгоритмов и доказательства теорем синтаксического анализа.

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

Пусть G = (N, T, P, S) - КС-грамматика. Введем несколько важных понятий и определений.

Вывод, в котором в любой сентенциальной форме на каждом шаге делается подстановка самого левого нетерминала, называется левосторонним. Если S=>* u в процессе левостороннего вывода, то u - левая сентенциальная форма. Аналогично определим правосторонний вывод. Обозначим шаги левого (правого) вывода =>l (=>r).

Упорядоченным графом называется пара (V,E), где V есть множество вершин, а E - множество линейно упорядоченных списков дуг, каждый элемент которого имеет вид ((v, v1), (v, v2), ... , (v, vn)). Этот элемент указывает, что из вершины v выходят n дуг, причем первой из них считается дуга, входящая в вершину v1, второй - дуга, входящая в вершину v2, и т.д.

Упорядоченным помеченным деревом называется упорядоченный граф (V,E), основой которого является дерево и для которого определена функция f : V -> F (функция разметки) для некоторого множества F.

Упорядоченное помеченное дерево D называется деревом вывода (или деревом разбора ) цепочки w в КС-грамматике G = (N, T, P, S), если выполнены следующие условия:

(1) корень дерева D помечен S ;

(2) каждый лист помечен либо a \in T, либо e ;

(3) каждая внутренняя вершина помечена нетерминалом A \in N ;

(4) если X - нетерминал, которым помечена внутренняя вершина и X1, ... , Xn - метки ее прямых потомков в указанном порядке, то X -> X1 ... Xk - правило из множества P ;

(5) Цепочка, составленная из выписанных слева направо меток листьев, равна w.

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

Грамматика G называется неоднозначной, если существует цепочка w, для которой имеется два или более различных деревьев вывода в G.

Грамматика G называется леворекурсивной, если в ней имеется нетерминал A такой, что для некоторой цепочки R существует вывод A \Rightarrow ^{+}A\alpha.

Автомат с магазинной памятью (МП-автомат) - это семерка M = (Q, T, \Gamma , D, q_{0}, Z_{0}, F), где

(1) Q - конечное множество состояний, представляющих всевозможные состояния управляющего устройства;

(2) T - конечный входной алфавит;

(3) \Gamma - конечный алфавит магазинных символов ;

(4) D - отображение множества Q x (T \cup  \{ e\} ) \times \Gamma в множество конечных подмножеств Q  \times \Gamma ^{*}, называемое функцией переходов ;

(5) q_0 \in Q - начальное состояние управляющего устройства;

(6) Z_0 \in \Gamma - символ, находящийся в магазине в начальный момент ( начальный символ магазина );

(7) F \subseteq Q - множество заключительных состояний.

Конфигурация МП-автомата - это тройка (q, w, u), где

(1) q \in Q - текущее состояние управляющего устройства;

(2) w \in T^* - непрочитанная часть входной цепочки; первый символ цепочки w находится под входной головкой; если w = e, то считается, что вся входная лента прочитана;

(3) u \in \Gamma^* - содержимое магазина; самый левый символ цепочки u считается верхним символом магазина; если u = e, то магазин считается пустым.

Такт работы МП-автомата M будем представлять в виде бинарного отношения \vdash, определенного на конфигурациях.

Будем писать

(q, \; aw, \; Zu) \vdash (p, \; w, \; vu)

если множество D(q, a, Z) содержит (p, v), где q, \; p \in Q, \; a \in T \cup \{e\}, \; w \in T^*, \; Z \in  \Gamma^* и u, \; v \in \Gamma^* (верхушка магазина слева).

Начальной конфигурацией МП-автомата M называется конфигурация вида (q0, w, Z0), где w\in T^*, то есть управляющее устройство находится в начальном состоянии, входная лента содержит цепочку, которую нужно проанализировать, а в магазине имеется только начальный символ Z0.

>Заключительной конфигурацией называется конфигурация вида (q, e, u), где q \in F, u \in \Gamma^*, то есть управляющее устройство находится в одном из заключительных состояний, а входная цепочка целиком прочитана.

Введем транзитивное и рефлексивно-транзитивное замыкание отношения \vdash, а также его степень k > 0 (обозначаемые \vdash^+, \vdash^* и \vdash^k соответственно).

Говорят, что цепочка w допускается МП-автоматом M, если (q_0, w, Z_0) \vdash^* (q, e, u) для некоторых q \in F и u \in \Gamma^*.

Множество всех цепочек, допускаемых автоматом M называется языком, допускаемым (распознаваемым, определяемым) автоматом M (обозначается L(M) ).

Пример 4.1. Рассмотрим МП-автомат

M = ({q0, q1, q2}, {a, b}, {Z, a, b}, D, q0, Z, {q2}),

у которого функция переходов D содержит элементы:

D(q0, a, Z) = {(q0, aZ)},
D(q0, b, Z) = {(q0, bZ)},
D(q0, a, a) = {(q0, aa), {q1, e)},
D(q0, a, b) = {(q0, ab)},
D(q0, b, a) = {(q0, ba)},
D(q0, b, b) = {(q0, bb), (q1, e)},
D(q1, a, a) = {(q1, e)},
D(q1, b, b) = {(q1, e)},
D(q1, e, Z) = {(q2, e)}.

Нетрудно показать, что L(M) = \{ww^R \! | \! w \; \in \; \{a, b\}^+\}, где wR обозначает обращение ("переворачивание") цепочки w.

Иногда допустимость определяют несколько иначе: цепочка w допускается МП-автоматом M, если (q_0, w, Z_0) \vdash^* (q, e, e) для некоторого q \in Q. В таком случае говорят, что автомат допускает цепочку опустошением магазина. Эти определения эквивалентны, ибо справедлива

Лидия Городняя
Лидия Городняя
Россия, Барнаул, с.ш. 18, 22, 25, 1964
Олег Корсак
Олег Корсак
Латвия, Рига