1
外国のクローゼットコードのファイルを分析したいと思います。私は現在、すべてのフォームを読み取るためにclojure.tools.reader
を使用しています:クローゼットコードを解析するためのClojureコード
(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を指し、二重コロンキーワードに遭遇した場合を除き、動作します。例:このようなキーワードは、ファイルを読み込み、解決するためにclojure.tools.readerを使用する方法はあり
ExceptionInfo Invalid token: ::bar/baz
:
(ns foo
(:require [foo.bar :as bar]))
::bar/baz
はで失敗しますか?どういうわけか自分で*alias-map*
を追跡するはずですか?
ありがとうございました!私は '結びつく(reader/* alias-map * identity(reader/read ...))'をやめました。うまくいけばそれはあまりにも多くの虐待ではない。 (私の目的では、正確なエイリアスマップの解決は必要ありません)。 –