GNU bug report logs - #72131
29.3; peg.el: syntax class character for symbol is '_', not 's'

Previous Next

Package: emacs;

Reported by: Jeff Trull <edaskel <at> att.net>

Date: Mon, 15 Jul 2024 22:29:02 UTC

Severity: normal

Found in version 29.3

Done: Eli Zaretskii <eliz <at> gnu.org>

Bug is archived. No further changes may be made.

Full log


Message #11 received at 72131 <at> debbugs.gnu.org (full text, mbox):

From: Helmut Eller <eller.helmut <at> gmail.com>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 72131 <at> debbugs.gnu.org, Jeff Trull <edaskel <at> att.net>,
 Stefan Monnier <monnier <at> iro.umontreal.ca>
Subject: Re: bug#72131: 29.3; peg.el: syntax class character for symbol is
 '_', not 's'
Date: Tue, 16 Jul 2024 15:00:41 +0200
On Tue, Jul 16 2024, Eli Zaretskii wrote:

>> From: Jeff Trull <edaskel <at> att.net>
>> Date: Mon, 15 Jul 2024 15:26:02 -0700
>> 
>> (require 'peg)
>> (with-temp-buffer
>>   (save-excursion (insert "_"))
>>   (peg-parse (syntax-class symbol)))
>> 
>> results in the message
>> "No merge-error method for: (syntax-class symbol)".
>> 
>> The root cause seems to be line 703 of peg.el where the syntax class
>> characters are defined. peg uses "s" for symbols instead of
>> "_". Correcting this results in a successful parse in the given code.
>
> Stefan and Helmut, any comments or suggestions?

Yes, looks like "_" would the correct.  A method like

 (cl-defmethod peg--merge-error (merged (_ (eql syntax-class)) x)
   (cl-adjoin `(syntax-class ,x) merged :test #'equal))

is also missing and error messages like

  peg-signal-failure: Parse error at %d (expecting %S): 1, ("abc")

don't look right either.

The first thing to do would be to write a test.




This bug report was last modified 303 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.