Example #1
0
    def run(self, text, pos=0, search=False):
        self._group_defined = False

        # TODO - add explicit search if expression starts with constant

        result = self._run_from(0, text, pos, search)

        if self._group_defined:
            raise UnsupportedOperation('groups')
        else:
            return result
Example #2
0
    def lookahead(self, next, equal, forwards):
        (index, node) = next[1]

        # discard old values
        if self._lookaheads[0] != self._offset:
            self._lookaheads = (self._offset, {})
        lookaheads = self._lookaheads[1]

        if index not in lookaheads:

            # requires complex engine
            (reads, _mutates, size) = lookahead_logic(node, forwards, None)
            if reads:
                raise UnsupportedOperation('lookahead')

            # invoke simple engine and cache
            self.push()
            try:
                if forwards:
                    text = self._text
                    pos = self._offset
                    search = False
                else:
                    text = self._text[0:self._offset]
                    if size is None:
                        pos = 0
                        search = True
                    else:
                        pos = self._offset - size
                        search = False
                result = bool(self._run_from(index, text, pos,
                                             search)) == equal
            finally:
                self.pop()
            lookaheads[index] = result

        if lookaheads[index]:
            return 0
        else:
            raise Fail
Example #3
0
 def dot(self, multiline):
     raise UnsupportedOperation('dot')
Example #4
0
 def end_of_line(self, next, multiline, state=None):
     raise UnsupportedOperation('end_of_line')
Example #5
0
 def no_match(self):
     raise UnsupportedOperation('no_match')
Example #6
0
 def conditional(self, next, number):
     raise UnsupportedOperation('conditional')
Example #7
0
 def lookahead(self, equal, forwards):
     raise UnsupportedOperation('lookahead')
Example #8
0
 def space(self, inverted):
     raise UnsupportedOperation('space')
Example #9
0
 def checkpoint(self, id):
     raise UnsupportedOperation('checkpoint')
Example #10
0
 def start_of_line(self, multiline):
     raise UnsupportedOperation('start_of_line')
Example #11
0
 def word_boundary(self, inverted):
     raise UnsupportedOperation('word_boundary')
Example #12
0
 def word(self, next, inverted, state=None):
     raise UnsupportedOperation('word')
Example #13
0
 def checkpoint(self, next, id, state=None):
     raise UnsupportedOperation('checkpoint')
Example #14
0
 def space(self, next, inverted, state=None):
     raise UnsupportedOperation('space')
Example #15
0
 def digit(self, next, inverted, state=None):
     raise UnsupportedOperation('digit')
Example #16
0
 def word_boundary(self, next, inverted, state=None):
     raise UnsupportedOperation('word_boundary')
Example #17
0
 def repeat(self, next, node, begin, end, lazy, state=None):
     raise UnsupportedOperation('repeat')
Example #18
0
 def lookahead(self, next, node, equal, forwards, state=None):
     raise UnsupportedOperation('lookahead')
Example #19
0
 def end_of_line(self, multiline):
     raise UnsupportedOperation('end_of_line')
Example #20
0
 def string(self, text):
     raise UnsupportedOperation('string')
Example #21
0
 def digit(self, inverted):
     raise UnsupportedOperation('digit')
Example #22
0
 def character(self, charset):
     raise UnsupportedOperation('character')
Example #23
0
 def word(self, inverted):
     raise UnsupportedOperation('word')
Example #24
0
 def start_group(self, number):
     raise UnsupportedOperation('start_group')
Example #25
0
 def group_reference(self, next, number):
     raise UnsupportedOperation('group_reference')
Example #26
0
 def end_group(self, number):
     raise UnsupportedOperation('end_group')
Example #27
0
 def split(self, next):
     raise UnsupportedOperation('split')
Example #28
0
 def match(self):
     raise UnsupportedOperation('match')
Example #29
0
 def repeat(self, begin, end, lazy):
     raise UnsupportedOperation('repeat')
Example #30
0
 def dot(self, next, multiline, state=None):
     raise UnsupportedOperation('dot')