Annotated Ada Reference Manual (Ada 202y Draft 1)Legal Information
Contents   Index   References   Search   Previous   Next 

2.2 Lexical Elements, Separators, and Delimiters

Static Semantics

1
The text of a program consists of the texts of one or more compilations. The text of each compilation is a sequence of separate lexical elements. Each lexical element is formed from a sequence of characters, and is either a delimiter, an identifier, a reserved word, a numeric_literal, a character_literal, a string_literal, or a comment. The meaning of a program depends only on the particular sequences of lexical elements that form its compilations, excluding comments.
2/3
{AI95-00285-01} {AI05-0262-1} The text of a compilation is divided into lines. In general, the representation for an end of line is implementation defined. However, a sequence of one or more format_effectors other than the character whose code point is 16#09# (CHARACTER TABULATION) signifies at least one end of line. 
2.a
Implementation defined: The representation for an end of line.
3/2
{AI95-00285-01} [In some cases an explicit separator is required to separate adjacent lexical elements.] A separator is any of a separator_space, a format_effector, or the end of a line, as follows: 
4/2
{AI95-00285-01} A separator_space is a separator except within a comment, a string_literal, or a character_literal.
5/3
{AI95-00285-01} {AI05-0262-1} The character whose code point is 16#09# (CHARACTER TABULATION) is a separator except within a comment.
6
The end of a line is always a separator. 
7
One or more separators are allowed between any two adjacent lexical elements, before the first of each compilation, or after the last. At least one separator is required between an identifier, a reserved word, or a numeric_literal and an adjacent identifier, reserved word, or numeric_literal.
7.1/3
 {AI05-0079-1} One or more other_format characters are allowed anywhere that a separator is[; any such characters have no effect on the meaning of an Ada program].
8/2
{AI95-00285-01} A delimiter is either one of the following characters: 
9/5
{AI12-0125-3} {AI12-0212-1} &    '    (    )    *    +    ,    –    .    /    :    ;    <    =    >    @    [    ]    |
10
or one of the following compound delimiters each composed of two adjacent special characters 
11
=>    ..    **    :=    /=    >=    <=    <<    >>    <>
12
Each of the special characters listed for single character delimiters is a single delimiter except if this character is used as a character of a compound delimiter, or as a character of a comment, string_literal, character_literal, or numeric_literal.
13
The following names are used when referring to compound delimiters:
delimiter name
=>arrow
..double dot
**double star, exponentiate
:=assignment (pronounced: “becomes”)
/=inequality (pronounced: “not equal”)
>=greater than or equal
<=less than or equal
<<left label bracket
>>right label bracket
<>box

Implementation Requirements

14
An implementation shall support lines of at least 200 characters in length, not counting any characters used to signify the end of a line. An implementation shall support lexical elements of at least 200 characters in length. The maximum supported line length and lexical element length are implementation defined. 
14.a
Implementation defined: Maximum supported line length and lexical element length.
14.b
Discussion: From URG recommendation.

Wording Changes from Ada 95

14.c/3
{AI95-00285-01} {AI05-0299-1} The wording was updated to use the new character categories defined in the preceding subclause. 

Extensions to Ada 2005

14.d/3
{AI05-0079-1} Correction: Clarified that other_format characters are allowed anywhere that separators are allowed. This was intended in Ada 2005, but didn't actually make it into the wording. 

Wording Changes from Ada 2012

14.e/5
{AI12-0125-3} {AI12-0212-1} Added square brackets and the target_name symbol (see 5.2.1) to the list of delimiters.

Contents   Index   References   Search   Previous   Next 
Ada-Europe Ada 2005 and 2012 Editions sponsored in part by Ada-Europe