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
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
def dot(self, multiline): raise UnsupportedOperation('dot')
def end_of_line(self, next, multiline, state=None): raise UnsupportedOperation('end_of_line')
def no_match(self): raise UnsupportedOperation('no_match')
def conditional(self, next, number): raise UnsupportedOperation('conditional')
def lookahead(self, equal, forwards): raise UnsupportedOperation('lookahead')
def space(self, inverted): raise UnsupportedOperation('space')
def checkpoint(self, id): raise UnsupportedOperation('checkpoint')
def start_of_line(self, multiline): raise UnsupportedOperation('start_of_line')
def word_boundary(self, inverted): raise UnsupportedOperation('word_boundary')
def word(self, next, inverted, state=None): raise UnsupportedOperation('word')
def checkpoint(self, next, id, state=None): raise UnsupportedOperation('checkpoint')
def space(self, next, inverted, state=None): raise UnsupportedOperation('space')
def digit(self, next, inverted, state=None): raise UnsupportedOperation('digit')
def word_boundary(self, next, inverted, state=None): raise UnsupportedOperation('word_boundary')
def repeat(self, next, node, begin, end, lazy, state=None): raise UnsupportedOperation('repeat')
def lookahead(self, next, node, equal, forwards, state=None): raise UnsupportedOperation('lookahead')
def end_of_line(self, multiline): raise UnsupportedOperation('end_of_line')
def string(self, text): raise UnsupportedOperation('string')
def digit(self, inverted): raise UnsupportedOperation('digit')
def character(self, charset): raise UnsupportedOperation('character')
def word(self, inverted): raise UnsupportedOperation('word')
def start_group(self, number): raise UnsupportedOperation('start_group')
def group_reference(self, next, number): raise UnsupportedOperation('group_reference')
def end_group(self, number): raise UnsupportedOperation('end_group')
def split(self, next): raise UnsupportedOperation('split')
def match(self): raise UnsupportedOperation('match')
def repeat(self, begin, end, lazy): raise UnsupportedOperation('repeat')
def dot(self, next, multiline, state=None): raise UnsupportedOperation('dot')