package java_cup; /** * This class represents a reduce action within the parse table. The action * simply stores the production that it reduces with and responds to queries * about its type. * * @version last updated: 11/25/95 * @author Scott Hudson */ @SuppressWarnings ( { "all" } ) public class reduce_action extends parse_action { /*-----------------------------------------------------------*/ /*--- Constructor(s) ----------------------------------------*/ /*-----------------------------------------------------------*/ /** * Simple constructor. * * @param prod the production this action reduces with. */ public reduce_action ( production prod ) throws internal_error { /* sanity check */ if ( prod == null ) throw new internal_error ( "Attempt to create a reduce_action with a null production" ); _reduce_with = prod; } /*-----------------------------------------------------------*/ /*--- (Access to) Instance Variables ------------------------*/ /*-----------------------------------------------------------*/ /** The production we reduce with. */ protected production _reduce_with; /** The production we reduce with. */ public production reduce_with () { return _reduce_with; } /*-----------------------------------------------------------*/ /*--- General Methods ---------------------------------------*/ /*-----------------------------------------------------------*/ /** Quick access to type of action. */ public int kind () { return REDUCE; } /* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . */ /** Equality test. */ public boolean equals ( reduce_action other ) { return other != null && other.reduce_with () == reduce_with (); } /* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . */ /** Generic equality test. */ public boolean equals ( Object other ) { if ( other instanceof reduce_action ) return equals ( ( reduce_action ) other ); else return false; } /* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . */ /** Compute a hash code. */ public int hashCode () { /* use the hash code of the production we are reducing with */ return reduce_with ().hashCode (); } /** Convert to string. */ public String toString () { return "REDUCE(with prod " + reduce_with ().index () + ")"; } /*-----------------------------------------------------------*/ }