GrammarNonTerminalSymbol.java
package progen.kernel.grammar;
import java.io.Serializable;
/**
* Implementación de un símbolo no terminal de una gramática. Proporciona los
* métodos necesarios para especificar y definir tanto el símbolo que representa
* al no terminal como el valor concreto.
*
* @author jirsis
* @since 2.0
*/
public class GrammarNonTerminalSymbol implements GrammarSymbol, Serializable {
private static final long serialVersionUID = 6074031156225323119L;
/** Valor del no terminal. */
private String value;
/** Simbolo que representa al no terminal. */
private String symbol;
/**
* Constructor genérico de la clase que recibe el símbolo y el valor que
* definen al no terminal.
*
* @param symbol
* Símbolo para su representación.
* @param value
* Valor del no terminal
*/
public GrammarNonTerminalSymbol(String symbol, String value) {
this.symbol = symbol;
this.value = value;
}
/**
* Devuelve la representación en forma de String del no terminal.
*
* @return la representación del símbolo no terminal.
*/
public String toString() {
return getSymbol();
}
public int hashCode() {
return symbol.hashCode();
}
/**
* Comprueba que el parámetro proporcionado es de un símbolo igual al actual.
*
* @param other
* Símbolo con el que comparar.
* @return <code>true</code> los dos símbolos se representan de la misma
* forma.
*/
@Override
public boolean equals(Object object){
boolean isEquals = false;
if (object instanceof GrammarNonTerminalSymbol){
isEquals = this.compareTo((GrammarNonTerminalSymbol) object) == 0;
}
return isEquals;
}
@Override
public int compareTo(GrammarSymbol other) {
return symbol.compareTo(other.getSymbol());
}
@Override
public String getSymbol() {
return symbol;
}
public String getValue() {
return value;
}
}