Lex and yacc [15] are well-known lexer generator and parser generator, respectively. It is difficult to specify all the constructions of a language in BNF-like notation without causing conflicts that these tools do not support [1].
1. Aho, A.V., Lam, M.S., Sethi, R., Ullman, J.D.: Compilers: Principles, Techniques, and Tools, 2nd edn. Addison Wesley, Reading (2006)
15. Levine, J.R., Mason, T., Brown, D.: Lex & yacc, 2nd edn. O’Reilly, Sebastopol (1992)
⇒ ANTLR