def _numMatches(parseTree, data, name='a'): _calls = [] def _cb(): _calls.append(True) i = Interp(parseTree, _cb) try: i.receive(data) except ParseError as e: return 0 return len(_calls)
class many(object): def __init__(self, interp, rule): rule.success = [self._store, setRule(node=rule)] self.interp = Interp(rule) self.gathered = [] @property def need(self): return self.interp.current.need def receive(self, data, previous): try: self.interp.receive(data) except ParseError: return self.interp._ix, self.gathered return None, None def _store(self, interp, rv): self.gathered.append(rv)