diff options
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 } } |
