X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=src%2Fedu%2Fberkeley%2Fsbp%2Fmisc%2FHaskellHelper.java;h=2a96356536f0c221767d2b97218dbafbacfda53b;hb=a8478f5ddfbfbc8d910d09f27163cbd55752d3b6;hp=b8a600665349949544fb9c02bd43511ff2077e27;hpb=4aadad134578c7f1f450f426c3717bc20adcd8ea;p=sbp.git diff --git a/src/edu/berkeley/sbp/misc/HaskellHelper.java b/src/edu/berkeley/sbp/misc/HaskellHelper.java index b8a6006..2a96356 100644 --- a/src/edu/berkeley/sbp/misc/HaskellHelper.java +++ b/src/edu/berkeley/sbp/misc/HaskellHelper.java @@ -10,15 +10,34 @@ 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 { + main(argv[0], argv[1]); + } + public static Tree main(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) { + Sequence ret = super.createSequence(p); + if (ret != null) return ret; + return Sequence.create(p.nonTerminal, p.elements, p.drops, false); + } + */ + }); + System.out.println(); + System.out.println(); + System.out.println(); + CharInput input = new CharInput(new FileInputStream(targetFile), "", true); + Tree ret = new CharParser(meta).parse(input).expand1(); + if (ret==null) throw new NullPointerException("CharParser returned null"); + return ret; + } catch (Throwable e) { + e.printStackTrace(); + throw e; + } } + }