01: package java_cup;
02:
03: /** This class represents a shift action within the parse table.
04: * The action simply stores the state that it shifts to and responds
05: * to queries about its type.
06: *
07: * @version last updated: 11/25/95
08: * @author Scott Hudson
09: */
10: public class shift_action extends parse_action {
11:
12: /*-----------------------------------------------------------*/
13: /*--- Constructor(s) ----------------------------------------*/
14: /*-----------------------------------------------------------*/
15:
16: /** Simple constructor.
17: * @param shft_to the state that this action shifts to.
18: */
19: public shift_action(lalr_state shft_to) throws internal_error {
20: /* sanity check */
21: if (shft_to == null)
22: throw new internal_error(
23: "Attempt to create a shift_action to a null state");
24:
25: _shift_to = shft_to;
26: }
27:
28: /*-----------------------------------------------------------*/
29: /*--- (Access to) Instance Variables ------------------------*/
30: /*-----------------------------------------------------------*/
31:
32: /** The state we shift to. */
33: protected lalr_state _shift_to;
34:
35: /** The state we shift to. */
36: public lalr_state shift_to() {
37: return _shift_to;
38: }
39:
40: /*-----------------------------------------------------------*/
41: /*--- General Methods ---------------------------------------*/
42: /*-----------------------------------------------------------*/
43:
44: /** Quick access to type of action. */
45: public int kind() {
46: return SHIFT;
47: }
48:
49: /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
50:
51: /** Equality test. */
52: public boolean equals(shift_action other) {
53: return other != null && other.shift_to() == shift_to();
54: }
55:
56: /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
57:
58: /** Generic equality test. */
59: public boolean equals(Object other) {
60: if (other instanceof shift_action)
61: return equals((shift_action) other);
62: else
63: return false;
64: }
65:
66: /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
67:
68: /** Compute a hash code. */
69: public int hashCode() {
70: /* use the hash code of the state we are shifting to */
71: return shift_to().hashCode();
72: }
73:
74: /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
75:
76: /** Convert to a string. */
77: public String toString() {
78: return "SHIFT(to state " + shift_to().index() + ")";
79: }
80:
81: /*-----------------------------------------------------------*/
82:
83: }
|