diff options
author | Alex Vong <alexvong1995@gmail.com> | 2018-10-14 04:17:14 +0800 |
---|---|---|
committer | Danny Milosavljevic <dannym@scratchpost.org> | 2018-11-19 12:08:26 +0100 |
commit | d2a659e5bf05297f67a54b4c46143ed4115a3941 (patch) | |
tree | cd68651e37ae60aacb580adf56cdca1b83faad82 | |
parent | df730f675753e0a892ef0f1f1c346efc1053d78e (diff) | |
download | patches-d2a659e5bf05297f67a54b4c46143ed4115a3941.tar patches-d2a659e5bf05297f67a54b4c46143ed4115a3941.tar.gz |
gnu: Add clojure-instaparse.
* gnu/packages/lisp.scm (clojure-instaparse): New public variable.
-rw-r--r-- | gnu/packages/lisp.scm | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/gnu/packages/lisp.scm b/gnu/packages/lisp.scm index 6b0de63986..7ed4359271 100644 --- a/gnu/packages/lisp.scm +++ b/gnu/packages/lisp.scm @@ -36,6 +36,7 @@ #:use-module (guix utils) #:use-module (guix build-system gnu) #:use-module (guix build-system ant) + #:use-module (guix build-system clojure) #:use-module (guix build-system asdf) #:use-module (guix build-system trivial) #:use-module (gnu packages admin) @@ -1607,6 +1608,58 @@ compressor. It works on data produced by @code{parse-js} to generate a ("sbcl-cl-uglify-js" ,sbcl-cl-uglify-js))) (synopsis "JavaScript compressor"))) +(define-public clojure-instaparse + (let ((commit "dcfffad5b065e750f0f5835f017cdd8188b8ca2e") + (version "1.4.9")) ; upstream forget to tag this release + (package + (name "clojure-instaparse") + (version version) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/Engelberg/instaparse.git") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "002mrgin4z3dqy88r1lak7smd0m7x8d22vmliw0m6w6mh5pa17lk")))) + (build-system clojure-build-system) + (arguments + '(#:doc-dirs '("docs/"))) + (synopsis "No grammar left behind") + (description + "Instaparse aims to be the simplest way to build parsers in Clojure. + +@itemize +@item Turns @emph{standard EBNF or ABNF notation} for context-free grammars +into an executable parser that takes a string as an input and produces a parse +tree for that string. + +@item @dfn{No Grammar Left Behind}: Works for @emph{any} context-free grammar, +including @emph{left-recursive}, @emph{right-recursive}, and @emph{ambiguous} +grammars. + +@item Extends the power of context-free grammars with PEG-like syntax for +lookahead and negative lookahead. + +@item Supports both of Clojure's most popular tree formats (hiccup and enlive) +as output targets + +@item Detailed reporting of parse errors. + +@item Optionally produces lazy sequence of all parses (especially useful for +diagnosing and debugging ambiguous grammars). + +@item ``Total parsing'' mode where leftover string is embedded in the parse +tree. + +@item Optional combinator library for building grammars programmatically. + +@item Performant. +@end itemize") + (home-page "https://github.com/Engelberg/instaparse") + (license license:epl1.0)))) + (define-public confusion-mdl (let* ((commit "12a055581fc262225272df43287dae48281900f5")) (package |