ЧАЩИНА К. А., ЛАПТЕВА У. В.
ПРИМЕНЕНИЕ ИНВЕРСНЫХ ФОРМ ПРОГРАММНЫХ
УПРАВЛЯЮЩИХ МОДУЛЕЙ
Чащина К. А., бакалавр, chashina_ksyusha@mail.ru
Лаптева У. В., старший преподаватель кафедры кибернетических систем,
laptevauv@tyuiu.ru
г. Тюмень, Тюменский индустриальный университет
Аннотация.
При выполнении трансляции программно-управляющих модулей,
преимущественно содержащих операционные арифметические вычисления, доказана
целесообразность перевода текста исходного модуля в инверсный код, называемый
польской инверсной записью. Результирующая запись, в отличие от исходной
переводимой строки, будет содержать группировку операторов и операндов. Такая
форма представления значительно облегчает дальнейшую работу синтаксических и
семантических анализаторов.
Ключевые слова:
инверсия, форма, код.
Известна система мониторинга поверхности нефтегазового объекта,
реализующая электронно-проекционный муаровый метод [1]. В ней
изображение сетки, спроектированной проектором на поверхность
объекта, принимается видеокамерой, а затем передается в компьютер.
Схема системы мониторинга поверхности объекта показана на Рис. 1.
Рис. 1. Схема системы мониторинга
На схеме: ПК – компьютер, ПР – проектор, ВК – видеокамера.
В структуре автоматизированных систем управления (далее – АСУ)
нижний уровень представляют датчики и исполнительные механизмы,
средний уровень – программируемые логические контроллеры (далее –
ПЛК), принимающие данные и передающие команды управления нижнему
уровню, и верхний уровень, предназначенный для сбора, мониторинга и
представления оператору данных от ПЛК. Если в программах ПЛК
имеются арифметические выражения, имеется необходимость их
трансляции [3]. В системе мониторинга поверхности нефтегазового
объекта данные, полученные системой проектор–видеокамера, необходимо
транслировать в компьютер. Для этого целесообразен перевод исходного
74
модуля в польскую инверсную запись, группирующую операторы и
операнды для увеличения скорости последующей обработки данных.
Перевод арифметического выражения в польскую инверсную запись
осуществляется по определенным правилам [2], учитывая которые, можно
составить блок-схему, иллюстрирующую алгоритм перевода. Данная блок-
схема представлена на Рис. 2.
Рис. 2. Блок-схема хода перевода арифметического выражения в польскую инверсную
запись
На блок-схеме: З
вх
–
входной знак, З
ст
–
знак в вершине стека, Пр(З
вх
)
и Пр(З
ст
) –
приоритеты входного знака и знака в вершине стека
соответственно.
75
Осуществляя перевод, сначала необходимо считать входной знак и
проверить его значение на пустоту. Если значение входного знака не
является пустым и представляет собой операнд, то оно записывается в
выходную строку и происходит переход к считыванию следующего
входного знака и проверке его значения на пустоту. Если значение
входного знака не операнд, следующим шагом проверяется, является ли он
открывающей скобкой. В случае, если входной знак – открывающая
скобка, он помещается в вершину стека, ничего не выталкивая из него, и
происходит переход к считыванию следующего входного знака и его
проверке на пустоту. Если же входной знак не является открывающей
скобкой, проверяется, является ли он закрывающей. Если является
таковым, то все знаки до открывающей скобки последовательно
помещаются в выходную строку, а затем открывающая и закрывающая
скобки уничтожаются. Происходит переход к считыванию нового
входного знака и проверке его значения на пустоту. Если входной знак не
является скобкой, то его приоритет сравнивается с приоритетом знака в
вершине стека. Если приоритет входного знака оказывается больше, то он
помещается в вершину стека, ничего не выталкивая, и происходит переход
к считыванию следующего входного знака. Если нет, то символ из
вершины стека помещается в выходную строку, затем снова происходит
операция сравнения. Когда приоритет входного знака окажется больше
приоритета знака в вершине стека, входной знак помещается в вершину
стека и происходит переход к считыванию следующего входного знака.
Когда входная строка оказывается пуста, необходимо проверить на
пустоту стек – если он содержит знаки (хотя бы один), то последовательно
они помещаются в выходную строку, если стек пуст – перевод окончен.
Польская инверсная запись представляет собой форму записи
арифметических выражений, отличительной особенностью которой
является то, что все операнды сгруппированы и расположены перед
операторами, которые также сгруппированы. Для примера рассмотрим
входную строку:
Y
X
X
+
=
. Осуществив перевод данного арифметического
выражения в польскую инверсную запись по вышеописанному алгоритму,
получим выходную строку:
=
+
XXY
. Данный пример иллюстрирует
преимущество польской инверсной записи: группировка операторов и
операндов упрощает следующие синтаксический и семантический
анализы.
СПИСОК ЛИТЕРАТУРЫ
1.
Кузяков,
О.
Н.
Система
мониторинга
поверхности
технологического объекта, основанная на использовании муарового
эффекта / О. Н. Кузяков, У. В. Лаптева // Системный анализ и
76
информационные технологии «САИТ-2013»: материалы V Междунар.
конф. – Красноярск, 2013. – С. 362-367.
2.
Гордеев, А. В. Системное программное обеспечение / А. В.
Гордеев, А. Ю. Молчанов. – Санкт-Петербург: Питер, 2001. – 736 с.
3.
Компиляторы: принципы, технологии и инструментарий / А. В.
Ахо [и др.]. – 2-е изд.; пер. с англ. – Москва : ООО «И. Д. Вильямс», 2008. -
1184
с.
УДК 681.51
Do'stlaringiz bilan baham: |