|
|
| Определение. Правило грамматики вида ® , где , ОVA, называется цепным. |
| Утверждение. Для КС-грамматики Г, содержащей цепные правила , можно построить эквивалентную ей грамматику Г', не содержащую цепных правил. |
|
Определение. Правило вида ® $ называется аннулирующим правилом. |
| Определение. Правило вида ® a , где A О VA , a О(Vт ИVA) * , называется праворекурсивным, а правило вида ® a - леворекурсивным. |
| Утверждение. Для каждой КС-грамматики Г, содержащей леворекурсивные правила, можно построить эквивалентную грамматику Г', не содержащую леворекурсивных правил. |
| Определение. Цепочка a называется допустимой для автомата М, если существует последовательность конфигураций, в которой первая конфигурация является начальной c цепочкой a , а последняя - заключительной. (sо, a, hо) |--* (s1, $ , $) , где s1 О F . |
| Определение.Множество цепочек, допускаемых автоматом М, называется языком, допускаемым или определяемым автоматом М, и обозначается L(М). |

| Определение.Магазинный автомат М определяется следующей совокупностью семи объектов: M={P , S , sо , f , F , H , hо }, |
| Определение. Символ X, который принадлежит VтU Va называется бесполезным в КС-грамматике Г, если он является недостижимым или непроизводящим. |
| Определение. КС-грамматика называется приведенной, если она не содержит бесполезных символов. |
| Определение. Символ X О VтИ VA называется недостижимым в КС-грамматике Г, если X не появляется ни в одной выводимой цепочке. |
| Утверждение. Если Г = { Vт , Va , I , R } является КС-грамматикой, то по ней можно построить такой магазинный автомат М, что L(M) = L(Г). |
| Определение. Грамматика называется неукорачивающей или грамматикой без аннулирующих правил, если либо 1)схема грамматики не содержит аннулирующих правил, 2)либо схема грамматики содержит только одно правило вида ® $, где - начальный символ грамматики, и символ I не встречается в правых частях остальных правил грамматики. |
| Утверждение. Для каждой КС-грамматики Г', содержащей аннулирующие правила, можно построить эквивалентную ей неукорачивающую грамматику Г, такую что L(Г')=L(Г). |

