[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] master 054a753 06/60: Rename to parsec
From: |
Junpeng Qiu |
Subject: |
[elpa] master 054a753 06/60: Rename to parsec |
Date: |
Tue, 25 Oct 2016 17:45:12 +0000 (UTC) |
branch: master
commit 054a7532b862a9fdd8e9940290e594257e566310
Author: Junpeng Qiu <address@hidden>
Commit: Junpeng Qiu <address@hidden>
Rename to parsec
---
full-csv-parser.el | 32 ++++++------
parsec.el | 142 +++++++++++++++++++++++++-------------------------
simple-csv-parser.el | 10 ++--
url-str-parser.el | 26 ++++-----
4 files changed, 104 insertions(+), 106 deletions(-)
diff --git a/full-csv-parser.el b/full-csv-parser.el
index 75225a4..d78c40c 100644
--- a/full-csv-parser.el
+++ b/full-csv-parser.el
@@ -25,32 +25,32 @@
;;; Code:
(defun csv-file ()
- (pl-ensure
- (pl-return (pl-endby (csv-line) (csv-eol))
- (pl-eob))))
+ (parsec-ensure
+ (parsec-return (parsec-endby (csv-line) (csv-eol))
+ (parsec-eob))))
(defun csv-line ()
- (pl-sepby (csv-cell) (pl-ch ?,)))
+ (parsec-sepby (csv-cell) (parsec-ch ?,)))
(defun csv-cell ()
- (pl-or (csv-quoted-cell) (pl-many-as-string (pl-re "[^,\n\r]"))))
+ (parsec-or (csv-quoted-cell) (parsec-many-as-string (parsec-re "[^,\n\r]"))))
(defun csv-quoted-cell ()
- (pl-and (pl-ch ?\")
- (pl-return (pl-many-as-string (csv-quoted-char))
- (pl-ensure (pl-ch ?\")))))
+ (parsec-and (parsec-ch ?\")
+ (parsec-return (parsec-many-as-string (csv-quoted-char))
+ (parsec-ensure (parsec-ch ?\")))))
(defun csv-quoted-char ()
- (pl-or (pl-re "[^\"]")
- (pl-and (pl-str "\"\"")
- "\"")))
+ (parsec-or (parsec-re "[^\"]")
+ (parsec-and (parsec-str "\"\"")
+ "\"")))
(defun csv-eol ()
- (pl-or (pl-str "\n\r")
- (pl-str "\r\n")
- (pl-str "\n")
- (pl-str "\r")
- (pl-eob)))
+ (parsec-or (parsec-str "\n\r")
+ (parsec-str "\r\n")
+ (parsec-str "\n")
+ (parsec-str "\r")
+ (parsec-eob)))
(defun parse-csv (input)
(with-temp-buffer
diff --git a/parsec.el b/parsec.el
index a86629d..92da11e 100644
--- a/parsec.el
+++ b/parsec.el
@@ -26,26 +26,26 @@
(require 'cl-lib)
-(defgroup pl nil
+(defgroup parsec nil
"Combinator parsing library for Emacs, similar to Haskell's Parsec"
:group 'development)
-(defun pl-eob-or-char-as-string ()
+(defun parsec-eob-or-char-as-string ()
(let ((c (char-after)))
(if c
(char-to-string c)
"`eob'")))
-(defun pl-msg (msg)
- (cons 'pl-msg msg))
+(defun parsec-msg (msg)
+ (cons 'parsec-msg msg))
-(defun pl-msg-p (msg)
+(defun parsec-msg-p (msg)
(and (consp msg)
- (eq (car msg) 'pl-msg)))
+ (eq (car msg) 'parsec-msg)))
-(defalias 'pl-msg-get 'cdr)
+(defalias 'parsec-msg-get 'cdr)
-(defun pl-stop (&rest args)
+(defun parsec-stop (&rest args)
(throw 'failed
(let ((msg (plist-get args :message))
(expected (plist-get args :expected))
@@ -53,12 +53,12 @@
(when (or (stringp msg)
(and (stringp expected)
(stringp found)))
- (pl-msg (if (stringp msg)
+ (parsec-msg (if (stringp msg)
msg
(format "Found \"%s\" -> Expected \"%s\""
found expected)))))))
-(defun pl-ch (ch &rest args)
+(defun parsec-ch (ch &rest args)
(let ((next-char (char-after)))
(if (and (not (eobp))
(char-equal next-char ch))
@@ -72,15 +72,15 @@
(t
(char-to-string ch)))
(forward-char 1))
- (pl-stop :expected (char-to-string ch)
- :found (pl-eob-or-char-as-string)))))
+ (parsec-stop :expected (char-to-string ch)
+ :found (parsec-eob-or-char-as-string)))))
-(defun pl-eob ()
+(defun parsec-eob ()
(unless (eobp)
- (pl-stop :expected "`eob'"
- :found (pl-eob-or-char-as-string))))
+ (parsec-stop :expected "`eob'"
+ :found (parsec-eob-or-char-as-string))))
-(defun pl-re (regexp &rest args)
+(defun parsec-re (regexp &rest args)
(if (looking-at regexp)
(prog1
(cond
@@ -91,120 +91,118 @@
(match-end 0))
((memq :group args)
(let ((group
- (loop named outer for arg on args
- when (eq (car arg) :group) do
- (return-from outer (cadr arg)))))
+ (cl-loop named outer for arg on args
+ when (eq (car arg) :group) do
+ (return-from outer (cadr arg)))))
(if group
(match-string group)
(error "Unexpected regexp :group %s" group))))
(t
(match-string 0)))
(goto-char (match-end 0)))
- (pl-stop :expected regexp
- :found (pl-eob-or-char-as-string))))
+ (parsec-stop :expected regexp
+ :found (parsec-eob-or-char-as-string))))
-(defsubst pl-str (str &rest args)
- (pl-re (regexp-quote str)))
+(defsubst parsec-str (str &rest args)
+ (parsec-re (regexp-quote str)))
-(defsubst pl-num (num &rest args)
- (pl-re (regexp-quote (number-to-string num))))
+(defsubst parsec-num (num &rest args)
+ (parsec-re (regexp-quote (number-to-string num))))
-(defmacro pl-or (&rest parsers)
+(defmacro parsec-or (&rest parsers)
(let ((outer-sym (make-symbol "outer"))
(parser-sym (make-symbol "parser")))
- `(loop named ,outer-sym for ,parser-sym in ',parsers
- finally (pl-stop :message "None of the parsers succeeds") do
- (pl-try
- (return-from ,outer-sym (eval ,parser-sym))))))
+ `(cl-loop named ,outer-sym for ,parser-sym in ',parsers
+ finally (parsec-stop :message "None of the parsers succeeds") do
+ (parsec-try
+ (return-from ,outer-sym (eval ,parser-sym))))))
-(defalias 'pl-and 'progn)
+(defalias 'parsec-and 'progn)
-(defalias 'pl-return 'prog1)
+(defalias 'parsec-return 'prog1)
-(defmacro pl-try (&rest forms)
+(defmacro parsec-try (&rest forms)
`(catch 'failed ,@forms))
-(defmacro pl-try-with-message (msg &rest forms)
+(defmacro parsec-try-with-message (msg &rest forms)
(declare (indent 1))
(let ((res-sym (make-symbol "result")))
- `(let ((,res-sym (pl-try ,@forms)))
+ `(let ((,res-sym (parsec-try ,@forms)))
,(if msg
- `(if (pl-msg-p ,res-sym)
- (pl-msg ,msg)
+ `(if (parsec-msg-p ,res-sym)
+ (parsec-msg ,msg)
,res-sym)
`,res-sym))))
-(defmacro pl-ensure-with-message (msg &rest forms)
+(defmacro parsec-ensure-with-message (msg &rest forms)
(declare (indent 1))
(let* ((error-sym (make-symbol "err")))
`(let (,error-sym)
- (if (pl-msg-p (setq ,error-sym
- (pl-try-with-message ,msg ,@forms)))
- (error (pl-msg-get ,error-sym))
+ (if (parsec-msg-p (setq ,error-sym
+ (parsec-try-with-message ,msg ,@forms)))
+ (error (parsec-msg-get ,error-sym))
,error-sym))))
-(defmacro pl-ensure (&rest forms)
- `(pl-ensure-with-message nil ,@forms))
+(defmacro parsec-ensure (&rest forms)
+ `(parsec-ensure-with-message nil ,@forms))
-(defalias 'pl-parse 'pl-try)
+(defalias 'parsec-parse 'parsec-try)
-(defmacro pl-until (parser &optional &key skip)
+(defmacro parsec-until (parser &optional &key skip)
`(catch 'done
(while (not (eobp))
- (pl-try
+ (parsec-try
(throw 'done ,parser))
,(if skip
`(,skip 1)
`(forward-char 1)))))
-(defmacro pl-many (parser)
+(defmacro parsec-many (parser)
(let ((res (make-symbol "results")))
`(let (,res)
- (pl-try
+ (parsec-try
(while (not (eobp))
(push ,parser ,res)))
(nreverse ,res))))
-(defmacro pl-many1 (parser)
- `(cons ,parser (pl-many ,parser)))
+(defmacro parsec-many1 (parser)
+ `(cons ,parser (parsec-many ,parser)))
-(defun pl-list-to-string (l)
+(defun parsec-list-to-string (l)
(mapconcat #'identity l ""))
-(defmacro pl-many-as-string (parser)
- `(mapconcat #'identity (pl-many ,parser) ""))
+(defmacro parsec-many-as-string (parser)
+ `(mapconcat #'identity (parsec-many ,parser) ""))
-(defmacro pl-many1-as-string (parser)
- `(mapconcat #'identity (pl-many1 ,parser) ""))
+(defmacro parsec-many1-as-string (parser)
+ `(mapconcat #'identity (parsec-many1 ,parser) ""))
-(defmacro pl-endby (parser end)
- `(pl-many (pl-return ,parser
+(defmacro parsec-endby (parser end)
+ `(parsec-many (parsec-return ,parser
,end)))
-(defmacro pl-sepby (parser separator)
- `(pl-or
- (cons ,parser (pl-many (pl-and ,separator ,parser)))
+(defmacro parsec-sepby (parser separator)
+ `(parsec-or
+ (cons ,parser (parsec-many (parsec-and ,separator ,parser)))
nil))
+(defun parsec-just (x) (cons 'Just x))
-(defun pl-just (x) (cons 'Just x))
+(defvar parsec-nothing 'Nothing)
-(defvar pl-nothing 'Nothing)
-
-(defun pl-maybe-p (x)
- (or (eq x pl-nothing)
+(defun parsec-maybe-p (x)
+ (or (eq x parsec-nothing)
(and
(consp x)
(eq (car x) 'Just))))
-(defmacro pl-make-maybe (&rest body)
+(defmacro parsec-make-maybe (&rest body)
(let ((res (make-symbol "result")))
- `(let ((,res (pl-try
- ,@body)))
- (if (pl-msg-p ,res)
- pl-nothing
- (pl-just ,res)))))
-
+ `(let ((,res (parsec-try
+ ,@body)))
+ (if (parsec-msg-p ,res)
+ parsec-nothing
+ (parsec-just ,res)))))
(provide 'parsec)
;;; parsec.el ends here
diff --git a/simple-csv-parser.el b/simple-csv-parser.el
index 7bff683..705717c 100644
--- a/simple-csv-parser.el
+++ b/simple-csv-parser.el
@@ -25,24 +25,24 @@
;;; Code:
(defun s-csv-file ()
- (pl-many (s-csv-line)))
+ (parsec-many (s-csv-line)))
(defun s-csv-line ()
(prog1 (s-csv-cells)
(s-csv-eol)))
(defun s-csv-eol ()
- (pl-or (pl-str "\n")
- (pl-eob)))
+ (parsec-or (parsec-str "\n")
+ (parsec-eob)))
(defun s-csv-cells ()
(cons (s-csv-cell-content) (s-csv-remaining-cells)))
(defun s-csv-cell-content ()
- (pl-many-as-string (pl-re "[^,\n]")))
+ (parsec-many-as-string (parsec-re "[^,\n]")))
(defun s-csv-remaining-cells ()
- (pl-or (pl-and (pl-ch ?,) (s-csv-cells)) nil))
+ (parsec-or (parsec-and (parsec-ch ?,) (s-csv-cells)) nil))
(defun s-parse-csv (input)
(with-temp-buffer
diff --git a/url-str-parser.el b/url-str-parser.el
index fbb747e..f08c2fd 100644
--- a/url-str-parser.el
+++ b/url-str-parser.el
@@ -26,26 +26,26 @@
(defun url-str-query ()
- (pl-sepby (url-str-pair) (pl-ch ?&)))
+ (parsec-sepby (url-str-pair) (parsec-ch ?&)))
(defun url-str-pair ()
(cons
- (pl-many1-as-string (url-str-char))
- (pl-make-maybe (pl-and (pl-ch ?=) (pl-many-as-string (url-str-char))))))
+ (parsec-many1-as-string (url-str-char))
+ (parsec-make-maybe (parsec-and (parsec-ch ?=) (parsec-many-as-string
(url-str-char))))))
(defun url-str-char ()
- (pl-or (pl-re "[a-zA-z0-9$_.!*'(),-]")
- (pl-and (pl-ch ?+) " ")
- (url-str-hex)))
+ (parsec-or (parsec-re "[a-zA-z0-9$_.!*'(),-]")
+ (parsec-and (parsec-ch ?+) " ")
+ (url-str-hex)))
(defun url-str-hex ()
- (pl-and
- (pl-ch ?%)
- (format "%c"
- (string-to-number (format "%s%s"
- (pl-re "[0-9a-zA-z]")
- (pl-re "[0-9a-zA-z]"))
- 16))))
+ (parsec-and
+ (parsec-ch ?%)
+ (format "%c"
+ (string-to-number (format "%s%s"
+ (parsec-re "[0-9a-zA-z]")
+ (parsec-re "[0-9a-zA-z]"))
+ 16))))
(defun url-str-parse (input)
(with-temp-buffer
- [elpa] master f7e8629 26/60: Add tests, (continued)
- [elpa] master f7e8629 26/60: Add tests, Junpeng Qiu, 2016/10/25
- [elpa] master bc11325 50/60: Add file examples/.nosearch, Junpeng Qiu, 2016/10/25
- [elpa] master 1da4344 32/60: Update url-str-parser, Junpeng Qiu, 2016/10/25
- [elpa] master 89dd2ac 54/60: Fix some wording in README, Junpeng Qiu, 2016/10/25
- [elpa] master 55515ca 48/60: Add missing dependencies, Junpeng Qiu, 2016/10/25
- [elpa] master 2e9f962 59/60: Add new package parsec to externals-list, Junpeng Qiu, 2016/10/25
- [elpa] master 3827d26 36/60: Add docs for user-interface functions & combinators, Junpeng Qiu, 2016/10/25
- [elpa] master 8c108be 56/60: Add parsec-peek and parsec-peek-p, Junpeng Qiu, 2016/10/25
- [elpa] master 6001a70 12/60: Refine and add more parsec API, Junpeng Qiu, 2016/10/25
- [elpa] master da878fa 18/60: Use parsec-query for other return values, Junpeng Qiu, 2016/10/25
- [elpa] master 054a753 06/60: Rename to parsec,
Junpeng Qiu <=
- [elpa] master 2cce1e3 37/60: Rename parsec-from-just to parsec-from-maybe, Junpeng Qiu, 2016/10/25
- [elpa] master cdb8c0d 47/60: Remove unused symbols, Junpeng Qiu, 2016/10/25
- [elpa] master fdb3d99 44/60: Fix some code in simple-csv-parser.el, Junpeng Qiu, 2016/10/25
- [elpa] master 701964f 57/60: Prepare headers for GNU ELPA, Junpeng Qiu, 2016/10/25
- [elpa] master cbd3352 55/60: Add parsec-lookahead, Junpeng Qiu, 2016/10/25
- [elpa] master a951fbe 41/60: Unify tag names, Junpeng Qiu, 2016/10/25
- [elpa] master dfb3af0 60/60: Add 'packages/parsec/' from commit '8f0c266d8b9b0ee5fcf9b80c518644b2849ff3b3', Junpeng Qiu, 2016/10/25
- [elpa] master 6cc3100 07/60: Fix indentations, Junpeng Qiu, 2016/10/25
- [elpa] master d98e8c8 05/60: Add url-encoded string parser, Junpeng Qiu, 2016/10/25
- [elpa] master a268b9f 08/60: Add more APIs, Junpeng Qiu, 2016/10/25