| # Section 3: Definitions and Conventions |

### 3.1 Definitions

The definitions given below form a part of this specification. Some of these, as well as additional terms, are also defined in Annex E, the Glossary for completeness.

1. Source Text A fragment of text which is potentially part of the textual representation of a component of a Sather program.
2. Class A class is a major component of a Sather program (which is made up of one or more classes). A class defines either abstract signatures (if it is an abstract class) or implementation features if not abstract.
3. Library A library is a named collection of classes (but see Required Library below) which defines a separate name-space for the classes out of which it is composed..
4. Library Class A library class is a class that forms part of a library (ie it is not a class written specifically for some application).
5. Required Library The required library is an un-named library which is defined in Section 8 of this document. All of the classes named in that library are pervasive to a Sather program.
6. Predefined A term which is applied to a class, signature or feature which forms part of the Sather language.
7. Pervasive identifier An identifier of a feature that is itself pre-defined and whose scope covers the entirety of classes of a Sather program.
8. Pervasive name An identifier of an abstract class or iterator that is itself pre-defined and whose scope covers the entirety of classes of a Sather program.
9. Pervasive class A class which forms part of the Sather language and is defined in Section 7 of this document.
10. Computer system The combination of hardware, firmware and software that enables the execution of a Sather program.
11. Distributed system The combination of computer systems that enables the execution of a distributed Sather program.
12. Implementation The means by which an executable Sather program for a computer system or distributed system is produced from the components of the program source text.
13. Implementation-defined A term applied to a value which is not defined in this document, but that requires definition before the meaning of a program which relies on that value may be determined.
    NOTE The minimum and maximum values for Required Library classes, such as CARD, fall into this category.
    An implementation which claims to conform to this specification must document the definition of any feature of the implementation marked by this term.
14. Implementation-dependent Any feature of this document which uses the term implementation-dependent indicates that the feature should be provided in an implementation-dependent way and does not necessarily have to be documented by the implementer.
15. Standard mode A mode of use of an implementation which complies with the specifications given in this document.
16. Error The source text of a class definition is said to be in error if either
    - the source text is not well-formed; or
    - well-formed source text does not satisfy the static semantic rules.
17. Exception A run-time event that is either in violation of the dynamic semantic rules given in this document or is explicitly raised by some feature of a program.

### 3.2 Structure of this Document

This document uses both formal notations and natural language text to state its meaning. Such definitions are divided into a lexis (in Section 5) and the following individual components which appear in the definition of each language construct.

- Concrete Syntax The set of grammatical rules defining the syntcatic structure of the language in terms of lexical tokens.

  This is formally expressed using the Standard Syntactic Metalanguage and is given separately for each language construct in Section 6.

- Abstract Syntax An abstract version of the underlying structure of the language in terms of vdm-sl types. Translation between the representations required by the concrete and abstract syntax is implicit.
- Declaration Semantics The set of rules giving the meaning of definitions, declarations and inclusions for the purpose of expressing the static semantics of the language.
- Static Semantics A set of rules expressed in the form of truth-valued functioins (often known as well-formedness predicates.
- Dynamic Semantics The set of rules governing the meaning of the elaboration of declarations and execution of statements of a program which satisfies the static semantic rules.

### 3.3 Conventions

The following conventions used in this document are to be interpreted as given below.

#### 3.3.1 Informative Text

The introductory text to any section of this document is in general explanatory rather than defining. It, together with any text given in a NOTE are to be regarded as being for information only.

#### 3.3.2 Typographical Conventions

The following typographical conventions are observed -

- Lexical and concrete syntax production rules are given in a sans-serif font (eg class type).
- Abstract syntax and other vdm-sl text is given in an italic sans-serif font(eg Class Kind
- Fragments of Sather source text (eg signtaures and examples) are given in a mono-spaced font (eg const one : CARD := 1).

| Language Index

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