In his article "Practical Parsing for ANSI C," Daniele Paolo Scarpazza tackles some of the reasons why building a C parser front-end can be surprisingly tricky. Many of the problems center around misconceptions, such as the common belief that lexical analysis is largely regular-expression matching. Sometimes that can be true, and if so, the job can be easy. But often, it's more complicated.