/* $Id$ */ /* vim: set syntax=cpp shiftwidth=4 expandtab tabstop=4: */ #include "trefal.hh" tfun int insert (TExpr e, TExpr s, tout Expr out) { Expr& x = (Expr&) e; if (x.get_len() == 0) { out = (Expr&) s; } else { Term* p = x; TExpr z; Expr& o = (Expr&) z; o.init(x.get_len()); Term* q = o; for (unsigned i = 0; i < x.get_len(); i++, p++, q++) if (p->type == Term::EXPR) { q->type = Term::EXPR; insert(p->e, s, q->e); } else *q = *p; out = o; } return 0; } tfun int main (int argc, char *argv[]) { TExpr s; TExpr e; TExpr out; std::cin >> e; std::cout << e << std::endl; std::cin >> s; std::cout << s << std::endl; std::cerr << "expr: " << e << std::endl << "subst: " << s << std::endl; insert(e, s, out); std::cerr << "after insert: " << out << std::endl; return 0; }