GNU bug report logs -
#78884
30.1; peg-parse does not treat its arguments as sequence
Previous Next
Reported by: Tim Landscheidt <tim <at> tim-landscheidt.de>
Date: Tue, 24 Jun 2025 00:13:02 UTC
Severity: normal
Found in version 30.1
Done: Stefan Monnier <monnier <at> iro.umontreal.ca>
Bug is archived. No further changes may be made.
Full log
Message #8 received at 78884 <at> debbugs.gnu.org (full text, mbox):
Tim Landscheidt [2025-06-24 00:12:11] wrote:
> The docstring for Emacs 30.1's peg-parse reads:
>
> | (peg-parse &rest PEXS)
>
> | Match PEXS at point.
> | PEXS is a sequence of PEG expressions, implicitly combined with ‘and’.
> | Returns STACK if the match succeed and signals an error on failure,
> | moving point along the way.
>
> However, it will fail with (for example) "Wrong type
> argument: listp" when called as such:
>
> | ELISP> (with-temp-buffer
> | (insert "ABCDEF")
> | (goto-char (point-min))
> | (peg-parse
> | (bob)
> | "ABC"))
> | *** Eval error *** Wrong type argument: listp, "ABC"
> | ELISP>
>
> An explicit sequence with "and" works:
>
> | ELISP> (with-temp-buffer
> | (insert "ABCDEF")
> | (goto-char (point-min))
> | (peg-parse
> | (and
> | (bob)
> | "ABC")))
> | t
>
> | ELISP>
Can you check that the quick-fix below fixes things on your side (and
not just for your example)?
Stefan
diff --git a/lisp/progmodes/peg.el b/lisp/progmodes/peg.el
index 7827990af35..b5ffff31362 100644
--- a/lisp/progmodes/peg.el
+++ b/lisp/progmodes/peg.el
@@ -320,8 +320,9 @@ peg-parse
moving point along the way."
(if (and (consp (car pexs))
(symbolp (caar pexs))
- (not (ignore-errors
- (not (eq 'call (car (peg-normalize (car pexs))))))))
+ (not (or (get (peg--rule-id (caar pexs)) 'peg--rule-definition)
+ (ignore-errors
+ (not (eq 'call (car (peg-normalize (car pexs)))))))))
;; The first of `pexs' has not been defined as a rule, so assume
;; that none of them have been and they should be fed to
;; `with-peg-rules'
This bug report was last modified 14 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.