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);