15.2    Lexical Elements, Separators, and Delimiters

Semantics

(1)   The text of an AADL specification consists of 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 an AADL specification depends only on the particular sequences of lexical elements that form its compilations, excluding comments.

(2)   The text of an AADL specification 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 character tabulation (HT) signifies at least one end of line.

(3)   In some cases an explicit separator is required to separate adjacent lexical elements.  A separator is any of a space character, a format_effector, or the end of a line, as follows:

·         A space character is a separator except within a comment, a string_literal, or a character_literal.

·         Character tabulation (HT) is a separator except within a comment.

·         The end of a line is always a separator.

(4)   One or more separators are allowed between any two adjacent lexical elements, before the first, 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.

(5)   A delimiter is either one of the following special characters

(    )   [    ]   {   }     ,      .     :     ;      =    *   +   -

(6)   or one of the following compound delimiters each composed of two or three adjacent special characters

::     =>       +=>       ->    <->      ..     -[       ]->   {**    **}

(7)   Each of the special characters listed for single character delimiters is a single delimiter except if that character is used as a character of a compound delimiter, or as a character of a comment, string_literal, character_literal, or numeric_literal.

(8)   The following names are used when referring to compound delimiters:

Delimiter
Name
::
qualified name separator
=>
association
+=>
additive association
->
directional connection
<->
bidirectional connection
..
interval
-[
left step bracket
]->
right step bracket
{**
begin annex
**}
end annex

Processing Requirements and Permissions

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