added multi-input processing to Preprocessor
authoradam <adam@megacz.com>
Tue, 13 Jul 2004 02:08:07 +0000 (02:08 +0000)
committeradam <adam@megacz.com>
Tue, 13 Jul 2004 02:08:07 +0000 (02:08 +0000)
darcs-hash:20040713020807-5007d-e1226e1c1231bc7012af01db61fb4be43e39a1c2.gz

src/org/ibex/util/Preprocessor.java

index 89f4e4e..bb053aa 100644 (file)
@@ -44,18 +44,39 @@ public class Preprocessor {
     }
 
     public static void main(String[] args) throws Exception {
     }
 
     public static void main(String[] args) throws Exception {
-        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
-        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
-
-        // process stdin to stdout
-        Preprocessor cc = new Preprocessor(br, bw);
-        Vector err = cc.process();
-        bw.flush();
-
-        // handle errors
-        boolean errors = false;
-        for (int i=0; i < err.size(); i++) { if (err.get(i) instanceof Error) errors = true; System.err.println(err.get(i)); }
-        if (errors) throw new Exception();
+        if (args.length == 0) {
+            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+            BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
+            
+            // process stdin to stdout
+            Preprocessor cc = new Preprocessor(br, bw);
+            Vector err = cc.process();
+            bw.flush();
+            
+            // handle errors
+            boolean errors = false;
+            for (int i=0; i < err.size(); i++) {
+                if (err.get(i) instanceof Error) errors = true; System.err.println(err.get(i)); }
+            if (errors) throw new Exception();
+        } else {
+            for(int i=0; i<args.length; i++) {
+                if (!args[i].endsWith(".java")) continue;
+                File source = new File(args[i]);
+                File target = new File(replaceAll(args[i], "src/", "build/java/"));
+                if (target.exists() && target.lastModified() > source.lastModified()) continue;
+                System.err.println("preprocessing " + args[i]);
+                new File(target.getParent()).mkdirs();
+                BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(source)));
+                BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(target)));
+                Preprocessor cc   = new Preprocessor(br, bw);
+                Vector err = cc.process();
+                bw.flush();
+                boolean errors = false;
+                for (int j=0; j < err.size(); j++) {
+                    if (err.get(j) instanceof Error) errors = true; System.err.println(err.get(j)); }
+                if (errors) System.exit(-1);
+            }
+        }
     }
 
     private Reader r;
     }
 
     private Reader r;