added #expect and ArrayList hack to parser
authoradam <adam@megacz.com>
Mon, 12 Feb 2007 09:38:44 +0000 (10:38 +0100)
committeradam <adam@megacz.com>
Mon, 12 Feb 2007 09:38:44 +0000 (10:38 +0100)
src/edu/berkeley/fleet/assembler/Parser.java
src/edu/berkeley/fleet/assembler/fleet.g

index e8b7f37..f39f869 100644 (file)
@@ -14,9 +14,10 @@ import java.io.*;
 /**
  *  @author Adam Megacz <megacz@cs.berkeley.edu>
  */
-class Parser {
+public class Parser {
 
     Parser(Fleet fleet) {
+        expect = new ArrayList<Long>();
         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<String>)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<Long> expect;
+
 }
index cb8f76d..d3da6b9 100644 (file)
@@ -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