code: func Compile(expr string) (*Regexp, error) {
  	re, err := syntax.Parse(expr, syntax.Perl)
  	if err != nil {
  		return nil, err
  	}
  	sre := re.Simplify()
  	prog, err := syntax.Compile(sre)
  	if err != nil {
  		return nil, err
  	}
  	if err := toByteProg(prog); err != nil {
  		return nil, err
  	}
  	r := &Regexp{
  		Syntax: re,
  		expr:   expr,
  	}
  	if err := r.m.init(prog); err != nil {
  		return nil, err
  	}
  	return r, nil
  }
docs: // Compile parses a regular expression and returns, if successful,
  // a Regexp object that can be used to match against lines of text.