RUS  ENG
Полная версия
ЖУРНАЛЫ // Труды института системного программирования РАН // Архив

Труды ИСП РАН, 2025, том 37, выпуск 1, страницы 41–54 (Mi tisp950)

Организация статического анализа на абстрактных синтаксических деревьях с помощью конечных автоматов

В. Н. Игнатьевab

a Московский государственный университет имени М. В. Ломоносова
b Институт системного программирования им. В.П. Иванникова РАН

Аннотация: В статье описывается способ организации статического анализа на абстрактных синтаксических деревьях (АСД), повсеместно используемого для поиска ошибок кодирования и других, не требующих глубокого анализа семантики программы. Для большинства известных типов ошибок предложена формализация, основанная на конечных автоматах над деревьями (КАД), аналогичных НКА и ДКА для регулярных языков над символьным алфавитом. В отличие от теории КАД, разработанной для алфавитов с ограниченной арностью, что на практике фиксирует количество потомков для каждого типа вершины, рассмотрен случай конечного числа потомков без заранее заданного ограничения. Описаны недетерминированные и детерминированные КАД, показана их эквивалентность, замкнутость регулярных языков над деревьями относительно объединения и пересечения, доказана линейная сложность задачи распознавания дерева КАД. Для тех алгоритмов анализа АСД, что не покрываются регулярными языками над деревьями, рассмотрены классы контекстно-свободных языков.

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

DOI: 10.15514/ISPRAS-2025-37(1)-2



© МИАН, 2025