diff options
Diffstat (limited to 'compilador/nanoiter.py')
-rw-r--r-- | compilador/nanoiter.py | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/compilador/nanoiter.py b/compilador/nanoiter.py new file mode 100644 index 0000000..928522f --- /dev/null +++ b/compilador/nanoiter.py @@ -0,0 +1,30 @@ +from typing import Optional, NoReturn, List, TypeVar + +T = TypeVar('T') + +class NanoIter: + def __init__(self, l: List[T]): + self.i = -1 + self.l: List[T] = l + + def next(self) -> T: + if self.i == len(self.l): + raise StopIteration() + else: + self.i += 1 + return self.l[self.i] + + def get(self, i = None): + return self.l[self.i] if not i else self.l[i] + + def back(self) -> NoReturn: + if self.i <= 0: + self.i = -1 + else: + self.i -= 1 + + def peek(self) -> T: + if self.i == len(self.l): + raise StopIteration() + else: + return self.l[self.i + 1] |