A compiler for the Decaf language (a java subset) written in C++