package edu.berkeley.nlp.syntax;
import java.io.Serializable;
/**
* A labeled span (start and end pair) representing a constituent tree node.
*
* @author Dan Klein
*/
public class Constituent<L> implements Serializable{
private static final long serialVersionUID = 1L;
L label;
int start;
int end;
public L getLabel() {
return label;
}
public int getStart() {
return start;
}
public int getEnd() {
return end;
}
public int getLength() {
return end-start+1;
}
public String toString() {
return "<"+label+" : "+start+", "+end+">";
}
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof Constituent)) return false;
final Constituent constituent = (Constituent) o;
if (end != constituent.end) return false;
if (start != constituent.start) return false;
if (label != null ? !label.equals(constituent.label) : constituent.label != null) return false;
return true;
}
public int hashCode() {
int result;
result = (label != null ? label.hashCode() : 0);
result = 29 * result + start;
result = 29 * result + end;
return result;
}
public Constituent(L label, int start, int end) {
this.label = label;
this.start = start;
this.end = end;
}
}