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