X-Git-Url: http://git.megacz.com/?p=sbp.git;a=blobdiff_plain;f=src%2Fedu%2Fberkeley%2Fsbp%2Fmisc%2FHaskellHelper.java;h=b94c30f554eaa298f626bbc7c91137740ec12cf3;hp=18f5f6ae17c7bb6f0d2488c97316a4fae0c666c9;hb=eee310fc34d114be6b366f1a94fe6fe49da8b99b;hpb=0f9676168fa7384f8cf66ed02c1c8caa22381206 diff --git a/src/edu/berkeley/sbp/misc/HaskellHelper.java b/src/edu/berkeley/sbp/misc/HaskellHelper.java index 18f5f6a..b94c30f 100644 --- a/src/edu/berkeley/sbp/misc/HaskellHelper.java +++ b/src/edu/berkeley/sbp/misc/HaskellHelper.java @@ -6,6 +6,7 @@ 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 { @@ -14,23 +15,62 @@ public class HaskellHelper { help(argv[0], argv[1]); } public static boolean isNull(Object o) { return o==null; } - public static Tree help(String grammarFile, String targetFile) throws Throwable { + 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) { - Sequence ret = super.createSequence(p); - if (ret != null) return ret; - return Sequence.create(p.nonTerminal, p.elements, p.drops, false); + 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