import textwrap import os from lark import Lark from agast import Parser, Interface p = Lark(open("grammar.lark").read(), parser="lalr", transformer=Parser()) if __name__ == "__main__": with open("arith.ag") as f: data = f.read() t = p.parse(data) print(t) if not os.path.exists("gen"): os.makedirs("gen") with open("gen/arith.py", "w") as f: f.write(textwrap.dedent(""" from typing import Generic, TypeVar T = TypeVar('T') class Thunk(Generic[T]): pass """))