Главная Промышленная автоматика.

гл. 3. ТЕОРИЯ ПЕРЕВОДА


Рис. 3.4. Граф переходов.

ственное различие между парами q, q и q, q состоит в том, что если символу. а предшествует четное число минусов, то первая из них выдает --а, а не только а.

Для входа ~аЛ--й--!-а последовательность тактов пре-

эбразователя Ы. такова;

too» -а + -fl-+ -о, а + -+ е)

f-Л-а-+ -а, -а)

Н(2» -й--1---

Ь(?з. <--а, -а)

+ -Д. -а~а) Hto* -а, -а-а)

G, - а-а) \-(qi, е, а-а + а)

Отсюда ясно, что М отображает цепочку -а-]--а--[--а в

- а-а-а, поскольку q - заключительное состояние, П

Конечный преобразователь М назовем детерминированным если для всех qQ

(1) либо б(, а) содержит не более одного элемента для каждого й 2 и 6 ((jf, пусто, либо

(2) б {q, е) содержит один элемент и б а) пусто для всех

В примере 3.8 конечный преобразователь детерлшпированпый. Заметим, что детерминированный конечный преобразователь может давать несколько переводов для одного входа.

Пример 3.9. Пусть M = ({9o, J, {а), {Ь\, б, q, и б а) = -{(1.)}> Тогда

h-{q„e,b)

- допустимая последовательность тактов для всех iO. Таким образом, r{M) = {{a,b)\i-\}. □

Известно несколько простых модификаций определения детерминизма для конечных преобразователей, гарантирующих единственность выхода. Мы предлагаем потребовать, чтобы в заключительном состоянии были невозможны е-такты.

Для HCKOTOj)bix классов языков можно получить ряд свойств замкнутости, если рассматривать преобразователи как операторы, определенные на языках. HanpiiMep, если М - конечный преобразователь и язык L содержится в области определения отношения х{М), то полагаем

M(L){y\xL и (ХуУ)т(М)}

Можно также определить обратное конечное преобразование, а именно, если М -конечный преобразователь, положим ()- =={x\yL и {х,у)ех(М)\.

Нетрудно показать, что конечные преобразования (прямые и обратные) сохраняют свойства регулярности и контекстной свобод-ности. Иными словами, если L-регулярное множество (КС-язык) и М-конечный преобразователь, то M(L) и M~(L) - регулярные множества (КС-я:ыки). Доказательства этих фактов оставляем в качестве упражнений. С их помощью можно доказать, что некоторые языки не регулярны (или не контекстно-свободны).

Пример 3.10. Язык, порождаемый грамматикой G с правилами

5~if5then5a не регулярен. Обозначим

L = L (G) П (ii)* а (then g)* = {(if)" а (then й)« 1 п >0} Рассмотрим конечный преобразователь A1 = {Q, 2, А, б, д, F), где

О) Q = {Яi\0<i<Щ,

(2) I={a,i, f, t,h, V,nf,

(3) A-{О, U,

(4) б определяется диаграммой, изображенной на рис. 3.5,

(5) f = {?.}.

А. Лхо, Дж. Ульман, т. I 257



Здесь "е" означает букву е в отличие от пустой цепочки. Таким образом, М (LJ = (0*1* ft >0J, а это, как мы знаем, не регулярное множество. Так как класс регулярных множеств замкнут относительно пересечения и конечных преобразований, то L(G) не регулярное множество. □


Рис. 3.5. Диаграмма преобразователя М.

3.1.4. Преобразователи с магазинной памятью

Теперь введем другой важный класс трансляторов, называемых преобразователями с магазинной памятью. Эти преобразователи получаются из автоматов с магазинной памятью, если их снабдить выходом и разрешить на каждом такте выдавать выходную цепочку конечной длины.

Определение. Преобразователем с магазинной памятью (МП-преобразователем) называется восьмерка P~(Q, S, Г, Д, б, а, ai) где все символы имеют тот же смысл, что в определении МП-автомата, за исключением того, что Д - конечный выходной алфавит, а 6-отображение множества Qx(2u{)xr в множество конечных подмножеств множества QxFxA*.

Определим конфигурацию преобразователя Р как четверку {q X, а, у), где х и а те же, что у МП-автомата, а у - выходная цепочка, выданная вплоть до настоящего момента. Если 6 (9, а, Z) содержит (г, а, г), то будем писать [q, ах, Zy, у)\- {г, X, ау, yz) для любых xgS*, у € Г* и уА*-

Цепочку у назовем выходом для х, если {q,, х, Z, е)1-*((?, е, о:, у) длянекоторых qF и аГ*. Переводом (или преобразованием), определяемым Мй-преобразователем Р (обозначается г(Р)), назовем множество

{( у) I 2о, е) \-* [q, е, а, у) для некоторых qF и а С Г*}

Аналогично МП-автоматам можно говорить о преобразовании входа X в выход у опустошением магазина, если (q, х, Z, е)\-* {q,e,e,y) для некоторого qQ. Переводом, определяемым преобразователем Р опустошением магазина (обозначается (Р)),

назовем множество

{{X, у) I (?о, > -0. ) to. у) ДЛЯ некоторого д € Q)} Аналогично расширенным МП-автоматам можно определить расширенные МП-преобразователи (у них верх магазина расположен справа).

Пример зли Рассмотрим МП-преобразователь P{{q}, {+.*,-£}. {а, 6,q,E, {q})

где 6 определяется равенствами

6(9, а, £)={(?, е, а)} b{q, Jr,E) = {{q, ЕЕ-{-,е)) b(q,.,E) = \(q,EE,e)} {Я. е, +){{q,e, +)} (Я, . *) = {to, »)[ Для входа --ааа МП-преобразователь Р сделает такую последовательность тактов:

{q, + if-aaa, Е, е) \-{д, * ааа, ЕЕ +, е) 1-(9, ааа, ЕЕ * Е -f, с) [-{q,aa,E*E а) [~{q,a,*E + , аа) 1-(9, а, £ + , аа *) \- (я* е, 4-, аа * а) y-(q, е, е,аа*а -f)

Таким образом, Р переводит цепочку + * ааа в цепочку аа»а +» опустошая магазин. Можно проверить, что

т(Р) -{(х, у)\х - префиксное польское арифметическое выражение в алфавите ( + , а} и у-соответствующая постфиксная польская запись)- П

Определение. Если P-:(Q,S, Г, \,6,q,Z, f) -МП-преобразователь, то МП-автомат (Q, 2, Г, 6, q, Z, F), где 6 (q, а, Z) содержит {г, у) тогда и только тогда, когда 6{q,a,Z) содержит t Y. у) для некоторого у, назовем МП-автоматом, лежаиим б основе преобразователя Р (нли просто основой Р).

Будем говорить, что МП-нреобразователь Р -(Q, 2, Г, Л, б, о, 0. F) детерминированный (ДМП-преобразователь), если

(О для всех qQ, о 2U {е} и Z6Г множество {q,a,Z) одержит не более одного элемента, 9*



1 ./i. 1 tnjFMH ПЕРЕВОДА

(2) если b(q,ey 1)Ф0, то Ь{д, а, Z) = 0 для всех а2),

Очевидно, что если L-область определения отношения т(р) для некоторого МП-преобразователя Р, то L~L{P), где Р - МП-автомат, лежаш.ий в основе Р.

Многие из результатов, доказанных в разд. 2.5 для МП-автоматов, естественным образом распространяются на МП-преобразователи. В частности, аналогично леммам 2.22 и 2.23 можно доказать следующую лемму.

Лемма 3.1. Т~т(Р) для МП-преобразователя Р тогда и только тогда, когда Т~т(Р) для подходяиго MU-преобразо-вателя Р.

Доказательство. Упражнение. П

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

Докажем теперь, что перевод является простым СУ-переводом тогда и только тогда, когда он определяется МП-преобразователем. Такидт образом, МП-преобразователи характеризуют класс простых СУ-переводов так же, как МП-автоматы характеризуют класс КС-языков.

Лемма 3.2. Пусть 7(N, 2, Д, R, S) - простая СУ-схема. Существует такой МП-преобразователь Р, что Тр(Я)т(Г).

Доказательство. Пусть С,--входная грамматика схемы Т. Построим Р так, чтобы он распознавал сверху

вниз, как в лемме 2.24.

При моделировании правила Л-+а, р схемы Г преобразователь Р заменит в магазине верхний символ Л цепочкой а, в которую вставлены выходные символы из цепочки р, т. е. если а = Х(,Лх, ... Л„х, и )УоЛгУ1 • то символ Л будет

заменен цепочкой Х(уЛху ... Аху. Надо уметь, однако, отличать символы алфавита 2 от символов алфавита Д, чтобы можно было правильно разбивать цепочки х,у,- на две части. Если S и Д не пересекаются, то никакой проблемы нет. В общем случае определим новый алфавит А, соответствующий Д, но заведомо не пересекающийся с S. Будем считать, что Д состоит

) Заметим, что это определение несколько сильнее утверждения о том, что лежащий в основе МП-автомат дстерминнрованный. Последнее может быть и тогда, когда (1) не выполняется из-за того, что МП-преобразователь может выдать два разных выхода на двух шагах, которые во всем остальном совпадают. Заметим также, )то из условия (2) следует, что если 6{q, a,Z) = 0 для некоторого 2, то b{q, е, Z)i3.

из новых символов а, соответствующих аЛ. Тогда ДП2=0 и естественно определить такой гомоморфизм h, чток(а) = а

пля каждого а€ Д-

Пусть 2, NUXUA, Д, б, 9, S, 0), где 6 определя-

ется так:

(1) если АхВх ... BXf,, уВу . -. 6/ -правило из R для >0, то 6(t/, е. Л) содержит (9, Xof/oSj.i; ... SftXftf/ft, в), где yih(yi) для 0<t<;

(2) b{q,a,o) ~{(q,e,e)) для всех а 2;

(3) Hq,e,a) = {{q,e,a)) для всех сД.

Индукцией по m и /г можно показать, что для ЛN н т, /11 справедливо следующее утверждение: (3.1.3) (Л, А)="(х, у) для некоторого т тогда и только тогда, когда (q, X, Л, е)\-" {q, е, е, у) для некоторого п.

Необходимость. Базис, т=\, выполняется тривиально, так как правило А~-*х,у должно принадлежать R. Тогда (9, х, Л, е) I- {q, X, xh (у), е) (q, е, h (у), е) [-* {q, е, е, у).

Для доказательства шага индукции допустим, что (3.1.3) справедливо для значений, меньших т, и пусть (Л, Л) =ф (XpBiXj ... SftXft, уВ.у, .. . ВУп)"" {X, у). Так как в простой СУ-схеме порядок вхождений нетерминалов не меняется, можно писать x = X(,WjXi. . -WftXj и у = У(РгУг - • - Ук» причем {Bt, Bi)"i («,-, f,) для Xik, где /7z<m для каждого /. Таким образом, по предположению индукции {q, и-, Bi, е)* (q, ееи). Объединяя эти последовательности тактов, получаем

(й, X, Л, е) Ь (9, X, Xoh (0) 1 - - • Ef,Xf,h [у), е)

Ь* (q, их ... WftXft, h (Уо) В ... Bf,x„ h (у). е) Н*((?. uXi . .. пхд, В ... BfXkh{y), (/,) [-*(. -1 • • Л. xMyi) ftV(ft), y<ii} h* ... (q, e, e, y)

Достаточность. Опять базис, nl, тривиален, так как правило Л-е должно принадлежать R. Для доказательства Шага Индукции допустим, что первый такт преобразователя Р Имеет вид

to. х,А,е) I- {q, X, xh (у) Bxji (i/J ... BfXfJt {y), e)

где 2*, (/,-Д*, ?i(£/,) Д*. Тогда цепочка Xq должна быть префиксом цепочки х и на следующих тактах работы преобразователя Р цепочка х будет прочитана на входе и устранена из агазина, а затем на выходе будет выдана цепочка у,. Пусть X оставшаяся часть входной цепочки. Тогда цепочка х должна >летъ префикс и, который приводит к тому, что магазинные





0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 [42] 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101

0.0026