Здравствуйте, Andrei N.Sobchuck, Вы писали:
ANS>Нафиг-нафиг такой ответ. Еще раз, нужно не переписать программу один в один (чем и занимается компилятор), а написать ОО программу, которая давала бы тайкой же результат. Ы?
Иди
сюда и попробуй переписать SprintTyExpr в ОО стиле
Особенно мне интересно что ты будешь делать с подобными выкрутасами:
// the special case for unary operators
| TT.TExpr.Call (TT.TExpr.OpCode (name), [parm], _) =>
append (name);
append ("(");
recurse (parm.expr);
append (")");
// the special case for infix binary operators
| TT.TExpr.Call (TT.TExpr.OpCode (name), [parm1, parm2], _) =>
append ("(");
recurse (parm1.expr);
append (" " + name + " ");
recurse (parm2.expr);
append (")")
// pretty print the list constructors
| TT.TExpr.Call (TT.TExpr.StaticRef (_, mem, _), _, _) when is_list_cons (mem) =>
print_list_constructors (expr)
// write all the other calls in prefix form
| TT.TExpr.Call (func /* PExpr */, parms /* list [Parm] */, _) =>
recurse (func);
append (" (");
print_fun_call_parms (parms);
append (")")
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>