Exemplo n.º 1
0
    def __init__(self, flags=0, with_whitespaces=False):
        self.lexicon = get_lexicon(PYTHON_VERSION_LESS_THAN_3)
        self.groups = Groups

        p = []
        s = Pattern()
        s.flags = flags
        if PYTHON_VERSION_LESS_THAN_3:
            s.groups = len(self.lexicon) + 1
            for group, (phrase, name) in enumerate(self.lexicon, 1):
                p.append(
                    SubPattern(s, [
                        (SUBPATTERN, (group, parse(phrase, flags))),
                    ]))  # append subpattern
                self.lexicon.append((group - 1, name))
        else:
            for phrase, name in self.lexicon:
                gid = s.opengroup()
                p.append(
                    SubPattern(s, [
                        (SUBPATTERN, (gid, 0, 0, parse(phrase, flags))),
                    ]))
                s.closegroup(gid, p[-1])

        p = SubPattern(s, [(BRANCH, (None, p))])
        self.scanner = sre_compile(p).scanner
        self.with_whitespaces = with_whitespaces
Exemplo n.º 2
0
    def __init__(self, rules, flags=0):
        pattern = Pattern()
        pattern.flags = flags
        if sys.version_info < (3, 0):
            pattern.groups = len(rules) + 1
        _og = pattern.opengroup
        pattern.opengroup = lambda n: _og(n and '%s\x00%s' % (name, n) or n)

        self.rules = []
        subpatterns = []
        for group, (name, regex) in enumerate(rules, 1):
            last_group = pattern.groups - 1
            subpatterns.append(
                SubPattern(pattern, [(SUBPATTERN, (group, parse(regex, flags,
                                                                pattern))), ]))
            self.rules.append((name, last_group, pattern.groups - 1))
        self._scanner = sre_compile(
            SubPattern(pattern, [(BRANCH, (None, subpatterns))])).scanner