This document describes shift-reduce parsing. Shift-reduce parsing is a bottom-up parsing approach where the input string is collapsed by reducing parts of the string according to production rules until the start symbol is reached, as opposed to top-down parsing which expands symbols. It uses two main data structures: an input buffer and a stack. Initially, it puts the input string in the buffer and a start symbol on the stack. It then performs the basic operations of shift, which moves symbols from the buffer to the stack, and reduce, which replaces symbols on the stack according to production rules. It halts when the start symbol remains on the stack and the buffer is empty, indicating successful parsing.