(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))