
java_cup.symbol_part Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of javacup Show documentation
Show all versions of javacup Show documentation
A fork of the Java Cup parser generator with some bug fixes and enhancements. (Forked at version 11b)
The newest version!
package java_cup;
/**
* This class represents a part of a production which is a symbol (terminal
* or non terminal). This simply maintains a reference to the symbol in
* question.
*
* @author Scott Hudson
* @version last updated: 11/25/95
* @see java_cup.production
*/
public class symbol_part extends production_part {
/*-----------------------------------------------------------*/
/*--- Constructor(s) ----------------------------------------*/
/*-----------------------------------------------------------*/
/**
* Full constructor.
*
* @param sym the symbol that this part is made up of.
* @param lab an optional label string for the part.
*/
public symbol_part(symbol sym, String lab) throws internal_error {
super(lab);
if (sym == null)
throw new internal_error(
"Attempt to construct a symbol_part with a null symbol");
_the_symbol = sym;
}
/*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
/**
* Constructor with no label.
*
* @param sym the symbol that this part is made up of.
*/
public symbol_part(symbol sym) throws internal_error {
this(sym, null);
}
/*-----------------------------------------------------------*/
/*--- (Access to) Instance Variables ------------------------*/
/*-----------------------------------------------------------*/
/**
* The symbol that this part is made up of.
*/
protected symbol _the_symbol;
/**
* The symbol that this part is made up of.
*/
public symbol the_symbol() {
return _the_symbol;
}
/*-----------------------------------------------------------*/
/*--- General Methods ---------------------------------------*/
/*-----------------------------------------------------------*/
/**
* Respond that we are not an action part.
*/
public boolean is_action() {
return false;
}
/*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
/**
* Equality comparison.
*/
public boolean equals(symbol_part other) {
return other != null && super.equals(other) &&
the_symbol().equals(other.the_symbol());
}
/*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
/**
* Generic equality comparison.
*/
public boolean equals(Object other) {
if (!(other instanceof symbol_part))
return false;
else
return equals((symbol_part) other);
}
/*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
/**
* Produce a hash code.
*/
public int hashCode() {
return super.hashCode() ^
(the_symbol() == null ? 0 : the_symbol().hashCode());
}
/*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
/**
* Convert to a string.
*/
public String toString() {
if (the_symbol() != null)
return super.toString() + the_symbol();
else
return super.toString() + "$$MISSING-SYMBOL$$";
}
/*-----------------------------------------------------------*/
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy