2.0 Introduction

2.1 Grammars

2.2 Ambiguity

2.3 Summary

Web References

Exercises

2.0.2 Language Design as an Example of the Software Design

A language is, itself, a software system or part of a software system. The five standard phases of the software development process can provide a structure in which to develop a language (and then we can apply these all over again to its implementation!)

The first phase is requirements analysis and specification. For example, RoBOTL was designed to (1) be simple-to-write programs in, (2) have object-oriented semantics, and (3) have a C++-like syntax.

The second phase is software design and specification. We can apply this to language design by specifying a syntax and semantics for a new language.

The third phase, implementation, is the compiler and, as mentioned above, is a software system in its own right.

The fourth phase, certification, or validation checks that the software system satisfies the requirements. For a programming language, this often is a check that the compiler satisfies the syntax and semantic description.

The fifth phase, maintenance, is somewhat diffenent for language design since a language really shouldn't change very often. However, languages such as Modula were followed by Modula-2 and then by Modula-3, so enhancements do take place. FORTRAN is quite different today from what it was originally in the 1950's.

Exercise 1 asks the reader to describe the five phases of the compiler itself.