X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=src%2Fedu%2Fberkeley%2Fsbp%2FSequence.java;h=95353572a770f88b3952a65f43ba63cbbf2e6432;hb=62be1c1ae2ac13086b508e34eeffdb7e536d5b61;hp=5680d6c5f17ca3cb51eb40af4e03c4177adddf2c;hpb=2c1c0293545f3d12c23220fd05c663e6aa3f3de1;p=sbp.git diff --git a/src/edu/berkeley/sbp/Sequence.java b/src/edu/berkeley/sbp/Sequence.java index 5680d6c..9535357 100644 --- a/src/edu/berkeley/sbp/Sequence.java +++ b/src/edu/berkeley/sbp/Sequence.java @@ -1,3 +1,5 @@ +// Copyright 2006 all rights reserved; see LICENSE file for BSD-style license + package edu.berkeley.sbp; import edu.berkeley.sbp.util.*; import edu.berkeley.sbp.*; @@ -84,10 +86,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 +102,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 +137,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);