I spent a while implementing resilient parsing this weekend, and I am kind of thinking that this isn't quite what I want.
Instead, I want a resilient *grammar*. What I mean by this is, a resilient grammar is designed with the temporal process of typing out the code in mind, to minimise the number of *errors* that may occur whilst the code is only partly written. In particular, there are many places where we *know* that we need to have a certain keyword, or an identifier, or a block, and instead of emitting an error or a diagnostic in those places, we should just allow them to be empty.
Then, the magic part is when we also instrument the concrete syntax trees with inlay hints that indicate to the user what they would have been supposed to type there. These aren't errors, they are hints.
I am sick and tired of "live errors" (live nitpicking) whilst writing my code. What I want is "live reminders of the syntax".