get grammarfiles from classloader resources rather than files
authoradam <adam@megacz.com>
Wed, 30 May 2007 17:34:51 +0000 (10:34 -0700)
committeradam <adam@megacz.com>
Wed, 30 May 2007 17:34:51 +0000 (10:34 -0700)
darcs-hash:20070530173451-5007d-7ef181ace732bb3015f3e9f9cae792009447b5ca.gz

Makefile
src/HaskellHelper.java

index 9966c34..79f6f49 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -11,10 +11,10 @@ ghc    += -fglasgow-exts -cpp -hidir $(pwd)/build/hi -i$(pwd)/build/hi -odir $(p
 ghclibs = $(ghcroot)/rts/HSrts.jar:$(ghcroot)/libraries/base/HSbase.jar:$(ghcroot)/libraries/stm/HSstm.jar
 
 java =  java -Xmx800m
-java += $(profile) -cp $(ghclibs):$(sbp)/edu.berkeley.sbp.jar:build/class
+java += $(profile) -cp src:$(ghclibs):$(sbp)/edu.berkeley.sbp.jar:build/class
 
 $(sbp):
-       darcs get --repo-name=$@ http://research.cs.berkeley.edu/project/sbp/edu.berkeley.sbp 
+       darcs get --partial --repo-name=$@ http://research.cs.berkeley.edu/project/sbp/edu.berkeley.sbp 
 
 $(sbp)/edu.berkeley.sbp.jar: $(sbp)
        cd $(sbp); make edu.berkeley.sbp.jar
@@ -27,12 +27,12 @@ install: build/class/Main.class build/class/Tib.class
 
 install2: build/class/Main.class build/class/Tib.class
 #      $(java) HaskellHelper xt/slipway/ ~/www/slipway/
-#      $(java) HaskellHelper xt/research/ ~/www/research/
+       $(java) HaskellHelper xt/research/ ~/www/research/
 #      $(java) HaskellHelper xt/research.cs.berkeley.edu/ ~/www/research.cs.berkeley.edu/
 #      $(java) HaskellHelper xt/random/ ~/www/random/
 #      $(java) HaskellHelper xt/otherpeople/ ~/www/otherpeople/
 #      $(java) HaskellHelper xt/sbp ~/www/sbp
-       $(java) HaskellHelper xt/software/wix ~/www/software/wix
+#      $(java) HaskellHelper xt/software/wix ~/www/software/wix
 #      $(java) HaskellHelper xt/thoughts ~/www/thoughts
 #      $(java) HaskellHelper xt2 ~/
 
@@ -45,9 +45,10 @@ debug: build/class/Main.class build/class/Tib.class
 wix.jar: build/class/Main.class build/class/Tib.class $(sbp)/edu.berkeley.sbp.jar
        rm -rf tmp
        mkdir tmp
-       cd build/class; for A in $(lambdavm_jars) ../../$(sbp)/edu.berkeley.sbp.jar; \
+       cd build/class; for A in $(lambdavm_jars) $(sbp)/edu.berkeley.sbp.jar; \
          do jar xvf $$A; done
        echo 'Main-Class: HaskellHelper' > build/manifest
+       cp src/*.g build/class/
        cd build/class; jar cvmf ../manifest ../../wix.jar .
 
 build/class/Tib.class: $(shell find src -name \*.java) $(sbp)/edu.berkeley.sbp.jar
@@ -55,7 +56,7 @@ build/class/Tib.class: $(shell find src -name \*.java) $(sbp)/edu.berkeley.sbp.j
 
 build/class/Main.class: $(shell find src -name \*.lhs) $(sbp)/edu.berkeley.sbp.jar
        mkdir -p build/class/Text/PrettyPrint
-       mkdir -p build/class/Edu/Berkeley/SBP/Haskell/
+       mkdir -p build/class/edu/berkeley/sbp/haskell/
        mkdir -p build/hi
        cd src; $(ghc) -c -java Util.lhs
        cd src; $(ghc) -c -java Text/PrettyPrint/Leijen.hs
index 3ca1cae..daa4fe6 100644 (file)
@@ -16,11 +16,13 @@ public class HaskellHelper {
             if (parser == null) {
                 try {
                     // FIXME: bundle this into the jarfile
-                    File grammarFile = new File("src/wix.g");
-                    Tree<String> res = new CharParser(MetaGrammar.newInstance())
-                        .parse(new FileInputStream(grammarFile)).expand1();
-                    Union grammar = GrammarAST.buildFromAST(res, "s", new File[] {
-                            new File(grammarFile.getParent())
+                    InputStream grammarFile = HaskellHelper.class.getClassLoader().getResourceAsStream("wix.g");
+                    Tree<String> res = new CharParser(GrammarAST.getMetaGrammar())
+                        .parse(grammarFile).expand1();
+                    Union grammar = GrammarAST.buildFromAST(res, "s", new GrammarAST.ImportResolver() {
+                            public InputStream getImportStream(String filename) {
+                                return this.getClass().getClassLoader().getResourceAsStream(filename);
+                            }
                         });
                     parser = new CharParser(grammar);
                 } catch (Exception e) {