예제 #1
0
    def _reset(self,
               text=None,
               filename=None,
               buffer_class=None,
               semantics=None,
               trace=None,
               comments_re=None,
               eol_comments_re=None,
               whitespace=None,
               ignorecase=None,
               nameguard=None,
               memoize_lookaheads=None,
               left_recursion=None,
               colorize=None,
               keywords=None,
               namechars='',
               **kwargs):
        if ignorecase is None:
            ignorecase = self.ignorecase
        if nameguard is None:
            nameguard = self.nameguard
        if memoize_lookaheads is not None:
            self.memoize_lookaheads = memoize_lookaheads
        if left_recursion is not None:
            self.left_recursion = left_recursion
        if trace is not None:
            self.trace = trace
        if semantics is not None:
            self.semantics = semantics
        if colorize is not None:
            self.colorize = colorize
        if keywords is not None:
            self.keywords = keywords
        if self.colorize:
            color.init()
        if namechars is not None:
            namechars = self.namechars

        self._initialize_caches()
        self._furthest_exception = None

        if isinstance(text, buffering.Buffer):
            buffer = text
        else:
            buffer_class = buffer_class or self.buffer_class
            buffer = buffer_class(text,
                                  filename=filename,
                                  comments_re=comments_re or self.comments_re,
                                  eol_comments_re=eol_comments_re
                                  or self.eol_comments_re,
                                  whitespace=notnone(whitespace,
                                                     default=self.whitespace),
                                  ignorecase=ignorecase,
                                  nameguard=nameguard,
                                  namechars=namechars,
                                  **kwargs)
        self._buffer = buffer
예제 #2
0
    def parse(self,
              text,
              rule_name=None,
              start=None,
              filename=None,
              semantics=None,
              trace=False,
              context=None,
              whitespace=None,
              ignorecase=None,
              left_recursion=None,
              comments_re=None,
              eol_comments_re=None,
              parseinfo=None,
              nameguard=None,
              namechars=None,
              **kwargs):  # pylint: disable=W0221
        start = start if start is not None else rule_name
        start = start if start is not None else self.rules[0].name

        ctx = context or ModelContext(
            self.rules, trace=trace, keywords=self.keywords, **kwargs)

        semantics = notnone(semantics, self.semantics)
        left_recursion = notnone(left_recursion, self.left_recursion)
        parseinfo = notnone(parseinfo, self._use_parseinfo)
        comments_re = notnone(comments_re, self.comments_re)
        eol_comments_re = notnone(eol_comments_re, self.eol_comments_re)
        nameguard = notnone(nameguard, self.nameguard)
        namechars = notnone(namechars, self.namechars)
        whitespace = notnone(whitespace, self.whitespace)
        ignorecase = notnone(ignorecase, self.ignorecase)
        if whitespace:
            whitespace = re.compile(whitespace)

        return ctx.parse(text,
                         rule_name=start,
                         filename=filename,
                         semantics=semantics,
                         trace=trace,
                         whitespace=whitespace,
                         ignorecase=ignorecase,
                         comments_re=comments_re,
                         eol_comments_re=eol_comments_re,
                         left_recursion=left_recursion,
                         parseinfo=parseinfo,
                         nameguard=nameguard,
                         namechars=namechars,
                         **kwargs)
예제 #3
0
    def _reset(self,
               text=None,
               filename=None,
               buffer_class=None,
               semantics=None,
               trace=None,
               comments_re=None,
               eol_comments_re=None,
               whitespace=None,
               ignorecase=None,
               nameguard=None,
               memoize_lookaheads=None,
               left_recursion=None,
               colorize=None,
               keywords=None,
               namechars='',
               **kwargs):
        if ignorecase is None:
            ignorecase = self.ignorecase
        if nameguard is None:
            nameguard = self.nameguard
        if memoize_lookaheads is not None:
            self.memoize_lookaheads = memoize_lookaheads
        if left_recursion is not None:
            self.left_recursion = left_recursion
        if trace is not None:
            self.trace = trace
        if semantics is not None:
            self.semantics = semantics
        if colorize is not None:
            self.colorize = colorize
        if keywords is not None:
            self.keywords = keywords
        if self.colorize:
            color.init()
        if namechars is not None:
            namechars = self.namechars

        self._initialize_caches()
        self._furthest_exception = None

        if isinstance(text, buffering.Buffer):
            buffer = text
        else:
            buffer_class = buffer_class or self.buffer_class
            buffer = buffer_class(
                text,
                filename=filename,
                comments_re=comments_re or self.comments_re,
                eol_comments_re=eol_comments_re or self.eol_comments_re,
                whitespace=notnone(whitespace, default=self.whitespace),
                ignorecase=ignorecase,
                nameguard=nameguard,
                namechars=namechars,
                **kwargs)
        self._buffer = buffer