|
Определение. Если язык L допускается детерминированным М-автоматом , то он называется детерминированным языком. |
| Определение. Конфигурацией автомата М называют тройку (s, a , g ) О S x P* x H* , |
| Определение. КС-грамматика является LL(1) грамматикой тогда и только тогда, когда выполняются следующие два условия: 1 . Для каждого нетерминала, являющегося левой частью нескольких правил: ®a 1 | a 2 | ... | a n, необходимо, чтобы пересечение функций ПЕРВ(a i) и ПЕРВ(a j) было пусто для всех i =/= j. 2 . Для каждого аннулирующего нетерминала ,такого что ==>* $, необходимо, чтобы пересечение множеств ПЕРВ() и СЛЕД() было пустым. |
| Определение . КС-грамматика называется LL(1) грамматикой тогда и только тогда, когда множества ВЫБОР, построенные для правил с одинаковой левой частью, не содержат одинаковых элементов. |
| Определение.Грамматическое вхождение символа грамматики задается номером правила и номером позиции, которая указывает место символа в правой части правила, полагая, что самый левый символ правой части правила является первым. |
| Утверждение. Для каждой LL(1) грамматики Г можно построить детерминированный магазинный автомат М , допускающий язык, порождаемый заданной грамматикой: L ( Г ) = L ( М ). |
| № | Вход | Магазин | Состояние | ||||
| 1. | abba|- | h0 | s0 | ||||
| 2. | bba|- | h0a | s0 | ||||
| 3. | ba|- | h0ab | s0 | ||||
| 4. | a|- | h0abb | s0 | ||||
| 5. | a|- | h0a | s0 | ||||
| 6. | |- | h0aa | s0 | ||||
| 7. | |- | h0 | s1 |
| Определение. В общем случае грамматика относится к классу LL(K) грамматик, если для нее можно построить нисходящий детерминированный распознаватель, учитывающий K входных символов, расположенных справа от текущей входной позиции. |
| Определение. Формальное определение такого автомата имеет вид: M = {P, S, H, F, s0, h0, d}, где P - входной алфавит, S - алфавит состояний, s0- начальное состояние , s0 ОS, F - множество конечных состояний, F является подмножеством S, H - алфавит магазинных сисмволов, записываемых на вспомогательную ленту, h0 - маркер дна, он всегда записывается на дно магазина, h0 О H, d: S * {P И {$}} * H* ® S*H* - функция переходов. |
| Определение. Цепочка допускается расширенным автоматом, если существует последовательность конфигураций, первая из которых является начальной конфигурацией с заданной цепочкой, а последней конфигурацией в последовательности является одна из заключительных конфигураций. ( s0, a,р h0 ) , $|--* ( s1, h0I ), где s1 - одно из заключительных состояний, a - заданная цепочка. Определение. Язык, допускаемый расширенным автоматом, можно определить так: L(M) = { a | (s0, a,р h0 ) |--* ( s1, $,$ ) и s1ОF}. |
3.15. Резюме.| Определение. КС-грамматика называется слаборазделенной, если выполняются следующие три условия: правая часть каждого правила представляет собой либо пустую цепочку $, либо начинается с терминального символа, если два правила имеют одинаковые левые части, то правые части правил должны начинаться разными символами, для каждого нетерминала A, такого что A ==>* $ множество начальных символов не должно пересекаться с множеством символов, следующих за A.: ПЕРВ(A) З СЛЕД(A) = $ |
® ,a
® $
® $
3) Показать, что следующая грамматика не входит в подкласс SLR(1)–грамматик.
®
ab
®
ba
®
$
Пред.Страница
| Определение. Пусть задана грамматика Г, в схеме которой имеется правило r =A®y и задана цепочка g = r1A r2. Если правая часть цепочки правила r является частью цепочки , то можно получить цепочку t = r1y r2 , заменяя правую часть правила грамматики левой частью. В этом случае говорят, что цепочка tt получается путем непосредственного сворачивания цепочки g и используют обозначение t <= g . Определение. Если существует множество цепочек W = ( w1, w2, ...wn ), таких, что w1 Ь w2 , w2 Ь w3 , ... , wn-1Ь wn , то говорят, что цепочка wn сворачивается в цепочку w1 и используют обозначение w1 *Ь wn . |
| Определение. Основой цепочки называют вхождение правой части последнего правила, примененного при правом выводе рассматриваемой цепочки. |
| 1. h0 | (a,a)^ | Перенос |
| 2. h0( | a,a)^ | Перенос |
| 3. h0(a | ,a)^ | Свертка(1) |
| 4. h0( | ,a)^ | Перенос |
| 5. h0(, | a)^ | Перенос |
| 6. h0(,a | )^ | Свертка(1) |
| 7. h0(, | )^ | Перенос |
| 8. h0(,) | ^ | Свертка(4) |
| 9. h0(, |
^ | Свертка(3) |
| 10. h0( |
^ | Свертка(2) |
| 11. h0 | ^ | Допустить |
| Определение: Преобразователем с магазинной памятью (Мп) называется совокупность восьми объектов: Мп={P, S, s0, H, h0, F, W, q}, где P - входной алфавит, состоящий из символов, записываемых на входную ленту; W - выходной алфавит, содержащий символы, записываемые на выходную ленту; H - магазинный алфавит, содержащий символы, записываемые и считываемые из магазина; h0 - маркер дна магазина, он принадлежит H; S - множество состояний преобразователя; s0- начальное состояние из множества S; F - множество конечных состояний, представляющих собой подмножество S; j - функция переходов преобразователя, которая задает отображение, j: Sx{P И {$} x H Ю S x H* x W* . Она может быть записана в функциональном виде: j(s, p, h) = (s', b, e), где h О H, p О P, b О H*, e О W* и s,s' О S. |

| Определение. Цепочку d назовем выходом для цепочки c, если существует последовательность конфигураций, первой из которых является начальная конфигурация с заданной входной цепочкой c, а последней – заключительная конфигурация с выходной цепочкой d: (s0, c, h0I, $) |--* (s', $', $, d). Определение. Переводом, определяемым преобразователем с магазинной памятью Мп, назовем множество пар, состоящих из входных и соответствующих им выходных цепочек. D(Mп) = {(x, y) | (s0, c, h0, $) |--* (s', $', $, y) & s' О F} |
| Утверждение. Для каждой простой СУ-схемы перевода Т = {Va, Vтвх, Vтвых, Q, I} можно построить такой Мп магазинный преобразователь, что D(Т) = D(Мп). |
| Утверждение. Для каждой простой СУ - схемы перевода Т, входная грамматика которой принадлежит классу LL(1) - грамматик, можно построить такой детерминированный магазинный преобразователь Мп, что перевод, определяемый преобразователем, совпадает с переводом, задаваемым СУ - схемой Т. |
| Определение. Транслирующая грамматика, записанная в форме, когда все символы действия в правых частях распо ложены правее всех терминальных и нетерминальных символов, называется постфиксной транслирующей грамматикой. |
,и, разбивая правила грамматики, получаем грамматику в постфиксной форме.
Г 4. 3 : ®,
® a{a},
® ,
® +a{a}{+},
® ,
® -a{a}{-},
® $.
Напомним, что при построении восходящих распознавателей обработка каждого правила A
® ax
с номером k с символом x, занимающим самую правую позицию в правой части правила, связывалась операция Свертка(k). В постфиксной транслирующей грамматике самую правую позицию могут занимать символы действия, поэтому при построении восходящего преобразователя эти символы можно объединить с операцией свертки в одну операцию, которую назовем
Свертка - Действие(k) (СД(k)). Учитывая, что все символы действия постфиксной транслирующей грамматики могут быть объединены с операциями свертки, приходим к заключению, что процедура построения восходящего распознавателя может быть применена для построения восходящего преобразователя при условии, что вместо операции Cвертка (k) будет использоваться операция Свертка - Действие(k) для правил построения постфиксной транслирующей грамматики, содержащая символы действия.
В качестве иллюстрации последнего утверждения рассмотрим построение преобразователя для грамматики Г 4. 3. Выполняя последовательно шаги процедуры построения SLR(1) преобразова-
теля для грамматики с аннулирующими правилами и заменяя операции Свертка(k) для правил 2, 4 и 6 операциями Свертка - Действие(k), получаем таблицы переходов и действий искомого преобразователя в следующем виде.
Таблица 4.1<
I S R P Q + - a I0 S R1 P Q + - R1 a2 P R3 P Q + - R3 + a4 a4 Q R5 P Q + - R5 - a6 a6 h0 I0 S a2
Таблица 4.2
В качестве демонстрации работы преобразователя построим последовательность конфигураций для входной цепочки а + а - а|--, дополнив эту последовательность указателем выполняемого действия.
+ - a |-- I0 D S П П c7 R1 c1 c1 CD2 CD2 CD2 P П П c7 R3 c3 + П a4 CD4 CD4 CD4 Q П П c7 R5 c5 - П a6 CD6 CD6 CD6 a4 П
Вход Магазин Действие Выход
1. а + а - а|-- h0 П -
2. + а - а|-- h0 a2 СД2 a
3. + а - а|-- h0 S П a
4. а - а|-- h0 S + П a
5. - а|-- h0 S + a4 СД4 aa +
6. - а|-- h0 S P П aa +
7. а|-- h0 S P- П aa +
8. |-- h0 S P - a6 СД6 aa + a -
9. |-- h0 S P Q С7 aa + a -
10. |-- h0 S P Q R5 С5 aa + a -
11. |-- h0 S PR3 С3 aa + a -
12. |-- h0 S R1 С1 aa + a -
13. |-- h0 I0 Д aa + a -
Приведенная последовательность конфигураций показывает, что выходная цепочка формируется при выполнении операций СД2, СД4 и СД6 соответственно на 2, 5 и 8 шаге.
Пред.Страница След.Страница Раздел Содержание
Пример построения преобразователя




















| Определение. Если два состояния sk иsj под действием одного и того же входного сигнала х переходят в одно и то же состояние s1 , то они называются соседями первого рода. |




























Содержание курса
2.
4. Способы описания перевода. Бесскобочные выражения.,
,
®,
® $ }.
| Определение. Если при построении вывода цепочки a при каждом применении правила заменяется самый левый нетерминальный символ, то такой вывод называется левым или левосторонним выводом a. Если при построении вывода a, всегда заменяется самый правый нетерминальный символ промежуточной цепочки, то вывод называется правым или правосторонним выводом a. |


| Определение. Цепочка языка L(Г) называется неоднозначной, если для её вывода существует более чем одно синтаксическое дерево. Если грамматика Г порождает неоднозначную цепочку, то она называется неоднозначной. |
| Определение. Две грамматики Г1 и Г2 называются эквивалентными, ecли они порождают один и тот же язык, т.е. L(Г1) = L(Г2). |
| Определение. Конечное множество символов, неделимых в данном рассмотрении, называется словарем или алфавитом, а символы, входящие в множество, - буквами алфавита. |
| Определение. Последовательность букв алфавита называется словом или цепочкой в этом алфавите. Число букв, входящих в слово, называется его длиной. |