diff options
Diffstat (limited to 'pysc-v/Frontend/reader.py')
-rw-r--r-- | pysc-v/Frontend/reader.py | 33 |
1 files changed, 25 insertions, 8 deletions
diff --git a/pysc-v/Frontend/reader.py b/pysc-v/Frontend/reader.py index 45d155c..7694a94 100644 --- a/pysc-v/Frontend/reader.py +++ b/pysc-v/Frontend/reader.py @@ -1,24 +1,40 @@ +# 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 __enter__(self): + 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._file.close() + self.close() - def char(self): - ch = self._file.read(1) + def advance(self): self.charno += 1 - if ch == "\n": + if self.char == "\n": self.lineno += 1 self.charno = 0 - return ch + self.char = self._file.read(1) + + logger.debug("Read: %s" % self.char.__repr__()) + return def peek(self): pos = self._file.tell() @@ -28,7 +44,8 @@ class Reader: if __name__ == "__main__": - with Reader("reader.py") as src: + with Reader(__file__ ) as src: print(src.peek()) while src.peek() != "": - print(src.char()) + src.advance() + print(src.char) |