update with ZOMA and new memread/memwrite
[fleet.git] / src / edu / berkeley / fleet / FleetParser.java
1 package edu.berkeley.fleet;
2
3 import edu.berkeley.sbp.*;
4 import edu.berkeley.sbp.chr.*;
5 import edu.berkeley.sbp.misc.*;
6 import edu.berkeley.sbp.meta.*;
7 import edu.berkeley.sbp.bind.*;
8 import edu.berkeley.sbp.util.*;
9 import java.util.*;
10 import java.io.*;
11
12 public class FleetParser {
13
14     public static void main(String[] s) throws Exception {
15         go(new InputStreamReader(System.in));
16     }
17
18     public static void go(Reader r) throws Exception {
19         InputStream grammarStream =
20             FleetParser.class.getClassLoader().getResourceAsStream("fleet.g");
21
22         Parser metaGrammarParser   = new CharParser(MetaGrammar.newInstance());
23         Tree<String> parsedGrammar = metaGrammarParser.parse(new CharInput(grammarStream)).expand1();
24         Grammar.Bindings gbr       = new AnnotationGrammarBindings(Program.class);
25         Union   mathGrammar        = Grammar.create(parsedGrammar, "s", gbr);
26         Parser  mathParser         = new CharParser(mathGrammar);
27
28         Log.println("about to parse: tests/test.fleet");
29         Tree tree = mathParser.parse(new CharInput(r)).expand1();
30
31         // below is ugly voodoo which will go away very soon.  ignore it.
32         TreeFunctor tf = (TreeFunctor)tree.head();
33         Program program = (Program)tf.invoke(tree);
34         // above is ugly voodoo which will go away very soon.  ignore it.
35
36         Log.println();
37         Log.println("dispatching root codebag:");
38         Log.println(program.root);
39
40         Fleet fleet = new Fleet();
41         program.configure(fleet);
42
43         Log.println("memory before execution:");
44         fleet.dumpMem();
45
46         Log.println();
47         Log.println("enabling execution...");
48         fleet.go();
49         Log.println("execution halted.");
50
51         Log.println();
52         Log.println("memory after execution:");
53         Log.print("  ");
54         fleet.dumpMem();
55     }
56
57
58 }