code: def _generate_parser(name, path, required=False, notfoundmsg=None):
      
      output = "def %s(dom):\n" % _get_parser_name(name)
  
      dom = True  # used specifically in _wfind_template
      parser_table = {
          "find": lambda path:
              _find_template(path.params, path.index, required, notfoundmsg),
          "wfind": lambda path:
              _wfind_template(
                  dom,
                  path.params,
                  path.index,
                  required,
                  notfoundmsg
              ),
          "match": lambda path:
              _match_template(path.params, path.index, required, notfoundmsg),
          "left_neighbour_tag": lambda path:
              _neigh_template(
                  path.params,
                  path.index,
                  True,
                  required,
                  notfoundmsg
              ),
          "right_neighbour_tag": lambda path:
              _neigh_template(
                  path.params,
                  path.index,
                  False,
                  required,
                  notfoundmsg
              ),
      }
  
      if isinstance(path, path_patterns.PathCall):
          output += parser_table[path.call_type](path)
      elif isinstance(path, path_patterns.Chained):
          for path in path.chain:
              output += parser_table[path.call_type](path)
              dom = False
      else:
          raise UserWarning(
              "Unknown type of path parameters! (%s)" % str(path)
          )
  
      output += IND + "return el\n"
      output += "\n\n"
  
      return output
docs: Generate parser named `name` for given `path`.
  
      Args:
          name (str): Basename for the parsing function (see
                      :func:`_get_parser_name` for details).
          path (obj): :class:`.PathCall` or :class:`.Chained` instance.
          required (bool, default False): Use :func:`_required_idiom` to returned
                   data.
          notfoundmsg (str, default None): Message which will be used for
                      :func:`_required_idiom` if the item is not found.
  
      Returns:
          str: Python code for parsing `path`.