Alternatively use lemon (like bison but much easier to hack on) and re2c (or equivalent). LALR parsing turns out to be magic - in exchange for an unambiguous grammar you get linear time parsing to a tree.
Very easy to use. Build a parse tree from it, deal with the ambiguous nonsense of your language in a translation to AST.
Those are the main compiler frameworks used by all the major platform providers (Microsoft, Google, Apple, Facebook, IBM...) and support dozens of languages...
Yeah but only because Rust (and arguably Zig) didn't exist when those compilers and operating systems were written.
C++ is the industry standard for existing software but it would be dubious at best to start a new project in C++. Especially something that has essentially no dependencies like a compiler. GUIs and games, sure.
Believing that all new software should be written in Rust rather than C++, and that this situation is inevitable anyway, is one of the core tenets of this church.
Obviously you shouldn't start any project in any language because you have no idea what you're talking about. Spitting myths and folklore stripped of context is not what engineers do.
It's a bit difficult to use because it makes extensive use of templates.