Научная статья на тему 'Синтаксический анализ программ методом интегральных представлений'

Синтаксический анализ программ методом интегральных представлений Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
87
14
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ФОРМАЛЬНЫЙ СТЕПЕННОЙ РЯД / FORMAL POWER SERIES / КОММУТАТИВНЫЙ ОБРАЗ / COMMUTATIVE IMAGE / СИНТАКСИЧЕСКИЙ АНАЛИЗ / ИНТЕГРАЛЬНОЕ ПРЕДСТАВЛЕНИЕ / INTEGRAL REPRESENTATION / SYNTACTICAL ANALYSIS

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Егорушкин Олег Игоревич, Колбасина Ирина Валерьевна, Сафонов Константин Владимирович

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

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Егорушкин Олег Игоревич, Колбасина Ирина Валерьевна, Сафонов Константин Владимирович

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Syntax analysis of programs by the method of integral representations

A new method for syntactical analysis of the monomials of a context-free language, as a model of programming languages, based on the integral representation of the syntactical polynomial of a program is proposed in the paper. It is shown that the integral of a fixed multiplicity over a cycle allows finding the syntactical polynomial of monomials (programs) with unlimited number of symbols that gives a new approach to the problem of syntactical analysis.

Текст научной работы на тему «Синтаксический анализ программ методом интегральных представлений»

ПРИКЛАДНАЯ ДИСКРЕТНАЯ МАТЕМАТИКА

11 ПРИЛОЖЕНИЕ Сентябрь 2018

Секция 6

МАТЕМАТИЧЕСКИЕ ОСНОВЫ ИНФОРМАТИКИ И ПРОГРАММИРОВАНИЯ

УДК 519.682 Б01 10.17223/2226308X711/39

СИНТАКСИЧЕСКИЙ АНАЛИЗ ПРОГРАММ МЕТОДОМ ИНТЕГРАЛЬНЫХ ПРЕДСТАВЛЕНИЙ1

О. И. Егорушкин, И. В. Колбасина, К. В. Сафонов

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

Ключевые слова: формальный степенной ряд, коммутативный образ, синтаксический анализ, интегральное представление.

Одной из важных проблем, связанных с разработкой систем и языков программирования, является проблема синтаксического анализа программ [1]. Как известно, большинство языков программирования является кс-языками, которые можно представить в виде формального степенного ряда (ФСР), поэтому каждая программа, написанная на языке программирования, может рассматриваться как моном соответствующего ФСР. В связи с этим рассмотрим проблему синтаксического анализа мономов кс-языка.

Для того чтобы сформулировать её, рассмотрим подробнее систему полиномиальных уравнений Хомского — Щутценберже, которая определяет кс-язык. Как известно [1, 2], грамматика кс-языка является множеством правил подстановки

х,- ^ дп(г,х), ..., ^ ^ д^.(х,х), ] = 1 ,...,п,

где д.,^(х,х) является мономом от некоммутативных символьных переменных с числовым коэффициентом, равным единице. Правила подстановки можно применять к начальному символу Х\, а затем к другим мономам в любом порядке неограниченное число раз, что позволяют выводить новые «правильные» мономы, образующие кс-язык.

В [3] предложен метод мономиальных меток, который позволяет провести беступиковый синтаксический анализ монома V от терминальных символов XI,... ,хт. Метод состоит в следующем. Сначала каждое правило подстановки ^ д^(х,х) заменяется правилом Хз ^ Ьзид^ (х, х), имеющим мономиальную метку 3, которая является символом из расширенного алфавита, и для новых правил вывода рассматривается

Исследование выполнено при финансовой поддержке РФФИ и Правительства Красноярского края в рамках научного проекта № 17-47-240318.

Математические основы информатики и программирования

129

соответствующая система уравнений Хомского — Щутценберже:

Zj = Q*(z,x,t) = гпдп(г,х) + ... + д^(г,х), 1 = 1,...

х) + ... + .д,п. (z,x), 1 = 1,...,п.

Решение этой системы можно получить методом последовательных приближений в виде ФСР, в том числе в виде ФСР представлена первая компонента решения

те

Zl = z\ (х= £ ,-г) -г, (2)

г=0

где — мономы от символов х*,. . . , хт, t11,t12, ... , ЬПРп.

Синтаксический анализ монома V кс-языка z1 (х) можно провести следующим образом. Считывая мономы степени degx(v) относительно символов х1,... , хт и пропуская символы tjk, можно установить, есть ли среди них моном V, а значит, можно ли вывести его с помощью системы продукций. При этом каждая мономиальная метка tjk, содержащаяся в таком мономе, показывает, что при его выводе использовалось правило Zj ^ tjkдjk^,х). В самом деле, из системы уравнений (1) и метода последовательных приближений нетрудно видеть, что, применяя это правило вывода к моному, мы умножаем его слева на символ tjk. Следовательно, мономиальные метки монома решают проблему его синтаксического анализа, показывая, какие правила вывода кс-языка и сколько раз использовались при выводе этого монома, с точностью до порядка их применения.

