X-Git-Url: http://git.megacz.com/?p=sbp.git;a=blobdiff_plain;f=src%2Fedu%2Fberkeley%2Fsbp%2FSequence.java;h=d0c3dfd7c63345f4028abcd7a555b3d5199b913c;hp=430f29813c37952956b6cf0762f4a4c03219840f;hb=bbb16d2522ed587238fd7a69e346d5e5e8f2551a;hpb=260e46cff8995fb5a01e94c1a707d0ffff0a5382 diff --git a/src/edu/berkeley/sbp/Sequence.java b/src/edu/berkeley/sbp/Sequence.java index 430f298..d0c3dfd 100644 --- a/src/edu/berkeley/sbp/Sequence.java +++ b/src/edu/berkeley/sbp/Sequence.java @@ -10,9 +10,9 @@ import java.lang.reflect.*; import java.lang.ref.*; /** juxtaposition; zero or more adjacent Elements; can specify a rewriting */ -public abstract class Sequence implements Iterable, SequenceOrElement { +public abstract class Sequence implements Iterable, SequenceOrElement, Serializable { - protected final Element[] elements; + protected transient final Element[] elements; boolean needed_or_hated = false; boolean in_a_union = false; @@ -26,7 +26,7 @@ public abstract class Sequence implements Iterable, SequenceOrElement { final Position firstp; - Atom follow = null; + transient Atom follow = null; private static int global_sernum = 0; private int sernum = global_sernum++; @@ -137,7 +137,7 @@ public abstract class Sequence implements Iterable, SequenceOrElement { static abstract class Pos implements IntegerMappable, Comparable, Serializable { public int ord = -1; - private transient Sequence owner; + private Sequence owner; public int ord() { return ord; } @@ -223,8 +223,12 @@ public abstract class Sequence implements Iterable, SequenceOrElement { public final Forest rewrite(Input.Region loc) { if (isFirst()) return owner().epsilonForm(loc); for(int i=0; i, SequenceOrElement { public Forest postReduce(Input.Region loc, Forest[] args, Position p) { return args[idx]; } Sequence _clone() { return new Singleton(elements,idx); } Forest epsilonForm(Input.Region loc) { + if (elements==null) return new Forest.Many(); /* FIXME */ return ((Union)elements[idx]).epsilonForm(loc); } }