//mg0.walk(MetaGrammar.meta);
//System.out.println(mg0);
Tree<String> res = new CharParser(MetaGrammar.make()).parse(new FileInputStream(s[0])).expand1();
- MetaGrammar mg = (MetaGrammar)new MetaGrammar().walk(res);
//System.out.println(mg);
- Union meta = mg.done();
+ Union meta = MetaGrammar.make();
SequenceInputStream sis = new SequenceInputStream(new FileInputStream(s[0]), new FileInputStream(s[1]));
res = new CharParser(meta).parse(sis).expand1();
- Union testcasegrammar = ((MetaGrammar)new MetaGrammar("ts").walk(res)).done("ts");
+ Union testcasegrammar = MetaGrammar.make(res, "ts");
if (testcasegrammar==null) return;
CharParser parser = new CharParser(testcasegrammar);
}
public boolean execute() throws Exception {
if (jav) {
- Tree<Object> tree = new CharParser(grammar).parse(new StringReader(input)).expand1();
- System.out.println(tree);
- System.out.println(JavaGrammar.build(tree));
+ Forest<String> tree = new CharParser(grammar).parse(new StringReader(input));
+ FileOutputStream fos = new FileOutputStream("/Users/megacz/Desktop/out.dot");
+ PrintWriter p = new PrintWriter(new OutputStreamWriter(fos));
+ GraphViz gv = new GraphViz();
+ tree.toGraphViz(gv);
+ gv.dump(p);
+ p.flush();
+ p.close();
return true;
}
Forest<String> res = null;
}
}
- public static class TestCaseBuilder extends MetaGrammar {
+ public static class TestCaseBuilder extends StringWalker {
public Object walk(Tree<String> tree) {
try {
- if ("grammar".equals(tree.head())) { walkChildren(tree); return done("s"); }
- else if ("output".equals(tree.head())) return string(tree.children());
- else if ("input".equals(tree.head())) return string(tree.children());
+ if ("grammar".equals(tree.head())) return MetaGrammar.make(tree, "s");
+ else if ("output".equals(tree.head())) return MetaGrammar.string(tree.children());
+ else if ("input".equals(tree.head())) return MetaGrammar.string(tree.children());
else if ("javacase".equals(tree.head()) || "tibcase".equals(tree.head()) || "testcase".equals(tree.head())) {
- String input = string(tree.child(0));
+ String input = MetaGrammar.string(tree.child(0));
String[] output = tree.numChildren()>2 ? ((String[])walk(tree, 1)) : new String[0];
boolean tib = "tibcase".equals(tree.head());
boolean jav = "javacase".equals(tree.head());
- MetaGrammar gram = jav ? new JavaGrammar() : tib ? new Tib.Grammar() : new MetaGrammar();
- Union grammar = (Union)((MetaGrammar)(gram.walk(tree, tree.numChildren()-1))).done("s");
+ Union grammar = MetaGrammar.make(tree.child(tree.numChildren()-1), "s");
return new TestCase(input, output, grammar, tib, jav);
} else if ("ts".equals(tree.head())) return walk(tree, 0);
else return super.walk(tree);
}
}
}
-
+ /*
public static class JavaGrammar extends MetaGrammar {
public Object convertLabel(String label) { return new ClassMark(label); }
public Object convertFieldLabel(String label) { return new FieldMark(label); }
}
}
-
+ */
private static String pad(int i,String s) { return s.length() >= i ? s : pad(i-1,s)+" "; }
}