Google has open sourced their NLP parser: https://research.googleblog.com/2016/05/announcing-syntaxnet-worlds-most.html (includes some great examples of sentences that are hard for machines)
Related Posts
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 have a bunch of open tasks on my GH repos, so I tried asking ChatGPT and Claude to write a card-based web UI that showed some random open issues.
ChatGPT gave me something that worked, but the Claude mock-ups look better (and render inline!).
Some delightful examples of good compiler error messages in the latest Gleam release: https://gleam.run/news/context-aware-compilation/