X-Git-Url: http://git.megacz.com/?p=sbp.git;a=blobdiff_plain;f=src%2Fedu%2Fberkeley%2Fsbp%2FParser.java;h=1a0d307dedd8236d536f05303e07ed4c1ae4bdcc;hp=fac14b0e78e251ff76b6f12254eb9b17cae4fce4;hb=08aa6cdd07a882fdedf7a6d5c7bd0d754460965b;hpb=03dd839af8e8d1a6c2f69c5410da6d19fbbe3931 diff --git a/src/edu/berkeley/sbp/Parser.java b/src/edu/berkeley/sbp/Parser.java index fac14b0..1a0d307 100644 --- a/src/edu/berkeley/sbp/Parser.java +++ b/src/edu/berkeley/sbp/Parser.java @@ -36,16 +36,18 @@ public abstract class Parser { public Forest parse(Token.Stream input) throws IOException, Failed { GSS gss = new GSS(); Token.Location loc = input.getLocation(); - GSS.Phase current = gss.new Phase(null, input.next(), loc); + GSS.Phase current = gss.new Phase(null, input.next(1), loc); current.newNode(null, null, pt.start, true); + int count = 1; for(;;) { loc = input.getLocation(); - GSS.Phase next = gss.new Phase(current, input.next(), loc); + GSS.Phase next = gss.new Phase(current, input.next(count), loc); current.reduce(); Forest forest = current.token==null ? null : shiftedToken((T)current.token, loc); current.shift(next, forest); - if (current.isDone()) return (Forest)current.finalResult; + count = next.hash.size(); current.checkFailure(); + if (current.isDone()) return (Forest)current.finalResult; current = next; } }