refactor TokenKind and TokenScanner.