X-Git-Url: https://git.distorted.org.uk/~mdw/sod/blobdiff_plain/aa14a4cddcb96b681d5c19a2ec8bad382f43b264..9ec578d9fe450b7e7f9030dc9d930185593aa991:/src/parser/scanner-token-impl.lisp diff --git a/src/parser/scanner-token-impl.lisp b/src/parser/scanner-token-impl.lisp index bf5e394..8ab427a 100644 --- a/src/parser/scanner-token-impl.lisp +++ b/src/parser/scanner-token-impl.lisp @@ -28,6 +28,11 @@ ;;;-------------------------------------------------------------------------- ;;; Token scanner implementation. +(defmethod file-location ((place token-scanner-place)) + (make-file-location (scanner-filename (token-scanner-place-scanner place)) + (token-scanner-place-line place) + (token-scanner-place-column place))) + (defmethod shared-initialize :after ((scanner token-scanner) slot-names &key) (declare (ignore slot-names)) @@ -50,9 +55,10 @@ (setf type ty value val) (if (plusp captures) - (let ((next (make-token-scanner-place - :type ty :value val - :line line :column column))) + (let ((next (make-token-scanner-place :scanner scanner + :type ty :value val + :line line + :column column))) (setf (token-scanner-place-next tail) next tail next)) (setf tail nil))))))) @@ -61,8 +67,9 @@ (with-slots (type value captures tail line column) scanner (incf captures) (or tail - (setf tail (make-token-scanner-place - :type type :value value :line line :column column))))) + (setf tail (make-token-scanner-place :scanner scanner + :type type :value value + :line line :column column))))) (defmethod scanner-restore-place ((scanner token-scanner) place) (with-slots (type value tail line column) scanner @@ -73,6 +80,7 @@ tail place))) (defmethod scanner-release-place ((scanner token-scanner) place) + (declare (ignore place)) (with-slots (captures) scanner (decf captures)))