std::map<std::string, std::string> list(ast::matcher_ptr& m) { vars.clear(); m->accept(this); return vars; }
is_lexical(ast::matcher_ptr m) : lexical(true) { m->accept(this); }