How it works:
- Programs are written as a dataflow graph with z3 (any graph format will work but I'm already familiar with z3). (see
part1.py
,part2.py
, ...) flatten_ast
converts the z3 AST to a sequential list of operations and also caches constants so they only appear onceops_to_lines
converts the operation list to a JSON file with formatted text/builder
runs a simple webserver that uses Handlebars templating to convert the JSON files into nicely formatted HTML- (external) "Print" the HTML pages and save as PDF to render