[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] master cbd3352 55/60: Add parsec-lookahead
From: |
Junpeng Qiu |
Subject: |
[elpa] master cbd3352 55/60: Add parsec-lookahead |
Date: |
Tue, 25 Oct 2016 17:45:17 +0000 (UTC) |
branch: master
commit cbd33529b83fc55967153887f273dc9c84a328c3
Author: Junpeng Qiu <address@hidden>
Commit: Junpeng Qiu <address@hidden>
Add parsec-lookahead
---
parsec-tests.el | 29 +++++++++++++++++++++++++++++
parsec.el | 7 +++++++
2 files changed, 36 insertions(+)
diff --git a/parsec-tests.el b/parsec-tests.el
index fdf2055..e9c2672 100644
--- a/parsec-tests.el
+++ b/parsec-tests.el
@@ -229,6 +229,35 @@
(parsec-str "abc")))
"abc")))
+(ert-deftest test-parsec-lookahead ()
+ (should
+ (equal
+ (parsec-with-input "abc"
+ (parsec-lookahead (parsec-str "abc"))
+ (point))
+ (point-min)))
+ (should
+ (equal
+ (parsec-with-input "abc"
+ (parsec-start
+ (parsec-lookahead
+ (parsec-and
+ (parsec-ch ?a)
+ (parsec-ch ?c))))
+ (point))
+ (1+ (point-min))))
+ (should
+ (equal
+ (parsec-with-input "abc"
+ (parsec-start
+ (parsec-try
+ (parsec-lookahead
+ (parsec-and
+ (parsec-ch ?a)
+ (parsec-ch ?c)))))
+ (point))
+ (point-min))))
+
(ert-deftest test-parsec-error-handles ()
(should
(equal
diff --git a/parsec.el b/parsec.el
index 70209e8..f28e42c 100644
--- a/parsec.el
+++ b/parsec.el
@@ -730,6 +730,13 @@ point of your parsing program."
(parsec-and ,parser)
(goto-char ,orig-pt-sym)))))
+(defmacro parsec-lookahead (parser)
+ "Try PARSER, and pretend that no input is consumed when it succeeds."
+ (let ((orig-pt-sym (make-symbol "orig-pt")))
+ `(let ((,orig-pt-sym (point)))
+ (parsec-return ,parser
+ (goto-char ,orig-pt-sym)))))
+
(defsubst parsec--atom-tag (name)
(intern (format "parsec-failed-at-half-%s" name)))
- [elpa] master 2e9f962 59/60: Add new package parsec to externals-list, (continued)
- [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, 2016/10/25
- [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 <=
- [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
- [elpa] master 13637e1 15/60: Rename parsec-do-parse to parsec-with-input, Junpeng Qiu, 2016/10/25
- [elpa] master ba23b01 19/60: Add more APIs, Junpeng Qiu, 2016/10/25
- [elpa] master f3ce070 09/60: Add simple scheme parser, Junpeng Qiu, 2016/10/25
- [elpa] master 9bc1d77 28/60: Move examples to under sub-directory, Junpeng Qiu, 2016/10/25
- [elpa] master 52f1886 33/60: Update pjson, Junpeng Qiu, 2016/10/25