示例#1
0
 def parser(self):
     attr = _D + sys._getframe().f_code.co_name
     if not hasattr(self, attr):
         if self.Parser is not CParser:
             setattr(self, attr, self.Parser(loader=self))
         elif getattr(self, _L, _A) is _A:
             return _A
         else:
             setattr(self, attr, CParser(self._stream))
     return getattr(self, attr)
示例#2
0
    def parser(self):
        # type: () -> Any
        attr = '_' + sys._getframe().f_code.co_name
        if not hasattr(self, attr):
            if self.Parser is not CParser:
                setattr(self, attr, self.Parser(loader=self))
            else:
                if getattr(self, '_stream', None) is None:
                    # wait for the stream
                    return None
                else:
                    # if not hasattr(self._stream, 'read') and hasattr(self._stream, 'open'):
                    #     # pathlib.Path() instance
                    #     setattr(self, attr, CParser(self._stream))
                    # else:
                    setattr(self, attr, CParser(self._stream))
                    # self._parser = self._composer = self
                    # print('scanner', self.loader.scanner)

        return getattr(self, attr)