| # Annex E: Glossary |

(This annex is informative only)

The following explanations of terms is given as an aid to the reading of this document.

Some of the terms found here are given explicit definitions in the body of this specification; the explanations given here are for completeness.

Many terms are used in this specification which have a special meaning in this context. Their interpretations are not as general as may be given in a dictionary and may, in fact, not match the reader's idea of the meaning of those terms.

- Abstract Class - this term is used in Sather with the meaning given below for an Abstract Data Type.
- Abstract Data Type (ADT) - this term refers to an abstract description of the properties and behaviour of some data type. In Sather terminology this is the equivalent of an Abstract Class.
- Abstract Syntax - An abstract version of the underlying structure of the Sather language defined in terms of a hierarchy of vdm-sl types. This shows essential structure but omits lexical details.
- Abstraction - This term specifies the meaning of some concept with no consideration of how it may be implemented as part of a computer program.
- Alignment - The storage mechanism of a computer system may specify limitations or restrictions on the way in which stored objects of various sizes may be stored in relation to the storage address allocated. For example there may be a limitation which requires objects whose size is four octets to be stored at locations whose address modulo 4 is zero. Such limitations may mean that objects of differing size may not necessarily be stored in adjacent storage locations.
- Argument Mode - Each argument to a method in Sather has a mode which is either In, Out or Inout as described for the Ada language. In addition to these an iterator argument may also have the mode Once - which indicates that the value should only be determined when the first invocation of the iterator takes place.
- Attribute - Certain features of an implementation class may be defined as attributes. This is a form of short-hand for a pair of methods - a reader and a writer.
- Class - Either a definition of some Abstract Data Type or an implementation of some program/library model component.
- Concrete Syntax - The grammar rules which describe how source text shall be structured to convey the intended meaning of a component of a program.
- Declaration semantics - The meaning of the introduction of a new identifier denoting some constant, type, variable or method.
- Dynamic semantics - The meaning of some language construct which is determined during elaboration when the program is executing.
- Environment - this term arises in this document in two distinct contexts, having different meanings -
  - The computer system execution environment in which a program is executing, including the hardware, firmware and operating system.
  - The semantic environment within the program being executed or translated. This includes mappings from identifiers to the objects (stores, values, methods, etc) which those names represent at that point in the program. This environment also includes the mappings from identifiable storage locations to the values currently held in them.
