This comprehensive discussion of the components of a programming language emphasises how a language is built. It covers core concepts including specification, objects, expressions, control and types with discussions of fundamentals, implementations strategies and related semantic issues. The book also focuses on current topics such as modules and object-oriented programming. Throughout the text there is an emphasis on semantics and abstraction, plus discussion on the syntax and historical developments of languages in light of the underlying semantical concepts. There are many examples given, which are all annotated from several languages including Pascal, C, C++, Forth, Basic, Lisp, Fortran, Ada, Cobol, Prolog, Turing, Miranda and Scheme.