code: func (l *Lexer) scanIdOrKeyword() (tok Token, lit string) {
  	var buffer []byte
  IdentifierLoop:
  	for {
  		switch ch := l.read(); {
  		case ch == 0:
  			break IdentifierLoop
  		case isSpecialSymbol(ch) || isWhitespace(ch):
  			l.unread()
  			break IdentifierLoop
  		default:
  			buffer = append(buffer, ch)
  		}
  	}
  	s := string(buffer)
  	if val, ok := string2token[s]; ok { // is a literal token?
  		return val, s
  	}
  	return IdentifierToken, s // otherwise is an identifier
  }
docs: // scanIdOrKeyword scans string to recognize literal token (for example 'in') or an identifier.