On Thu, 19 Jul 2012 15:45:16 +1000 Chris Jones <chrisjo...@spin.net.au> wrote:
> Basile Starynkevitch wrote: > > On Thu, 19 Jul 2012 13:23:40 +1000 > > Chris Jones <chrisjo...@spin.net.au> wrote: > > > >> Is there any reason that I can't create a new front-end translator for > >> gcc using QT? > > GCC being a free GPLv3 software, you could always fork it and do that. But > > I am not sure > > to understand what you really are thinking of. > > > > While current GCC is easily extensible thru plugins (or MELT extensions, see > > http://gcc-melt.org/ for more), there is no plugin interface to add a new > > front-end (yet). > > > > And Qt http://qt.nokia.com/ being mostly a graphical interface toolkit, I > > don't see how > > it is relevant to a new front-end. > > > > GCC has very deeply the idea that you compile compilation units (such as > > toplevel C > > files) in whole by parsing some files. > > You might remember a while ago I was asking how to implement a new > language support into gcc. And it was suggested to me by several people > that implementing it via a front-end and translator would be the best > way to go. You might have a confusing terminology, with regards to GCC internals. You could implement a new language by making a translator from that language to C (this is actually a good idea, and I am doing that in MELT; MELT is a domain specific language to extend GCC, see http://gcc-melt.org/). Don't call that translator a front-end. You could choose to have your translator emit standard C code, then it should generate C code compilable by any C compiler (e.g. gcc, tcc, clang, ...). You could also choose to have your translator emit C code with GCC extensions. http://gcc.gnu.org/onlinedocs/gcc/C-Extensions.html Many GCC extensions are useful when emitting C code (e.g. variable length array, labels as values & computed gotos, attributes, extended asm, builtins...); some GCC extensions are accepted by some other compilers (e.g. Clang). But standard conforming compilers should only follow the C standards (and don't provide all GCC extensions). If you choose to emit C code, your translator probably depends upon GCC but is *not* a GCC front-end; it is an independent program which happens to need GCC. Alternatively (and probably latter, once you have a prototype implementation of your language), you could make a GCC front-end for your language. This requires you to develop a large bunch of code which is linked inside (your fork of) GCC. This also requires you to understand the details of GCC middle-end representations and passes. Within the GCC community, a GCC front-end is a large bunch of code linked inside GCC. Look inside GCC source code, notably gcc/go/ & gcc/objc/ for examples. A translator emitting C code for GCC should not be called a front-end. Regards. -- Basile STARYNKEVITCH http://starynkevitch.net/Basile/ email: basile<at>starynkevitch<dot>net mobile: +33 6 8501 2359 8, rue de la Faiencerie, 92340 Bourg La Reine, France *** opinions {are only mine, sont seulement les miennes} ***