How to submit a small patch, update to Emacs Lisp parser

Ramin Honary <[email protected]>
Newsgroups gmane.lisp.guile.devel
Message-ID <CAFhnQTQUYwwskJQxh4NQVbYDEacPuSjtz5XS36gKqpz2EdSr4g@mail.gmail.com>
Hello Guile developers:

I have made a small bug fix for the Emacs Lisp parser in the (language
elisp) module.

  - I fixed a simple bug in the lexer that decodes the carat encoding
for control characters (for example "^@" translates to #\null),

  - and I implemented octal digit decoding in the lexer.

I have tested these changes against Emacs Lisp code from the GNU Emacs
source code. I can confirm that files like "subr.el" can be fully
parsed to list data structures in Scheme now. Here is a simple test
program that parses "subr.el" from GNU Emacs:

(use-modules ((language elisp parser) #:select (read-elisp)))

(define (file-read-all-forms filepath)
  (call-with-port (open-input-file filepath)
    (lambda (port)
      (let loop ((forms-list '()))
        (let ((form (read-elisp port)))
          (cond
           ((eof-object? form) (reverse forms-list))
           (else (loop (cons form forms-list)))
           ))))))

(define path-to-test-el "/home/ramin/src/emacs-29.4/lisp/subr.el")

(define (main)
  (for-each
   (lambda (form) (display form) (newline))
   (file-read-all-forms path-to-test-el)))

Before applying my patch, the above test program fails with:

ice-9/boot-9.scm:1685:16: In procedure raise-exception:
In procedure integer->char: Argument 1 out of range: 67108955

After applying my patch, the whole file parses successfully.

The patch is not that large, so I am attaching it to this e-mail. But
if you would prefer, I can submit it by some other means, such as the
Savannah Git server, if you can instruct me how to do so.

Regards,

-- Ramin Honary


(ActivityPub: @[email protected])
2024-11-20_ramin-honary_improve-elisp-parser.patch.gz (application/gzip, 3.6 KB) - not displayed
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.