LR parsers are shift-reduce parsers that can parse a wide range of grammars. LR parsing is attractive because it is the most general non-backtracking shift-reduce parsing method while still being efficient. The class of grammars that can be parsed by LR methods is a superset of those that can be parsed by LL(1) parsers. LR parsers can detect syntactic errors as soon as possible during a left-to-right scan of the input. The LR parsing algorithm uses action and goto tables constructed from LR(0) items to perform shift and reduce operations.