Bottom-up parsing constructs a parse tree for an input string beginning at the leaves and working up to the root. It involves two main actions: shift, which pushes the current input symbol onto a stack, and reduce, which replaces symbols on the top of the stack with a non-terminal symbol according to a production rule. A shift-reduce parser tries to reduce the input string to the start symbol through a sequence of reductions that trace the reverse of the rightmost derivation. It determines which substring to reduce at each step based on the concept of a "handle", which is a substring that matches a production rule.