Skip to main content

1 General

danger

This Reference Manual output has not been verified, and may contain omissions or errors. Report any problems on the tracking issue

2.a/5
discussion

This Annotated Ada Reference Manual (AARM) contains the entire text of the fourth edition of the Ada Reference Manual (referred to here as the Ada 2022 RM), plus certain annotations. The annotations give a more in-depth analysis of the language. They describe the reason for each nonobvious rule, and point out interesting ramifications of the rules and interactions among the rules (interesting to language lawyers, that is). Differences between Ada 83, Ada 95, Ada 2005, Ada 2012, and Ada 2022 are listed. (The text you are reading now is an annotation.)

2.b/3

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 Ada 2022 RM, on the other hand, is intended to be a more readable document for programmers.

2.c

The annotations in the AARM are as follows:

2.d/3
  • Text that is logically redundant is shown [in square brackets, like this]. Technically, such text could be written as a Note in the Ada 2022 RM (and the Ada 95 and 2005 RMs before it), since it is really a theorem that can be proven from the nonredundant rules of the language. We use the square brackets instead when it seems to make the Ada 2022 RM more readable.
  • 2.e
  • The rules of the language (and some AARM-only text) are categorized, and placed under certain sub-headings that indicate the category. For example, the distinction between Name Resolution Rules and Legality Rules is particularly important, as explained in 8.6.
  • 2.f
  • Text under the following sub-headings appears in both documents:
2.g
  • The unlabeled text at the beginning of each clause or subclause,
  • 2.h
  • Syntax,
  • 2.i
  • Name Resolution Rules,
  • 2.j
  • Legality Rules,
  • 2.k
  • Static Semantics,
  • 2.l
  • Post-Compilation Rules,
  • 2.m
  • Dynamic Semantics,
  • 2.n
  • Bounded (Run-Time) Errors,
  • 2.o
  • Erroneous Execution,
  • 2.p
  • Implementation Requirements,
  • 2.q
  • Documentation Requirements,
  • 2.r
  • Metrics,
  • 2.s
  • Implementation Permissions,
  • 2.t
  • ,
  • 2.u
  • NOTES,
  • 2.v
  • Examples.
2.w/3
  • Text under the following sub-headings does not appear in the Ada 2022 RM:
2.x
  • Language Design Principles,
  • 2.y
  • Inconsistencies With Ada 83,
  • 2.z
  • Incompatibilities With Ada 83,
  • 2.aa
  • Extensions to Ada 83,
  • 2.bb/2
  • Wording Changes from Ada 83,
  • 2.bb.1/2
  • Inconsistencies With Ada 95,
  • 2.bb.2/2
  • Incompatibilities With Ada 95,
  • 2.bb.3/2
  • Extensions to Ada 95,
  • 2.bb.4/3
  • Wording Changes from Ada 95,
  • 2.bb.5/3
  • Inconsistencies With Ada 2005,
  • 2.bb.6/3
  • Incompatibilities With Ada 2005,
  • 2.bb.7/3
  • Extensions to Ada 2005,
  • 2.bb.8/4
  • Wording Changes from Ada 2005,
  • 2.bb.9/4
  • Inconsistencies With Ada 2012,
  • 2.bb.10/4
  • Incompatibilities With Ada 2012,
  • 2.bb.11/4
  • Extensions to Ada 2012,
  • 2.bb.12/4
  • Wording Changes from Ada 2012.
2.cc
  • The AARM also includes the following kinds of annotations. These do not necessarily annotate the immediately preceding rule, although they often do.
2.dd
reason

An explanation of why a certain rule is necessary, or why it is worded in a certain way.

2.ee
ramification

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.)

2.ff
proof

An informal proof explaining how a given Note or [marked-as-redundant] piece of text follows from the other rules of the language.

2.gg
implementation note

A hint about how to implement a feature, or a particular potential pitfall that an implementer needs to be aware of.

2.hh

Change: 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”.

2.ii
discussion

Other annotations not covered by the above.

2.jj

To be honest: 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.

2.jj.1/5

Term entry: The text of a Term and Definition entry — this text will also appear in 1.3, “Terms and Definitions”.

2.kk/3
discussion

In general, the Ada 2022 RM 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.

2.ll

If you have trouble finding things, be sure to use the index. Each defined term appears there, and also in italics, like this. Syntactic categories defined in BNF are also indexed.

2.mm

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.