 Due to the syntax tree abstraction, source files of any of the different supported languages can be processed by the same back end.GCC started out using LALR parsers generated with Bison, but gradually switched to hand-written recursive-descent parsers for C++ in 2004, and for C and Objective-C in 2006.Currently all front ends use hand-written recursive-descent parsers.