Информацию о мономиальных метках монома можно получить в виде (п+т)-крат-ного интеграла по циклу, где числа п и т не зависят от степени монома и равны числу нетерминальных и терминальных символов грамматики кс-языка соответственно.

Рассмотрим коммутативный образ [4] ФСР (2)

Ф1 (х,ф = £ (1)ха, (3)

а

сгруппированный по степеням ха в кратный ряд Гартогса [5, 6].

Назовём синтаксическим полиномом монома V относительно кс-языка z1(x) = = z1 (х,е) коэффициент 8а(Ь) ряда Гартогса (3), такой, что ха =

Мономиальные метки, содержащиеся в некоммутативных мономах кс-языка, не исчезают при переходе от ФСР (2) к его коммутативному образу (3) и сохраняются в виде мономов синтаксических полиномов, поскольку все коэффициенты ФСР (3) являются целыми положительными числами [7, 8]. Следовательно, если синтаксический полином монома относительно кс-языка равен нулю, то моном не принадлежит этому языку.

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

Теорема 1. При всех Ь, достаточно близких к нулю, и всех мультииндексах а синтаксический полином ва(1) задаётся равенствами

1 Г z1 det- (сг^1^,х^)))'г) dz Л ¿х

8а(^ = (2пг)п+т У ^ ' (4)

ХГх

1 [ д 1Н1 .Zl det(5^ - (сг^,Х,Ь))))

(2пг)па! } дха\ ^ - сг^*^,х,Ь)))

dz,

х=0

130

Прикладная дискретная математика. Приложение

где Yz = (N = • • • = |zn| = e} и Гх = {|xi| = ... = |xm| = 8} —циклы интегрирования; 0 <8 < e < 1; dz = dz1 Л ... Л dzn; dx = dx1 Л ... Л dxm; xa+I = x\г+1 ■ ... ■ xmm+1; a! = «1! ■ ... ■ am!; (z - ci(Q*(z,x,t))) = (z1 - ci(Q1(z,x,t))) ■ ... ■ (zn - ci(Qn(z,x,t)));

dIMI gai+...+am

= -; 8ij — дельта Кронекера.

dxa ox^ ■ ... ■ dxm

Формулы (4) и (5) позволяют эффективно осуществлять синтаксический анализ монома, находя его синтаксический полином. Так, кратный интеграл (4) можно вычислить как повторный, используя формулу Коши и разложение в степенной ряд подынтегральной функции.

ЛИТЕРАТУРА

1. Глушков В. М., Цейтлин Г. Е., Ющенко Е. Л. Алгебра. Языки. Программирование. Киев: Наукова думка, 1973.

2. Salomaa A. and Soitolla M. Automata-Theoretic Aspects of Formal Power Series. N.Y.: Springer Verlag, 1978.

3. Сафонов К. В., Егорушкин О. И. О синтаксическом анализе и проблеме В. М. Глушкова распознавания контекстно-свободных языков Хомского // Вестник Томского государственного университета. 2006. Приложение № 17. С. 63-67.

4. Семёнов А. Л. Алгоритмические проблемы для степенных рядов и контекстно-свободных грамматик // Доклады АН СССР. 1973. №212. С. 50-52.

5. Safonov K. V. On power series of algebraic and rational functions in Cn // J. Math. Analysis Appl. 2000. V. 243. P. 261-277.

6. Сафонов К. В. Об условиях алгебраичности и рациональности суммы степенного ряда // Матем. заметки. 1987. Т. 41. Вып.3. С. 325-332.

7. Егорушкин О. И., Колбасина И. В., Сафонов К. В. О совместности систем символьных полиномиальных уравнений и их приложении // Прикладная дискретная математика. Приложение. 2016. №9. С. 119-121.

8. Egorushkin O. I., Kolbasina I. V., and Safonov K. V. On solvability of systems of symbolic polynomial equations // Журн. СФУ. Сер. Матем. и физ. 2016. Т. 9. Вып. 2. С. 166-172.

УДК 004.4 DOI 10.17223/2226308X/11/40

РАБОТА СО СТЕКОМ В ЛЯПАСЕ1

М. С. Недяк, В. О. Сафонов

Описана работа со стеком в модульном трансляторе с ЛЯПАСа, которая включает в себя механизмы вызова функции, работу с локальными переменными и параметрами функции. Рассматриваются механизмы обработки композиции функций.

Ключевые слова: ЛЯПАС, язык программирования, транслятор, соглашение о вызове.

Введение

Рассмотрим модуль для работы со стеком модульного транслятора [1, 2] с ЛЯПАСа [3]. Далее этот модуль и его язык называются стекоязом.

В силу ограниченного количества переменных в языке, в текущей версии транслятора соглашение о вызовах выглядит следующим образом: перед вызовом функции

1 Работа поддержана грантом РФФИ, проект №17-01-00354.

i Надоели баннеры? Вы всегда можете отключить рекламу.