- Exception - the occurrence of a disturbance in the normal flow of control of a Sather program. This may be occasioned directly when a method raises an exception synchronously or when some external environment exception is notified to the program asynchronously (as, for example, an attempt to divide by zero).
- External Class - an external class defines the Sather interface to objects and methods which may be defined by systems in the computer system environment of an executing program. The Required library, for example, defines abstract interfaces to an operating system which an implementation must provide. It is certain that external classes will form some part of an implementation of these interfaces.
- Feature - a class which implements or models some concept does so by defining features. Features are methods. Note that properties (see attribute) are defined by a reader method and a writer method, either or both of which may be private.
- Immutable Class - An immutable class is one for which the value it represents cannot be modified during program execution. It may be either a class defined as being immutable with that keyword where methods return the value of an object - not the object itself; this term may also be used to refer to a reference class entity the features of which provide immutable semantics.
- Implementation Mode - A mode of use of an implementation. In particular, an implementation conforming with this language specification must have a mode of use in which no additional facilities which may have been provided will be used/recognised.
- Inclusion - Any implementation class may include all of the features of some other implementation class - which may be a partial class or a fully instantiated implementation class. Note that this facility in Sather is completely independent of class inheritance.
- Inherit - A class is said to inherit the properties defined in the abstract calss from which it is inheriting feature definitions. Note that in Sather inheritance is completely separate from code inclusion.
- Iterator - A method which encapsulates user defined looping control structures - just as routines do for algorithms (see [MUR96]).
- Library - A named (but see Required Library) collection of classes with a common name-space.
- Library Class - A class which forms part of either the Required Library or some other named library which is not part of some application program.
- Method - A component of a program which is elaborated individually during execution. It may be a routine or an iterator.
- Model - For the purposes of describing programs and the behaviour of particular Abstract Data Type, they are considered to provide a computer model of the behaviour of those features of a real world activity which it is necessary for an implementation class to provide when a program is executing.
- Name Space - This term corresponds to the term 'scope' used in defining components of a program. It is a domain of class names within which both the name and its meaning are known. See library above.
- Notification - This term refers to any method which may be used by an implementation to make a user aware that an error or other unhandled exceptional event has occurred.
- Opaque - Any object which is said to be opaque has neither visible structure nor properties of any kind from which such structure can be inferred. The only methods available are for conversion to and from such an object.
- Partial Class - This term is applied to the syntactic unit of Sather source text which may be included into a reference or immutable - or other partial - class, where its effect is as though the source text had been placed at the point of inclusion and any argument types substituted by their instantiations.
- Pervasive - This term applies to classes and methods the name of which is pervasive to the entire source text of a Sather program. Items which are said to be pervasive may not be given definitions which conflict with the meaning ascribed to them in this document.
- Pre-defined - This term is used to indicate those names, values and identifers which are defined as part of the lexical structure of a Sather program.
- Private - The keyword when used in the source text of some class definition indicates that the feature being defined is not visible outside of the class text in which the definition occurs.
- Program Class - One class in the source text of a Sather program is considered to be the 'program' class. This class is identified as being distinguished in this way by notifying the implementation of this (in some implementation-defined way) when translating a program. See also Program Method below.
- Program Method - One method in the program class is distinguished as the method which is to be invoked when a Sather program begins execution. This method must be identified to an implementation (in an implementqtion-defined way) when the program is being translated.
- Reference Class - This is a class which defines entities which require creation and which may be returned from a method - rather than the value being returned it is the object which is returned. Such entities may survive outside the scope of the program method in which they were originally created.
- Required Library - This is an un-named Library which has a pervasive name-space. Its formal definition is given in Section 8 of this document.
- Routine - An encapsulation of the implementation of some algorithm whaich may or may not return some value.
- Signature - The signature of a method consists of its name together with the kinds of parameter used, giving them individual argument modes, names and types. If the method returns or yields a value then the signature is completed by giving the type of value returned/yielded.
- Source Text - This is a textual form of representation which purports to be (part of) a definition of some component of a Sather program. If it satisfies the rules described in this document then it is (part of) such a definition and is said to be translatable.
- Static semantics - The meaning of some source text of a Sather program derived from its relationships with the textual and logical environment within which it occurs. Source text for which static semantic rules are obeyed is said to be well-formed.
- Sub-type - An implementation class may be defined to conform to one or more abstract classes. This is termed sub-typing and is one form of inheritance.
- Super-type - An abstract class from which some other abstract class or implementation class inherits is said to be a super-type of that inheriting class. It is also possible (with restrictions described in Section 6) for the definition of an abstract class to be a super-type of some already defined class.
- Token - A token is a unique value which may represent any entity in either a source text or other form of some program. It may be used as a short-hand form of class representation instead of the original text. Such a class is then considered to be 'tokenised' or in a 'tokenised form'.
- Translatable - A fragment of the source text of a Sather program is said to be translatable if it conforms exactly to the syntactic, static semantic and declaration semantic rules given in this document.
- Type - This defines the properties and methods which may be applied to an object of that type. In Sather terminology there are Abstract Classes which define Abstract Data Types and other classes which define implementations of some abstraction. Both class kinds essentially, therefore, define a type. The term type, however, is strictly speaking only applicable to abstract classes. See sub-type and super-type.
- Vdm-sl - The Vienna Definition Method Specification Language. The form used in this document is that defined for use by programs which manipulate VDM definitions as defined in ISO/IEC 13817.
- Well-formed - Meets the static semantic rules of the language and, as a pre-requisite to these, meets the syntax rules.
- Yield - The term applied when an iterator yields control to its invoking scope. This may or may not involve yielding a value as well. Note that, depending upon its definition, an iterator may never quit, merely yielding on successive occasions until some other action in the enclosing scope terminates the loop.

| Specification Index |  | Language Index

Comments or enquiries should be made to Keith Hopper. Page last modified: Monday, 29 May 2000. |