4 releases (breaking)
|0.4.0||May 27, 2023|
|0.3.0||May 22, 2023|
|0.2.0||May 17, 2023|
|0.1.0||May 15, 2023|
#4 in #clojure
This is an S-Expression parser and formatter with the following goals:
Offering direct access to the tokenizer,
anysexpr::parse, but also
anysexpr::readto build an in-memory tree easily.
Good error reporting (precise location information and messages).
(Future) Make the data constructors for
anysexpr::readparametrizable (generic), e.g. like in the
Streaming: allow to read from and print to file handles lazily, for use e.g. in communications. This currently works by using
anysexpr::parsedirectly for input, or creating tokens to print via a custom loop for output. Future: more possibilities, e.g. turn a tree into a token stream, or parameterize with a tree that's generated on demand while printing.
(Future) Support various s-expression variants (R*RS, Guile, Clojure, Common Lisp, ..) via runtime (and compile-time?) settings.
(Perhaps) be usable on microcontrollers (small code, no-std?).
The author is quite new to Rust. There will be API guideline entries not currently being followed, help in that area is as welcome as in other areas.
- string escape features on printing
- inexact and complex numbers
- performance tuning?, perhaps do not use genawaiter?
- better error behaviour: parser should return errors but try to make it possible to continue?
- more tests (large test corpora, fuzzing round trips)
- handle Guile, Clojure and other syntax versions
- parametrization (generics) for tree generation / mapping (also/vs. Serde?)
- lazy features as mentioned above
- some level of support for pretty-printing
- examine the
lexprcrate in more detail (missed when researching existing crates before starting this project)
Christian Jaeger firstname.lastname@example.org