aboutsummaryrefslogtreecommitdiff
path: root/compilador/nanoiter.py
diff options
context:
space:
mode:
authorIván Ávalos <avalos@disroot.org>2022-11-25 13:14:35 -0600
committerIván Ávalos <avalos@disroot.org>2022-11-25 13:14:35 -0600
commit52d6d2107f14398ae59baaa893d596fb239c4679 (patch)
tree27f7170933fc0ecd57d7df5814517a7e3a7daad4 /compilador/nanoiter.py
parenteb4a3019bc0251e5b2b8229679e3c65d61d55336 (diff)
downloadjavanol-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.py30
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]