class RewriteBind: public Rewrite<AstPtr> { public: RewriteBind(): Rewrite(AstEmpty().clone()) { } void clear_state() { set_state(AstEmpty().clone()); } AstPtr rewrite_decl_type(const Position& p, const AstPtr& n, const AstPtr& t) { set_state(n); auto t0 = rewrite(t); clear_state(); return AstDeclType(p, n, t0).clone(); } AstPtr rewrite_expr_record(const Position& p, const AstPtr& f, const AstPtr& i, const AstPtrs& aa) { auto i0 = get_state(); return AstExprRecord(p, f, i0, aa).clone(); } AstPtr rewrite_decl_interface(const Position& p, const AstPtr& n, const AstPtr& t) { set_state(n); auto t0 = rewrite(t); clear_state(); return AstDeclInterface(p, n, t0).clone(); } AstPtr rewrite_decl_instance(const Position& p, const AstPtr& pr, const AstPtr& t, const AstPtr& b) { set_state(t); auto b0 = rewrite(b); clear_state(); return AstDeclInstance(p, pr, t, b0).clone(); } AstPtr rewrite_decl_method(const Position& p, const AstPtr& n, const AstPtr& i, const AstPtr& t, const AstPtr& e) { auto i0 = get_state(); return AstDeclMethod(p, n, i0, t, e).clone(); } AstPtr rewrite_decl_definition(const Position& p, const AstPtr& n, const AstPtr& t, const AstPtr& e) { return AstDeclDefinition(p, n, t, e).clone(); // cut } };
Thursday, May 21, 2015
Log 052115 - b
Mightily pleased with myself. My first transform on the AST. Lightning speed.
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment