I just learned the theory behind LL(1) parsers and subsequently I learned that this parsing technique is only suitable for a subset of context-free-grammar. LL(1) is predictive and doesn't do any backtracking. I don't know if the real-world needs backtracking capabilities. Does the real-world need backtracking capabilities? LL(1) seems like a fair introduction to parsing, but like nothing anyone would use to "get a job done". Example? You have to left-factor your grammar and then LL(1) isn't even suited to parse a formatting language like the one wikipedia uses, where some rules use multiple reduplication as for instance headings. (correct me if I'm wrong!)
But what parsing-technique is used in the real world if you want to get things done?
Probably the answer involves some kind of compromise. Speed is not so much an issue as of yet.
With "real world" abilities I mean that the parser will parse the whole set of context-free-grammars, if possible without any special-snowflake treatment like left-factoring. I further think of fictitious situations where I should somehow wind up writing back-end stuff for a game project, if the task then would haphazardly be to give a scripting-language to the designers, what parser would meet the requirements without on the other hand being too... "esoteric…" and "complex" - or for short: being an overkill.
I hope that suffices to give you an idea what I mean.
Thank you very much!