diff --git a/repl.py b/repl.py index 4daadfe..0396ed8 100644 --- a/repl.py +++ b/repl.py @@ -1,26 +1,40 @@ -import wasp.parser as parser +import wasp +import wasp.parser +import readline + +readline.parse_and_bind("tab: complete") class Reader(object): - def __init__(self): - pass + def __init__(self, prompt, banner=None): + self.prompt = prompt + self.banner = banner def __iter__(self): + if self.banner: + print self.banner return self - def __next__(self): - return self.next() - def next(self): try: - return raw_input(">> ") + return raw_input(self.prompt) + except KeyboardInterrupt: + return None except EOFError: raise StopIteration() if __name__ == "__main__": - for line in Reader(): - ptree = parser.parse(line) + for line in Reader(">> ", banner="WASP %s" % wasp.VERSION): + if line == "" or line is None: + continue + + try: + ptree = wasp.parser.parse(line) + except ValueError, e: + print e.message + continue + print " ^ %s" % ptree ast = ptree.ast() print " ‡ %r" % ast diff --git a/wasp/__init__.py b/wasp/__init__.py index e69de29..a4e55ec 100644 --- a/wasp/__init__.py +++ b/wasp/__init__.py @@ -0,0 +1 @@ +VERSION = '0.0.1'