X-Git-Url: http://git.megacz.com/?p=sbp.git;a=blobdiff_plain;f=src%2Fedu%2Fberkeley%2Fsbp%2Fmisc%2FHaskellHelper.java;h=e54444125227b5e29c6a189feddfff14415c7572;hp=b8a600665349949544fb9c02bd43511ff2077e27;hb=16460a4ebf976fddbcb4dd79f1fa0b010d61602b;hpb=4aadad134578c7f1f450f426c3717bc20adcd8ea diff --git a/src/edu/berkeley/sbp/misc/HaskellHelper.java b/src/edu/berkeley/sbp/misc/HaskellHelper.java index b8a6006..e544441 100644 --- a/src/edu/berkeley/sbp/misc/HaskellHelper.java +++ b/src/edu/berkeley/sbp/misc/HaskellHelper.java @@ -6,19 +6,77 @@ import edu.berkeley.sbp.*; import edu.berkeley.sbp.misc.*; import edu.berkeley.sbp.meta.*; import edu.berkeley.sbp.chr.*; +import edu.berkeley.sbp.tib.*; import java.io.*; public class HaskellHelper { - public static Tree main(String grammarFile, String targetFile) throws Exception { - - System.err.println("parsing " + grammarFile); - Tree res = new CharParser(MetaGrammar.newInstance()).parse(new FileInputStream(grammarFile)).expand1(); - Union meta = Grammar.create(res, "s", new MetaGrammarBindings()); - - System.err.println("parsing " + targetFile); - return new CharParser(meta).parse(new FileInputStream(targetFile)).expand1(); - + public static void main(String[] argv) throws Throwable { + help(argv[0], argv[1]); + } + public static boolean isNull(Object o) { return o==null; } + public static Tree help0(String grammarFile, String targetFile) throws Throwable { + try { + Tree res = new CharParser(MetaGrammar.newInstance()).parse(new FileInputStream(grammarFile)).expand1(); + Union meta = Grammar.create(res, "s" /*, + new Grammar.Bindings() { + public Sequence createSequence(Production p) { + Element[] els = p.elements; + if (p.tag != null) + return Sequence.create(p.tag, p.elements, p.drops, false); + int idx = -1; + for(int i=0; i res = new CharParser(MetaGrammar.newInstance()).parse(new FileInputStream(grammarFile)).expand1(); + Union meta = Grammar.create(res, "s" /*, + new Grammar.Bindings() { + public Sequence createSequence(Production p) { + Element[] els = p.elements; + if (p.tag != null && !"".equals(p.tag)) + return Sequence.create(p.tag, p.elements, p.drops, false); + int idx = -1; + for(int i=0; i