Refactor Lexer and Parser into their own files
Add support for calling functions with varargs