Design Goals

Alma is a system for program visualization and animation.
The purpose of such a family of tools is to help the
programmer to inspect data and control flow for a given program
(static view of the algorithm realized by the program
-- visualization), and to understand its behavior (dynamic
view of the algorithm -- animation).

The core of such tool is language independent; it is similar
to a compiler's back-end that takes as input an abstract
representation, and implements the visualizer and the animator
components in a systematic way.

To process a concrete
programming language, the tool is specialized providing
a dedicated front-end that converts the input programs
into that internal abstract representation.

As intermediate
representation, between the front-end and the back-end, we
chose a DAST -- Decorated Abstract Syntax Tree. Learn more.