RUS  ENG
Полная версия
ЖУРНАЛЫ // Вестник Астраханского государственного технического университета. Серия: Управление, вычислительная техника и информатика // Архив

Вестн. Астрахан. гос. техн. ун-та. Сер. управление, вычисл. техн. информ., 2015, номер 4, страницы 57–65 (Mi vagtu402)

КОМПЬЮТЕРНОЕ ОБЕСПЕЧЕНИЕ И ВЫЧИСЛИТЕЛЬНАЯ ТЕХНИКА

Использование абстрактного цифрового автомата для получения универсального промежуточного представления исходного кода программ

М. В. Зубов, А. Н. Пустыгин

Челябинский государственный университет

Аннотация: Для выполнения статического анализа предложено использовать универсальные многоуровневые промежуточные представления. Были формализованы модели следующих представлений: для анализа архитектуры проекта – модель представления уровня классов, для анализа функциональных модулей – потока управления. Необходимо формализовать метод получения таких представлений для соответствия предложенной модели. Это позволяет единообразно добавлять новые языки путем создания стандартного генератора универсального промежуточного представления. Предлагается использовать абстрактный цифровой автомат с магазинной памятью. В качестве базового способа преобразования текста в машинные данные используется синтаксический анализ. Такой конечный автомат обрабатывает последовательность сигналов, описывающих входное дерево разбора, и формирует последовательность сигналов, описывающих дерево промежуточного представления. Хранение в памяти предыдущих состояний автомата дает возможность анализировать произвольную вложенность входного дерева. Введение специального свойства для входных и выходных сигналов позволяет описать дерево в виде последовательности узлов в соответствии с его обходом в глубину. Для программной реализации такого подхода был выбран язык Java, промежуточное представление строилось также для Java. Каждое состояние автомата реализовано в виде активного объекта, обрабатывающего входной поток сигналов. Реализуя такие шаблоны проектирования, как «цепочка ответственности», «состояние» и «стратегия», состояния образовывали таблицу переходов автомата Мили и магазинную память. Для хранения входных и выходных данных был выбран формат XML. Тестирование путем проверки преобразования синтаксических конструкций языка в текст универсального промежуточного представления на собственном коде и проектах с открытым исходным кодом показало полное соответствие реализации предложенным моделям.

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

УДК: 004.41

Поступила в редакцию: 20.08.2015
Исправленный вариант: 03.10.2015



© МИАН, 2024