Oh, what exactly are your needs? I might’ve written an LL1 parser in Rust as well (oops). I haven’t gotten around to publishing it on crates.io, but will if there’s potential interest. (It’s on Github, so you can try it out if interested.) It is tested and documented (not online but run cargo doc --open) and should be pretty feature complete.
In comparison to lelwel, my LL(1) parser:
Doesn’t use codegen. The grammar is constructed at runtime. Though if your grammar isn’t LL1, you’ll get an error when constructing the parser, before you try to parse anything.
Likely to be slower, as it doesn’t use codegen. (Though the constructed parsers are monomorphized.)
Much easier to use, as in needing ~3x less code to write. Compare my JSON parser which parses to an AST in <100 lines of Rust (excluding the Json printing part), to lelwel’s JSON parser that constructs a CST in ~300 lines of Rust + grammar. It would need additional code beyond that to construct an AST.
More opinionated in a variety of ways, as follows from being shorter to write.
Wanted something this for awhile now! Will have to give it a go.
Would you be willing to elaborate on which of these features in particular you’ve needed that the longstanding
combinedidn’t satisfy?Oh, what exactly are your needs? I might’ve written an LL1 parser in Rust as well (oops). I haven’t gotten around to publishing it on crates.io, but will if there’s potential interest. (It’s on Github, so you can try it out if interested.) It is tested and documented (not online but run
cargo doc --open) and should be pretty feature complete.In comparison to lelwel, my LL(1) parser:
https://github.com/justinpombrio/parser-ll1