+
+(defun shrink-vector (str size)
+ #+allegro
+ (excl::.primcall 'sys::shrink-svector str size)
+ #+sbcl
+ (sb-kernel:shrink-vector str size)
+ #+cmu
+ (lisp::shrink-vector str size)
+ #+lispworks
+ (system::shrink-vector$vector str size)
+ #+(or allegro cmu sbcl lispworks)
+ str
+ #-(or allegro cmu sbcl lispworks)
+ (subseq str 0 size))
+
+
+#-(or allegro lispworks)
+(define-condition parse-error (error)
+ ((fmt-control :initarg :fmt-control
+ :reader fmt-control)
+ (fmt-args :initarg :fmt-args
+ :reader fmt-args))
+ (:report (lambda (c stream)
+ (format stream "Parse error: ")
+ (apply #'format stream (fmt-control c) (fmt-args c)))))