func (p *Parser) Run(start parseState) error {
	for state := start; state != nil; {
		state = state(p)
	}
	return p.err
}
Run begins the Parser state machine
It requires a start state
package sqlread
import (
	"fmt"
)
type Parser struct {
	items chan LexItem
	err   error
}
func Parse(l chan LexItem) *Parser {
	return &Parser{
		items: l,
	}
}
func (p *Parser) scan() (c LexItem, ok bool) {
	c, ok = <-p.items
	return
}
func (p *Parser) scanUntil(l ...lexItemType) (c LexItem, ok bool) {
	for {
		c, ok = p.scan()
		if !ok {
			return
		}
		if isOfAny(c, l...) {
			return
		}
	}
}