| |
ANSI Common Lisp 2 Syntax 2.4 Standard Macro Characters
2.4.8 Sharpsign
Sharpsign is a non-terminating dispatching macro character.
It reads an optional
sequence of digits and then one more character,
and uses that character to select a function to run as a
reader macro function.
The standard syntax includes constructs introduced by the # character.
The syntax of these constructs is as follows:
a character that identifies the type of construct is
followed by arguments in some form.
If the character is a letter, its case is not important;
#O and #o are considered to be equivalent, for example.
Certain # constructs allow an unsigned decimal number to appear
between the # and the character.
The reader macros associated with the dispatching macro character #
are described later in this section and summarized in the next figure.
Standard # Dispatching Macro Character Syntax
| dispatch char |
purpose |
dispatch char |
purpose |
| Backspace |
signals error |
{ |
undefined* |
| Tab |
signals error |
} |
undefined* |
| Newline |
signals error |
+ |
read-time conditional |
| Linefeed |
signals error |
- |
read-time conditional |
| Page |
signals error |
. |
read-time evaluation |
| Return |
signals error |
/ |
undefined |
| Space |
signals error |
A, a |
array |
| ! |
undefined* |
B, b |
binary rational |
| " |
undefined |
C, c |
complex number |
| # |
reference to = label |
D, d |
undefined |
| $ |
undefined |
E, e |
undefined |
| % |
undefined |
F, f |
undefined |
|
& |
undefined |
G, g |
undefined |
| ' |
function abbreviation |
H, h |
undefined |
| ( |
simple vector |
I, i |
undefined |
| ) |
signals error |
J, j |
undefined |
| * |
bit vector |
K, k |
undefined |
| , |
undefined |
L, l |
undefined |
| : |
uninterned symbol |
M, m |
undefined |
| ; |
undefined |
N, n |
undefined |
| < |
signals error |
O, o |
octal rational |
| = |
labels following object |
P, p |
pathname |
| > |
undefined |
Q, q |
undefined |
| ? |
undefined* |
R, r |
radix-n rational |
| @ |
undefined |
S, s |
structure |
| [ |
undefined* |
T, t |
undefined |
| \ |
character object |
U, u |
undefined |
| ] |
undefined* |
V, v |
undefined |
| ^ |
undefined |
W, w |
undefined |
| _ |
undefined |
X, x |
hexadecimal rational |
| ` |
undefined |
Y, y |
undefined |
| | |
balanced comment |
Z, z |
undefined |
| ~ |
undefined |
Rubout |
undefined |
The combinations marked by an asterisk (*) are explicitly reserved to the
user. No conforming implementation defines them.
Note also that digits do not appear in the preceding table. This is
because the notations #0, #1, ..., #9 are
reserved for another purpose which occupies the same syntactic space.
When a digit follows a sharpsign,
it is not treated as a dispatch character.
Instead, an unsigned integer argument is accumulated
and passed as an argument to the reader macro
for the character that follows the digits.
For example,
#2A((1 2) (3 4)) is a use of #A with an argument of 2.
2.4.8.1 Sharpsign Backslash
2.4.8.2 Sharpsign Single-Quote
2.4.8.3 Sharpsign Left-Parenthesis
2.4.8.4 Sharpsign Asterisk
2.4.8.5 Sharpsign Colon
2.4.8.6 Sharpsign Dot
2.4.8.7 Sharpsign B
2.4.8.8 Sharpsign O
2.4.8.9 Sharpsign X
2.4.8.10 Sharpsign R
2.4.8.11 Sharpsign C
2.4.8.12 Sharpsign A
2.4.8.13 Sharpsign S
2.4.8.14 Sharpsign P
2.4.8.15 Sharpsign Equal-Sign
2.4.8.16 Sharpsign Sharpsign
2.4.8.17 Sharpsign Plus
2.4.8.18 Sharpsign Minus
2.4.8.19 Sharpsign Vertical-Bar
2.4.8.20 Sharpsign Less-Than-Sign
2.4.8.21 Sharpsign Whitespace
2.4.8.22 Sharpsign Right-Parenthesis
|