summaryrefslogtreecommitdiff
path: root/errors.lisp
diff options
context:
space:
mode:
Diffstat (limited to 'errors.lisp')
-rw-r--r--errors.lisp26
1 files changed, 26 insertions, 0 deletions
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)))))