Okey, I’ve definitely got confused, because I’ve seen Strata Rust (and that’s what I was thinking about) and I have not actually seen fuzzy-picklers in it’s extracted form, only as an “untitled rust parser”
So yeah, fall
could be a replacement for persil
, and for manually written AST/visitors. And lang_rust
, which is implemented with fall
and lives in its directory, could become a replacement for fuzzy-pickers.
A short elevator pitch for fall is that it is (“will be” would be more correct though) a parser/AST generator which is lossless (has comments, whitespace, and smartly attaches them to proper nodes), generates conveniet to use AST and agressively recovers from the errors.
So, you write bnf-like rules like this: https://github.com/matklad/fall/blob/5f505905d2d24a48de29fce75031b9fbb8654e49/lang/fall/src/fall.fall#L88-L112, then describe AST structure for important nodes like this: https://github.com/matklad/fall/blob/5f505905d2d24a48de29fce75031b9fbb8654e49/lang/fall/src/fall.fall#L311-L317 and then do whatever you want with the AST by visiting nodes using either untyped representation with (span, u32_node_type_id)
or a typed representation based on AST node types, like this: https://github.com/matklad/fall/blob/5f505905d2d24a48de29fce75031b9fbb8654e49/lang/fall/src/editor_api/mod.rs#L30-L82.
Not that I advise to use it for anything, but, if you are writing your parser anyways…