Bootstrapping Programming Language Translators Prepared by Manuel E
Bootstrapping Programming Language Translators Prepared by Manuel E. Bermúdez, Ph. D. Associate Professor University of Florida
“Bootstrapping” • The notion of implementing a language, by means of using (part of) that language’s own implementation. • Notation: T-diagram Source Target Language Written in
Bootstrapping Diagram Purpose: APPLICATION C M M M Object Coincides Source Coincides Execution
Bootstrapping • Example: We wish to have a Pascual compiler for a new Processor, M. P How do we get it ? M M Possibility #1: Write the compiler directly by hand, in machine language? In assembly language ?
Bootstrapping Possibility # 2: Write the Pascal compiler in some other language L, that is already implemented on M. Then, compile the compiler. P L M M • But, . . . this is probably too much work. M M L Compiler
Bootstrapping Possibility # 3: First, implement P, a subset of Pascal. Then, write the desired compiler in P, and compile it. Step 1: P L M M • Now P is implemented. M M
Bootstrapping Step 2: Pascal P Write this Pascal M P M M • If P is choosen well, the P -> M compiler and the Pascal -> M compiler (in P) together, are easier to write than the Pascal -> M (in L) compiler. • Theoretically, this process can go on indefinitely, bootstrapping up the level of the language. In practice, however, new constructs interfere with each other (and with old ones), until further bootstrapping becomes ummanageable
Bootstrapping • Example: Now, lets suppose we wish to port Pascal to a new machine, M’. Possibility #1: Same as for M. Possibility #2: Same as for M. Possibility #3: Same as for M.
Bootstrapping Possibility #4: Step 1: Same as for M (implement P on M’). Step 2: Modify the Pascal compiler. Pascal M By hand P Pascal M’ P P M’ M’
Bootstrapping Possibility #5: Don’t use P! Use the implementation of Pascal on M instead. Step 1: Pascal M By hand P Pascal M’ Pascal M M M’ M
Bootstrapping Step 2: Pascal By hand Pascal M’ M Note: Possibility #5 is called “cross-compiling”. M’ M’
Bootstrapping Many compilers undergo a long chain of bootstrapping steps. For example, XPL (a dialect of PL/I), was written first in Algol, then in XPL, and ported to a B 5500 and then an IBM 360. Eight bootstraping steps were required.
- Slides: 12