formal_language_theory / lectures / unit_10
.pdfЧасть 2: Пример 1.2.
Рассмотрим какой-нибудь левосторонний вывод в схеме T, например:
(1) |
(E + T, ET+) |
( 2) |
|
|
(E, E) |
|
|
|
|
T |
|
T |
|
|
( 2) |
|
|
( 4) |
|
|
(T(1) + T, T(1)T +) |
|||
T |
|
|
T |
|
( 4) |
|
(6) |
|
|
|
|
|
|
|
(F + T, F T +) |
|
|
||
T |
|
T |
|
|
|
|
|
|
|
(6) |
(a + T, aT+) |
( 3) |
|
|
|
T |
|
|
|
T |
|
|
|
|
( 3) |
|
|
|
(4, 6) |
|
(a + T * F, aTF * +) |
|
||
T |
|
|
|
T |
|
|
|
|
|
(4, 6) |
(a + a * F, aaF * +) |
(6) |
||
T |
|
T |
||
|
|
|
|
|
(6) |
(a + a * a, aaa * +). |
|
|
|
T |
|
21 |
||
|
|
|
|
Часть 2: Пример 1.2.
Нетрудно догадаться, что
(T) = {(x, y)
x — инфиксная запись,
y — эквивалентная постфиксная запись арифметического выражения}.
22
Простые синтаксически управляемые трансляции
Определение 1.6. Схема синтаксически управляемой трансляции называется
простой, если в каждом её правиле
A ,
связанные нетерминалы в цепочках и встречаются в одинаковом порядке.
Трансляция, определяемая простой схемой,
называется простой синтаксически управляемой трансляцией.
23
Простые синтаксически управляемые трансляции
Многие, но не все, полезные трансляции могут быть описаны как простые.
В примере 1.2 схема T, как и определяемая ею трансляция (T), является простой.
Простые синтаксически управляемые трансляции интересны тем, что каждая из них может быть реализована транслятором в классе недетерминированных магазинных преобразователей (рис. 1.1).
24
Простые синтаксически управляемые трансляции
Другими словами, магазинные преобразователи характеризуют класс простых синтаксически управляемых трансляций
таким же образом, как магазинные автоматы характеризуют класс контекстно-свободных языков.
К рассмотрению таких трансляций мы сейчас и перейдем.
25
§1.3. Магазинные преобразователи и синтаксически управляемые трансляции
Здесь мы рассмотрим магазинные преобразователи, отличающиеся от магазинных автоматов тем, что у них есть выходная лента.
26
Недетерминированный магазинный преобразователь
|
|
|
|
|
Вход: |
|
|
|
|
|
|
|
|
|
|
|
ai |
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
М |
|
Zk |
|
|
|
a1 |
|
a2 |
|
a3 |
|
|
|
ai |
|
|
|
|
|
an |
|
|
||||||||||
|
|
|
|
|
||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
q Q |
|
|
|
|
||||||||||
а |
|
|
|
Z k |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
г |
|
|
|
|
|
|
|
|
|
|
|
Q |
|
|
|
|
|
|
||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
( |
|
|
|
|
|
) |
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
а |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2Q |
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
з |
|
Z2 |
|
|
|
Выход: |
|
|
|
|
|
|
|
|
|
|
bj |
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
и |
|
Z1 |
|
|
|
b |
1 |
|
b |
2 |
|
b |
3 |
|
|
|
|
|
b |
j |
|
|
b |
m |
|
|
||||||
н |
|
Z0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Рис. 1.1. |
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Ret 24 |
|
|
|
|
||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
27
Определение 1.7.
Недерминированный магазинный преобразователь
(npdt — nondeterministic pushdown transducer) есть формальная система
P = (Q, , , , , q0, Z0, F), где
Q — конечное множество состояний,— конечный входной алфавит,
— конечный алфавит магазинных символов,— конечный выходной алфавит,
q0 Q — начальное состояние,
Z0 — начальный символ магазина,
F Q — множество конечных состояний,
— отображение типа Q ( { }) 2Q * *,
причём область значений представлена конечными подмножествами троек из Q * *.
28
Магазинный преобразователь
Запись
(q, a, Z) = |
{( p , |
, y )} |
n |
|
|
||||
i |
i |
i |
i 1 |
|
|
|
|
|
означает, что npdt P, находясь в состоянии q Q, сканируя a на входной ленте или не зависимо от текущего входного символа в случае a = , имея Z на вершине магазина, переходит в одно из состояний pi Q, заменяя в магазине символ Z на цепочку i * и записывая цепочку yi * на выходную ленту.
29
Магазинный преобразователь
При этом входная головка сдвигается на одну ячейку вправо, если a , иначе головка остается на месте, головка магазина сканирует последнюю запись в магазине, а головка выходной ленты размещается справа от последней её записи.
30