Superb article on the history of parsers, what approaches are used in industry (mostly hand-written recursive descent!) and the expressiveness of parser combinators and PEG.
https://jeffreykegler.github.io/personal/timeline_v3
Related Posts
I've written difftastic packaging instructions: https://difftastic.wilfred.me.uk/packaging_difftastic.html
The different distros have taken different approaches, so I'm trying to help with common gotchas — don't forget the man page!
Feedback welcome, especially if you've ever packaged something 🙂
Counter-intuitively, if you're writing a parser for a programming language, you need it to be a total function. As soon as you build IDE tooling, you need ASTs from invalid or incomplete input.
The parser should return (Ast, List<Error>) rather than Result<Ast, Error>.
I'm experimenting with Atuin for searching my terminal history: https://atuin.sh/
Previously I'd just used fzf to find items, which does work nicely. Occasionally I *really* want to search "commands which were run in this directory" though, which Atuin offers.