code: def parse(self, source, name=None, filename=None):
          
          try:
              return self._parse(source, name, filename)
          except TemplateSyntaxError:
              exc_info = sys.exc_info()
          self.handle_exception(exc_info, source_hint=source)
docs: Parse the sourcecode and return the abstract syntax tree.  This
          tree of nodes is used by the compiler to convert the template into
          executable source- or bytecode.  This is useful for debugging or to
          extract information from templates.
  
          If you are :ref:`developing Jinja2 extensions <writing-extensions>`
          this gives you a good overview of the node tree generated.