diff options
Diffstat (limited to 'pysc-v/Frontend/reader.py')
-rw-r--r-- | pysc-v/Frontend/reader.py | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/pysc-v/Frontend/reader.py b/pysc-v/Frontend/reader.py new file mode 100644 index 0000000..45d155c --- /dev/null +++ b/pysc-v/Frontend/reader.py @@ -0,0 +1,34 @@ +class Reader: + def __init__(self, filename): + self.filename = filename + self._file = None + self.lineno = 0 + self.charno = 0 + + def __enter__(self): + self._file = open(self.filename, "r") + return self + + def __exit__(self, type, value, tb): + self._file.close() + + def char(self): + ch = self._file.read(1) + self.charno += 1 + if ch == "\n": + self.lineno += 1 + self.charno = 0 + return ch + + def peek(self): + pos = self._file.tell() + ch = self._file.read(1) + self._file.seek(pos) + return ch + + +if __name__ == "__main__": + with Reader("reader.py") as src: + print(src.peek()) + while src.peek() != "": + print(src.char()) |