First pass on the lexer and the parser