From da2bedad52f2d7642b7a455676e4f07e436bc8bf Mon Sep 17 00:00:00 2001 From: Victor Date: Tue, 19 Jan 2016 18:25:19 +0200 Subject: [PATCH] =?UTF-8?q?=D0=97=D0=B0=D0=BF=D1=83=D1=81=D0=BA=20=D0=B8?= =?UTF-8?q?=D0=B7=20=D0=BA=D0=BE=D0=BC=D0=B0=D0=BD=D0=B4=D0=BD=D0=BE=D0=B9?= =?UTF-8?q?=20=D1=81=D1=82=D1=80=D0=BE=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/annimon/ownlang/Main.java | 59 ++++++++++++++++++++++++++----- 1 file changed, 50 insertions(+), 9 deletions(-) diff --git a/src/com/annimon/ownlang/Main.java b/src/com/annimon/ownlang/Main.java index 439582f..03f4c87 100644 --- a/src/com/annimon/ownlang/Main.java +++ b/src/com/annimon/ownlang/Main.java @@ -18,18 +18,59 @@ import java.util.List; public final class Main { public static void main(String[] args) throws IOException { - final String file = "program.own"; - final String input = new String( Files.readAllBytes(Paths.get(file)), "UTF-8"); - final List tokens = new Lexer(input).tokenize(); - for (int i = 0; i < tokens.size(); i++) { - System.out.println(i + " " + tokens.get(i)); + if (args.length == 0) { + run(readFile("program.own"), true, true); + return; + } + + boolean showTokens = false, showAst = false; + String input = null; + for (int i = 0; i < args.length; i++) { + switch (args[i]) { + case "-a": + case "--showast": + showAst = true; + break; + + case "-t": + case "--showtokens": + showTokens = true; + break; + + case "-f": + case "--file": + if (i + 1 < args.length) { + input = readFile(args[i + 1]); + i++; + } + break; + + default: + input = args[i]; + } + } + if (input == null) { + throw new IllegalArgumentException("Empty input"); + } + run(input, showTokens, showAst); + } + + private static String readFile(String file) throws IOException { + return new String( Files.readAllBytes(Paths.get(file)), "UTF-8"); + } + + private static void run(String input, boolean showTokens, boolean showAst) { + final List tokens = new Lexer(input).tokenize(); + if (showTokens) { + for (int i = 0; i < tokens.size(); i++) { + System.out.println(i + " " + tokens.get(i)); + } } -// for (Token token : tokens) { -// System.out.println(token); -// } final Statement program = new Parser(tokens).parse(); - System.out.println(program.toString()); + if (showAst) { + System.out.println(program.toString()); + } program.accept(new FunctionAdder()); // program.accept(new VariablePrinter()); program.accept(new AssignValidator());