Implement a compiler for the
TigerLanguage in the
StrategoLanguage?.
The compiler should consist of the following basic components:
- Parser (given)
- Typechecker (given)
- Translation to intermediate representation
- Canonicalization of intermediate representation
- Instruction selection
- Liveness analysis
- Register allocation
This basic
TigerCompiler should be extended with one of the following:
- PureFun-Tiger with optimizations
- Garbage collection
- Loop optimization
- Object-Tiger
- (Pipelining)
The implementation should be described in a report. The report should give
a global overview of the implementation and explain its details. The report
should be handed in together with the working source code.