Next: , Previous: 2.2, Up: 2


2.3 Identifiers

1
Identifiers are used as names.

Syntax

2/2

identifier::=
   identifier_start {identifier_start identifier_extend}

3/2

identifier_start::=
     letter_uppercase
   letter_lowercase
   letter_titlecase
   letter_modifier
   letter_other
   number_letter

3.1/2

identifier_extend::=
     mark_non_spacing
   mark_spacing_combining
   number_decimal
   punctuation_connector
   other_format

4/2

After eliminating the characters in category other_format, an identifier shall not contain two consecutive characters in category punctuation_connector, or end with a character in that category.
Static Semantics

5/2
Two identifiers are considered the same if they consist of the same sequence of characters after applying the following transformations (in this order):

5.1/2

5.2/2

5.3/2
After applying these transformations, an identifier shall not be identical to a reserved word (in upper case).

Implementation Permissions

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

     NOTES

6.1/2

 Identifiers differing only in the use of corresponding upper and lower case letters are considered the same.
Examples

7
Examples of identifiers:

8/2

     Count         Get_Symbol   Ethelyn   Marion
     Snobol_4   X1   Page_Count   Store_Next_Item
     [Unicode 928]
     [Unicode 955]
     [Unicode 940]
     [Unicode 964]
     [Unicode 969]
     [Unicode 957]
           −− Plato
     [Unicode 1063]
     [Unicode 1072]
     [Unicode 1081]
     [Unicode 1082]
     [Unicode 1086]
     [Unicode 1074]
     [Unicode 1089]
     [Unicode 1082]
     [Unicode 1080]
     [Unicode 1081]
       −− Tchaikovsky
     [Unicode 952]
       [Unicode 966]
             −− Angles