From 271a93f6df0f2d031303a438bf2f2b2b8c942c96 Mon Sep 17 00:00:00 2001 From: Malte Schmitz Date: Mon, 16 Jan 2017 18:12:20 +0100 Subject: [PATCH] Add option --print to CLI --- src/main/java/Main.java | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/src/main/java/Main.java b/src/main/java/Main.java index 4dfd0e5..6cb9697 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -3,6 +3,7 @@ import interpreter.InterpreterException; import parser.Parser; import parser.SyntaxException; import program.Program; +import printer.ProgramPrinter; import java.io.IOException; import java.nio.charset.StandardCharsets; @@ -14,12 +15,20 @@ public class Main { public static void main(String[] args) { if (args.length == 0) { System.err.println("No file given"); - } else if (args.length > 1) { - System.err.println("Too many arguments"); } else { try { String code = readFile(args[0]); - run(code); + if (args.length == 2) { + if ("--print".equals(args[1])) { + print(code); + } else { + System.err.println("Invalid argument " + args[1]); + } + } else if (args.length == 1) { + run(code); + } else { + System.err.println("Too many arguments"); + } } catch (IOException e) { e.printStackTrace(); } @@ -31,6 +40,17 @@ public class Main { return new String(encoded, StandardCharsets.UTF_8); } + private static void print(String code) { + try { + Parser parser = new Parser(code); + Program program = parser.parse(); + ProgramPrinter printer = new ProgramPrinter(); + System.out.println(printer.print(program)); + } catch (SyntaxException se) { + System.err.println(se); + } + } + private static void run(String code) { try { Parser parser = new Parser(code);