Recursive-descent which is LL is very common for parsing because of its simplicity; LR is theoretically more powerful, but in practice there doesn't seem to have been any great need for it. GCC, Clang/LLVM, MSVC, javac, csc (the C# one), and a whole bunch of other compilers use RD (often with some sort of precedence-climbing, which is essentially a refactoring of RD). GCC was originally using a generated LR parser (Bison) but moved to RD a long time ago.