X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fread.lisp;h=3c15f9d82d5ecc4d6b3109495e5322f6311480f1;hb=b1e6df4cc0e0c5162cc1c85a7977ae6f669b7a5f;hp=c3cde1b150b7f1255d07576ead558b3a32270c10;hpb=ac57d5570ffb5fb9936ffca4e0d6c8d9fddc1e29;p=jscl.git diff --git a/src/read.lisp b/src/read.lisp index c3cde1b..3c15f9d 100644 --- a/src/read.lisp +++ b/src/read.lisp @@ -237,20 +237,17 @@ ((string= cname "tab") #\tab) ((string= cname "newline") #\newline) (t (char cname 0))))) - ((char= ch #\+) + ((or (char= ch #\+) + (char= ch #\-)) (let ((feature (let ((symbol (ls-read stream eof-error-p eof-value t))) (unless (symbolp symbol) (error "Invalid feature ~S" symbol)) (intern (string symbol) "KEYWORD")))) - (ecase feature - (:common-lisp - (ls-read stream) - (ls-read stream eof-error-p eof-value t)) - (:jscl - (ls-read stream eof-error-p eof-value t)) - (:nil - (ls-read stream) - (ls-read stream eof-error-p eof-value t))))) + (if (eql (char= ch #\+) + (and (find feature *features*) t)) + (ls-read stream eof-error-p eof-value t) + (prog2 (ls-read stream) + (ls-read stream eof-error-p eof-value t))))) ((and ch (digit-char-p ch)) (let ((id (digit-char-p ch))) (while (and (%peek-char stream)