in reply to Parsing Emacs Lisp sexpr?

That's a lisp vector representation which (e.g.) emacs lisp and clojure use; I believe CL uses a #(1 2 3) reader format instead though so that's probably why Data::SExpression doesn't grok it (then again I don't know if offhand that module'd like the #(1 2 3) notation either . . .)

Considering that file's basically a serialized list of package-decr instances I'd probably agree with the suggestion to manipulate it from lisp instead. If you expounded on what you're trying to do with it you might prompt better suggestions, but so long as you've called package-initialize and Emacs has populated it you can monkey with things like this. Theoretically you could build up the info you wanted to export and then use json-encode to write out a more convenient representation.

(require 'cl) ;; Newer emacsen don't need this (cl-loop for (pkg-sym pkg) in package-archive-contents collect (list pkg-sym (package-desc-archive pkg) (package-desc-version pkg)))

The cake is a lie.
The cake is a lie.
The cake is a lie.

Replies are listed 'Best First'.
Re^2: Parsing Emacs Lisp sexpr?
by perlancar (Hermit) on Apr 09, 2020 at 03:03 UTC

    Aside from the vector syntax, Data::SExpression also currently cannot handle the unquoted @ symbol:

    (@ . [(20181225 1438) ((emacs (24 3))) "multiple-inheritance prototype +-based objects DSL" tar ((:commit . "0a6189f8be42dbbc5d9358cbd447d471 +236135a2") (:authors ("Christopher Wellons" . "wellons@nullprogram.co +m")) (:maintainer "Christopher Wellons" . "wellons@nullprogram.com") +(:url . "https://github.com/skeeto/at-el"))])

    By replacing with ( ) and @ with "@", the data parses.

    2020-04-09 Athanasius fixed formatting of over-long code line.

Re^2: Parsing Emacs Lisp sexpr?
by perlancar (Hermit) on Apr 09, 2020 at 02:39 UTC

    Nothing much for now; I just want to see it in tabular ASCII format, which M-x list-packages sort-of already gives me.

    But it would be nice if I can also convert to JSON and use jq or other CLI tools on the data.