code: func ParseDomains(rule string) ([]string, error) {
  	parser, err := newParser()
  	if err != nil {
  		return nil, err
  	}
  
  	parse, err := parser.Parse(rule)
  	if err != nil {
  		return nil, err
  	}
  
  	buildTree, ok := parse.(treeBuilder)
  	if !ok {
  		return nil, errors.New("cannot parse")
  	}
  
  	return lower(parseDomain(buildTree())), nil
  }
docs: // ParseDomains extract domains from rule