用于分析clojure代码的Clojure代码

时间:2017-05-09 14:19:38

标签: clojure

我想分析一个外国clojure代码的文件。我目前正在使用propertyCardsShuffledOriginalArray阅读所有表单:

clojure.tools.reader

这通常有效,除非它遇到引用别名ns的双冒号关键字。例如:

(require '[clojure.tools.reader :as reader])

(defn read-all-forms [f]
  (let [rdr (indexing-push-back-reader (slurp f))
        EOF (Object.)
        opts {:eof EOF}]
    (loop [ret []]
      (let [form (reader/read opts rdr)]
        (if (= EOF form)
          ret
          (recur (conj ret form)))))))

失败:

(ns foo (:require [foo.bar :as bar])) ::bar/baz

有没有办法使用clojure.tools.reader来读取文件并解决这样的关键字?我应该以某种方式跟踪ExceptionInfo Invalid token: ::bar/baz我自己吗?

1 个答案:

答案 0 :(得分:3)

tools.reader如果绑定则使用clojure.tools.reader/*alias-map*,否则使用(ns-aliases *ns*)来解析别名。因此,如果您的文件中有自动解析的关键字,则需要使用其中一种方法来解析自动解析的别名。

相关问题