Syntax
Case is distinguished in each of characters, strings and identifiers, so that
variable-name and Variable-name are different, but where a character is
used in a positional number representation (e.g. #\x3Ad
) the
case is ignored. Thus, case is also significant in this definition and, as will be
observed later, all the special form and standard function names are lower
case. In this section, and throughout this text, the names for individual
character glyphs are those used in ISO/IEC DIS 646:1990.
The minimal character set to support EuLisp is defined in Table . The
language as defined in this text uses only the characters given in this table.
Thus, left hand sides of the productions in this table define and name groups
of characters which are used later in this definition: decimal digit, upper letter,
lower letter, letter, other character and special character. Any character not
specified here is classified under other character, which permits its use as an
initial or a constituent character of an identifier (see section ?? ).
Minimal character set
decimal digit
= '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7'
| '8' | '9';
upper letter
= 'A' | 'B' | 'C' | 'D' | 'E' | 'F' | 'G' | 'H'
| 'I' | 'J' | 'K' | 'L' | 'M' | 'N' | 'O' | 'P'
| 'Q' | 'R' | 'S' | 'T' | 'U' | 'V' | 'W' | 'X'
| 'Y' | 'Z';
lower letter
= 'a' | 'b' | 'c' | 'd' | 'e' | 'f' | 'g' | 'h'
| 'i' | 'j' | 'k' | 'l' | 'm' | 'n' | 'o' | 'p'
| 'q' | 'r' | 's' | 't' | 'u' | 'v' | 'w' | 'x'
| 'y' | 'z';
letter
= upper letter | lower letter;
other character
= '*' | '/' | '<' | '=' | '>' | '+' | '-' | '.'
| '%' | '!' | '^' ;
special character
= ';' | "'" | ',' | '\' | '"' | '#' | '(' | ')'
| '`' | '|' | '@' ;
non-alphanumeric
= other character
| special character
| "any other character supported by the configuration";
level 0 character
= decimal digit | letter | other character
| special character;
Whitespace and Comments
Whitespace characters are space and newline. The newline character is also
used to represent end of record for configurations providing such an input
model, thus, a reference to newline in this definition should also be read as a
reference to end of record. The only use of whitespace is to improve the
legibility of programs for human readers. Whitespace separates tokens and is
only significant in a string or when it occurs escaped within an identifier.
A comment is introduced by the comment-begin glyph, called semicolon
(;
) and continues up to, but does not include, the end of the
line. Hence, a comment cannot occur in the middle of a token because of the
whitespace in the form of the newline. Thus a comment is equivalent to
whitespace.
There is no notation in EuLisp for block comments.
Objects
The syntax of the classes of objects that can be read by EuLisp is defined in
the section of this definition corresponding to the class as defined in Table .
The syntax for identifiers corresponds to that for symbols.
Syntax of objects for reading and writing
object
= character (* Section ?? *)
| float (* Section ?? *)
| integer (* Section ?? *)
| list (* Section ?? *)
| string (* Section ?? *)
| symbol (* Section ?? *)
| vector (* Section ?? *)