X-Git-Url: http://git.megacz.com/?p=sbp.git;a=blobdiff_plain;f=src%2Fedu%2Fberkeley%2Fsbp%2FSequence.java;h=84a2dc6768d6edeab19b06432bb580fc4c634eee;hp=5680d6c5f17ca3cb51eb40af4e03c4177adddf2c;hb=8a5250c184672495fae152e096b2e800749cd0db;hpb=2cca97362e80d5a3cd3e02d791a10cd7c6f6b29c diff --git a/src/edu/berkeley/sbp/Sequence.java b/src/edu/berkeley/sbp/Sequence.java index 5680d6c..84a2dc6 100644 --- a/src/edu/berkeley/sbp/Sequence.java +++ b/src/edu/berkeley/sbp/Sequence.java @@ -84,10 +84,10 @@ public abstract class Sequence implements Iterable, SequenceOrElement { // DO NOT MESS WITH THE FOLLOWING LINE!!! private Forest.Many epsilonForm = null; - Forest epsilonForm() { + Forest epsilonForm(Input.Region loc) { if (epsilonForm!=null) return epsilonForm; epsilonForm = new Forest.Many(); - epsilonForm.merge(firstp().rewrite(null, false)); + epsilonForm.merge(firstp().rewrite(loc, false)); return epsilonForm; } @@ -100,10 +100,10 @@ public abstract class Sequence implements Iterable, SequenceOrElement { class Position implements IntegerMappable { private Forest zero = null; - public Forest zero() { + public Forest zero(Input.Region reg) { if (zero != null) return zero; if (pos > 0) throw new Error(); - return zero = rewrite(null); + return zero = rewrite(reg); } @@ -135,10 +135,10 @@ public abstract class Sequence implements Iterable, SequenceOrElement { final Forest rewrite(Input.Region loc) { return rewrite(loc, true); } private final Forest rewrite(Input.Region loc, boolean epsilonCheck) { - if (epsilonCheck && this==firstp()) return epsilonForm(); + if (epsilonCheck && this==firstp()) return epsilonForm(loc); for(int i=0; i ret = Sequence.this.postReduce(loc, holder, this);