So if I needed to parse data in C [1], why did I not use lex [2]? It's pretty much standard on all Unix systems, right? Yes, but all it does is lexical analysis. The job of parsing requires the use of yacc (yet another compiler-compiler) [3]. So why didn't I use yacc (yet another compiler-compiler)? Beacuse it doesn't do lexical analysis. If I use lex, I also need to use yacc. Why use two tools when one [4] will suffice? They are also both a pain to use, so it's not like I immediately think to use them (that, and the last time I used lex in anger was over twenty years ago …)
[2] https://en.wikipedia.org/wiki/Lex_(software)
[3] https://en.wikipedia.org/wiki/Yacc