The project's aim is to build GPL'd automated or semi-automated language translation system that will *attempt* to translate (port) program source written in one language to other programming language(s).
This is going to be achieved by first converting input source to intermediate language-independent code presentation (sort of syntax tree, but more than just syntax tree, including type information and some semantic details of the source), then this intermediate structure can be reproduced as source code text written in another programming language and this generated textual representation will go to output.This process allows to easily add new languages, and provides clean way to translate between multiple programming languages, and even gives means to make language-independent code optimizations on the way (unrolling loops, discarding unused or redundant code, etc...), if theese optimizations can be applied directly on the intermediate structure. This also allows me to divide the code into mostly independent pieces:
It is actually possible to write plug-in that will actually compile the intermediate code representation into assembly listing or binary object image for specific platform and CPU. This way, we can create multi-language compiler because to add new language you will only need to create input plug-in that can understand the language and convert it into intermediate representation. From this point on - the code generation is common for all languages.
The main idea here is to divide efforts between core-library development team and plugin developers, divide the code into modules to ease development and facilitate team work.
Everything will be written in portable, ANSI C and will be easily portable to any operating system/environment that have C compiler on it. Because it will have modular design with clear interfaces to modules it will be able to be embedded in integrated development environments, used as stand-alone tool, or as a module in other projects.
This library is not going to replace GCC :o). GCC is powerful tool that was developed for a long time and is actually excellent piece of software. This project's primary goal is to both practice in compiler creation, and to provide really professional and useful tool that may aid in translation between languages that will be GPLed, cross-platform and easily portable, and open for everyone to use. I know there are other projects whose goal is the same, but I've not seen any that are scalable and extensible enough to allow support for translation of many languages in single project
Actually, part of the project is already done and is working. More documentation and working source codes will be posted soon.