УДК 681.51
© Л.Н. Федорченко
ЭКВИВАЛЕНТНОСТЬ КАК ОТНОШЕНИЕ ПОДОБИЯ В ТРАНСЛЯЦИИ ЯЗЫКОВ
В статье представлен краткий обзор различных типов преобразований на грамматиках, применяемых при автоматической генерации анализаторов языка.
Ключевые слова: эквивалентные преобразования грамматик, структурная эквивалентность, отношение подобия.
© L.N. Fedorchenko
EQUIVALENCE AS THE SIMILARITY RELATION IN LANGUAGE TRANSLATION
The paper provides with a brief overview of the different types of transformations on grammars used in the automatic generation of parsers.
Keywords: equivalent transformations of grammars, structural equivalence, similarity relation.
Введение
Каждое преобразование, выполняемое на трансляционных КС-грамматиках [1]-[3] может задаваться как отношение подобия, определяемое на классах грамматик. Такие отношения имеют непосредственную связь с сохранением семантического значения грамматических конструкций при эквивалентных преобразованиях синтаксиса, так как конечной целью трансляции является получение последовательности действий, предписываемых вычислительной среде.
Из грамматик наиболее простыми для разработки являются регулярные грамматики [1], которые порождают регулярные языки, обрабатываемые конечно-автоматными механизмами. Чем левее класс грамматик в иерархии Хомского, тем более эффективный алгоритм анализа, а значит и трансляции, можно построить по спецификации. Поэтому на практике широко применяется подкласс грамматик типа 0 (по иерархии Хомского) -контекстно-свободные грамматики (КСГ), относительная простота которых позволяет применять для анализа КС-языков эффективные полиномиальные алгоритмы. Например, алгоритм Эрли (Early) [4] для КСГ имеет
вычислительную сложность O(n3), где n - длина входной цепочки. Более сильные ограничения на КС-языки (LR(k),LL(k)) позволяют строить анализаторы, имеющие линейную сложность разбора. Ценой за высокую эффективность является усложнение грамматик, снижение наглядности спецификации синтаксиса, необходимость применения средств уточнения анализа. Всё это выводит спецификацию языка за рамки единого формализма.
Перевод грамматик из одного класса в другой является задачей эквивалентных преобразований, которые предполагают такое изменение правил грамматики, при котором язык (множество слов), порождаемый исходной грамматикой, совпадает с языком, порождаемым преобразованной грамматикой.
Рис. 1. Схема применения эквивалентного преобразования при разборе Таким образом, разработчики трансляторов и инструментальных систем, автоматизирующих процесс разработки, при настройке синтаксиса всегда стремятся преобразовать его таким образом, чтобы получить грамматику, принадлежащую к наиболее простому классу иерархии Хомского или к тому подклассу КСГ, для которого есть встроенный в системе автоматического построения трансляторов метод синтеза анализатора языка.
При автоматизированной реализации языка дополнительно к задаче упрощения грамматики приходится решать задачу разрешения конфликтных ситуаций в процессе построения распознавателя (анализатора) языка, связанную с языковой неоднозначностью и недетерминированностью распознающего автомата. Снять эти проблемы можно только с
помощью эквивалентного преобразования грамматики, которое позволяет преобразовать правила грамматики таким образом, что распознающий автомат не содержит конфликтных состояний.
1. Слабая и структурная эквивалентность
По определению две КС-грамматики, порождающие один и тот же язык, слабо эквивалентны. Если две грамматики G1 и G2 слабо эквивалентны, тогда для каждого дерева разбора 71 грамматики G1 существует дерево разбора Т2 грамматики G2, которые имеют одну и ту же крону, т.е. порождают одно и то же слово, и наоборот. В этом смысле слабая эквивалентность является простейшим отношением грамматического подобия КС-грамматик. Но такое отношение ничего не говорит о форме деревьев вывода и о связи между ними. Как правило, отношения грамматического подобия вводятся именно с целью описать такие связи между деревьями выводов двух грамматик, и почти всегда они предполагают слабую эквивалентность. Другим полюсом в иерархии понятий грамматического подобия является структурная эквивалентность, предложенная в работах [5] - Макнотоном и в [6]-[7] -Паулом и Ангером. Для любой КС-грамматики G = (Ы,7,Р,Б) определяют скобочную версию G() следующимобразом:
= (N,7и{(,) },Р0,Б),
где Р0 = {А ^(а) | А ^аеР} .
Таким образом, 7^))является линейно-скобочным кодированием деревьев вывода языка 7(0).
Определение 1. Две КС-грамматики G1 и G2 структурно эквивалентны, если 7(^()) = 7^2()).
В этом случае для каждого дерева вывода в одной КС-грамматике существует конгруэнтное дерево вывода того же слова в другой грамматике, т.е. дерево, отличающееся от первого разве что пометками не концевых вершин. Требуя соответствия уже не всех деревьев вывода для каждого выводимого слова, а лишь некоторых (но, по крайней мере, одного), можно ввести отношение частично структурной эквивалентности. Однако, в то время как проблема структурной эквивалентности КС-грамматик оказывается алгоритмически разрешимой [5], [6], проблема частичной структурной эквивалентности КС-грамматик алгоритмически неразрешима.
В работе [6] авторами представлен алгоритм для порождения структурно эквивалентных простых детерминированных грамматик, соответствующих данной КС-грамматике. Если такой грамматики не существует, то алгоритм заканчивает работу с указанием на этот факт. В [7] этот результат расширен до 77(1) -грамматик без в -правил (правила с пустым порождением).
Другие результаты исследований о структурной эквивалентности появились в работах [8] -РгаШег и [9] - Та^исЫ& Ка8аш1, в которых представлены преобразования КС-грамматики G1 к структурно-экви-валентной КС-грамматике G2, которая имеет либо минимальное число нетерминальных символов, либо минимальное число правил.
Понятие с ограничениями большими, чем структурная эквивалентность, было введено Гинзбургом и Харрисоном в [10, 11].
Пусть G - КС-грамматика, в которой все правила перенумерованы; пусть А = {[г- ,]■ 11 < ■ < |Р|} . Определим скобочную версию G[ ]:
^ = {Ы, 7 и А, Р[], Б}, где Р = {А ^ а]г- | А ^ а из Р с номером ■}
Определение 2. Две КС-грамматики G1 и G2 сильно структурно эквива лентны, если существуют перенумерованные правила в Р1 и Р2, такие что при этой нумерации 7(ад = 7^2[]).
Каждое слово в языке 7^]) не только содержит достаточно информации, чтобы определить структуру дерева вывода (так же как в 7^))), но также достаточно информации, чтобы пометить внутренние вершины дерева.
Проблема сильной структурной эквивалентности алгоритмически разрешима, так как существует только конечное число нумераций, а для всякой такой нумерации скобочная версия G[] определяет простой детерминированный язык (S -язык). Преобразование G[] в S -грамматику
прямое. Кореньяк и Хопкрофт в [12] доказали, что проблема, порождают ли две S -грамматики один и тот же язык, алгоритмически разрешима. Сравнительно недавно в работе [13] этот результат был повторён.
Хотя скобочные грамматики Gq, G[] и обеспечивают более строгое понятие грамматического
подобия, все же они слишком ограниченны: деревья выводов идентичны с точностью до меток нетерминалов.
Многие авторы пытались ослабить эти отношения грамматического подобия: примерами такого рода отношений грамматического подобия являются грамматические функторы и грамматические формы. Грамматические функторы (Х-функторы) были введены Хотцем (Hotz) как специальные функторы на категориях, связанных с грамматиками общей фразовой структуры, а впоследствии рассматривались с более практической точки зрения - в связи с проблемой синтаксического анализа [15].
Грамматические формы впервые появились в работе Кремерс и Гинзбурга [14], где из основной (master) грамматики с помощью подстановок нетерминальных и терминальных символов получаются другие грамматики, которые обладают теми же анализирующими свойствами, что и основная грамматика.
Существуют и другие примеры отношений грамматического подобия. В работе [16] - (Hunt, Rozenkrantz) многие из них обсуждаются с точки зрения сложности разбора.
2. Отношения гомоморфизма
В наиболее ранних работах можно найти примеры преобразований на КС-грамматиках, которые применялись в практических ситуациях при построении компиляторов (к примеру, устранение левой или правой рекурсий в правилах грамматики). Никаких общих определений отношений грамматического подобия в тех случаях дано не было, хотя большинство высказанных тогда идей легли в основу более поздних формальных понятий [17]
С целью выразить отношение грамматического подобия более точно, появилось много новых формальных понятий. В работах [18]-[21] даны определения и описаны результаты для грамматических гомоморфизмов, изоморфизмов, слабых покрытий и покрытий по Рейнольдсу. В этих определениях сделан акцент на правила грамматик, а не на множества выводов или грамматических разборов. Так отношение гомоморфной эквивалентности КС-грамматик, являясь более тонким, чем отношение структурной, сильно структурной и частично структурной эквивалентности может быть определено следующим образом:
КС-грамматика G = (N ,T, P, S) называется гомоморфно эквивалентной грамматике
G' = (N',T',P',S'), если существует гомоморфизм у: G ^ G' и L(G) = L(G'). В этом случае гомоморфизм у представляется тройкой отображений ^ : G ^ G', у2 : T ^ T', у3 : P ^ P' и ¥l( S) = S'.
В работе [18] Грей и Харрисон определили понятие грамматического покрытия, которое описывает отношение между множествами деревьев вывода двух КС-грамматик. Интерес авторов к этому понятию был основан исключительно на его применении в области синтаксического анализа языков.
Если ограничиться моделью анализа, в которой каждое предложение исходного языка даётся описанием его деревьев вывода в виде строки правил грамматики (или меток, идентифицирующих эти правила), тогда соответствие двух КС-грамматик, которое описывается грамматическим покрытием, является отношением между такими описаниями деревьев вывода для данного предложения.
Результат синтаксического анализа можно считать аргументом семантического отображения. В случае, когда КС-грамматика G' покрывает КС-грамматику G, разбор предложения w относительно G' может быть отображён гомоморфизмом на разбор той же w относительно G . Отсюда следует вывод, что язык L(G) можно анализировать относительно преобразованной грамматики G', а затем использовать первоначальное семантическое отображение, как на рисунке 1.
Неформально говоря, основная идея в том, что та КС-грамматика О, которая «трудна» для анализа или не удовлетворяет определённым ограничениям, диктуемым методом синтаксического анализа, преобразуется в КС-грамматику О', которую можно анализировать более простым анализатором. Последующий синтаксический анализ проводится относительно преобразованной О', а после этого результат анализа (разбора) отображается покрывающим гомоморфизмом на соответствующий разбор относительно О .
Эквивалентное
Рис. 2. Схема эквивалентного преобразования с использованием покрытий
Заключение
Подводя итог вышесказанному, можно сказать, что в том случае. если синтаксические правила, которые подаются на вход инструментальной системе, не специфицируют грамматику, для которой выбранный тип анализатора может быть построен, возникают следующие ситуации:
- система диагностирует о своей неспособности построить анализатор и выдает информацию, почему она терпит неудачу; эта информация может быть использована разработчиком языка для того, чтобы изменить (не обязательно эквивалентно преобразовать) эти правила (и связанные с ними семантики) с целью сделать их подходящими для системы;
- система может применить эквивалентные преобразования к входной грамматике для того, чтобы сделать её адекватной методу. Но это должно делаться так, чтобы первоначальные семантики сохранялись;
- синтаксические правила на входе системы не специфицируют грамматику, которая годится для метода анализа, заложенного в инструментальной системе, но у разработчика есть возможность обеспечить систему дополнительной информацией (например, пополнить новыми правилами), достаточной для построения правильного анализатора.
Следует отметить, что вторая и третья альтернативы могут быть скомбинированы. Более того, если синтаксические правила (с дополнительной информацией или без неё) не специфицируют грамматику желаемого типа, то целесообразно, чтобы система могла принять решение, которое ведёт к построению анализатора. В этом случае пользователю не нужно заботиться о конечной форме грамматики. Но эквивалентные преобразования могут изменять структуру грамматики. Это означает то, что преобразованная грамматика не обязательно выполняет тот же самый перевод к семантическим действиям, что и первоначальная (исходная грамматика). Однако, если преобразование делается таким образом, что можно провести разбор в терминах исходной грамматики, тогда можно как бы «обмануть» пользователя инструментальной системы. Эта идея была проиллюстрирована в начале главы на рисунке 2.
Литература
1. Ахо А. В., Сети Р., Ульман Д. Д., Компиляторы: принципы, технологии и инструменты. - М.: Вильяме, 2001.
2. Федорченко Л.Н. Регуляризация контекстно-свободных грамматик. / LAP LAMBERT Academic Publishing GmbH & Co. KG Dudweiler Landstr. 99, 66123 Saarbrucken, Germany. 2011. C 180. ISBN: 978-3-8443-5360-0.
3. Федорченко Л.Н. Регуляризация контекстно-свободных грамматик на основе эквивалентных преобразований синтаксических граф-схем. // Труды СПИИРАН. 2010. вып.4(15). С. 213-230. ISSN 2078-9181.
4. Early J. Ambiguity and precedence in syntax description / Acta Informatica 4:2, 1975, pp. 183-192.
5. Mc Naughton, R. The development of formal language theory since 1956 / Internat. J. Found. Comput. Sci. (1990), p. 355-368.
6. Paull M. and Unger S. Structural equivalence of context-free grammars / Jornal of Computer and System Sciences 2 (1968), 427-463.
7. Paull M.C., and Unger S.H. Structural Equivalence of LL-k Grammars // IEEE Conference Record of Ninth Annual Symposium on Switching and Automata Theory,1968 p. 160-175.
8. Prather R.E. Regular Expressions for Program Computations, American Mathematical Monthly, 104, No. 2, 1997.
9. Kenichi Taniguchi, Tadao Kasami: A Result on the Equivalence Problem for Deterministic Pushdown Automata / J. Comput. Syst. Sci. 13(1): 38-50 (1976)
10.Ginsburg S. A survey of grammar forms / Acta Cybernetica, 3(4):269-280, 1977.
11.Ginsburg S., Harrison Michael A.: Bracketed context free languages. (2005)
12.Korenjak A. J. and Hopcroft J. E. Simple deterministic languages // IEEE Conf. Record of 7th Annual Symposium on Switching and Automata Theory, 1966, pp.36-46.
13.Salomaa K. and Yu S. Decidability of structural equivalence of E0L grammars / Theoretical Computer Science 82 - 1991.
14.Cremers A B , and Ginsburg S., Context-free grammar forms / J Comput Syst Scl 11 (1975), 86-117.
15.Hotz G. Normal-form transformations of context-free grammars / Acta Cybernetica, 4(1):65-84, 1978.
16.Hunt III H. B. and Rosenkrantz D. J., Complexity of grammatical similarity relations // In: Procs of a Conf. on Theoretical Computer Science Waterloo 1977, 139-145.
17.Федорченко Л.Н., Мартыненко Б.К. Эквивалентные преобразования КСР грамматик в регулярной форме в практике построения языковых процессоров. Часть первая. Определение и распознавание КСР-языков посредством синтаксических граф-схем. - Ленинград, АН СССР, Ленинградский Научно-исследовательский Вычислительный Центр, 1983.
18.Gray J. N. and Harrison M. A., On the covering and. reduction problems for context free grammars. Journal of the. ACM 19, 675-698. 1972.
19.Ginsburg S., Harrison Michael A.: Bracketed context free languages. (2005)
20.Hunt III H. B. and Rosenkrantz D. J., Complexity of grammatical similarity relations // In: Procs of a Conf. on Theoretical Computer Science Waterloo 1977, 139-145.
21.Reynolds J.C., and Haskell R. Grammatical coverings. Unpub. memorandum, Syracuse University, 1970. From ACM Transactions on Programming Languages and Systems (TOPLAS). V. 9 , Issue 4 (Oct 1987), pp.543-566 1987 ISSN:0164-0925.
Федорченко Людмила Николаевна, кандидат технических наук, старший научный сотрудник лаборатории прикладной информатики Федерального государственного бюджетного учреждения науки Санкт-Петербургский институт информатики и автоматизации Российской академии наук (СПИИРАН). Тел. +7 (812) 328-1919. E-mail: LNF@iias.spb.su
Fedorchenko Ludmila Nikolaevna, Senior Researcher, PhD, St.Petersburg Institute for Informatics and Automation of the Russian Academy of Sciences (SPIIRAS).