Синтаксический анализ мономов контекстно- свободных языков с учётом порядка применения продукций | Прикладная дискретная математика. Приложение. 2019. № 12. DOI: 10.17223/2226308X/12/54

Синтаксический анализ мономов контекстно- свободных языков с учётом порядка применения продукций

Ставится задача синтаксического анализа мономов контекстно-свободных языков с учётом порядка применения продукций в процессе вывода мономов. Проблема синтаксического анализа дополняется следующим образом: разработать беступиковый алгоритм для определения, можно ли вывести моном из начального символа с помощью продукций данного контекстно-свободного языка, определить, какие продукции и сколько раз были использованы для получения этого монома, а также установить, по возможности, порядок использования этих продукций. Предложен расширенный метод мономиальных меток, который позволяет установить порядок применения продукций.

Syntactical analysis of monomials in context-free languages taking into account the productions application order.pdf Начальным объектом в теории формальных языков и грамматик является алфавит, разделённый на два подмножества, первое из которых образуют нетерминальные (вспомогательные) символы z\\,... ,zn, необходимые для задания грамматических правил, а второе - терминальные символы xi,... ,xm, образующие словарь языка [1, 2]. Практически все языки программирования принадлежат важному с точки зрения приложений классу контекстно-свободных языков (КС-языков). КС-язык определяется его грамматикой - совокупностью правил подстановки (продукций) (1) zj ^ qjk(z,x), j = 1,... ,n, k = 1,... ,pj, где qjk(z,x) -заданные мономы. Таким образом, грамматика КС-языка характеризуется тем, что один нетерминальный символ независимо от его окружения (контекста) заменяется на группу символов. Правила подстановки можно применять к начальному символу zi, а затем к другим символам в мономах неограниченное число раз в любом порядке, что позволяет выводить новые мономы, которые и образуют КС-язык. Проблема синтаксического анализа мономов (программ) КС-языка состоит в том, чтобы разработать алгоритм, позволяющий определить, можно ли вывести моном из начального символа с помощью заданных правил подстановки, а также определить, какие продукции и сколько раз были использованы при выводе этого монома. Известно, что для произвольной грамматики КС-языка беступикового алгоритма синтаксического анализа не существует, поэтому алгоритм синтаксического анализа достаточно сложен, поскольку предусматривает возвраты [1]. Традиционно считается, что порядок применения продукций устанавливать не требуется [1]. Однако без знания этого порядка невозможно вывести тот моном, который исследуется, поскольку применение продукций в различном порядке может приводить к разным мономам. В связи с этим предлагается расширить проблему синтаксического анализа следующим образом: разработать беступиковый алгоритм, позволяющий установить, можно ли вывести данный моном, какие продукции и сколько раз следует использовать, а также, если возможно, порядок применения этих продукций. Для того чтобы решить расширенную проблему синтаксического анализа, мы предлагаем не только включать в моном информацию о каждой использованной продукции в виде мономиальной метки [3, 4], но и устанавливать иерархию скобок (слева от открывающейся скобки всегда «привязана» мономиальная метка, а соответствующая закрывающаяся скобка может быть однозначно найдена); иерархия скобок позволяет определить порядок использования продукций. Рассмотрим «расширенную» грамматику для рассматриваемого КС-языка: zj ^ tjk[ qjk(z,x)], j = 1,... ,n, k = 1,... ,pj. Здесь tjk - символ из расширенного алфавита: мономиальная метка, соответствующая правилу вывода zj ^ tjk qjk (z,x) и «привязанная» слева к открывающейся скобке. Расширенная грамматика позволяет определять порядок применения продукций. Пример 1. Рассмотрим продукции z1 ^ z1z|, z1 ^ z1z2 и запишем их в виде расширенной грамматики: z1 ^ tn[ z^ ], z1 ^ t12[ z1z2 ]. Применяя к начальному символу первую продукцию, а затем вторую, получим моном tu[ t12[ z1z2 ] z| ]. Теперь можно видеть порядок применения продукций: внешние скобки показывают, что первая продукция с меткой t11 применена первой, а внутренние скобки - что вторая продукция с меткой t12, привязанной к отрывающейся скобке, применена во вторую очередь. Иерархия скобок позволяет установить порядок применения продукций и в общем случае. Для этого рассмотрим расширенную систему уравнений Хомского - Щутцен-берже, которая имеет вид zj = Q*j(z,x,t) d=f tj1[ qj1(z,x)}+ ... + j[ qjpj(z,x)], j = 1, ... ,n. (2) Решение этой системы можно получить методом последовательных приближений [2]: z(k+1)(x,t) = Q*(z(k)(x,t),x,t); k = 0,1,...; z(0) = 0. В результате решение получается в виде формальных степенных рядов те zj = z*(x, t) = Y,{z*j,Wi) Wi, j = 1,..., n, i=0 где Wi - мономы от символов x1,... ,xm,t11 ,t12,... ,tnpn с числовыми коэффициентами (z*,wi), содержащие также систему открывающихся и закрывающихся скобок. Считывая мономы соответствующей степени формального степенного ряда z1 (x,t) относительно символов x1,... , xm и пропуская символы t11,t12,..., tnpn, можно выяснить, есть ли среди них нужный моном [3, 4]. При этом мономиальные метки укажут на использованные продукции, а иерархия скобок установит порядок их использования (внутренние скобки соответствуют продукциям, которые использованы позже). Теорема 1. Решая расширенную систему уравнений Хомского - Щутценбер-же (2) методом последовательных приближений и считывая мономы нужной степени относительно терминальных символов, можно за конечное число шагов провести беступиковый синтаксический анализ (с учётом порядка применения продукций) любого монома КС-языка, заданного грамматикой (1).

Ключевые слова

синтаксический анализ мономов, контекстно-свободные языки, мономиальные метки, syntactical analysis of monomials, context-free languages, monomial labels

Авторы

ФИООрганизацияДополнительноE-mail
Кишкан Владимир ВладимировичСибирский государственный университет науки и технологий имени академика М. Ф. Решетнёвааспирант кафедры прикладной математикиkishkan@mail.ru
Сафонов Константин ВладимировичСибирский государственный университет науки и технологий имени академика М. Ф. Решетнёвадоктор физико-математических наук, профессор, заведующий кафедройsafonovkv@rambler.ru
Всего: 2

Ссылки

Глушков В. М., Цейтлин Г. Е., Ющенко Е. Л. Алгебра. Языки. Программирование. Киев: Наукова думка, 1973.
Salomaa A. and Soitolla M. Automata-Theoretic Aspects of Formal Power Series. N.Y.: Springer Verlag, 1978.
Egorushkin O. I., Kolbasina I. V., and Safonov K. V. On solvability of systems of symbolic polynomial equations // Журн. СФУ. Сер. Матем. и физ. 2016. Т. 9. Вып. 2. С. 166-172.
Егорушкин О. И., Колбасина И. В., Сафонов К. В. Аналог теоремы о неявном отображении для формальных грамматик // Прикладная дискретная математика. Приложение. 2017. №10. С. 149-151.
 Синтаксический анализ мономов контекстно- свободных языков с учётом порядка применения продукций | Прикладная дискретная математика. Приложение. 2019. № 12. DOI: 10.17223/2226308X/12/54

Синтаксический анализ мономов контекстно- свободных языков с учётом порядка применения продукций | Прикладная дискретная математика. Приложение. 2019. № 12. DOI: 10.17223/2226308X/12/54