java_cup-0.11a.src.java_cup.lalr_transition Maven / Gradle / Ivy
Go to download
CUP is a system for generating LALR parsers from simple specifications. It serves the same role as
the widely used program YACC [1] and in fact offers most of the features of YACC. However, CUP is
written in Java, uses specifications including embedded Java code, and produces parsers which are
implemented in Java.
The newest version!
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;
}
/*-----------------------------------------------------------*/
}