AARM95 - Identifiers
Author: JTC1/SC22/WG9/ARG, by Randall Brukardt, ARG Editor

Contents Index Previous Next

# 2.3 Identifiers

1
Identifiers are used as names.

#### Syntax

2
identifier ::=
identifier_letter {[underline] letter_or_digit}
3
letter_or_digit ::= identifier_letter | digit
4
An identifier shall not be a reserved word.

#### Static Semantics

5
All characters of an identifier are significant, including any underline character. Identifiers differing only in the use of corresponding upper and lower case letters are considered the same.
5.a
Discussion: Two of the letters of ISO 8859-1 appear only as lower case, "sharp s" and "y with diaeresis." These two letters have no corresponding upper case letter (in particular, they are not considered equivalent to one another).

#### Implementation Permissions

6
In a nonstandard mode, an implementation may support other upper/lower case equivalence rules for identifiers[, to accommodate local conventions].

#### Examples

7
Examples of identifiers:
8
Count X Get_Symbol Ethelyn Marion
Snobol_4 X1 Page_Count Store_Next_Item

#### Wording Changes from Ada 83

8.a
We no longer include reserved words as identifiers. This is not a language change. In Ada 83, identifier included reserved words. However, this complicated several other rules (for example, regarding implementation-defined attributes and pragmas, etc.). We now explicitly allow certain reserved words for attribute designators, to make up for the loss.
8.b
Ramification: Because syntax rules are relevant to overload resolution, it means that if it looks like a reserved word, it is not an identifier. As a side effect, implementations cannot use reserved words as implementation-defined attributes or pragma names.

Contents Index Previous Next Legal