X-Git-Url: http://git.megacz.com/?p=sbp.git;a=blobdiff_plain;f=src%2Fedu%2Fberkeley%2Fsbp%2FParser.java;h=74d7101c3d326ee8185c5a6a29e732767ebb684c;hp=e884a4bc768af4ab14ed5314a104c69e302a7693;hb=8a5250c184672495fae152e096b2e800749cd0db;hpb=2c1c0293545f3d12c23220fd05c663e6aa3f3de1 diff --git a/src/edu/berkeley/sbp/Parser.java b/src/edu/berkeley/sbp/Parser.java index e884a4b..74d7101 100644 --- a/src/edu/berkeley/sbp/Parser.java +++ b/src/edu/berkeley/sbp/Parser.java @@ -25,15 +25,17 @@ public abstract class Parser { public Forest parse(Input input) throws IOException, ParseFailed { GSS gss = new GSS(); Input.Location loc = input.getLocation(); - GSS.Phase current = gss.new Phase(null, this, null, input.next(), loc, null); - current.newNode(null, Forest.create(null, null, null, false), pt.start, true); + Token tok = input.next(); + GSS.Phase current = gss.new Phase(null, this, null, tok, loc, input.getLocation(), null); + current.newNode(null, Forest.create(loc.createRegion(loc), null, null, false), pt.start, true); int count = 1; for(int idx=0;;idx++) { Input.Location oldloc = loc; - loc = input.getLocation(); current.reduce(); Forest forest = current.token==null ? null : shiftToken((Token)current.token, loc); - GSS.Phase next = gss.new Phase(current, this, current, input.next(), loc, forest); + loc = input.getLocation(); + Token nextToken = input.next(); + GSS.Phase next = gss.new Phase(current, this, current, nextToken, loc, input.getLocation(), forest); if (!helpgc) { FileOutputStream fos = new FileOutputStream("out-"+idx+".dot"); PrintWriter p = new PrintWriter(new OutputStreamWriter(fos));