--- /dev/null
+package java_cup;
+
+/** This class represents a transition in an LALR viable prefix recognition
+ * machine. Transitions can be under terminals for non-terminals. They are
+ * internally linked together into singly linked lists containing all the
+ * transitions out of a single state via the _next field.
+ *
+ * @see java_cup.lalr_state
+ * @version last updated: 11/25/95
+ * @author Scott Hudson
+ *
+ */
+public class lalr_transition {
+
+ /*-----------------------------------------------------------*/
+ /*--- Constructor(s) ----------------------------------------*/
+ /*-----------------------------------------------------------*/
+
+ /** Full constructor.
+ * @param on_sym symbol we are transitioning on.
+ * @param to_st state we transition to.
+ * @param nxt next transition in linked list.
+ */
+ public lalr_transition(symbol on_sym, lalr_state to_st, lalr_transition nxt)
+ throws internal_error
+ {
+ /* sanity checks */
+ if (on_sym == null)
+ throw new internal_error("Attempt to create transition on null symbol");
+ if (to_st == null)
+ throw new internal_error("Attempt to create transition to null state");
+
+ /* initialize */
+ _on_symbol = on_sym;
+ _to_state = to_st;
+ _next = nxt;
+ }
+
+ /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+ /** Constructor with null next.
+ * @param on_sym symbol we are transitioning on.
+ * @param to_st state we transition to.
+ */
+ public lalr_transition(symbol on_sym, lalr_state to_st) throws internal_error
+ {
+ this(on_sym, to_st, null);
+ }
+
+ /*-----------------------------------------------------------*/
+ /*--- (Access to) Instance Variables ------------------------*/
+ /*-----------------------------------------------------------*/
+
+ /** The symbol we make the transition on. */
+ protected symbol _on_symbol;
+
+ /** The symbol we make the transition on. */
+ public symbol on_symbol() {return _on_symbol;}
+
+ /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+ /** The state we transition to. */
+ protected lalr_state _to_state;
+
+ /** The state we transition to. */
+ public lalr_state to_state() {return _to_state;}
+
+ /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+ /** Next transition in linked list of transitions out of a state */
+ protected lalr_transition _next;
+
+ /** Next transition in linked list of transitions out of a state */
+ public lalr_transition next() {return _next;}
+
+ /*-----------------------------------------------------------*/
+ /*--- General Methods ---------------------------------------*/
+ /*-----------------------------------------------------------*/
+
+ /** Convert to a string. */
+ public String toString()
+ {
+ String result;
+
+ result = "transition on " + on_symbol().name() + " to state [";
+ result += _to_state.index();
+ result += "]";
+
+ return result;
+ }
+
+ /*-----------------------------------------------------------*/
+}