1.8 Summary

This chapter has introduced the phases of a compiler. Front-end phases are lexical analysis and semantic analysis, while back-end phases are optimization and code-generation. Semantic analysis overlaps both the front-end, which focuses on the input program being analyzed, and back-end phases which focus on the output code to be synthesized.

The remainder of this course presents algorithms and data structures for performing and/or generating these compiler phases. Where possible, mainly for the front end, we focus on automating the compiling process. Where automation is more difficult, mainly in the back-end, we focus on techniques for efficient processing,

Compilers are an interesting, integrated computer science topic, encompassing concepts from data structures, algorithms, finite automata, computability, computer architecture and software engineering, to name a few. In addition, topics in compiler design continue to evolve: new architectures (see Chapter 12 ) require new techniques; the automation process continues to be researched and developed; error processing techniques continue to improve.

Building the right tools and using good design produce good compilers.

Send questions and comment to: Karen Lemone