Added the beginnings of a parser.
Error reporting is now moved out of the lexer.