|<digit> ::= 0∣1∣2∣3∣4∣5∣6∣7∣8∣9|
|<unsigned-integer> ::= <digit>∣<unsigned-integer><digit>|
|<integer> ::=||<unsigned-integer> ∣|
|<unsigned-floating> ::= <base>∣|
An identifier may have a function or macro associated with it. Access is by the PUTD, GETD, and REMD functions (see “Function Definition”, section 3.5, on page 32). An identifier may not have both a function and a value associated with it.
The maximum length of a Standard LISP identifier is 24 characters (excluding occurrences of the escape character !) but an implementation may allow more. Special characters (digits in the first position and punctuation) must be prefixed with an escape character, an ! in Standard LISP. In BNF identifiers are recognized by the grammar:
|<special-character> ::= !<any-character>|
|<lead-character> ::= <special-character>∣<alphabetic>|
|<regular-character> ::= <lead-character>∣<digit>|
|<last-part> ::=||<regular-character> ∣|
|<id> ::= <lead-character>∣<lead-character><last-part>|
Note: Using lower case letters in identifiers may cause portability problems. Lower case letters are automatically converted to upper case when the !*RAISE flag is T.
|(<left-part> . <right-part>)|
The <left-part> is known as the CAR portion and the <right-part> as the CDR portion. The left and right parts may be of any type. Spaces are used to resolve ambiguity with floating point numbers.
|<elements> ::= <any>∣<any> <elements>|
|<vector> ::= [<elements>]|