Disambiguating Rules for Yacc (*required only when there exists a conflict): 1. In a shift/reduce conflict the default is to shift. 2. In a reduce/reduce conflict the default is to reduce by the earlier grammar rule in the input sequence. 3. Precedence and associativity (left, right, unassoc) are recorded for each token that have them. 4. Precedence and associativity of a production rule is that (if any) of its final (rightmost) token unless a "% prec" overrides. Then it is the token given following % prec. 5. In a shift/reduce conflict where both the grammar rule and the input (lookahead) have precedence, resolve in favor of the rule of higher precedence. In a tie, use associativity. That is, left assoc. ⇒ reduce; right assoc. ⇒ shift; unassoc ⇒ error. 6. Otherwise use 1 and 2.