{
if (!(act instanceof Reduce))
throw new IllegalArgumentException("shift-reduce expected, \"" + act + "\" found");
Reduce reduce_act = (Reduce) act;
Terminal reduce_prec_sym = reduce_act.rule.prec_sym;
if (this.lookahead instanceof NonTerminal)
{
act.type = new Type.Conflict.ShiftReduce(this, reduce_act, act_state, lookahead.name + " is a non-terminal");
return false;
}
Terminal shift_prec_sym = (Terminal) this.lookahead;
if (shift_prec_sym.prec > reduce_prec_sym.prec)
{
if (reduce_prec_sym.prec < 0)
{