From: adam Date: Mon, 4 Sep 2006 09:48:28 +0000 (-0400) Subject: SBP.hs / HaskellHelper cleanups X-Git-Tag: tag_for_25-Mar~73 X-Git-Url: http://git.megacz.com/?p=sbp.git;a=commitdiff_plain;h=c042bb0dcce5d64f09b2788b2dfb722145162d2b;ds=sidebyside SBP.hs / HaskellHelper cleanups darcs-hash:20060904094828-5007d-c17bb57199c59e78a23c892328de7f7191c0a1f0.gz --- diff --git a/src/SBP.hs b/src/SBP.hs index 510a2d4..2fec793 100644 --- a/src/SBP.hs +++ b/src/SBP.hs @@ -58,8 +58,8 @@ module SBP ((do class_JHaskellHelper class_JTree head <- getHead_JTree t () - strx <- toString_JObject ((castTLRef head) :: Jjava_lang_Object) () - str <- getStringUTF strx + isNull <- getIsNothing head + str <- if isNull then (return "") else (toString_JObject ((castTLRef head) :: Jjava_lang_Object) () >>= getStringUTF >>= \x -> return (showUTF8 x)) numChildren <- size_JTree t() children <- if numChildren == 0 then do return [] @@ -68,7 +68,7 @@ module SBP $ iterate (+1) 0 h <- mapM (\c -> haskifyTree (castTLRef c)) children return h - return $ Tree (showUTF8 str) children nullRegion + return $ Tree str children nullRegion ) :: JVM Tree) diff --git a/src/edu/berkeley/sbp/misc/HaskellHelper.java b/src/edu/berkeley/sbp/misc/HaskellHelper.java index b8a6006..d4f43a7 100644 --- a/src/edu/berkeley/sbp/misc/HaskellHelper.java +++ b/src/edu/berkeley/sbp/misc/HaskellHelper.java @@ -10,15 +10,27 @@ 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 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); + } + */ + }); + Tree ret = new CharParser(meta).parse(new FileInputStream(targetFile)).expand1(); + if (ret==null) throw new NullPointerException("CharParser returned null"); + return ret; + } catch (Throwable e) { + e.printStackTrace(); + throw e; + } } + }