They are used to build a number of tools you probably rely on or use regularly, including ruby, golang, bash, MySQL and postgresql.
https://github.com/golang/gofrontend/blob/master/go/parse.cc https://github.com/golang/gofrontend/blob/master/go/lex.cc
I can't think of a single major tool that uses ANTLR or bison. I say that being a huge ANTLR fan. Parser/lexer generators are really easy to use for DSLs but for real languages and tools, they're too heavyweight and constraining.
suite: stmt ';' stmt {/* ok */}
| one_line_stmt NEWLINE stmt {raise("you need a ';' there buddy");}
| // other rules
;
obviously this won't be useful for every case in general, otherwise why use ';' at all, but in most cases it'll give a helpful error.Some more powerful parsers like Earley Algorithm have much worse error reporting.
It's still handwritten though so your point stands.
Haskell and OCaml are examples of real languages that use parser generators.
GHC: https://github.com/ghc/ghc/blob/master/compiler/parser/Parse...
Ocaml: https://github.com/ocaml/ocaml/blob/trunk/parsing/parser.mly