separated interpreter from assembler
[fleet.git] / src / edu / berkeley / fleet / interpreter / Main.java
1 package edu.berkeley.fleet.interpreter;
2 import edu.berkeley.fleet.api.*;
3
4 import java.util.*;
5 import java.io.*;
6 import edu.berkeley.fleet.api.Instruction;
7 import edu.berkeley.fleet.api.BenkoBox;
8 import edu.berkeley.fleet.*;
9 import edu.berkeley.fleet.interpreter.*;
10
11 public class Main {
12     static boolean debugMemory = true;
13     static boolean dump_fabric = false;
14     static boolean dump_code = false;
15
16     public static void main(String[] s) throws Exception {
17         for(int i=0; i<s.length; i++) {
18             if (s[i].startsWith("--color=")) {
19                 String val = s[i].substring(s[i].indexOf('=')+1);
20                 if (val.equals("on")) {
21                     Log.ansi_color = true;
22                     continue;
23                 } else if (val.equals("off")) {
24                     Log.ansi_color = false;
25                     continue;
26                 }
27             } else if (s[i].startsWith("--dump-fabric")) {
28                 dump_fabric = true;
29                 continue;
30             } else if (s[i].startsWith("--dump-code")) {
31                 dump_code = true;
32                 continue;
33
34             } else if (s[i].startsWith("--memory=")) {
35                 String val = s[i].substring(s[i].indexOf('=')+1);
36                 if (val.equals("hide")) {
37                     debugMemory = false;
38                     continue;
39                 } else if (val.equals("show")) {
40                     debugMemory = true;
41                     continue;
42                 }
43             }
44             System.out.println("Fleeterpreter usage:");
45             System.out.println("");
46             System.out.println("  --dump-fabric");
47             System.out.println("  --dump-code");
48             System.out.println("  --color={on|off}");
49             System.out.println("  --inboxes={configured|unconfigured}");
50             System.out.println("  --memory={hide|show}");
51             System.exit(-1);
52         }
53         new Main().go(new InputStreamReader(System.in));
54     }
55
56     public void go(Reader r) throws Exception {
57         Interpreter fleet = new Interpreter();
58         ByteArrayOutputStream baos = new ByteArrayOutputStream();
59         ArrayList<Instruction> arr = new ArrayList<Instruction>();
60         edu.berkeley.fleet.assembler.Main.assemble(fleet, r, arr);
61         fleet.instructions = (Instruction[])arr.toArray(new Instruction[0]);
62
63         if (dump_fabric) {
64             fleet.dumpFabric(false);
65
66         } else if (dump_code) {
67             fleet.dumpCode();
68
69         } else {
70             if (debugMemory) { fleet.dumpMem(); }
71             fleet.go();
72             if (debugMemory) { fleet.dumpMem(); }
73         }
74     }
75
76 }