code: func (l *lexerContext) nextToken() token {
  	buf := new(bytes.Buffer)
  
  	index := 0
  	escaped := false
  	quoted := false
  
  MainLoop:
  	for _, c := range l.value[l.index:] {
  		index += utf8.RuneLen(c)
  
  		if escaped {
  			escaped = false
  			buf.WriteRune(c)
  			continue
  		}
  
  		switch c {
  		case '\\':
  			escaped = true
  
  		case '"':
  			quoted = !quoted
  
  		case l.delim:
  			if quoted {
  				buf.WriteRune(c)
  			} else {
  				break MainLoop
  			}
  
  		default:
  			buf.WriteRune(c)
  		}
  	}
  
  	l.index += index
  	return token(buf.Bytes())
  }
docs: // nextToken parses and returns the next token in the string.