- //MetaGrammar mg0 = new MetaGrammar();
- //mg0.walk(MetaGrammar.meta);
- //System.out.println(mg0);
- Tree<String> res = new Parser(MetaGrammar.make(), CharToken.top()).parse1(new CharToken.Stream(new InputStreamReader(new FileInputStream(s[0]))));
- MetaGrammar mg = (MetaGrammar)new MetaGrammar().walk(res);
- //System.out.println(mg);
- Union meta = mg.done();
- SequenceInputStream sis = new SequenceInputStream(new FileInputStream(s[0]), new FileInputStream(s[1]));
- res = new Parser(meta, CharToken.top()).parse1(new CharToken.Stream(new InputStreamReader(sis), "parsing " + s[1] + " using " + s[0]));
- Union testcasegrammar = ((MetaGrammar)new MetaGrammar("ts").walk(res)).done("ts");
+ CharParser cp;
+ Tree<String> res;
+
+ InputStream metaGrammarStream =
+ s[0] == null
+ ? RegressionTests.class.getClassLoader().getResourceAsStream("edu/berkeley/sbp/meta/meta.g")
+ : new FileInputStream(s[0]);
+ res = new CharParser(GrammarAST.getMetaGrammar()).parse(metaGrammarStream).expand1();
+ Union meta = GrammarAST.buildFromAST(res, "s", resolver);
+ cp = new CharParser(meta);
+
+ System.err.println("serializing grammar to grammar.ser...");
+ ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("grammar.ser"));
+ oos.writeObject(cp);
+ oos.close();
+
+ System.err.println("deserializing grammar from grammar.ser...");
+ ObjectInputStream ois = new ObjectInputStream(new FileInputStream("grammar.ser"));
+ cp = (CharParser)ois.readObject();
+ ois.close();
+
+ System.err.println("parsing " + s[1]);
+ res = new CharParser(meta).parse(new FileInputStream(s[1])).expand1();
+
+ Union testcasegrammar = GrammarAST.buildFromAST(res, "s", resolver);