【问题标题】:How to make clojure tools.analyzer ignore validation step?如何使 clojure tools.analyzer 忽略验证步骤?
【发布时间】:2017-09-05 20:46:07
【问题描述】:

我要解决的初始任务是为任意 Clojure 代码构建 AST。所以谷歌建议为此使用https://github.com/clojure/tools.analyzer.jvm。我已经在简单的 Clojure 表单 (print x) 上尝试过这个库,并且这个引发的异常消息是 Could not resolve var: x。我曾经认为构建 AST 是一个简单的过程,没有验证、解析变量等副作用。也很奇怪,没有关于如何省略这个变量解析步骤的干净文档。

【问题讨论】:

  • 我玩了一个选项 :validate/unresolvable-symbol-handler - (aj/analyze '(print x) (assoc (aj/empty-env) :passes-opts {:validate/unresolvable-symbol-handler (fn [a b c] (print a)) })) 但没有运气

标签: clojure abstract-syntax-tree


【解决方案1】:

所以我想通了。 :validate/unresolvable-symbol-handler 必须与 :passes-opts 作为第三个参数一起传递(而不是在 environment 内,因为我尝试过)

(clojure.tools.analyzer.jvm/analyze '(print x) 
    (clojure.tools.analyzer.jvm/empty-env)
    {:passes-opts {:validate/unresolvable-symbol-handler
                                     (fn [a b c] nil)}})

【讨论】:

    猜你喜欢
    • 2019-01-27
    • 1970-01-01
    • 2020-03-05
    • 1970-01-01
    • 2017-07-24
    • 1970-01-01
    • 2013-02-18
    • 2014-03-24
    • 2020-10-26
    相关资源
    最近更新 更多