summaryrefslogtreecommitdiff
path: root/src/main/java/no/eliashaugsbakk/kompilator
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/no/eliashaugsbakk/kompilator')
-rw-r--r--src/main/java/no/eliashaugsbakk/kompilator/IRGeneration/IRGenerator.java7
-rw-r--r--src/main/java/no/eliashaugsbakk/kompilator/Main.java11
-rw-r--r--src/main/java/no/eliashaugsbakk/kompilator/tokenization/Lexer.java7
3 files changed, 20 insertions, 5 deletions
diff --git a/src/main/java/no/eliashaugsbakk/kompilator/IRGeneration/IRGenerator.java b/src/main/java/no/eliashaugsbakk/kompilator/IRGeneration/IRGenerator.java
index cf50a74..8ade66e 100644
--- a/src/main/java/no/eliashaugsbakk/kompilator/IRGeneration/IRGenerator.java
+++ b/src/main/java/no/eliashaugsbakk/kompilator/IRGeneration/IRGenerator.java
@@ -6,6 +6,7 @@ import no.eliashaugsbakk.kompilator.IRGeneration.Instructions.Alloc;
import no.eliashaugsbakk.kompilator.IRGeneration.Instructions.Assign;
import no.eliashaugsbakk.kompilator.IRGeneration.Instructions.Call;
import no.eliashaugsbakk.kompilator.IRGeneration.Instructions.Instruction;
+import no.eliashaugsbakk.kompilator.Main;
import no.eliashaugsbakk.kompilator.parsing.AST;
import no.eliashaugsbakk.kompilator.parsing.node.Program;
import no.eliashaugsbakk.kompilator.parsing.node.expression.Expression;
@@ -33,7 +34,11 @@ public class IRGenerator {
for (Statement stmt : program.statements) {
generateStatement(stmt);
}
- ir.forEach(IO::println);
+ if (Main.VERBOSE) {
+ IO.println("======= IRGenerator =======");
+ ir.forEach(IO::println);
+ IO.println("\n\n\n\n");
+ }
return ir;
}
diff --git a/src/main/java/no/eliashaugsbakk/kompilator/Main.java b/src/main/java/no/eliashaugsbakk/kompilator/Main.java
index 8d6a5cf..bdd1b1e 100644
--- a/src/main/java/no/eliashaugsbakk/kompilator/Main.java
+++ b/src/main/java/no/eliashaugsbakk/kompilator/Main.java
@@ -1,5 +1,6 @@
package no.eliashaugsbakk.kompilator;
+import java.util.Arrays;
import java.util.List;
import no.eliashaugsbakk.kompilator.IO.File;
import no.eliashaugsbakk.kompilator.IO.FileReaderWriter;
@@ -17,15 +18,19 @@ import no.eliashaugsbakk.kompilator.tokenization.Lexer;
import no.eliashaugsbakk.kompilator.tokenization.Token;
public class Main {
- public static final String programFileExtension = "spå";
+ public static boolean VERBOSE = false;
+ static final String programFileExtension = "spå";
static void main(String[] args) {
- if (args.length != 1) {
- IO.println("err: Only accepts one argument: The filename of the input program");
+ if (args.length == 0) {
+ IO.println("err: File path must be specified.");
System.exit(1);
}
+ VERBOSE = Arrays.asList(args).contains("--verbose")
+ || Arrays.asList(args).contains("-v");
+
String inputFileName = args[0];
if (!inputFileName.endsWith("." + programFileExtension)) {
diff --git a/src/main/java/no/eliashaugsbakk/kompilator/tokenization/Lexer.java b/src/main/java/no/eliashaugsbakk/kompilator/tokenization/Lexer.java
index fb3e09e..1389c6b 100644
--- a/src/main/java/no/eliashaugsbakk/kompilator/tokenization/Lexer.java
+++ b/src/main/java/no/eliashaugsbakk/kompilator/tokenization/Lexer.java
@@ -20,6 +20,7 @@ import static no.eliashaugsbakk.kompilator.tokenization.TokenType.TYPE;
import java.util.ArrayList;
import java.util.List;
+import no.eliashaugsbakk.kompilator.Main;
public class Lexer {
private char current;
@@ -66,7 +67,11 @@ public class Lexer {
}
tokens.add(new Token(EOF, "End of File", line, column));
- //tokens.forEach(token -> IO.println(token.type().toString() + ": " + token.value()));
+ if (Main.VERBOSE) {
+ IO.println("======= Lexer =======");
+ tokens.forEach(token -> IO.println(token.type().toString() + ": " + token.value()));
+ IO.println("\n\n\n\n");
+ }
return tokens;
}