(:documentation
"Capture the SCANNER's current place and return it.")
(:method (scanner)
- (error "Scanner ~S doesn't support rewinding." scanner)))
+ (error "Scanner ~S doesn't support rewinding" scanner)))
(export 'scanner-restore-place)
(defgeneric scanner-restore-place (scanner place)
`(let ((,place (scanner-capture-place ,scanner)))
,@decls
(unwind-protect (progn ,@body)
- (scanner-release-place ,scanner ,place))))))
+ (when ,place (scanner-release-place ,scanner ,place)))))))
;;;--------------------------------------------------------------------------
;;; Character scanner protocol.
(:documentation "Return the SCANNER's current column number.")
(:method (scanner) nil))
+(export 'scanner-file-location)
(defun scanner-file-location (scanner)
"Capture the current location of the SCANNER.