((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 []
$ 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)
public class HaskellHelper {
- public static Tree main(String grammarFile, String targetFile) throws Exception {
-
- System.err.println("parsing " + grammarFile);
- Tree<String> 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<String> 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;
+ }
}
+
}