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

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

Теорема 4.1. Язык допускается МП-автоматом тогда и только тогда, когда он допускается (некоторым другим автоматом) опустошением магазина.

Доказательство. Пусть L = L(M) для некоторого МП- автомата M = (Q, T, \Gamma , D, q_{0}, Z_{0}, F). Построим новый МП- автомат M', допускающий тот же язык опустошением магазина.

Пусть M' = (Q \cup \{q'_0, q_e\}, T, \Gamma \cup  \{Z'_0\}, D', q'_0, Z'_0 , \oslash), где функция переходов D' определена следующим образом:

  1. Если (r, u) \in D(q, a, Z), то (r, u) \in D'(q, a, Z) для всех q \in Q, a \in T \cup \{e\} и Z \in \Gamma (моделирование М ),
  2. D'(q'_0 , e, Z'_0) = \{(q_0, Z_0 Z'_0 )\} (начало работы),
  3. Для всех q \in F и Z \in \Gamma \cup \{Z'_0\} множество D'(q, e, Z) содержит (qe, e) (переход в состояние сокращения магазина без продвижения),
  4. D'(qe, e, Z) = {(qe, e)} для всех Z \in \Gamma \cup \{Z'_0\}, (сокращение магазина).

Автомат сначала переходит в конфигурацию (q_0, w, Z_0Z'_0) соответственно определению D' в п.2, затем в (q, e, Y_1 \ldots Y_k Z'_0),

q \in F соответственно п.1, затем в (q_e, e, Y_1 \ldots Y_k Z'_0), q \in F соответственно п.3, затем в (qe, e, e) соответственно п.4. Нетрудно показать по индукции, что (q_0, w, Z_0) \vdash^+ (q, e, u) (где q \in F ) выполняется для автомата M тогда и только тогда, когда (q'_0 , w, Z'_0 ) \vdash^+ (q_e, e, e) выполняется для автомата M'. Поэтому L(M) = L', где L' - язык, допускаемый автоматом M' опустошением магазина.

Обратно, пусть M = (Q, T, \Gamma , D, q_{0}, Z_{0}, \varnothing ) - МП - автомат, допускающий опустошением магазина язык L. Построим автомат M', допускающий тот же язык по заключительному состоянию.

Пусть M' = (Q \cup \{q'_0 , q_f\} , T, \Gamma \cup \{Z'_0 \}, D', q'_0, Z'_0 , \{q_f \}), где D' определяется следующим образом:

  1. D'(q'_0 , e, Z'_0) = \{(q_0, Z_0Z'_0 )\} - переход в "режим M ",
  2. Для каждого q \in Q, a\in T \cup \{e\}, и Z \in  \Gamma определим D'(q, a, Z) = D(q, a, Z) - работа в "режиме M " ,
  3. Для всех q \in Q, (q_f , e) \in D'(q, e, Z'_0) - переход в заключительное состояние.

