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: @ramin_hal9001@fe.disroot.org)