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