func (s *scanner) scanString() (tok token, lit string) {

	var buf bytes.Buffer
	q := s.read() //Skip first quote

	// Read every subsequent character into the buffer.
	// Quote and EOF will cause the loop to exit.
	for {
		if ch := s.read(); ch == eof {
			return tokIllegal, buf.String()
		} else if ch == q {
			break
		} else {
			_, _ = buf.WriteRune(ch)
		}
	}

	return tokString, buf.String()

}
// scanString consumes the current rune (quote) and all rune until next quote
scanString consumes the current rune (quote) and all rune until next quote
// scanString consumes the current rune ( quote ) and all rune until next quote
func (s *scanner) scanString() (tok token, lit string) {
	var buf bytes.Buffer
	q := s.read() 
	for {
		if ch := s.read(); ch == eof {
			return tokIllegal, buf.String()
		} else if ch == q {
			break
		} else {
			_, _ = buf.WriteRune(ch)
		}
	}
	return tokString, buf.String()
}
func ( s * scanner ) scanString ( ) ( tok token , lit string ) { var buf bytes . Buffer q := s . read ( ) for { if ch := s . read ( ) ; ch == eof { return tokIllegal , buf . String ( ) } else if ch == q { break } else { _ , _ = buf . WriteRune ( ch ) } } return tokString , buf . String ( ) }
scanString consumes the current rune (quote) and all rune until next quote
scanString consumes the current rune ( quote ) and all rune until next quote
//Skip first quote // Read every subsequent character into the buffer. // Quote and EOF will cause the loop to exit.