7cd3dee28fdb89a10dba63f59b6117004f1e5bb5
[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
16         InputStream grammarStream =
17             FleetParser.class.getClassLoader().getResourceAsStream("fleet.g");
18
19         Parser metaGrammarParser   = new CharParser(MetaGrammar.newInstance());
20         Tree<String> parsedGrammar = metaGrammarParser.parse(new CharInput(grammarStream)).expand1();
21         Grammar.Bindings gbr       = new AnnotationGrammarBindings(Program.class);
22         Union   mathGrammar        = Grammar.create(parsedGrammar, "s", gbr);
23         Parser  mathParser         = new CharParser(mathGrammar);
24
25         System.out.println("about to parse: tests/test.fleet");
26         Tree tree = mathParser.parse(new CharInput(System.in)).expand1();
27
28         // below is ugly voodoo which will go away very soon.  ignore it.
29         TreeFunctor tf = (TreeFunctor)tree.head();
30         Program program = (Program)tf.invoke(tree);
31         // above is ugly voodoo which will go away very soon.  ignore it.
32
33         System.out.println();
34         System.out.println("dispatching root codebag:");
35         System.out.println(program.root);
36
37         Fleet fleet = new Fleet();
38         program.configure(fleet);
39
40         System.out.println("memory before execution:");
41         System.out.print("  ");
42         for(int i=0; i<fleet.mem.length; i++)
43             System.out.print(fleet.mem[i] + " ");
44         System.out.println();
45
46         System.out.println();
47         System.out.println("enabling execution...");
48         fleet.go();
49         System.out.println("execution halted.");
50
51         System.out.println();
52         System.out.println("memory after execution:");
53         System.out.print("  ");
54         for(int i=0; i<fleet.mem.length; i++)
55             System.out.print(fleet.mem[i] + " ");
56         System.out.println();
57     }
58
59 }