package mstparser;
public class ParseForestItem {
public int s, r, t, dir, comp, length, type;
public double prob;
public FeatureVector fv;
public ParseForestItem left, right;
// productions
public ParseForestItem(int i, int k, int j, int type,
int dir, int comp,
double prob, FeatureVector fv,
ParseForestItem left, ParseForestItem right) {
this.s = i;
this.r = k;
this.t = j;
this.dir = dir;
this.comp = comp;
this.type = type;
length = 6;
this.prob = prob;
this.fv = fv;
this.left = left;
this.right = right;
}
// preproductions
public ParseForestItem(int s, int type, int dir, double prob, FeatureVector fv) {
this.s = s;
this.dir = dir;
this.type = type;
length = 2;
this.prob = prob;
this.fv = fv;
left = null;
right = null;
}
public ParseForestItem() {
}
public void copyValues(ParseForestItem p) {
p.s = s;
p.r = r;
p.t = t;
p.dir = dir;
p.comp = comp;
p.prob = prob;
p.fv = fv;
p.length = length;
p.left = left;
p.right = right;
p.type = type;
}
// way forest works, only have to check rule and indeces
// for equality.
public boolean equals(ParseForestItem p) {
return s == p.s && t == p.t && r == p.r
&& dir == p.dir && comp == p.comp
&& type == p.type;
}
public boolean isPre() {
return length == 2;
}
}