MzScheme's input parser follows these non-standard rules:
Character constants can also be specified through direct ASCII values in octal notation: #\n n n where n is in the range [0, 3] and n and n are in the range [0, 7]. Whenever #\ is followed by at least two characters in the range [0, 7], the next character must also be in this range and the resulting octal number must be in the range to .
" , ' ` ( ) [ ] { } #\space #\tab #\return #\newline #\page #\vtab
In addition, an identifier cannot start with a hash mark (``#'') unless the hash mark is immediately followed by a percent sign (``%''). The only other special characters are backslash (``\'') or quoting vertical bars (``|''); any other character is used as part of an identifier.
Symbols containing special characters (including delimiters) are expressed using an escaping backslash (``\'') or quoting vertical bars (``|''):
An input token constructed in this way is an identifier when it is not a numerical constant (following the number syntax of R4RS plus the special inexact numbers +inf.0, etc., discussed in section 4.3). A token containing a backslash or vertical bars is never treated as a numerical contant.
Examples:
Whether a vertical bar is used as a special or normal symbol character is controlled with the read-accept-bar-quote Boolean parameter (see section 9.4.1.3). Vertical bar quotes are enabled by default.
For any x, (eq? #<x> #<x>) is #t, but #<x> is not equal? to anything else. (quote #<x>) is the same as #<x>. (type-symbol? x) returns #t if x is a type symbol, #f otherwise. (string->type-symbol s) explicitly creates a type symbol #<s> from the string s. Type symbol reading is controlled with the read-accept-type-symbol Boolean parameter (see section 9.4.1.3). Type symbol reading is enabled by default. When type symbol reading is disabled and a type symbol is provided as input, the exn:read:unsupported exception is raised.