Contents Index Previous Next
2.2 Lexical Elements, Separators, and Delimiters
Static Semantics
1
{text of a program}
The text of a program consists of the texts of one
or more
compilations.
{lexical
element} {token: See
lexical element} 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
The text of a
compilation
is divided into
{line} lines.
{end of a line} 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.
2.a
Implementation defined: The
representation for an end of line.
3
{separator}
[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:
3.a
Discussion: It might be
useful to define ``white space'' and use it here.
4
- A space character is a separator except within a comment,
a string_literal, or a character_literal.
5
- Character tabulation (HT) 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.
8
{delimiter} A
delimiter is either one of the following special characters
9
& ' ( ) * + , - . / : ; < = > |
10
{compound delimiter}
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.
Contents Index Previous Next Legal