LR parsing is a powerful shift-reduce parsing technique that is both efficient and handles a wide range of grammars. LR parsers work by maintaining a stack and scanning input from left to right. They determine the next action to take by consulting parsing tables generated from the grammar. LR parsing avoids backtracking and can detect syntactic errors as early as possible. The most general form of LR parsing is LR(k) which uses k tokens of lookahead, while practical parsers often use LR(1) or variants like LALR(1) which have smaller and more efficiently constructed tables.