Table of Contents
This chapter specifies the lexical structure of the XL programming language. This structure is based on the lexical structure of the Java programming language. Thus, the following features are taken over; for the term definitions see the Java Language Specification.
Programmes are written using the Unicode character set. Unicode
escapes of the form \u
xxxx
, where
xxxx
is a hexadecimal value, are
translated into the corresponding Unicode character. Following,
the input stream is translated into input characters and line terminators.
The resulting stream is translated into input elements, from which white space and comments are discarded. The result is a stream of tokens that are the terminal symbols of the syntactic grammar. Tokens are identifiers (Section 5.1, “Identifiers”), keywords (Section 5.2, “Keywords”), literals, separators and operators (Section 5.3, “Separators and Operators”).
As for the Java programming language, an identifier is an unlimited-length sequence of Java letters and Java digits, the first of which must be a Java letter. An identifier cannot have the same spelling as a keyword or a literal.
The XL programming language introduces three new keywords
(Section 5.2, “Keywords”), namely in
,
module
and yield
.
In order to be able to address existing entities of the Java
runtime environment that have these keywords as simple name,
e.g., the field System.in
or the method
Thread.yield()
,
identifiers undergo an additional translation:
If a raw identifier (resulting from the stream of input elements)
happens to be equal to one of the character
sequences $in
, $module
,
or $yield
, the leading $
is discarded
and the identifier is subsequently treated as being equal
to the character sequence in
,
module
, or yield
, respectively.