Department of Computer Science and Technology

Technical reports

An operational semantics for occam

Juanito Camilleri

August 1988, 27 pages

This is an extended version of UCAM-CL-TR-125, in which we include the operational semantics of priority alternation.

DOI: 10.48456/tr-144


Occam is a programming language designed to support concurrent applications, especially those implemented on networks of communicating processors. The aim of this paper is to formulate the meaning of the language constructs of Occam by semantic definitions which are intended as a direct formalisation of the natural language descriptions usually found in programming language manuals [Inmos 5]. This is done by defining a syntax directed transition system where the transitions associated to a phrase are a function of the transitions associated to its components. This method is by no means novel. The concepts here were introduced in [Plotkin 10] and are applied in [Plotkin 11] where an operational semantics for CSP [Hoare 4] was presented. The operational semantics for a subset of Ada is defined in [Li 6], where tasking and exception handling are modelled. For simplicity only a subset of Occam is defined. Timing, replicators and BYTE subscription are omitted. Other features of Occam which deal with the association of components of an Occam program with a set of physical resources (i.e. configurations) are also omitted since they do not effect the semantic interpretation of a program.

Full text

PDF (0.7 MB)

BibTeX record

  author =	 {Camilleri, Juanito},
  title = 	 {{An operational semantics for occam}},
  year = 	 1988,
  month = 	 aug,
  url = 	 {},
  institution =  {University of Cambridge, Computer Laboratory},
  doi = 	 {10.48456/tr-144},
  number = 	 {UCAM-CL-TR-144}