code: def add_validator(validator, base_tag, tag=None):
      
      if not tag:
          tag = u'!~' + validator.__name__
  
      for xid, opts in _VALIDATOR_MODES.iteritems():
          mtag = "%s%s" % (tag, xid)
  
          yaml.add_constructor(mtag,
                               ContructorValidatorNode(mtag,
                                                       base_tag,
                                                       validator,
                                                       opts['name'],
                                                       opts['min'],
                                                       opts['max']))
docs: Add a validator for the given tag, which defines a subset of base_tag.
      If tag is None, it is automatically constructed as
      u'!~' + validator.__name__
      Validator is a function that accepts a document node (in the form of a
      Python object), a schema node (also a Python object) and a tracing
      object, and returns True if the document node is valid according to the
      schema node.  Note that the validator function does not have to recurse
      in sub-nodes, because XYS already does it.