需要对lexer进行大的重构