![]() |
|
Главная Промышленная автоматика. гл. 3. ТЕОРИЯ ПЕРЕВОДА Привлечь и другие, более сильные, отображения; некоторые из них рассматриваются в упражнениях. Определение. Пусть = (N, 2, Р,, S,) и = (N, 2, Р„ S,) КС-грамматики и L{Gy)=L{G). Будем говорить, что G левопо-крывает G, если найдется такой гомоморфизм h, отображающий в Pj, что (1) если алоу, то Syf,jy=w, (2) для каждого л, для которого 8уп-=хю, существует такой разбор л, что S.w и /i(jt)jt. Будем говорить, что Gg правопокрывает G, если найдется такой гомоморфизм h, отображающий Р в Р, что (1) если S-=nW, то =Ф/,(п)tc, (2) для каждого л, для которого Sjw, существует такой разбор л, что 5з=Фла и /1(я) = л. Пример 3.28. Пусть Gi - грамматика с правилами (1) S-OSl (2) а (5 - эквивалентная ей грамматика в нормальной форме Хомского с правилами SAC BSC АО УПРАЖНЕНИЯ (2) (3) (4) (5) Мы видим, что Gg левопокрывает Gj; соответствующий гомоморфизм определяется равенствами h{2) = 2, h{3) h(4)=h(S) = e. Например, 5i432..5=>g.00U, /1(1432455)-12 и 5,,=>с,0011 Ga также и правопокрывает Gj, причем подходит тот же гомоморфизм h. Например, S,35..4.a.0011, /1(1352544) = 12 и 5==>, 00П Грамматика Gj не лево- и не правопокрывает G. Так как обе грамматики однозначные, то соответствие между разборами фиксировано. Поэтому гомоморфизм g, доказывающий, что G левопокрывает Gg, должен отображать 1"2 в (143)"24(5)"+\ а это, как легко показать, невозможно. □ Можно показать, что многие из конструкций разд. 2.4, преобразующих грамматики к нормальным формам, дают грамматики, лево- или правопокрывающие исходные грамматики. Пример 3.29. Ключевой шаг при построении нормальной (Ьормы Хомского (алгоритм 2.12) состоит в замене правила JLX, X, {п>2) правилами Л-ХВ,, В,-. Х,В, ..., B.n-n-in: Можно показать, что в результате получается грамматика, левопокрывающая исходную: достаточно отобразить правило Л-Xii в Л->Х...Х„, а каждое из правил 5,-Хаз, •S„-2--X„ iX„ в пустую цепочку. Если мы хотим получить правое покрытие, то Л Х... Х„ мо.жно заменить пг А->-ВуХ, Ву-ВХ-у, ..В -~уХуХ. □ Другие результаты о покрытии оставляем в качестве упражнений. УПРАЖНЕНИЯ 3.4.1. Дайте алгоритм построения дерева вывода по левому или правому разбору. 3.4.2. Пусть G -КС-грамматика. Покажите, что Lf-детерминированный КС-язык. 3.4.3. Всегда ли -детерминированный КС-язык? *3.4.4. Постройте детерминированный МП-прсобразователь Р для которого т(Р) = {(я, л)л и л-правый разбор для того же дерева вывода}. *3.4.5. Можете ли Вы построить такой детерминированный МП-пршбразователь Р, что х {Р) = {(п, и л-соот- ветствующий левый разбор}. 3.4.6. Постройте левые и правые разборы в грамматике G для цепочек " (а)(()), (6)a + (ct + a), (B)fif*a » а. 3.4.7, Пусть КС-грамматика G определяется следующими занумерованными правилами: (1) S-bits then Seise S (2) S~s (3) B~BAB (4) BB\/B (5) Bb Постройте СУ-схемы, определяющие Т? и Г?. йчя гройте МП-преобразователи, определяющие Г? и Г? я грамматики G из упр 3.4.7, гл. 3. ТЕОРИЯ ПЕРЕВОДА УПРАЖНЕНИЯ 3.4.9. Докажите теорему 3.10. 3.4.10. Докажите теорему 3.11. 3.4.11. Дайте определение СУ-схемы и докажите, что Ваша схема отображает цепочки нз L{G) в их правые разборы. 3.4.12. Дайте алгоритм, превращаюш,ий расширенный МП-преобразователь в эквивалентный МП-преобразователь. Ваш алгоритм должен быть таким, чтобы при применении его к детерминированному расширенному МП-преобразователю получался ДМП-преобразователь. Докажите, что Ваш алгоритм делает это. 3.4.13. Докажите теорему 3.12. *3.4.И. Постройте детерминированные правые анализаторы для грамматик S-e SAB АМХ А~е В-ВХ В-е *3.4.(5. Постройте детерминированные левые анализаторы для грамматик (1) (2) (3) (1) (2) (3) (4) (5) *3.4.16. Какие из грамматик в упр. 3.4.14 имеют детерминированные левые анализаторы? Какие в упр. 3.4.15 имеют детерминированные правые анализаторы? *3.4.17, Дайте детальное доказательство того, что грамматика из примера 3.26 (3.27) право- (лево-)анализируема, но не лево- (право-)анализируема. 3.4.18. Дополните доказательство теоремы 3.14. 3.4.19. Дополните доказательство леммы 3.15. 3.4.20. Дополните доказательство теоремы 3.15. Определение. Левым участком правила с непустой правой частью назовем самый левый символ (терминал или нетерминал) его правой части. Анализом (или разбором) цепочки по левому участку называется последовательность правил, соответствующих внутренним вершинам дерева разбора этой цепочки, в котором все вершины упорядочены следующим образом. Если вершина п имеет р прямых потомков п, п, . .п, то все вершины поддерева с корнем п предшествуют п. Вершина/г предшествует всем другим ее потомкам. Потомки вершины п предшествуют потомкам вершины которые в свою очередь предшествуют потомкам вершины п и т. д. Грубо говоря, при анализе по левому участку левый участок правила распознается снизу вверх, а остальная часть правила-сверху вниз. Пример 3.30. На рис. 3.11 показано дерево разбора цепочки ЬЬаааЪ, порожденной грамматикой с правилами (1) S-AS (2) S~BB (3) A~bAA (4) А~а (5) ВЬ (6) В-е Упорядочение вершин, о котором идет речь в определении анализа по левому участку, таково, что вершина п и ее по- ®ffB фпа Т I I 0Щ (2)iio ®f*n ©15 @mi Рис. 3.П. Дерево разбора. ТОМКИ Предшествуют вершине п, за которой следуют п и ее потомки. Вершина п предшествует вершине п, за которой следуют п, и их потомки. Вершина п предшествует вершине п, за которой следуют п, n-i и их потомки. Продолжая в том же духе, получаем упорядочение вершин ппппппппппппщпПуп гл. 3. ТЕОРИЯ ПЕРЕВОДА Разбором по левому участку является последовательность правил, соответствующих внутренним вершинам в этом упорядочении. Таким образом, разбором цепочки ЪЪаааЬ по левому участку будет последовательность 334441625. П Другой метод определения разбора по левому участку для цепочки, порождаемой грамматикой G, заключается в использовании следующей простой СУ-схемы, ассоциируемой с G. Определение. Пусть G = (N, 2, Р, S) -КС-грамматика, в которой правила занумерованы от 1 до р. Пусть Tf - простая СУ-схема (N, 2, jl, . . ., pj-, S), где для каждого правила из Р в множество R включается правило, определяемое так: если i-e правило из Р имеет вид Л-Ва или Л-аа, или Л-eroR содержит правило вида ЛВа, Bia. ,или Л-аа, ia, или А-t-e, i соответственно, где а получается из а удалением всех терминальных символов. Тогда если (ш, л) £т(7£), то л -разбор по левому участку цепочки w. Пример 3.31. Для грамматики из предыдущего примера схема Т% такова: S->Л5, A\S S-BB, В2В A~bAA,, ЗАА Аа, 4 B~b, 5 В-е, б Можно убедиться, что (bbaaab, 334441625) 6т(Г). □ 3.4.21. Докажите, что {w, л)т(7£) тогда и только тогда, когда л -разбор по левому участку цепочки w. 3.4.22. Покажите, что для каждой КС-грамматики существует (недетерминированный) МП-преобразователь, отображающий цепочки языка, порождаемого этой грамматикой, в нх разборы по левому участку. 3.4.23. Разработайте алгоритмы, отображающие разборы по левому участку в (1) соответствующие левые разборы, (2) соответствующие правые разборы, и -обратно. 3.4.24. Покажите, что ec.;iH Gg лево- (право-)покрывает Gg и Gj, лево- (право-)покрывает G, то Gy лево- (право-)покрывает Gj. 3.4.25. Пусть Gj -грамматика без циклов, Покажите, что Gi лево- и правопокрывается грамматиками, не содержащими цепных правил. 3.4.26. Покажите, что каждая грамматика без циклов лево-и правопокрывается грамматиками в нормальной форме Хомского. *3.4.27. Покажите, что не каждая КС-грамматика покрывается грамматикой, не содержащей е-правил. ЗАМЕЧАНИЯ по ЛИТЕРАТУРЕ 3.4.28. Покажите, что алгоритм 2.9, устраняющий бесполезные символы, дает грамматику, лево- и правопокрывающую исходную. **3.4.29. Покажите, что не каждая приведенная грамматика лево- или правопокрывается грамматикой в нормальной форме Грейбах. Указание: Рассмотрите грамматику S->501 S11011. **3.4.30. Покажите, что утверждение из упр. 3.4.29 остается верным, если в определении покрытия заменить гомоморфизм конечным преобразованием. *3.4.31. Останется ли верным утверждение из упр. 3.4.29, если заменить гомоморфизм МП-преобразованием. Проблема для исследования 3.4.32. Было бы хорошо, если бы всегда, когда G лево-или правопокрывает G, каждая СУ-схема с G в качестве входной грамматики была эквивалентна некоторой СУ-схеме, входной грамматикой которой служит Gg. К сожалению, это не так. Можете ли Вы найти условия, связывающие G и G, при которых СУ-схемы с входной грамматикой G образуют подмножество СУ-схем с входной грамматикой Gg? Замечания по литературе Дополнительные подробности, касающиеся грамматического покрытия, можно найти б работах Рейнольдса и Хаскела [1970], Грэя [1969] и Грэя и Харрисона [1969]. В некоторых ранних статьях анализ по левому участку назывался восходящим анализом. Более полное изложение метода анализа по левому участку содержится в монографии Читэма [1967J. 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.0019 |