Online version of “Introduction to the Theory of Programming Languages”

A full, free online version of
Introduction to the Theory of Programming Languages,
2nd printing (1991)


Copyright notice: The text is not in the public domain. It is copyrighted material, made available free of charge on the Web for the convenience of readers, with the permission of the original publisher (Prentice Hall, now Pearson Education, Inc.). You are not permitted to copy it or redistribute it. Please refer others to the present version at

The text (3.3 MB) is available here for download.

(Please do not bookmark or share the above download link as it may change, but use the present page: https:/

The book is a survey of methods for specifying programming languages, both syntax (focusing on abstract syntax) and various semantic approaches: operational semantics, translational semantics, denotational semantics and axiomatic semantics, as well as their complementarity. There are 10 chapters; here is the table of contents (xvi + 448 pages):


  • Preface
  1. Basic concepts
  2. Mathematical background.
  3. Syntax (introduces formal techniques for describing syntax, included a simplified BNF).
  4. Semantics: the main approaches (overview of the techniques described in detail in the following chapters).
  5. Lambda calculus.
  6. Denotational semantics: fundamentals.
  7. Denotational semantics: language features (covers denotational-style specifications of records, arrays, input/output etc.).
  8. The mathematics of recursion (talks in particular about iterative methods and fixpoints, and the bottom-up interpretation of recursion, based on work by Gérard Berry).
  9. Axiomatic semantics (an extensive — 98-page — presentation of Hoare-style language and program specification, also including Dijkstra’s weakest-precondition calculus and techniques of correctness by construction).
  10. Complementary semantic definitions (establishing a clear relationship between different specifications, particular axiomatic and denotational).
  • Bibliography

The text is from the second corrected printing, 1991, with additional corrections of errata reported after that publication.

The presentation uses a simple example language called Graal (for “Great Relief After Ada Lessons”). (You will also find, for specific examples, the language Lullaby, Little-Used Lilliputian Language Appropriate for Beginners and the Young, and Oulala, Outrageously Useless Lilliputian Assembly Language for Analphabets.)

This is a 3-decade-old text, and would be written differently today, but I believe it retains interest as an introduction to program semantics and formal methods.

VN:F [1.9.10_1130]
Rating: 9.9/10 (12 votes cast)
VN:F [1.9.10_1130]
Rating: +5 (from 5 votes)
Online version of "Introduction to the Theory of Programming Languages", 9.9 out of 10 based on 12 ratings
Be Sociable, Share!

Leave a Reply

You must be logged in to post a comment.