func New(s string) (*Query, error) {
	p := &QueryParser{Buffer: fmt.Sprintf(`"%s"`, s)}
	p.Init()
	if err := p.Parse(); err != nil {
		return nil, err
	}
	return &Query{str: s, parser: p}, nil
}
New parses the given string and returns a query or error if the string is
invalid.
package query
import (
	"fmt"
	"reflect"
	"strconv"
	"strings"
	"time"
	"github.com/tendermint/tendermint/libs/pubsub"
)
type Query struct {
	str    string
	parser *QueryParser
}
type Condition struct {
	Tag     string
	Op      Operator
	Operand interface{}
}