The extended syntax of #, as indicated by the subsequent character, with questionable or not-yet-fully worked-out cases indicated by "???", and * in column 1 meaning NIL/NIL-compatibility only * " BITS expressed as 4 bits per hexadecimal digit % MACROEXPAND following form at read time. ' Like single-quote macro. #'foo ==> (FUNCTION foo) * ( S-expression VECTOR, elements inside list * Unsigned-integer, or Machine-word + Conditional read, for next expression. A feature name, or list with "OR" or "AND" as first element and remaining elements as feature names, must immediately follow. Next form is skipped unless this system has one of the requested features (for "OR") or unless it has all the requested features (for "AND". , Load-time evaluation - Conditional read, like "#+", but next form is skipped if the conditions indicated are satisfied. . Read-time evaluation 0 ... 9 decimal representation for a radix denotation ??? : Flush a package prefix, e.g. #:SI:FOO is the same as FOO * B Binary notation for a bitstring follows M Next form is flushed unless this is a MACLISP system N Next form is flushed unless this is a NIL system O Octal notation follows, either for a number or for a bitstring Q Next form is flushed unless this is a LISPM system R Radix change -- #16R reads in base 16. * T Truthity, a specific non-null, not false, constant X Hexadecimal notation for a number or for a bitstring ^ A FIXNUM, obtained by "controlifying" the next character. (e.g. #^B is 2, the ascii value of control-B) / A FIXNUM, denoted by the next character (e.g. #/A is 65.). \ A FIXNUM, denoted by the following standard symbolic names: Name Value Name Value NULL 0 RETURN 13 ALPHA 2 NEWLINE 13 BETA 3 CR 13 EPSILON 6 NL 13 BELL 7 ALTMODE 27 BACKSPACE 8 ALT 27 BS 8 BACK-NEXT 31 TAB 9 SPACE 32 LINEFEED 10 SP 32 LF 10 DELETE 127 VT 11 RUBOUT 127 FORM 12 HELP 2120 FORMFEED 12 FF 12 The user may add to this list using the function SETSYNTAX-SHARP-MACRO, whose argument list is ( &OPTIONAL (rt READTABLE)) The general # macro character function will dispatch to when is the character immediately following the #; the dispatch table is kept on a per Readtable basis. Or he may use the autoloadable macro DEFSHARP which provides an easy way to set up "macro character functions". For example (defsharp /% (() ) (macroexpand (/#sub-read () READ-STREAM))) defines (and activates using SETSYNTAX-SHARP-MACRO) a function to be run when #% occurs. An alternative form is (defsharp /: SPLICING (() ) (/#-flush-chars-not-set #/: 'T) () ) where the word SPLICING indicates that the result is to be like a SPLICING readmacro character -- the default is like an elemental readmacro character. The # macro works by keying off a second character, with possibly an argument in between. Currently, the permissible arguments are (1) digits, for a numeric argument, e.g. #3R201 reads 201 in base 3. (2) ^B, ^C, or ^F to signify respectively "add control bit", "add meta bit", and "add control-meta bits". The "control" bit has value 128. and the "meta" bit has value 256. The alist from /#-MACRO-DATALIST holds, for each valid "second" character, a 4-list: ( ) where Takes one argument, as described above in (1) and (2). If there is no "argument" then () is passed to the function. Is either MACRO or SPLICING A flag which, if non-null, means don't flush the "second" character from the input stream before running . Is the numeric encoding of the character