Plaster
New
List
Login
text
default
anonymous
2022.01.03 12:26:56
(defpackage #:custom-string-reader (:use #:common-lisp) (:local-nicknames (#:nr #:named-readtables)) (:export #:custom-string-reader)) (in-package #:custom-string-reader) (defun custom-string-reader (stream char) (declare (ignore char)) (loop with result = (make-array 0 :element-type 'character :fill-pointer 0 :adjustable t) for char = (read-char stream t nil t) do (case char ((#\|) (vector-push-extend (read-char stream t nil t) result)) ((#\") (return result)) (t (vector-push-extend char result))))) (nr:defreadtable custom-string-reader (:merge :standard) (:macro-char #\" #'custom-string-reader t)) CL-USER> (named-readtables:in-readtable custom-string-reader:custom-string-reader) #<NAMED-READTABLE CUSTOM-STRING-READER:CUSTOM-STRING-READER {10021AC5A3}> CL-USER> "foo|\bar" "foo\\bar"
Raw
Annotate
Repaste
Edit