diff --git a/main.py b/main.py index 8f103e1..5f305fa 100644 --- a/main.py +++ b/main.py @@ -34,7 +34,6 @@ if __name__ == "__main__": } for expression in expressions: try: - print(f"[green]== Parsing: [yellow]{expression}[/yellow] ==[/green]") parse_expression(expression) except Exception as e: - print(f"[red]Failed parsing {expression}[/red]: {e}") + print(f"[red]Failed on {expression}[/red]: {str(e)[0:40]}...") diff --git a/repl.py b/repl.py new file mode 100644 index 0000000..92820da --- /dev/null +++ b/repl.py @@ -0,0 +1,16 @@ +from ziffers import * +from rich import print + +EXIT_CONDITION = ('exit', 'quit', '') + +if __name__ == "__main__": + print(f"[purple]== ZIFFERS REPL ==[/purple]") + while True: + expr = input('> ') + if expr not in EXIT_CONDITION: + try: + parse_expression(expr) + except Exception as e: + print(f"[red]Failed:[/red] {e}") + else: + exit() diff --git a/ziffers/__pycache__/ebnf.cpython-310.pyc b/ziffers/__pycache__/ebnf.cpython-310.pyc index 83138c0..4de9599 100644 Binary files a/ziffers/__pycache__/ebnf.cpython-310.pyc and b/ziffers/__pycache__/ebnf.cpython-310.pyc differ diff --git a/ziffers/ebnf.py b/ziffers/ebnf.py index 486b026..972154f 100644 --- a/ziffers/ebnf.py +++ b/ziffers/ebnf.py @@ -1,5 +1,5 @@ ebnf = r""" - expr = (number ws?)* + expr = (number ws?)+ number = factor additive* additive = ("+"/"-") factor factor = primary multiplicative*