def parse_non_empty(self, start, level): grammars = Cursor(self.grammars) result = False end = start while grammars.not_empty() and not result: (result, end) = grammars.head().parse(start, level + 1) if not result: grammars = grammars.tail() return (result, end)