this.result = result;
this.phase = target;
this.node = node;
+ target.reductionQueue.add(this);
}
public void perform() {
node.finish(position, result, phase);
}
- public String toString() { return position+""; }
-
public int compareTo(Reduction r) {
int ret = compareTo0(r);
if (ret == 0) {
return -1 * ret;
}
- private boolean isRightNullable(Walk.Cache c, Position p) {
+ private static boolean isRightNullable(Walk.Cache c, Position p) {
if (p.isLast()) return true;
if (!c.possiblyEpsilon(p.element())) return false;
return isRightNullable(c, p.next());
}
- public boolean canKill(Walk.Cache cache, Position mep, Position himp) {
+ public static boolean canKill(Walk.Cache cache, Position mep, Position himp) {
if (!isRightNullable(cache, mep)) return false;
if (!isRightNullable(cache, himp)) return false;
Sequence me = mep.owner();
public int pos() { return targetPhase()==null ? 0 : targetPhase().pos; }
public GSS.Phase targetPhase() { return node.phase(); }
- public boolean canNeed(Walk.Cache cache, Position mep, Position himp) {
+ public static boolean canNeed(Walk.Cache cache, Position mep, Position himp) {
if (!isRightNullable(cache, mep)) return false;
if (!isRightNullable(cache, himp)) return false;
Sequence me = mep.owner();