diff options
Diffstat (limited to 'code/Interpreter/Interpreter.java')
-rw-r--r-- | code/Interpreter/Interpreter.java | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/code/Interpreter/Interpreter.java b/code/Interpreter/Interpreter.java new file mode 100644 index 0000000..17f2ccf --- /dev/null +++ b/code/Interpreter/Interpreter.java @@ -0,0 +1,44 @@ +package Interpreter; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.util.List; +import java.util.Scanner; + +//Base class for the interpreter +public class Interpreter { + public static void main(String[] args){ + + //Allow users to input a single line of code + //Still needs some work to re-ask for input after each line + if (args.length < 1){ + Scanner input = new Scanner(System.in); + System.out.print("Code: "); + String sourceCode = input.nextLine(); + runInterpreter(sourceCode); + input.close(); + + //Allow users to provide a path to a file as an argument + } else if (args.length==1){ + try { + String sourcecode = Files.readString(Paths.get(args[0])); //Maybe should set charset here + runInterpreter(sourcecode); + } catch (IOException exception){ + System.out.println("File not found"); + } + + } else { + System.out.println("Error, argument should be file path"); + System.exit(64); + } + } + + private static void runInterpreter(String sourceCode){ + TokenScanner scanner = new TokenScanner(); + List<Token> tokens = scanner.extractTokens(sourceCode); + for (Token token : tokens) { + System.out.println(token); + } + } +} |