Skip to content
Grammar-based Clojure(script) parser
Clojure
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
src/parcera
test/parcera
.gitignore
.travis.yml
LICENSE.md
README.md
project.clj

README.md

parcera

Build Status Clojars Project

Grammar-based Clojure(script) parser.

Parcera can safely read any Clojure file without any code evaluation.

Parcera uses the wonderful Instaparse as its parsing engine and focuses entirely on the grammar definition instead. For a full explanation of the options available for a parser please visit Instaparse website.

usage

(ns example.core
  (:require [parcera.core :as parcera]
            [instaparse.core :as instaparse]))

;;parse clojure code from a string
(parcera/clojure (str '(ns parcera.core
                         (:require [instaparse.core :as instaparse]
                                   [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 "instaparse.core"]
    [:whitespace " "]
    [:simple-keyword "as"]
    [:whitespace " "]
    [:symbol "instaparse"]]
   [: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"
You can’t perform that action at this time.