1 package java_cup; 2 3 /** This class represents a transition in an LALR viable prefix recognition 4 * machine. Transitions can be under terminals for non-terminals. They are 5 * internally linked together into singly linked lists containing all the 6 * transitions out of a single state via the _next field. 7 * 8 * @see java_cup.lalr_state 9 * @version last updated: 11/25/95 10 * @author Scott Hudson 11 * 12 */ 13 public class lalr_transition { 14 15 /*-----------------------------------------------------------*/ 16 /*--- Constructor(s) ----------------------------------------*/ 17 /*-----------------------------------------------------------*/ 18 19 /** Full constructor. 20 * @param on_sym symbol we are transitioning on. 21 * @param to_st state we transition to. 22 * @param nxt next transition in linked list. 23 */ lalr_transition(symbol on_sym, lalr_state to_st, lalr_transition nxt)24 public lalr_transition(symbol on_sym, lalr_state to_st, lalr_transition nxt) 25 throws internal_error 26 { 27 /* sanity checks */ 28 if (on_sym == null) 29 throw new internal_error("Attempt to create transition on null symbol"); 30 if (to_st == null) 31 throw new internal_error("Attempt to create transition to null state"); 32 33 /* initialize */ 34 _on_symbol = on_sym; 35 _to_state = to_st; 36 _next = nxt; 37 } 38 39 /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/ 40 41 /** Constructor with null next. 42 * @param on_sym symbol we are transitioning on. 43 * @param to_st state we transition to. 44 */ lalr_transition(symbol on_sym, lalr_state to_st)45 public lalr_transition(symbol on_sym, lalr_state to_st) throws internal_error 46 { 47 this(on_sym, to_st, null); 48 } 49 50 /*-----------------------------------------------------------*/ 51 /*--- (Access to) Instance Variables ------------------------*/ 52 /*-----------------------------------------------------------*/ 53 54 /** The symbol we make the transition on. */ 55 protected symbol _on_symbol; 56 57 /** The symbol we make the transition on. */ on_symbol()58 public symbol on_symbol() {return _on_symbol;} 59 60 /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/ 61 62 /** The state we transition to. */ 63 protected lalr_state _to_state; 64 65 /** The state we transition to. */ to_state()66 public lalr_state to_state() {return _to_state;} 67 68 /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/ 69 70 /** Next transition in linked list of transitions out of a state */ 71 protected lalr_transition _next; 72 73 /** Next transition in linked list of transitions out of a state */ next()74 public lalr_transition next() {return _next;} 75 76 /*-----------------------------------------------------------*/ 77 /*--- General Methods ---------------------------------------*/ 78 /*-----------------------------------------------------------*/ 79 80 /** Convert to a string. */ toString()81 public String toString() 82 { 83 String result; 84 85 result = "transition on " + on_symbol().name() + " to state ["; 86 result += _to_state.index(); 87 result += "]"; 88 89 return result; 90 } 91 92 /*-----------------------------------------------------------*/ 93 }; 94