How To Test The Tiger Compiler
Tiger in Stratego -- Compilation by Program Transformation
There are a bunch of test cases in the
xmpl
subdirectory of the
TigerXmpl package. After you have built the
TigerCompiler or just some of its
CompilerPackages, you can automatically test them using various
make
targets.
For example, there is a test case called
queens.tig
that computes the solutions to the Eight Queens Problem. Running
make queens.tas
will parse and desugar it into
queens.tas
,
make queens.tc.tas
will typecheck it, etc.
The targets include:
-
filename.tasfix
(from filename.tig
) - the full parse tree (concrete syntax)
-
filename.sweettas
(from filename.tasfix
) - the imploded parse tree (abstract syntax)
-
filename.tas
(from filename.sweettas
) - the desugared abstract syntax
-
filename.tas.check
(from filename.tas
) - checks the validity of abstract syntax trees
-
filename.tc.tas
(from filename.tas
) - the abstract syntax annotated with type information; fails in case of a type error
-
filename.tc.tas.tccheck
(from filename.tas
) - checks the validity of type annotated abstract syntax trees
-
filename.val.tas
(from filename.tas
and filename.input
) - interprets a desugared Tiger program, with filename.input
as input
-
filename.flattas
(from filename.tas
) - resugared abstract syntax
-
filename.abox
(from filename.flattas
) - intermediate step for pretty-printing
-
filename.txt
(from filename.abox
) - pretty-printed Tiger code (i.e., translates abstract syntax back to concrete syntax)
Also see the
CompilerArchitecture for a picture of how these file types relate to each other and what programs are involved in producing them.