首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >分析Clojure代码的clojure代码

分析Clojure代码的clojure代码
EN

Stack Overflow用户
提问于 2017-05-09 14:19:37
回答 1查看 68关注 0票数 1

我想分析一个外部code代码的文件。我目前正在使用clojure.tools.reader读取所有表单:

代码语言:javascript
复制
(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)))))))

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

代码语言:javascript
复制
(ns foo
  (:require [foo.bar :as bar]))

::bar/baz

在以下方面失败:

ExceptionInfo Invalid token: ::bar/baz

是否有一种方法可以使用clojure.tools.reader来读取文件并解析像这样的关键字?我是否应该自己跟踪*alias-map*呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-09 15:16:21

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43872348

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档