Построение графа потока данных

Меня попросили написать программу для построения графа потока данных входного программного кода, учитывая абстрактное синтаксическое дерево. Я ищу определение графа потока данных в Интернете и обнаружил, что в анализе потока данных сегмента кода происходит много вещей. Я хочу знать, что именно я должен нарисовать, чтобы построить граф потока данных для данного кода. Любая помощь очень ценится!

1 ответ

Для создания графика потока данных вам необходимо:

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

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

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

Вы можете нарисовать окончательный график, используя какой-то внешний пакет для рисования графиков.

Все эти шаги довольно сложны, и, вероятно, будут гораздо больше работы, чем вы думаете. У меня сложилось впечатление, что у вас нет большого фона здесь. Вы можете получить этот фон, изучив стандартный текст компилятора (Aho/Sethi/Ullman "Compilers"), довольно классический и очень хороший. Но вам нужно сделать это до того, как вы начнете, иначе вы не поймете шаги, и они связаны друг с другом.

Другие вопросы по тегам