Extract the lexer into it's own file.