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)
def test_traversal(self): items = [] cursor = Cursor([1, 2, 3]) items.append(cursor.head()) tail1 = cursor.tail() items.append(tail1.head()) tail2 = tail1.tail() items.append(tail2.head()) tail3 = tail2.tail() self.assertEqual(items, [1, 2, 3]) self.assertTrue(tail3.empty())