Control Flow Semantics presents a unified, formal treatment of the semantics of a wide spectrum of control flow notions as found in sequential, concurrent, logic, object-oriented, and functional programming languages. Whereas in more traditional approaches one focuses on input/output behavior, in this work equal attention is devoted to finite and infinite computations, the latter motivated by the growing importance of reactive systems.
Knowledge of the comparative semantics of control structures is critical for the designers of programming languages, and it is difficult to choose from today's bewildering variety of control flow concepts (the ways in which a program specifies the successive steps to be taken during execution). Encyclopedic in scope, Control Flow Semantics provides comprehensive coverage of these concepts, developing operational and denotational models for control flow in 27 languages. In all cases, precise statements are given relating these models.
A rich body of semantic definitional techniques is presented, including (labeled) transition systems, higher-order definitions, resumptions and continuations, linear or sequence-based models, and models specified by domain equations. Moreover, both symbol-based or schematic languages -prevalent in the study of concurrency- and state- based or interpreted languages are considered. The book is founded on a unifying mathematical basis of metric structures, allowing the full modeling of infinite behavior, as well as the exploitation of some classical results, such as Banach's fixed point theorem. Perspectives on further topics, such as full abstractness, noninterleaving semantics for parallelism, and second-order programming are also included.