35 lines
864 B
Plaintext
35 lines
864 B
Plaintext
(import spork/json :as j)
|
|
(import /base :as b)
|
|
|
|
(defn- get-line [source line]
|
|
((string/split "\n" source) (dec line)))
|
|
|
|
(defn scan-error [e out] (set (out :errors) e) (j/encode out))
|
|
|
|
(defn parse-error [e]
|
|
(def msg (e :msg))
|
|
(def line-num (get-in e [:token :line]))
|
|
(def source (get-in e [:token :source]))
|
|
(def source-line (get-line source line-num))
|
|
(print "Parsing error: " msg)
|
|
(print "On line " line-num ":")
|
|
(print source-line))
|
|
|
|
|
|
(defn validation-error [e]
|
|
(def msg (e :msg))
|
|
(def line-num (get-in e [:node :token :line]))
|
|
(def source (get-in e [:node :token :source]))
|
|
(def source-line (get-line source line-num))
|
|
(case msg
|
|
"unbound name"
|
|
(do
|
|
(print "Validation error: " msg " " (get-in e [:node :data]))
|
|
(print "on line " line-num)
|
|
(print source-line)
|
|
)
|
|
)
|
|
)
|
|
|
|
(defn runtime-error [e out] (set (out :errors) e) (j/encode out))
|