READER-ERRORPROGRAM-ERROR, and in other cases it requires the error to be of type ERROR.
None of the ERROR subtypes described in section 2.2 really seem appropriate for syntactic errors detected by the reader. In particular, the description of PROGRAM-ERROR implies that its purpose is for errors relating to program syntax which are detectable during evaluation or compilation rather than read-time errors. It seems especially inappropriate to use PROGRAM-ERROR for this purpose since the reader can be used to read things other than programs. Likewise, STREAM-ERROR appears to have been intended to be used for errors relating to character-level transactions on the stream rather than lexical analysis or parsing.
PARSE-ERROR. This is a subtype of the types STREAM-ERROR, ERROR, SERIOUS-CONDITION, CONDITION, and T. The type PARSE-ERROR consists of serious conditions that relate to lexical analysis (the building and interpretation of tokens) and parsing (errors in reader macro syntax) by the Lisp reader.
Since PARSE-ERROR is a subtype of STREAM-ERROR, objects of this type inherit a STREAM slot, which can be accessed using the function STREAM-ERROR-STREAM.
Change the discussion in chapter 3 to specify that the type of errors signalled by the reader is PARSE-ERROR. There are numerous places that would be affected.
ERROR which covers that class of errors. Doing the same for reader errors would be consistent with the overall policy, but none of the existing error types seem appropriate for reader-related errors.PARSE-ERROR so that it doesn't seem to be useful only for READ-related problems but can in fact be used for other parser-style applications (e.g., a FORTRAN parser, a user-written English-language interface, etc.).
The initial version of this proposal specified that PARSE-ERROR was disjoint from (rather than a subtype of) STREAM-ERROR. This was changed because there was a suggestion that some conditions should be both a PARSE-ERROR and a STREAM-ERROR. Making it a subtype also allows it to inherit the STREAM slot and the STREAM-ERROR-STREAM accessor.
Prior to version 3 the condition PARSE-ERROR was named READER-ERROR.