aboutsummaryrefslogtreecommitdiffstats
path: root/main/Main.java
diff options
context:
space:
mode:
authorJan Tuomi <jans.tuomi@gmail.com>2016-06-16 20:21:25 +0300
committerJan Tuomi <jans.tuomi@gmail.com>2016-07-26 19:47:02 +0300
commitd35a37a449d31e6f4b43b937abf7b0e1fc497828 (patch)
tree8d65ac1068dbf09de480e7cae0fb39ec21d330ec /main/Main.java
parentf441022881945db08846e09a8f3bfee2f8cfa95d (diff)
Grammar now uses reverse polish notation
Diffstat (limited to 'main/Main.java')
-rw-r--r--main/Main.java20
1 files changed, 16 insertions, 4 deletions
diff --git a/main/Main.java b/main/Main.java
index b2d29e9..31bbd7b 100644
--- a/main/Main.java
+++ b/main/Main.java
@@ -1,13 +1,17 @@
package com.jantuomi.interpreter.main;
import com.jantuomi.interpreter.main.core.CommandLineArgumentContainer;
+import com.jantuomi.interpreter.main.core.parser.ASTGenerator;
import com.jantuomi.interpreter.main.core.parser.Parser;
import com.jantuomi.interpreter.main.core.parser.ast.ASTNode;
import com.jantuomi.interpreter.main.core.runtime.Interpreter;
import com.jantuomi.interpreter.main.core.tokenizer.Tokenizer;
+import com.jantuomi.interpreter.main.core.tokenizer.token.Token;
+import com.jantuomi.interpreter.main.exception.InterpreterException;
import org.kohsuke.args4j.CmdLineException;
import org.kohsuke.args4j.CmdLineParser;
+import java.util.Collections;
import java.util.List;
import java.util.Scanner;
@@ -34,14 +38,22 @@ public class Main {
System.out.print(">> ");
input = scanner.nextLine();
- run(input);
+ try {
+ run(input);
+ } catch (InterpreterException e) {
+ e.printStackTrace();
+ }
}
}
- public static void run(String input) {
+ public static void run(String input) throws InterpreterException {
Tokenizer tokenizer = Tokenizer.getInstance();
- tokenizer.tokenize(input);
- List<ASTNode> nodes = Parser.getInstance().parse(tokenizer.getTokens());
+ List<Token> sequence = tokenizer.tokenize(input);
+
+ Collections.reverse(sequence);
+
+ List<Token> trees = Parser.getInstance().parse(sequence);
+ List<ASTNode> nodes = ASTGenerator.getInstance().generate(trees);
String output = Interpreter.execute(nodes);
System.out.println(output);
}