diff options
| author | GeonoTRON2000 <geono@thegt.org> | 2014-04-30 21:07:56 -0700 |
|---|---|---|
| committer | GeonoTRON2000 <geono@thegt.org> | 2014-04-30 21:07:56 -0700 |
| commit | 508b66baa22aa54b940606663dd569eee03397ee (patch) | |
| tree | 3d3e6309409751d6092aac68351f46569d121dad /Shenanigans/src/org/archphantom/shenanigans/Shenanigans.java | |
| parent | eb05c2dd956b7e991f52eb5c7f03a0f11b7f1f33 (diff) | |
| download | shenanigans-508b66baa22aa54b940606663dd569eee03397ee.tar.gz | |
Added functionality to run raw parser output.
Diffstat (limited to 'Shenanigans/src/org/archphantom/shenanigans/Shenanigans.java')
| -rw-r--r-- | Shenanigans/src/org/archphantom/shenanigans/Shenanigans.java | 37 |
1 files changed, 34 insertions, 3 deletions
diff --git a/Shenanigans/src/org/archphantom/shenanigans/Shenanigans.java b/Shenanigans/src/org/archphantom/shenanigans/Shenanigans.java index c516de0..a893ec2 100644 --- a/Shenanigans/src/org/archphantom/shenanigans/Shenanigans.java +++ b/Shenanigans/src/org/archphantom/shenanigans/Shenanigans.java @@ -2,34 +2,65 @@ package org.archphantom.shenanigans; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; +import java.io.ObjectInputStream; import java.util.ArrayList; +import org.archphantom.shenanigans.elements.Program; public class Shenanigans { private static final String HELP_STRING = "############################### Shenanigans Help ###############################\r\n" + "# #" + "# <no arguments>: parse from standard input as Shenanigans code #" + "# -h or --HELP: display this help message #" - + "# -f or --FILE <filename>: parse this file as Shenanigans code #" + + "# -f or --FILE <file>: parse this file as Shenanigans code #" + + "# -p or --PARSED <file>: load raw parser output into the interpreter #" + "# #" + "################################################################################"; public static void main (String[] args) { try { + boolean useparsed = false; boolean usefiles = false; ArrayList<InputStream> streams = new ArrayList<InputStream>(); + ArrayList<InputStream> pstreams = new ArrayList<InputStream>(); for (int i = 0; i < args.length; i++) { if (args[i].equals("-h") || args[i].equalsIgnoreCase("--help")) { System.out.println(HELP_STRING); return; } + if ((args[i].equals("-p") || args[i].equalsIgnoreCase("--PARSED")) && (i+1) < args.length) { + pstreams.add(new FileInputStream(args[i+1])); + useparsed = true; + } + if ((args[i].equals("-f") || args[i].equalsIgnoreCase("--file")) && (i+1) < args.length) { + streams.add(new FileInputStream(args[i+1])); + usefiles = true; + } if ((args[i].equals("-f") || args[i].equalsIgnoreCase("--file")) && (i+1) < args.length) { streams.add(new FileInputStream(args[i+1])); usefiles = true; } } + if (useparsed) { + for (int i = 0; i < pstreams.size(); i++) { + try { + ObjectInputStream oistream = new ObjectInputStream(pstreams.get(i)); + Object oread = oistream.readObject(); + if (oread instanceof Program) { + Program p = (Program) oread; + p.run(); + } else { + System.err.println("Object is not valid parser output."); + } + } catch (Exception e) { + e.printStackTrace(); + System.exit(1); + } + } + } if (usefiles) { parse(streams.toArray(new InputStream[] {})); - } else { + } + if (!useparsed && !usefiles) { parse(System.in); } } catch (IOException e) { @@ -49,7 +80,7 @@ public class Shenanigans { while ((b = stream.read()) != -1) { data += (char) b; } - //ShenaniganParser.parse(data); + // Interact with parser } } |
