File: AA-1.html

package info (click to toggle)
ada-reference-manual 20021112web-3
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k, lenny, sarge
  • size: 18,652 kB
  • ctags: 8,921
  • sloc: makefile: 52; sh: 20
file content (222 lines) | stat: -rw-r--r-- 16,723 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<HTML>
<HEAD>
    <TITLE>AARM95 - General</TITLE>
    <META NAME="Author" CONTENT="JTC1/SC22/WG9/ARG, by Randall Brukardt, ARG Editor">
    <META NAME="GENERATOR" CONTENT="Arm_Form.Exe, Ada Reference Manual generator">
    <STYLE type="text/css">
    DIV.paranum {position: absolute; font-family: Arial, Helvetica, sans-serif; left: 0.5 em; top: auto}
    TT {font-family: "Courier New", monospace}
    DT {display: compact}
    DIV.Normal {font-family: "Times New Roman", Times, serif; margin-bottom: 0.6em}
    DIV.Wide {font-family: "Times New Roman", Times, serif; margin-top: 0.6em; margin-bottom: 0.6em}
    DIV.Annotations {font-family: "Times New Roman", Times, serif; margin-left: 4.0em; margin-bottom: 0.6em}
    DIV.WideAnnotations {font-family: "Times New Roman", Times, serif; margin-left: 4.0em; margin-top: 0.6em; margin-bottom: 0.6em}
    DIV.Index {font-family: "Times New Roman", Times, serif}
    DIV.SyntaxSummary {font-family: "Times New Roman", Times, serif; margin-left: 2.0em; margin-bottom: 0.4em}
    DIV.Notes {font-family: "Times New Roman", Times, serif; margin-left: 2.0em; margin-bottom: 0.6em}
    DIV.NotesHeader {font-family: "Times New Roman", Times, serif; margin-left: 2.0em}
    DIV.SyntaxIndented {font-family: "Times New Roman", Times, serif; margin-left: 2.0em; margin-bottom: 0.4em}
    DIV.Indented {font-family: "Times New Roman", Times, serif; margin-left: 6.0em; margin-bottom: 0.6em}
    DIV.CodeIndented {font-family: "Times New Roman", Times, serif; margin-left: 4.0em; margin-bottom: 0.6em}
    DIV.SmallIndented {font-family: "Times New Roman", Times, serif; margin-left:  10.0em; margin-bottom: 0.6em}
    DIV.SmallCodeIndented {font-family: "Times New Roman", Times, serif; margin-left: 8.0em; margin-bottom: 0.6em}
    DIV.Examples {font-family: "Courier New", monospace; margin-left: 2.0em; margin-bottom: 0.6em}
    DIV.SmallExamples {font-family: "Courier New", monospace; font-size: 80%; margin-left: 7.5em; margin-bottom: 0.6em}
    DIV.IndentedExamples {font-family: "Courier New", monospace; margin-left: 8.0em; margin-bottom: 0.6em}
    DIV.SmallIndentedExamples {font-family: "Courier New", monospace; font-size: 80%; margin-left:  15.0em; margin-bottom: 0.6em}
    UL.Bulleted {font-family: "Times New Roman", Times, serif; margin-left: 2.0em; margin-right: 2.0em; margin-top: 0em; margin-bottom: 0.5em}
    UL.SmallBulleted {font-family: "Times New Roman", Times, serif; margin-left: 6.0em; margin-right: 6.0em; margin-top: 0em; margin-bottom: 0.5em}
    UL.NestedBulleted {font-family: "Times New Roman", Times, serif; margin-left: 4.0em; margin-right: 4.0em; margin-top: 0em; margin-bottom: 0.5em}
    UL.SmallNestedBulleted {font-family: "Times New Roman", Times, serif; margin-left: 8.0em; margin-right: 8.0em; margin-top: 0em; margin-bottom: 0.5em}
    UL.IndentedBulleted {font-family: "Times New Roman", Times, serif; margin-left: 8.0em; margin-right: 8.0em; margin-top: 0em; margin-bottom: 0.5em}
    UL.CodeIndentedBulleted {font-family: "Times New Roman", Times, serif; margin-left: 6.0em; margin-right: 6.0em; margin-top: 0em; margin-bottom: 0.5em}
    UL.CodeIndentedNestedBulleted {font-family: "Times New Roman", Times, serif; margin-left: 8.0em; margin-right: 8.0em; margin-top: 0em; margin-bottom: 0.5em}
    UL.SyntaxIndentedBulleted {font-family: "Times New Roman", Times, serif; margin-left: 4.0em; margin-right: 4.0em; margin-top: 0em; margin-bottom: 0.5em}
    UL.NotesBulleted {font-family: "Times New Roman", Times, serif; margin-left: 4.0em; margin-right: 4.0em; margin-top: 0em; margin-bottom: 0.5em}
    UL.NotesNestedBulleted {font-family: "Times New Roman", Times, serif; margin-left: 6.0em; margin-right: 6.0em; margin-top: 0em; margin-bottom: 0.5em}
    DL.Hanging {font-family: "Times New Roman", Times, serif; margin-top: 0em; margin-bottom: 0.6em}
    DD.Hanging {margin-left: 6.0em}
    DL.IndentedHanging {font-family: "Times New Roman", Times, serif; margin-left: 4.0em; margin-top: 0em; margin-bottom: 0.6em}
    DD.IndentedHanging {margin-left: 2.0em}
    DL.HangingInBulleted {font-family: "Times New Roman", Times, serif; margin-left: 2.0em; margin-right: 2.0em; margin-top: 0em; margin-bottom: 0.5em}
    DD.HangingInBulleted {margin-left: 4.0em}
    DL.SmallHanging {font-family: "Times New Roman", Times, serif; margin-left: 4.0em; margin-top: 0em; margin-bottom: 0.6em}
    DD.SmallHanging {margin-left: 7.5em}
    DL.SmallIndentedHanging {font-family: "Times New Roman", Times, serif; margin-left: 8.0em; margin-top: 0em; margin-bottom: 0.6em}
    DD.SmallIndentedHanging {margin-left: 2.0em}
    DL.SmallHangingInBulleted {font-family: "Times New Roman", Times, serif; margin-left: 6.0em; margin-right: 6.0em; margin-top: 0em; margin-bottom: 0.5em}
    DD.SmallHangingInBulleted {margin-left: 5.0em}
    DL.Enumerated {font-family: "Times New Roman", Times, serif; margin-right: 0.0em; margin-top: 0em; margin-bottom: 0.5em}
    DD.Enumerated {margin-left: 2.0em}
    DL.SmallEnumerated {font-family: "Times New Roman", Times, serif; margin-left: 4.0em; margin-right: 4.0em; margin-top: 0em; margin-bottom: 0.5em}
    DD.SmallEnumerated {margin-left: 2.5em}
    DL.NestedEnumerated {font-family: "Times New Roman", Times, serif; margin-left: 2.0em; margin-right: 2.0em; margin-top: 0em; margin-bottom: 0.5em}
    DL.SmallNestedEnumerated {font-family: "Times New Roman", Times, serif; margin-left: 6.0em; margin-right: 6.0em; margin-top: 0em; margin-bottom: 0.5em}
    </STYLE>
