diff --git a/jlox/Lox.java b/jlox/Lox.java new file mode 100644 index 0000000..eb9397e --- /dev/null +++ b/jlox/Lox.java @@ -0,0 +1,39 @@ +package com.craftinginterpreters.lox; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.nio.charset.Charset; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.util.List; + +public class Lox { + public static void main(String[] args) throws IOException { + if (args.length > 1) { + System.out.println("Usage: jlox [script]"); + System.exit(64); + } else if (args.length == 1) { + runFile(args[0]); + } else { + runPrompt(); + } + } + + private static void runFile(String path) throws IOException { + byte[] bytes =Files.readAllBytes(Paths.get(path)); + run(new String(bytes, Charset.defaultCharset())); + } + + private static void runPrompt() throws IOException { + InputStreamReader input = new InputStreamReader(System.in); + BufferedReader reader = new BufferedReader(input); + + for (;;) { + System.out.print("> "); + String line = reader.readLine(); + if (line == null) break; + run(line); + } + } +} diff --git a/jlox/Makefile b/jlox/Makefile new file mode 100644 index 0000000..f14397b --- /dev/null +++ b/jlox/Makefile @@ -0,0 +1,10 @@ +## +# jlox +# +# @file +# @version 0.1 +all: + javac -d . Lox.java + + +# end