code: func (l *lexer) escape() ([]rune, Error) {
  	// attempt to process the escape sequence
  	_peek, _err := l.peek()
  	if _err != nil {
  		return nil, _err
  	}
  
  	// what is the next rune after the escape?
  	switch _peek {
  	// are we at the end of the line or file?
  	//      - we return just the escape rune
  	case _CR:
  		fallthrough
  	case _NEWLINE:
  		fallthrough
  	case _EOF:
  		return []rune{_ESCAPE}, nil
  	}
  
  	// otherwise, return the escape and the next rune
  	//      - we know read() will succeed here since we used peek() above
  	l.read()
  	return []rune{_ESCAPE, _peek}, nil
  }
docs: // escape attempts to read an escape sequence (e.g. '\ ') form the input
  // stream. An error will be returned if there is an error reading from the
  // stream. escape returns just the escape rune if the following rune is either
  // end of line or end of file (since .gitignore files do not support line
  // continuations).