</HEAD>
<BODY TEXT="#000000" BGCOLOR="#FFFFF0" LINK="#0000FF" VLINK="#800080" ALINK="#FF0000">
<P><A HREF="AA-TOC.html">Contents</A>&nbsp;&nbsp;&nbsp;<A HREF="AA-0-29.html">Index</A>&nbsp;&nbsp;&nbsp;<A HREF="AA-0-3.html">Previous</A>&nbsp;&nbsp;&nbsp;<A HREF="AA-1-1.html">Next</A></P>
<HR>
<H1>Section 1: General</H1>
<DIV Class="Paranum"><FONT SIZE=-2>1</FONT></DIV>
<DIV Class="Normal">&nbsp;&nbsp;&nbsp;Ada is a programming language designed to support
the construction of long-lived, highly reliable software systems. The
language includes facilities to define packages of related types, objects,
and operations. The packages may be parameterized and the types may be
extended to support the construction of libraries of reusable, adaptable
software components. The operations may be implemented as subprograms
using conventional sequential control structures, or as entries that
include synchronization of concurrent threads of control as part of their
invocation. The language treats modularity in the physical sense as well,
with a facility to support separate compilation.</DIV>
<DIV Class="Paranum"><FONT SIZE=-2>2</FONT></DIV>
<DIV Class="Normal">&nbsp;&nbsp;&nbsp;The language includes a complete facility for
the support of real-time, concurrent programming. Errors can be signaled
as exceptions and handled explicitly. The language also covers systems
programming; this requires precise control over the representation of
data and access to system-dependent properties. Finally, a predefined
environment of standard packages is provided, including facilities for,
among others, input-output, string manipulation, numeric elementary functions,
and random number generation. </DIV>
<DIV Class="Paranum"><FONT SIZE=-2>2.a</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1><B>Discussion: </B>This Annotated
Ada Reference Manual (AARM) contains the entire text of the Ada Reference
Manual (RM95), plus certain annotations. The annotations give a more
in-depth analysis of the language. They describe the reason for each
non-obvious rule, and point out interesting ramifications of the rules
and interactions among the rules (interesting to language lawyers, that
is). Differences between Ada 83 and Ada 95 are listed. (The text you
are reading now is an annotation.)</FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>2.b</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1>The AARM stresses detailed correctness
and uniformity over readability and understandability. We're not trying
to make the language ``appear'' simple here; on the contrary, we're trying
to expose hidden complexities, so we can more easily detect language
bugs. The RM95, on the other hand, is intended to be a more readable
document for programmers.</FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>2.c</FONT></DIV>
<DIV Class="Annotations" Style="margin-bottom: 0.4em"><FONT SIZE=-1>The
annotations in the AARM are as follows: </FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>2.d</FONT></DIV>
<UL Class="SmallBulleted"><FONT SIZE=-1><LI TYPE=DISC>Text that is logically redundant is shown [in square brackets,
like this]. Technically, such text could be written as a Note in the
RM95, since it is really a theorem that can be proven from the non-redundant
rules of the language. We use the square brackets instead when it seems
to make the RM95 more readable.</LI></FONT></UL>
<DIV Class="Paranum"><FONT SIZE=-2>2.e</FONT></DIV>
<UL Class="SmallBulleted"><FONT SIZE=-1><LI TYPE=DISC>The rules of the language (and some AARM-only text) are
categorized, and placed under certain <I>sub-headings</I> that indicate
the category. For example, the distinction between Name Resolution Rules
and Legality Rules is particularly important, as explained in <A HREF="AA-8-6.html">8.6</A>.</LI></FONT></UL>
<DIV Class="Paranum"><FONT SIZE=-2>2.f</FONT></DIV>
<UL Class="SmallBulleted"><FONT SIZE=-1><LI TYPE=DISC>Text under the following sub-headings appears in both documents:
</LI></FONT></UL>
<DIV Class="Paranum"><FONT SIZE=-2>2.g</FONT></DIV>
<UL Class="SmallNestedBulleted"><FONT SIZE=-1><LI TYPE=DISC>The unlabeled text at the beginning of each clause or subclause,</LI></FONT></UL>
<DIV Class="Paranum"><FONT SIZE=-2>2.h</FONT></DIV>
<UL Class="SmallNestedBulleted"><FONT SIZE=-1><LI TYPE=DISC>Syntax,</LI></FONT></UL>
<DIV Class="Paranum"><FONT SIZE=-2>2.i</FONT></DIV>
<UL Class="SmallNestedBulleted"><FONT SIZE=-1><LI TYPE=DISC>Name Resolution Rules,</LI></FONT></UL>
<DIV Class="Paranum"><FONT SIZE=-2>2.j</FONT></DIV>
<UL Class="SmallNestedBulleted"><FONT SIZE=-1><LI TYPE=DISC>Legality Rules,</LI></FONT></UL>
<DIV Class="Paranum"><FONT SIZE=-2>2.k</FONT></DIV>
<UL Class="SmallNestedBulleted"><FONT SIZE=-1><LI TYPE=DISC>Static Semantics,</LI></FONT></UL>
<DIV Class="Paranum"><FONT SIZE=-2>2.l</FONT></DIV>
<UL Class="SmallNestedBulleted"><FONT SIZE=-1><LI TYPE=DISC>Post-Compilation Rules,</LI></FONT></UL>
<DIV Class="Paranum"><FONT SIZE=-2>2.m</FONT></DIV>
<UL Class="SmallNestedBulleted"><FONT SIZE=-1><LI TYPE=DISC>Dynamic Semantics,</LI></FONT></UL>
<DIV Class="Paranum"><FONT SIZE=-2>2.n</FONT></DIV>
<UL Class="SmallNestedBulleted"><FONT SIZE=-1><LI TYPE=DISC>Bounded (Run-Time) Errors,</LI></FONT></UL>
<DIV Class="Paranum"><FONT SIZE=-2>2.o</FONT></DIV>
<UL Class="SmallNestedBulleted"><FONT SIZE=-1><LI TYPE=DISC>Erroneous Execution,</LI></FONT></UL>
<DIV Class="Paranum"><FONT SIZE=-2>2.p</FONT></DIV>
<UL Class="SmallNestedBulleted"><FONT SIZE=-1><LI TYPE=DISC>Implementation Requirements,</LI></FONT></UL>
<DIV Class="Paranum"><FONT SIZE=-2>2.q</FONT></DIV>
<UL Class="SmallNestedBulleted"><FONT SIZE=-1><LI TYPE=DISC>Documentation Requirements,</LI></FONT></UL>
<DIV Class="Paranum"><FONT SIZE=-2>2.r</FONT></DIV>
<UL Class="SmallNestedBulleted"><FONT SIZE=-1><LI TYPE=DISC>Metrics,</LI></FONT></UL>
<DIV Class="Paranum"><FONT SIZE=-2>2.s</FONT></DIV>
<UL Class="SmallNestedBulleted"><FONT SIZE=-1><LI TYPE=DISC>Implementation Permissions,</LI></FONT></UL>
<DIV Class="Paranum"><FONT SIZE=-2>2.t</FONT></DIV>
<UL Class="SmallNestedBulleted"><FONT SIZE=-1><LI TYPE=DISC>Implementation Advice,</LI></FONT></UL>
<DIV Class="Paranum"><FONT SIZE=-2>2.u</FONT></DIV>
<UL Class="SmallNestedBulleted"><FONT SIZE=-1><LI TYPE=DISC>NOTES,</LI></FONT></UL>
<DIV Class="Paranum"><FONT SIZE=-2>2.v</FONT></DIV>
<UL Class="SmallNestedBulleted"><FONT SIZE=-1><LI TYPE=DISC>Examples. </LI></FONT></UL>
<DIV Class="Paranum"><FONT SIZE=-2>2.w</FONT></DIV>
<UL Class="SmallBulleted"><FONT SIZE=-1><LI TYPE=DISC>Text under the following sub-headings does not appear in
the RM95: </LI></FONT></UL>
<DIV Class="Paranum"><FONT SIZE=-2>2.x</FONT></DIV>
<UL Class="SmallNestedBulleted"><FONT SIZE=-1><LI TYPE=DISC>Language Design Principles,</LI></FONT></UL>
<DIV Class="Paranum"><FONT SIZE=-2>2.y</FONT></DIV>
<UL Class="SmallNestedBulleted"><FONT SIZE=-1><LI TYPE=DISC>Inconsistencies With Ada 83,</LI></FONT></UL>
<DIV Class="Paranum"><FONT SIZE=-2>2.z</FONT></DIV>
<UL Class="SmallNestedBulleted"><FONT SIZE=-1><LI TYPE=DISC>Incompatibilities With Ada 83,</LI></FONT></UL>
<DIV Class="Paranum"><FONT SIZE=-2>2.aa</FONT></DIV>
<UL Class="SmallNestedBulleted"><FONT SIZE=-1><LI TYPE=DISC>Extensions to Ada 83,</LI></FONT></UL>
<DIV Class="Paranum"><FONT SIZE=-2>2.bb</FONT></DIV>
<UL Class="SmallNestedBulleted"><FONT SIZE=-1><LI TYPE=DISC>Wording Changes from Ada 83. </LI></FONT></UL>
<DIV Class="Paranum"><FONT SIZE=-2>2.cc</FONT></DIV>
<UL Class="SmallBulleted"><FONT SIZE=-1><LI TYPE=DISC>The AARM also includes the following kinds of annotations.
These do not necessarily annotate the immediately preceding rule, although
they often do. </LI></FONT></UL>
<DIV Class="Paranum"><FONT SIZE=-2>2.dd</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1><B>Reason: </B>An explanation
of why a certain rule is necessary, or why it is worded in a certain
way. </FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>2.ee</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1><B>Ramification: </B>An obscure
ramification of the rules that is of interest only to language lawyers.
(If a ramification of the rules is of interest to programmers, then it
appears under NOTES.) </FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>2.ff</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1><B>Proof: </B>An informal proof
explaining how a given Note or [marked-as-redundant] piece of text follows
from the other rules of the language. </FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>2.gg</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1><B>Implementation Note: </B>A
hint about how to implement a feature, or a particular potential pitfall
that an implementer needs to be aware of.</FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>2.hh</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1><B>Change:</B> Change annotations
are not used in this version. Changes from previous versions have been
removed. Changes in this version are marked with versioned paragraph
numbers, as explained in the ``Corrigendum Changes'' clause of the ``Introduction''.
</FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>2.ii</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1><B>Discussion: </B>Other annotations
not covered by the above. </FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>2.jj</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1><B>To be honest: </B>A rule that
is considered logically necessary to the definition of the language,
but which is so obscure or pedantic that only a language lawyer would
care. These are the only annotations that could be considered part of
the language definition. </FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>2.kk</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1><B>Glossary entry: </B>The text
of a Glossary entry -- this text will also appear in <A HREF="AA-N.html">Annex
N</A>, ``<A HREF="AA-N.html">Glossary</A>''. </FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>2.ll</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1><B>Discussion: </B>In general,
RM95 text appears in the normal font, whereas AARM-only text appears
in a smaller font. Notes also appear in the smaller font, as recommended
by ISO/IEC style guidelines. Ada examples are also usually printed in
a smaller font.</FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>2.mm</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1>If you have trouble finding things,
be sure to use the index. <A NAME="I1003"></A>Each defined term appears
there, and also in <I>italics, like this</I>. Syntactic categories defined
in BNF are also indexed.</FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>2.nn</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1>A definition marked ``[distributed]''
is the main definition for a term whose complete definition is given
in pieces distributed throughout the document. The pieces are marked
``[partial]'' or with a phrase explaining what cases the partial definition
applies to. </FONT></DIV>

<HR>
<P><A HREF="AA-TOC.html">Contents</A>&nbsp;&nbsp;&nbsp;<A HREF="AA-0-29.html">Index</A>&nbsp;&nbsp;&nbsp;<A HREF="AA-0-3.html">Previous</A>&nbsp;&nbsp;&nbsp;<A HREF="AA-1-1.html">Next</A>&nbsp;&nbsp;&nbsp;<A HREF="AA-TTL.html">Legal</A></P>
</BODY>
</HTML>