| 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; |
| } |
| |
| /*-----------------------------------------------------------*/ |
| }; |