diff options
author | Iván Ávalos <avalos@disroot.org> | 2022-11-25 13:14:35 -0600 |
---|---|---|
committer | Iván Ávalos <avalos@disroot.org> | 2022-11-25 13:14:35 -0600 |
commit | 52d6d2107f14398ae59baaa893d596fb239c4679 (patch) | |
tree | 27f7170933fc0ecd57d7df5814517a7e3a7daad4 /compilador/nanoiter.py | |
parent | eb4a3019bc0251e5b2b8229679e3c65d61d55336 (diff) | |
download | javanol-52d6d2107f14398ae59baaa893d596fb239c4679.tar.gz javanol-52d6d2107f14398ae59baaa893d596fb239c4679.tar.bz2 javanol-52d6d2107f14398ae59baaa893d596fb239c4679.zip |
Ya funcionan decl_global y decl_func
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] |