Нетрудно показать по индукции, что L = L(M'). Одним из важнейших результатов теории контекстно-свободных языков является доказательство эквивалентности МП-автоматов и КС-грамматик.

Теорема 4.2. Язык является контекстно-свободным тогда и только тогда, когда он допускается МП-авто- матом.

Доказательство. Пусть G = (N, T, P, S) - КС-граммати- ка. Построим МП-автомат, допускающий язык L(G) опустошением магазина.

Пусть M = (\{ q\} , T, N \cup  T, D, q, S, \varnothing ), где D определяется следующим образом:

  1. Если A \rightarrow u \in P, то (q, u) \in D(q, e, A),
  2. D(q, a, a) = {(q, e)} для всех a \in T.

Фактически, этот МП-автомат в точности моделирует все возможные выводы в грамматике G. Нетрудно показать по индукции, что для любой цепочки w \in T^* вывод S =>+w в грамматике G существует тогда и только тогда, когда существует последовательность тактов (q, w, S) \vdash^+ (q, e, e) автомата M.

Наоборот, пусть дан M = (Q, T,  \Gamma  , D, q_{0}, Z_{0}, \varnothing ) - МП- автомат, допускающий опустошением магазина язык L.

Построим грамматику G, порождающую язык L.

Пусть G = (\{ [qZr] \mid q, r \in Q, Z \in  \Gamma \} \cup \{S\}, T, P, S), где P состоит из правил следующего вида:

  1. S \rightarrow [q_0Z_0q] \in P для всех q \in Q.
  2. Если (r, e) \in D(q, a, Z), \; \text{то} \; [qZr] \rightarrow a \in P, a \in T \cup \{e\},
  3. Если (r, X_1 \ldots X_k) \in D(q, a, Z), k \geq 1, то
\begin{align*}
\text{$[qZs_k] \rightarrow a[rX_1s_1][s_1X_2s_2] \ldots [s_{k-1}X_ks_k]$} \\
\text{для любого набора $s_1, s_2, \ldots , s_k$ состояний из $Q$,}
\end{align*}

Нетерминалы и правила вывода грамматики определены так, что работе автомата M при обработке цепочки w соответствует левосторонний вывод w в грамматике G.

Индукцией по числу шагов вывода в G или числу тактов M нетрудно показать, что (q, w, A) \vdash^+ (p, e, e) тогда и только тогда, когда [qAp] =>+ w.

Тогда, если w \in L(G), то S => [q0Z0q] =>+ w для некоторого q \in Q. Следовательно, (q_0, w, Z_0) \vdash^+ (q, e, e) и поэтому w \in L. Аналогично, если w \in L, то (q_0, w, Z_0) `+ (q, e, e). Значит, S =>[q0Z0q] =>+ w, и поэтому w \in L(G).

МП-автомат M = (Q, T,  \Gamma , D, q_{0}, Z_{0}, F) называется детерминированным (ДМП-автоматом), если выполнены два следующих условия:

(1) Множество D(q, a, Z) содержит не более одного элемента для любых q \in Q, a \in T \cup \{e\}, Z \in  \Gamma ;

(2) Если D(q, e, Z) \ne  \varnothing, то D(q, a, Z) = \varnothing для всех a \in T.

Допускаемый ДМП-автоматом язык называется детерминированным КС-языком.

Так как функция переходов ДМП-автомата содержит не более одного элемента для любой тройки аргументов, мы будем пользоваться записью D(q, a, Z) = (p, u) для обозначения D(q, a, Z) = {(p, u)}.

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

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

функция переходов которого определяется следующим образом:

\begin{align*}
& \text{$D(q_0, X, Y ) = (q_0, XY ), X \in \{a, b\}, Y \in \{Z, a, b\},$} \\
& \text{$D(q_0, c, Y ) = (q_1, Y ), Y \in \{a, b\},$} \\
& \text{$D(q_1, X, X) = (q_1, e), X \in \{a, b\},$} \\
& \text{$D(q_1, e, Z) = (q_2, e).$}
\end{align*}

Нетрудно показать, что этот детерминированный МП-автомат допускает язык L = \{wcw^R \! \mid \! w \in \{a, b\}^+\}.

К сожалению, ДМП-автоматы имеют меньшую распознавательную способность, чем МП-автоматы. Доказано, в частности, что существуют КС-языки, не являющиеся детерминированными КС-языками (таковым, например, является язык из примера 4.1).

Рассмотрим еще один важный вид МП-автомата.

Расширенным автоматом с магазинной памятью назовем семерку M = (Q, T,  \Gamma  , D, q_{0}, Z_{0}, F), где смысл всех символов тот же, что и для обычного МП-автомата, кроме D, представляющего собой отображение конечного подмножества множества Q x(T \cup  \{ e\} )  \times \Gamma ^{*} во множество конечных подмножеств множества Q  \times \Gamma ^{*}. Все остальные определения (конфигурации, такта, допустимости) для расширенного МП-автомата остаются такими же, как для обычного.