From: adam Date: Mon, 12 Feb 2007 09:38:44 +0000 (+0100) Subject: added #expect and ArrayList hack to parser X-Git-Url: http://git.megacz.com/?a=commitdiff_plain;h=b88720b028db5b7aa5d7f68a4a82247dd0a6270f;p=fleet.git added #expect and ArrayList hack to parser --- diff --git a/src/edu/berkeley/fleet/assembler/Parser.java b/src/edu/berkeley/fleet/assembler/Parser.java index e8b7f37..f39f869 100644 --- a/src/edu/berkeley/fleet/assembler/Parser.java +++ b/src/edu/berkeley/fleet/assembler/Parser.java @@ -14,9 +14,10 @@ import java.io.*; /** * @author Adam Megacz */ -class Parser { +public class Parser { Parser(Fleet fleet) { + expect = new ArrayList(); this.fleet = fleet; } @@ -55,7 +56,7 @@ class Parser { CodeBag rootCodeBag = new CodeBag(); baseCodeBag.add(new Instruction.Literal.CodeBagDescriptor(null, rootCodeBag.getFakeAddress(), 1)); walk((Tree)parse(r), rootCodeBag); - if (fleet instanceof edu.berkeley.fleet.interpreter.Interpreter) + if (fleet instanceof edu.berkeley.fleet.slipway.Slipway) ((edu.berkeley.fleet.slipway.Slipway)fleet).dumpFabric(true); // map from arbitrary identifiers to actual addresses @@ -133,6 +134,9 @@ class Parser { throw new RuntimeException(e); } + } else if (head.equals("Expect")) { + expect.add(Long.parseLong(string(t.child(0)))); + } else if (head.equals("Memory")) { if (((edu.berkeley.fleet.interpreter.Interpreter)fleet).mem.length != 0) throw new RuntimeException("multiple memory directives found"); @@ -273,4 +277,7 @@ class Parser { public boolean equals(Object o) { return this==o; } } + // hideous hack + public static ArrayList expect; + } diff --git a/src/edu/berkeley/fleet/assembler/fleet.g b/src/edu/berkeley/fleet/assembler/fleet.g index cb8f76d..d3da6b9 100644 --- a/src/edu/berkeley/fleet/assembler/fleet.g +++ b/src/edu/berkeley/fleet/assembler/fleet.g @@ -55,4 +55,5 @@ Directive = Memory:: "#memory" "{" (int +/ (ws! "," ws!)) "}" /ws | Import:: "#import" [A-Za-z_.]++ /ws | Include:: "#include" ("\"" (~[\"])+ "\"") /ws | Ship:: "#ship" shipname ":" [0-9A-Za-z_.]++ /ws + | Expect:: "#expect" int /ws