Switch to map-based AST representation, add transformation from s-exprs
Add top-level driver