-// Copyright 2006 all rights reserved; see LICENSE file for BSD-style license
+// Copyright 2006-2007 all rights reserved; see LICENSE file for BSD-style license
package edu.berkeley.sbp;
import edu.berkeley.sbp.util.*;
-import edu.berkeley.sbp.Sequence.Position;
+import edu.berkeley.sbp.Sequence.Pos;
import java.io.*;
import java.util.*;
follow.put(seq, old);
if (eof) followEof.add(seq);
- for(Position p = seq.firstp().last().prev(); p!=null; p = p.prev()) {
+ for(Pos p = seq.firstp().last().prev(); p!=null; p = p.prev()) {
all.add(p.element());
if (p.element() instanceof Union)
for(Sequence s2 : ((Union)p.element())) {
Topology ret = seq.follow==null ? emptyTopology().complement() : seq.follow.getTokenTopology();
if (seen.contains(seq)) return ret;
seen.add(seq);
- for(Position p = seq.firstp(); p!=null && !p.isLast(); p = p.next()) {
+ for(Pos p = seq.firstp(); p!=null && !p.isLast(); p = p.next()) {
if (!(p.element() instanceof Union)) continue;
Topology t = emptyTopology();
for(Sequence s : ((Union)p.element()))
Sequence seq = (Sequence)e;
if (seen.contains(seq)) return emptyTopology();
seen.add(seq);
- for(Position p = seq.firstp(); p!=null && !p.isLast(); p = p.next()) {
+ for(Pos p = seq.firstp(); p!=null && !p.isLast(); p = p.next()) {
ret = ret.union(first(p.element(), seen));
if (!possiblyEpsilon(p.element())) break;
}
else if (e instanceof Sequence) {
ret = true;
Sequence s = (Sequence)e;
- for(Position p = s.firstp(); p!=null && !p.isLast(); p = p.next())
+ for(Pos p = s.firstp(); p!=null && !p.isLast(); p = p.next())
ret &= possiblyEpsilon(p.element(), hm);
}
hm.put(e, ret);
return ret;
}
- public boolean isRightNullable(Position p) {
+ public boolean isRightNullable(Pos p) {
if (p.isLast()) return true;
if (!possiblyEpsilon(p.element())) return false;
return isRightNullable(p.next());
private void gatherNulledSubsequences(Sequence seq, HashSet<Sequence> eq) {
if (eq.contains(seq)) return;
eq.add(seq);
- Position p = seq.firstp();
+ Pos p = seq.firstp();
for(; !p.isLast(); p = p.next()) {
if (!p.isLast() && isRightNullable(p.next()) && p.element() instanceof Union)
for(Sequence s : ((Union)p.element()))
}
}
- // Position Ordinality Comparisons //////////////////////////////////////////////////////////////////////////////
+ // Pos Ordinality Comparisons //////////////////////////////////////////////////////////////////////////////
- public boolean canKill(Position mep, Position himp) {
+ public boolean canKill(Pos mep, Pos himp) {
if (!isRightNullable(mep)) return false;
if (!isRightNullable(himp)) return false;
Sequence me = mep.owner();
return false;
}
- public boolean canNeed(Position mep, Position himp) {
+ public boolean canNeed(Pos mep, Pos himp) {
if (!isRightNullable(mep)) return false;
if (!isRightNullable(himp)) return false;
Sequence me = mep.owner();
return false;
}
- public int comparePositions(Position position, Position rposition) {
+ public int comparePositions(Pos position, Pos rposition) {
int ret = 0;
if (canKill(position, rposition) && canKill(rposition, position)) throw new Error();
if (canKill(position, rposition)) ret = -1;