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

Properties of Good Metalanguages

A good metalanguage should be easy-to-learn, easy-to-read, and easy-to-use. It should be appropriate. For example, if the metalanguage is to describe tokens, it should be close to the notation for regular expressions.

A metalanguage should be "integrated", that is, have similar notations for functions throughout the different parts of the tool. For example, "=" might be used as the assignment operator for the regular expressions part, the context-free part, and the semantic function part. LEX and YACC use "%%" as separators between the different sections for all parts of the metalanguage.

Like programming languages themselves, the metalanguage should not contain constructs that are easily error-prone such as comments that extend over line boundaries.

A good metalanguage is difficult to define and probably a matter of taste. This section has mentioned properties that all metalanguages should have.