ПРИКЛАДНАЯ ДИСКРЕТНАЯ МАТЕМАТИКА
№ 12
ПРИЛОЖЕНИЕ
Сентябрь 2019
Секция 6
МАТЕМАТИЧЕСКИЕ ОСНОВЫ ИНФОРМАТИКИ И ПРОГРАММИРОВАНИЯ
УДК 519.682
БО! 10.17223/2226308Х/12/54
СИНТАКСИЧЕСКИЙ АНАЛИЗ МОНОМОВ КОНТЕКСТНО-СВОБОДНЫХ ЯЗЫКОВ С УЧЁТОМ ПОРЯДКА ПРИМЕНЕНИЯ ПРОДУКЦИЙ
В. В. Кишкан, К. В. Сафонов
Ставится задача синтаксического анализа мономов контекстно-свободных языков с учётом порядка применения продукций в процессе вывода мономов. Проблема синтаксического анализа дополняется следующим образом: разработать беступиковый алгоритм для определения, можно ли вывести моном из начального символа с помощью продукций данного контекстно-свободного языка, определить, какие продукции и сколько раз были использованы для получения этого монома, а также установить, по возможности, порядок использования этих продукций. Предложен расширенный метод мономиальных меток, который позволяет установить порядок применения продукций.
Ключевые слова: синтаксический анализ мономов, контекстно-свободные языки, мономиальные метки.
Начальным объектом в теории формальных языков и грамматик является алфавит, разделённый на два подмножества, первое из которых образуют нетерминальные (вспомогательные) символы г1,... ,гп, необходимые для задания грамматических правил, а второе — терминальные символы Х\,... ,хт, образующие словарь языка [1, 2].
Практически все языки программирования принадлежат важному с точки зрения приложений классу контекстно-свободных языков (КС-языков). КС-язык определяется его грамматикой — совокупностью правил подстановки (продукций)
где qjk(^,х) —заданные мономы. Таким образом, грамматика КС-языка характеризуется тем, что один нетерминальный символ независимо от его окружения (контекста) заменяется на группу символов. Правила подстановки можно применять к начальному символу , а затем к другим символам в мономах неограниченное число раз в любом порядке, что позволяет выводить новые мономы, которые и образуют КС-язык.
Проблема синтаксического анализа мономов (программ) КС-языка состоит в том, чтобы разработать алгоритм, позволяющий определить, можно ли вывести моном из начального символа с помощью заданных правил подстановки, а также определить, какие продукции и сколько раз были использованы при выводе этого монома. Известно, что для произвольной грамматики КС-языка беступикового алгоритма синтаксического анализа не существует, поэтому алгоритм синтаксического анализа достаточно сложен, поскольку предусматривает возвраты [1].
Традиционно считается, что порядок применения продукций устанавливать не требуется [1]. Однако без знания этого порядка невозможно вывести тот моном, который
Zj ^ qjk (?,х), ] = 1,... ,п, к = 1,... ,pj,
(1)
Математические основы информатики и программирования
195
исследуется, поскольку применение продукций в различном порядке может приводить к разным мономам.
В связи с этим предлагается расширить проблему синтаксического анализа следующим образом: разработать беступиковый алгоритм, позволяющий установить, можно ли вывести данный моном, какие продукции и сколько раз следует использовать, а также, если возможно, порядок применения этих продукций.
Для того чтобы решить расширенную проблему синтаксического анализа, мы предлагаем не только включать в моном информацию о каждой использованной продукции в виде мономиальной метки [3, 4], но и устанавливать иерархию скобок (слева от открывающейся скобки всегда «привязана» мономиальная метка, а соответствующая закрывающаяся скобка может быть однозначно найдена); иерархия скобок позволяет определить порядок использования продукций.
Рассмотрим «расширенную» грамматику для рассматриваемого КС-языка:
Zj ^ tjk[ Qjk(z,x)], j = 1,... ,n, k = 1,... ,pj.
Здесь tjk — символ из расширенного алфавита: мономиальная метка, соответствующая правилу вывода Zj ^ tjk qjk (z,x) и «привязанная» слева к открывающейся скобке. Расширенная грамматика позволяет определять порядок применения продукций.
Пример 1. Рассмотрим продукции zi ^ Z1Z33, Zi ^ ZiZ2 и запишем их в виде расширенной грамматики:
Zi ^ tii[ Z1Z3 ], Zi ^ ti2 [ Z1Z2 ]. Применяя к начальному символу первую продукцию, а затем вторую, получим моном
tii[ 112 [ ZiZ2 ] z| ].
Теперь можно видеть порядок применения продукций: внешние скобки показывают, что первая продукция с меткой t11 применена первой, а внутренние скобки — что вторая продукция с меткой ti2, привязанной к отрывающейся скобке, применена во вторую очередь.
Иерархия скобок позволяет установить порядок применения продукций и в общем случае. Для этого рассмотрим расширенную систему уравнений Хомского — Щутцен-берже, которая имеет вид
Zj = Qjxt) d=f tji[ qjix) ] + ... + j[ qjpj(z x) ], j = 1, ... , n. (2)
Решение этой системы можно получить методом последовательных приближений [2]:
Z(k+1)(x,t) = Qj(Z(k)(x,t),x,t); k = 0,1,...; Z(0) = 0. В результате решение получается в виде формальных степенных рядов
те
Zj = Zj(x, t) = Y,(Zj, Wi) Wi, j = 1,..., n,
i=0
где Wi — мономы от символов xi,... ,xm,t11 ,t12,... , tnpn с числовыми коэффициентами (Zj,Wi), содержащие также систему открывающихся и закрывающихся скобок.
Считывая мономы соответствующей степени формального степенного ряда Zj(x,t) относительно символов x1,... , xm и пропуская символы t11,t12,..., tnpn, можно выяснить, есть ли среди них нужный моном [3, 4]. При этом мономиальные метки укажут на использованные продукции, а иерархия скобок установит порядок их использования (внутренние скобки соответствуют продукциям, которые использованы позже).
196
Прикладная дискретная математика. Приложение
Теорема 1. Решая расширенную систему уравнений Хомского — Щутценбер-же (2) методом последовательных приближений и считывая мономы нужной степени относительно терминальных символов, можно за конечное число шагов провести беступиковый синтаксический анализ (с учётом порядка применения продукций) любого монома КС-языка, заданного грамматикой (1).
ЛИТЕРАТУРА
1. Глушков В. М., Цейтлин Г. Е., Ющенко Е. Л. Алгебра. Языки. Программирование. Киев: Наукова думка, 1973.
2. Salomaa A. and Soitolla M. Automata-Theoretic Aspects of Formal Power Series. N.Y.: Springer Verlag, 1978.
3. Egorushkin O. I., Kolbasina I. V., and Safonov K. V. On solvability of systems of symbolic polynomial equations // Журн. СФУ. Сер. Матем. и физ. 2016. Т. 9. Вып. 2. С. 166-172.
4. Егорушкин О. И., Колбасина И. В., Сафонов К. В. Аналог теоремы о неявном отображении для формальных грамматик // Прикладная дискретная математика. Приложение. 2017. №10. С. 149-151.
УДК 519.682 DOI 10.17223/2226308X/12/55
УСЛОВИЕ РАЗРЕШИМОСТИ ПРОИЗВОЛЬНЫХ ФОРМАЛЬНЫХ ГРАММАТИК
И. В. Колбасина, К. В. Сафонов
Продолжено исследование систем некоммутативных полиномиальных уравнений, которые интерпретируются как грамматики формальных языков. Такие системы решаются в виде формальных степенных рядов (ФСР), выражающих нетерминальные символы через терминальные символы алфавита и рассматриваемых как формальные языки. Всякому ФСР поставлен в соответствие его коммутативный образ, который получается в предположении, что все символы обозначают коммутативные переменные, принимающие значения из поля комплексных чисел. В продолжение исследований совместности систем некоммутативных полиномиальных уравнений, которая напрямую не связана с совместностью её коммутативного образа, получено достаточное условие совместности в виде обобщения теоремы о неявном отображении на формальные грамматики, содержащие произвольное число уравнений. Доказано, что если для коммутативного образа системы ранг матрицы Якоби коммутативного образа системы уравнений в начале координат максимален, то исходная система некоммутативных уравнений имеет единственное решение в виде ФСР.
Ключевые слова: системы полиномиальных уравнений, некоммутативные переменные, формальный степенной ряд, коммутативный образ, матрица Якоби.
Продолжая исследование, начатое в работах [1, 2], рассмотрим систему полиномиальных уравнений
Pj (z,x) = 0, Pj (0,0) = 0, j = 1,...,k, (1)
которая решается относительно символов z = (zi,... , zn) в виде ФСР, зависящих от символов x = (x1,... , xm).
Такие системы имеют приложения в теории формальных языков, поскольку являются грамматиками, порождающими важные классы формальных языков: контекстно-свободных, языков непосредственно составляющих, языков в нормальной форме Грейбах и др. [3, 4].