"

 Metacompiler 

Hay I see you contributed to compiler-compiler and to the metacompiler page adding a CWIC topic

It seams that the originator of the metacompiler topic intended it to include forth or at least is using the forth idea of a metacompiler saying that because it compiles it's self I.E.

Defining itself and translating itself this way constitutes the meta-step that sets a metacompiler apart from other compiler-compilers

A common saying on FORTH sites. Especially ""meta step"" The fact is that LISP compiles it's self practically the same identical way as Forth does.

Self-hosting compilers are common. Most general purpose language compilers are self-hosted. I pointed out that many of the compilers I wrote or worked on, compiled themselves. And actually the initial development steps of self hosting compilers are the same as described. I was head of the Language Development Group at Kontron electronics. Many console games were written using our compilers. All of the compilers were written in an extended PASCAL. Which bootstrapped from scratch. Most were cross compilers for processors our In Circuit Emulators supported. Actually I started with FutureData that was bought be GenRad and then sold to Kontron.

A self-hosting metacompiler is a lot easier to bootstrap up then a general purpose language.
 
Historically metacompilers were compiler compilers. Compiler compiler was the general term used in the 60's Then yacc yuked that up being a parser generator. And calling it's self Yet Another Compiler Compiler. Compared to the compiler compilers of 60's yacc is only hacc. Half a compiler compiler. My term was Half Ass Compiler Compiler. There are implementation of yacc that use yacc to compile it's self. So metacompiler (old version) hasn't really separates it's self from other compiler compilers. Sense the start of this despute I have added referanced defination of metacompilers. The [Sci-Tech Dictionary McGraw-Hill Dictionary of Scientific and Technical Terms, 6th edition, published by The McGraw-Hill Companies, Inc. http://www.answers.com/topic/metacompiler] clearly states "" A metacompilers is a compiler that is used chiefly to construct compilers for other programming languages.""

We have gotten into a flame war on the metacompiler talk page over the defining feature:

""The feature that sets a metacompiler apart from a standard compiler-compiler is that a metacompiler is written in its own language and translates itself."" 
Defining itself and translating itself this way constitutes the meta-step that sets a metacompiler apart from other compiler-compilers

It's true that a metacompiler usually defines it's self. But not all metacompiler were self-hosted for various reasons. Damon really went ballistic when I found a metacompiler written in PL/1 in a reference he gave to prove his position. Going on about me misconstruing his I do not know what.

The subjects of compiler-compiler, syntax-directed-compiler, and metacompiler are all closely related. And at one time were the same thing. The distinguishing factors are needed if they are really separate subjects.

There have been many metacompiler over the years that are called metacompilers. Some like BOOK1, BOOK2, and CWIC are meta compilers An early metacompiler that did not call it's self a meta compiler was:

""A compiler-building system developed by Brooker and Morris"" Brooker and Morris, Communications of the ACM Volume 7 Issue 7, July 1964 It has a parsing language ""BNF"" and a machine description language ""MDL"" There is an intermediate ""GSL"" generation Strategy L:anguage.

CWIC was based partly on Schorre's META compilers and partly on LISP2 developed at SDC The syntax language includes features from TREE META. Is unclear of Schorre worked on TREE META. Thhe Stanford Research paper does not list Schorre. 

I implemented an extended CWIC compiler compiler on a DEC-System-10 between 1969 and 72. I added a machine description language and created a pseudo operation language (macro like functions using most of the CWIC generator production language). I am very familiar with how CWIC worked. I have taken to using TREE META terminology using unparse rules instead of pattern matching as used in CWIC documentation. The rules are actually recursive EVAL(ADD[EVAL(X),EVAL(Y)])=> has EVAL calling it's self on the tree legs and returning local variables in X and Y. That is a feature of tree meta also except tree meta doesn't have local variables.

I started an RFC and probably did it wrong as there has been no comments other then our bickering.

Val Schorre submitted papers in the SegForth ACM group in the 80s. Val said forth is not a meta compiler on his web site (now gone so can't be referanced).

This field o