func (p *Member) SizeOf() int {
	return p.Type.SizeOf()
}
SizeOf is required by a matching unit. see Ruler interface.
package bpl
import (
	"bufio"
	"fmt"
	"reflect"
	"strings"
	"github.com/qiniu/x/log"
)
type ret func(ctx *Context) (v interface{}, err error)
func (p ret) Match(in *bufio.Reader, ctx *Context) (v interface{}, err error) {
	v, err = p(ctx)
	if err != nil {
		return
	}
	ctx.dom = v
	return
}
func (p ret) RetType() reflect.Type {
	return TyInterface
}
func (p ret) SizeOf() int {
	return -1
}
func Return(fnRet func(ctx *Context) (v interface{}, err error)) Ruler {
	return ret(fnRet)
}
type Member struct {
	Name string
	Type Ruler
}
func (p *Member) Match(in *bufio.Reader, ctx *Context) (v interface{}, err error) {
	v, err = p.Type.Match(in, ctx.NewSub())
	if err != nil {
		return
	}
	if p.Name != "_" {
		ctx.SetVar(p.Name, v)
	}
	return
}
func (p *Member) RetType() reflect.Type {
	return p.Type.RetType()
}