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