Re: Bootstraping compilers ?



Paulo Jorge de O. C. de Matos wrote:

However once you have written a C99 compiler (using C95) you can then
write a C99 compiler and compile it with itself (after the first
compilation using the C99 compiler written in C95)


Thanks you all for your replies. Chris, this is making me
confused. Does your quote mean that I would have to write two
compilers? One compiler in C95 and one in C99? So the first would
accept C99, the second in C99 is then fed into the first?

Consider two aspects: the language to compile, and the compiler itself.

With regards to the language you may want to retain backwards
compatibility, or multiple "idioms" of the language, which may be
selectable by command line switches. This part can grow or shrink,
whatever functionality you want to put into, or remove from, your
concrete compiler. The lexer/parser may be implemented for C99, with
conditional branches in the semantic code to reject or allow for the
recognition of the C95/C99 or any sooner (or later) language specs. A
parser frequently will accept more (syntactic) constructs, whereas the
exact language specification (including semantics) will be implemented
by semantic code only.

The compiler itself may not profit from new language features, so that
this code can stay in the old (C95) version - provided backwards
compatibility of the language specs.

DoDi
.



Relevant Pages

  • Re: Requesting advice how to clean up C code for validating string represents integer
    ... Or whatever the GNU C compiler uses when the -ansi switch is turned ... -ansi Support all ANSI standard C programs. ... Please tell me whether GNU C MAN pages are referring to C99 or what? ...
    (comp.lang.c)
  • Re: Storgae durations
    ... whether C99 is the "current" standard depends on what ... gcc is *close* to being a C99 compiler, but it isn't actually there yet. ... That's precisely what "conforming" means. ... The function won't always invoke undefined behavior, ...
    (comp.lang.c)
  • Re: const array declaration
    ... [I snipped some gcc diagnostics from a previous poster here] ... outside the C code changes it, so that the compiler cannot simply ... "b" are thus not at all constants, but C99 accepts this, just as ... In C89, all aggregate initializers ...
    (comp.lang.c)
  • Re: Is C99 the final C? (some suggestions)
    ... The Intel C compiler claims to also support C99, ... The Pelles C compiler for Windows and Pocket PC claims C99 support. ...
    (comp.lang.c)
  • Re: Is C99 the final C? (some suggestions)
    ... >> There are no C99 compilers, ... because it's not what people usually mean by compiler. ... it's not a conforming C99 compiler. ... >The Pelles C compiler for Windows and Pocket PC claims C99 support. ...
    (comp.lang.c)