1.0 Introduction

1.1 History

1.2 Characteristics

1.3 Scanner Generators

1.4 Parser Generators

1.5 Semantic Analyzer Generators

1.6 Optimization

1.7 Code Generation

1.8 Summary

Web References

Exercises

1.2.1 Metalanguage

A metalanguage describes another language or some aspect of another language. Some metalanguages for compiler parts are well known. Regular expressions can describe tokens, and Backus-Naur form (BNF) can describe the syntax of a programming language. When we add attributes and semantic functions to BNF, creating an attribute grammar , we can describe the semantics of a programming language, as well as the syntax.

Some metalanguages can be used to describe themselves. The term unstratified refers to the self-description property of a metalanguage. A good metalanguage is unstratified.

Properties of Good metalanguages