Exemplo n.º 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
Exemplo n.º 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
Exemplo n.º 3
0
 def dot(self, multiline):
     raise UnsupportedOperation('dot')
Exemplo n.º 4
0
 def end_of_line(self, next, multiline, state=None):
     raise UnsupportedOperation('end_of_line')
Exemplo n.º 5
0
 def no_match(self):
     raise UnsupportedOperation('no_match')
Exemplo n.º 6
0
 def conditional(self, next, number):
     raise UnsupportedOperation('conditional')
Exemplo n.º 7
0
 def lookahead(self, equal, forwards):
     raise UnsupportedOperation('lookahead')
Exemplo n.º 8
0
 def space(self, inverted):
     raise UnsupportedOperation('space')
Exemplo n.º 9
0
 def checkpoint(self, id):
     raise UnsupportedOperation('checkpoint')
Exemplo n.º 10
0
 def start_of_line(self, multiline):
     raise UnsupportedOperation('start_of_line')
Exemplo n.º 11
0
 def word_boundary(self, inverted):
     raise UnsupportedOperation('word_boundary')
Exemplo n.º 12
0
 def word(self, next, inverted, state=None):
     raise UnsupportedOperation('word')
Exemplo n.º 13
0
 def checkpoint(self, next, id, state=None):
     raise UnsupportedOperation('checkpoint')
Exemplo n.º 14
0
 def space(self, next, inverted, state=None):
     raise UnsupportedOperation('space')
Exemplo n.º 15
0
 def digit(self, next, inverted, state=None):
     raise UnsupportedOperation('digit')
Exemplo n.º 16
0
 def word_boundary(self, next, inverted, state=None):
     raise UnsupportedOperation('word_boundary')
Exemplo n.º 17
0
 def repeat(self, next, node, begin, end, lazy, state=None):
     raise UnsupportedOperation('repeat')
Exemplo n.º 18
0
 def lookahead(self, next, node, equal, forwards, state=None):
     raise UnsupportedOperation('lookahead')
Exemplo n.º 19
0
 def end_of_line(self, multiline):
     raise UnsupportedOperation('end_of_line')
Exemplo n.º 20
0
 def string(self, text):
     raise UnsupportedOperation('string')
Exemplo n.º 21
0
 def digit(self, inverted):
     raise UnsupportedOperation('digit')
Exemplo n.º 22
0
 def character(self, charset):
     raise UnsupportedOperation('character')
Exemplo n.º 23
0
 def word(self, inverted):
     raise UnsupportedOperation('word')
Exemplo n.º 24
0
 def start_group(self, number):
     raise UnsupportedOperation('start_group')
Exemplo n.º 25
0
 def group_reference(self, next, number):
     raise UnsupportedOperation('group_reference')
Exemplo n.º 26
0
 def end_group(self, number):
     raise UnsupportedOperation('end_group')
Exemplo n.º 27
0
 def split(self, next):
     raise UnsupportedOperation('split')
Exemplo n.º 28
0
 def match(self):
     raise UnsupportedOperation('match')
Exemplo n.º 29
0
 def repeat(self, begin, end, lazy):
     raise UnsupportedOperation('repeat')
Exemplo n.º 30
0
 def dot(self, next, multiline, state=None):
     raise UnsupportedOperation('dot')