Grammar-based Clojure parser.
Parcera can safely read any Clojure file without any code evaluation.
Parcera uses the wonderful Antlr4 as its parsing engine and focuses entirely on the grammar definition instead.
Add [org.antlr/antlr4-runtime "4.7.1"]
to your dependencies in addition to parcera. Parcera assumes that
this dependency will be in the classpath to avoid collisions.
(ns example.core
(:require [parcera.core :as parcera]))
;;parse clojure code from a string
(parcera/ast (str '(ns parcera.core
(:require [foo.bar :as bar]
[clojure.data :as data]
[clojure.string :as str]))))
;; => returns a data structure with the result from the parser
(:code
(:list
(:symbol "ns")
(:whitespace " ")
(:symbol "parcera.core")
(:whitespace " ")
(:list
(:simple_keyword "require")
(:whitespace " ")
(:vector
(:symbol "foo.bar")
(:whitespace " ")
(:simple_keyword "as")
(:whitespace " ")
(:symbol "bar"))
(:whitespace " ")
(:vector (:symbol "clojure.data") (:whitespace " ") (:simple_keyword "as") (:whitespace " ") (:symbol "data"))
(:whitespace " ")
(:vector (:symbol "clojure.string") (:whitespace " ") (:simple_keyword "as") (:whitespace " ") (:symbol "str")))))
;; convert an AST back into a string
(parcera/code [:symbol "ns"])
;; "ns"
parcera
.Can you improve this documentation?Edit on GitHub
cljdoc is a website building & hosting documentation for Clojure/Script libraries
× close