code: func lexKeywordOrIdentifier(l *lexer) stateFn {
  Loop:
  	for {
  		switch r := l.next(); {
  		case isAlphaNumeric(r) || r == ':':
  			// absorb.
  		default:
  			l.backup()
  			word := l.input[l.start:l.pos]
  			if kw, ok := key[strings.ToLower(word)]; ok {
  				l.emit(kw)
  			} else if !strings.Contains(word, ":") {
  				l.emit(ItemIdentifier)
  			} else {
  				l.emit(ItemMetricIdentifier)
  			}
  			break Loop
  		}
  	}
  	if l.seriesDesc && l.peek() != '{' {
  		return lexValueSequence
  	}
  	return lexStatements
  }
docs: // lexKeywordOrIdentifier scans an alphanumeric identifier which may contain
  // a colon rune. If the identifier is a keyword the respective keyword item
  // is scanned.