I wrote a compiler for CAS-language like Maple or MuPAD with SableCC to convert this
single language to Maxima (for CAS-Capacity) and LaTeX (to display). SableCC's AST is
strict object-oriented and it's easy to extends it to generate diffence languages. If you
want to compile a language into more than one others languages, just give it a try.