a laboratory based approach

is an Assistant Professor at the

and

Barry L.

is Professor and Head of Computer Science at

**Publisher : **
Addison-Wesley Publishing Co. - Reading, Mass.

**Bibliographic : **

- Hardcover
- ISBN: 0-201-65697-3
- © 1995
- xviii, 637 p. : ill. ; 25 cm.
- Dewey No.: 005.13/1 20

- Programming languages (Electronic computers) -- Syntax.

Programming languages (Electronic computers) -- Semantics.

**Formal Syntax and Semantics of Programming Languages** is a text designed for an advanced
undergraduate or introductory graduate level course on the formal syntax and semantics of programming
languages. This unique text takes a teaching/learning perspective rather than the traditional,
research-oriented approach.

This text is designed to present the typically difficult subject area of formal methods via an informal presentation. This text is accessible to students who have a basic grounding in discrete mathematics. A laboratory component provides the opportunity for practical application of difficult concepts.

The author's web page for the book [Lab materials, errata, and more]

**CONTENTS : **

**1. Specifying Syntax** .
Grammars and BNF .
The Programming Language Wren .
Variants of BNF .
Abstract Syntax .

**2. Introduction To Laboratory Activities** .
Scanning .
Logic Grammars .
Parsing Wren .

**3. Attribute Grammars** .
Concepts and Examples .
An Attribute Grammar for Wren .
Laboratory: Context Checking Wren.

**4. Two-Level Grammars** .
Concepts and Examples .
A Two-Level Grammar for Wren .
Two-Level Grammars and Prolog.

** 5. Lambda Calculus** .
Concepts and Examples .
Lambda Reduction.
Laboratory : A Lambda Calculus Evaluator.

**6. Self-Definition Of Programming Languages** .
Self-Definition of Lisp.
Self-Definition of Prolog .

** 7. Translational Semantics** .
Concepts and Examples .
Attribute Grammar Code Generation.
Laboratory: Implementing Code Generation.

** 8. Traditional Operational Semantics** .
Concepts and Examples .
SECD: An Abstract Machine .
Laboratory: Implementing the SECD maching.
Structural Operational Semantics: Introduction .
Structural Operational Semantics: Expressions .
Structural Operational Semantics: Commands .
Laboratory: Implementing Structural Operational Semantics.

**9. Denotational Semantics**.
Concepts and Examples .
A Calculator Language .
The Denotational Semantics of Wren .
Laboratory: Implementing Denotational Semantics .
Denotational Semantics with Environments .
Checking Context-Sensitive Syntax .
Continuation Semantics .

**10. Domain Theory And Fixed-Point Semantics** .
Concepts and Examples .
Domain Theory.
Fixed-Point Semantics .
Laboratory: Recursion in the Lambda Calculus .

**11. Axiomatic Semantics** .
Concepts and Examples .
Axiomatic Semantics for Wren .
Axiomatic Semantics for Pelican .
Proving Termination .
Introduction to Program Derivation.

**12. Algebraic Semantics** .
Concepts and Examples .
Mathematical Foundations .
Using Algebraic Specification .
Algebraic Semantics for Wren .
Laboratory: Implementing Algebraic Semantics .

**13. Action Semantics** .
Concepts and Examples .
Action Semantics of a Calculator .
The Declarative Facet and Wren .
The Reflective Facet and Pelican .
Laboratory: Translating into Action Semantics.

** Appendix A. Logic Programming with Prolog .
Appendix B. Functional Programming with Scheme**

Includes bibliographical references (p. 611-624) and index.

Changed 20/01/1997. Comments: monika@cs.ioc.ee