A compiler and programming language implementation for learning purposes