some changes to Lexer and Parser