package parser

import (
	

	
)

type StreamingParser struct {
	pool.Reader
}

func ( pool.Reader) StreamingParser {
	return StreamingParser{
		Reader: ,
	}
}

func ( StreamingParser) ( byte) error {
	,  := .ReadByte()
	if  != nil {
		return 
	}
	if  ==  {
		return nil
	}
	_ = .UnreadByte()
	return fmt.Errorf("got %q, wanted %q", , )
}

func ( StreamingParser) ( []byte) ([]byte, error) {
	,  := .ReadByte()
	if  != nil {
		return , 
	}

	for {
		if  == '"' {
			return , nil
		}

		,  := .ReadByte()
		if  != nil {
			return , 
		}

		if  == '\\' {
			switch  {
			case '\\', '"':
				 = append(, )
				,  = .ReadByte()
				if  != nil {
					return nil, 
				}
			default:
				 = append(, '\\')
				 = 
			}
			continue
		}

		 = append(, )
		 = 
	}
}