void collect_non_local_vars(ast_manager & m, rule const * r, app * t_1, app * t_2, var_idx_set & result) { collect_vars(m, r->get_head(), result); unsigned sz = r->get_tail_size(); for (unsigned i = 0; i < sz; i++) { app * curr = r->get_tail(i); if (curr != t_1 && curr != t_2) collect_vars(m, curr, result); } }
int run_compilation_passes (struct ast **ss) { int ret = 0; ret = ret || semantic (*ss); ret = ret || transform (ss); ret = ret || dealias (ss); ret = ret || collect_vars (*ss); ret = ret || optimizer (ss); ret = ret || gen_code (*ss); AST_FREE (*ss); return ret; }
var_idx_set& rule_manager::collect_vars(expr* e) { return collect_vars(e, 0); }
void collect_tail_vars(ast_manager & m, rule * r, var_idx_set & result) { unsigned n = r->get_tail_size(); for(unsigned i=0;i<n;i++) { collect_vars(m, r->get_tail(i), result); } }