From e90d1248920b50e5f8c25ab406a9095e3f6a2358 Mon Sep 17 00:00:00 2001 From: mRnea Date: Fri, 16 Aug 2024 10:09:45 +0300 Subject: changed project name from cl-forth to kurt --- errors.lisp | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 errors.lisp (limited to 'errors.lisp') diff --git a/errors.lisp b/errors.lisp new file mode 100644 index 0000000..2f955ca --- /dev/null +++ b/errors.lisp @@ -0,0 +1,26 @@ +(in-package :kurt) + +(defun report-line (line-num line col? &optional (stream t)) + (format stream "~5a:~a~%" line-num line) + (iter (for i from 0 below (+ 6 (if (consp col?) + (getf (cdr col?) :col) ;; if token get col + col?))) + (write-char #\Space stream)) + (format stream "^~%")) + +(define-condition char-not-closed () + ((line :initarg :line :reader line) + (col :initarg :col :reader col) + (line-num :initarg :line-num :reader line-num)) + (:report (lambda (condition stream) + (format stream "Karakterin kapanış sembolü ' eksik.~%") + (report-line (line-num condition) (line condition) (col condition) stream)))) + +(defun handle-char-not-closed (line-num line token-or-col) + (make-condition 'char-not-closed :line-num line-num :line line :col token-or-col)) + +;; (define-condition op-not-implemented (style-warning) +;; ((undef-ops :initarg :ops :reader undef-ops)) +;; (:report (lambda (condition stream) +;; (format stream "These ops are not defined in op-case: ~s" +;; (undef-ops condition))))) -- cgit v1.2.3