A formal definition of the pycal programming language - Final project for Theory of Programming Languages CMPT331