s-expressionists / Eclector

A portable Common Lisp reader that is highly customizable, can recover from errors and can return concrete syntax trees
https://s-expressionists.github.io/Eclector/
BSD 2-Clause "Simplified" License
108 stars 9 forks source link

READ-SUPPRESS.SHARP-R.6 #37

Closed kpoeck closed 5 years ago

kpoeck commented 5 years ago

In latest sbcl, eclector git master

Interaction of read-suppress and #R: I believe no error should be signaled as READ-FROM-STRING from sbcl does 23.2.16 read-suppress ... Except as noted below, any standardized reader macro2 that is defined to read2 a following object or token will do so, but not signal an error if the object read is not of an appropriate type or syntax.

* (WITH-STANDARD-IO-SYNTAX
  (LET ((*READ-SUPPRESS* T))
    (eclector.reader:READ-FROM-STRING "#0r0")))

debugger invoked on a ECLECTOR.READER:INVALID-RADIX in thread #<THREAD "main thread" RUNNING {10005185B3}>: 0 is too small to be a radix.

Type HELP for debugger help, or (SB-EXT:EXIT) to exit from SBCL.

restarts (invokable by number or by possibly-abbreviated name):
  0: [ABORT] Exit debugger, returning to top level.

(ECLECTOR.BASE:%READER-ERROR #<SB-IMPL::STRING-INPUT-STREAM {1004BA3233}> ECLECTOR.READER:INVALID-RADIX :RADIX 0)
   source: (APPLY (FUNCTION ERROR) DATUM :STREAM STREAM :STREAM-POSITION STREAM-POSITION (ALEXANDRIA.0.DEV:REMOVE-FROM-PLIST ARGUMENTS :STREAM-POSITION))
0] 0
* (WITH-STANDARD-IO-SYNTAX
  (LET ((*READ-SUPPRESS* T))
    (READ-FROM-STRING "#0r0")))
NIL
4