//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 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()*/null : 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)+" "; }
}