From 681036ddc3891904f13c84197cd90e2472cb3e1c Mon Sep 17 00:00:00 2001 From: Ekaitz Zarraga Date: Fri, 23 Jul 2021 20:49:14 +0200 Subject: Change folder name --- pyscv/Frontend/reader.py | 51 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 pyscv/Frontend/reader.py (limited to 'pyscv/Frontend/reader.py') diff --git a/pyscv/Frontend/reader.py b/pyscv/Frontend/reader.py new file mode 100644 index 0000000..a2a280b --- /dev/null +++ b/pyscv/Frontend/reader.py @@ -0,0 +1,51 @@ +# TODO Logging is interesting for debugging purposes, decide what to do with it +from .logger import newlogger +logger = newlogger(__name__) +#import logging +#logger.setLevel(logging.WARN) + +class Reader: + def __init__(self, filename): + self.filename = filename + self._file = None + self.lineno = 0 + self.charno = 0 + self.char = None + + def open(self): + self._file = open(self.filename, "r") + return + def close(self): + self._file.close() + return + + def __enter__(self): + self.open() + return self + + def __exit__(self, type, value, tb): + self.close() + + def advance(self): + self.charno += 1 + if self.char == "\n": + self.lineno += 1 + self.charno = 0 + self.char = self._file.read(1) + + logger.debug("Read: %s" % self.char.__repr__()) + return + + def peek(self): + pos = self._file.tell() + ch = self._file.read(1) + self._file.seek(pos) + return ch + + +if __name__ == "__main__": + with Reader(__file__ ) as src: + print(src.peek()) + while src.peek() != "": + src.advance() + print(src.char) -- cgit v1.2.3