From 46770419e6203695838e2ca840f7ad7ae981f9f1 Mon Sep 17 00:00:00 2001 From: John Doty Date: Fri, 13 Sep 2024 15:29:18 -0700 Subject: [PATCH] Dumb harness for working with wrapping It's pretty manual but I want to see how bad it is. --- wrap.py | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 wrap.py diff --git a/wrap.py b/wrap.py new file mode 100644 index 0000000..49409cb --- /dev/null +++ b/wrap.py @@ -0,0 +1,31 @@ +import grammar + +import parser.runtime as runtime +import parser.wadler as wadler + + +def main(): + g = grammar.FineGrammar() + parser = runtime.Parser(g.build_table()) + lexer = g.compile_lexer() + + with open("test.fine", "r", encoding="utf-8") as f: + text = f.read() + + tree, errors = parser.parse(runtime.GenericTokenStream(text, lexer)) + if tree is None or len(errors) > 0: + print(f"{len(errors)} ERRORS") + for error in errors: + print(f"{error}") + return + + WIDTH = 40 + + printer = wadler.Printer(g) + result = printer.format_tree(tree, WIDTH).apply_to_source(text) + for line in result.splitlines(): + print(f"{line:<{WIDTH}}|") + + +if __name__ == "__main__": + main()