The Argos Compiler
Argos is a automaton language, similar to StateCharts, but with synchronous
semantics. We developed Larissa, an extension to Argos for aspect-oriented
programming. This compiler is a proof-of-concept implementation
for Argos and Larissa.
The compiler reads programs in Argos and Larissa, and transforms them into
flat Argos programs (i.e. simple automata), into Lustre programs, or
into
Fast automata.
See
here for a brief documentation of
the syntax of textual Argos.
You can download the compiler
here (50KB).
The jar file contains the executable code.
To execute it, you need
Java 1.5,
JavaBDD and
AspectJ 1.5 on the classpath.
Here is a brief documentation of the compiler options:
Usage: java backends.ArgosCompiler [OPTIONS] FILE
Compiles the Argos program FILE. Either pretty prints FILE, or translates it
into a flat Argos program, a Lustre program, or a FAST automaton.
Options must be separated by a space.
target language options:
-flatten (default) creates a flat program, displays it on the standard output
and writes it in file FILE.flat .
-pp pretty prints to the standard output.
-Lustre flatens the program, and translates the flat program into a Lustre
program, which is written to FILE.lus.
-FAST flatens the program, and translates the flat program into a FAST
automaton, which is written to FILE.fst.
other options:
-nd does not display the flat program on the standard output.
-nondet FILE is nondeterministic. Otherwise, the compiler rejects
nondeterministic programs.
-contract FILE is a contract. Checks if the flat program has a transition
which emits "fail", and if so, prints a path to this transition
on the standard output. Otherwise, prints "contract verified".
-debug prints information about the size of the resulting program and
compilation time.
Test files for the compiler in the textual Argos format can be found
here.
Please
contact me if you have any further
question, found a bug, or if you are interested in the source code.
A short note on using Argos and Larissa
for design-by-contract.
Back to my home page