In ambiguous grammars, there are often multiple paths that lead to a specific deriviation, and there are also a many paths which lead to dead ends. Thus, choosing from the alternate paths available at any given point in the derivation could lead to conflicts, such as determining whether or not to shift when it is possible to reduce, or determining which way to reduce if more than one way presents itself. Yacc always follows a set of guidelines when presented with conflicts. If given a choice between shifting or reducing, Yacc chooses to shift. Or, if there are two ways to reduce, choose the means of reduction specified by the earlier grammar rule.
Further tools are precidence and associativity.
When Yacc processes an input, it could either shift or reduce as it moves along in the parse. Particular guidelines specify the course to take in the face of a conflict. Further, for every invocation of a grammar rule, Yacc allows for a particular action to be performed through C functions.