summaryrefslogtreecommitdiff
path: root/dice-lang/src/bjc/dicelang/Parser.java
diff options
context:
space:
mode:
Diffstat (limited to 'dice-lang/src/bjc/dicelang/Parser.java')
-rw-r--r--dice-lang/src/bjc/dicelang/Parser.java46
1 files changed, 23 insertions, 23 deletions
diff --git a/dice-lang/src/bjc/dicelang/Parser.java b/dice-lang/src/bjc/dicelang/Parser.java
index 828cad7..bfb7a03 100644
--- a/dice-lang/src/bjc/dicelang/Parser.java
+++ b/dice-lang/src/bjc/dicelang/Parser.java
@@ -1,15 +1,16 @@
package bjc.dicelang;
-import static bjc.dicelang.Errors.ErrorKey.*;
-import static bjc.dicelang.Node.Type.*;
-import static bjc.dicelang.Token.Type.*;
+import bjc.utils.data.ITree;
+import bjc.utils.data.Tree;
+import bjc.utils.funcdata.IList;
import java.util.Deque;
import java.util.LinkedList;
-import bjc.utils.data.ITree;
-import bjc.utils.data.Tree;
-import bjc.utils.funcdata.IList;
+import static bjc.dicelang.Errors.ErrorKey.*;
+import static bjc.dicelang.Node.Type.*;
+import static bjc.dicelang.Token.Type.CBRACE;
+import static bjc.dicelang.Token.Type.CBRACKET;
public class Parser {
public Parser() {
@@ -19,8 +20,8 @@ public class Parser {
public boolean parseTokens(IList<Token> tokens, IList<ITree<Node>> results) {
Deque<ITree<Node>> working = new LinkedList<>();
- for (Token tk : tokens) {
- switch (tk.type) {
+ for(Token tk : tokens) {
+ switch(tk.type) {
case OBRACKET:
case OBRACE:
working.push(new Tree<>(new Node(OGROUP, tk)));
@@ -28,8 +29,7 @@ public class Parser {
case CBRACKET:
case CBRACE:
boolean sc = parseClosingGrouper(working, tk);
- if (!sc)
- return false;
+ if(!sc) return false;
break;
case MULTIPLY:
case DIVIDE:
@@ -41,7 +41,7 @@ public class Parser {
case STRREP:
case LET:
case BIND:
- if (working.size() < 2) {
+ if(working.size() < 2) {
Errors.inst.printError(EK_PARSE_BINARY);
return false;
} else {
@@ -58,10 +58,10 @@ public class Parser {
break;
case ADD:
case SUBTRACT:
- if (working.size() == 0) {
+ if(working.size() == 0) {
Errors.inst.printError(EK_PARSE_UNOPERAND, tk.toString());
return false;
- } else if (working.size() == 1) {
+ } else if(working.size() == 1) {
ITree<Node> operand = working.pop();
ITree<Node> opNode = new Tree<>(new Node(UNARYOP, tk.type));
@@ -84,7 +84,7 @@ public class Parser {
case COERCE:
case DICESCALAR:
case DICEFUDGE:
- if (working.size() == 0) {
+ if(working.size() == 0) {
Errors.inst.printError(EK_PARSE_UNOPERAND, tk.toString());
} else {
ITree<Node> operand = working.pop();
@@ -108,7 +108,7 @@ public class Parser {
}
}
- for (ITree<Node> ast : working) {
+ for(ITree<Node> ast : working) {
results.add(ast);
}
@@ -116,13 +116,13 @@ public class Parser {
}
private boolean parseClosingGrouper(Deque<ITree<Node>> working, Token tk) {
- if (working.size() == 0) {
+ if(working.size() == 0) {
Errors.inst.printError(EK_PARSE_NOCLOSE);
return false;
}
ITree<Node> groupNode = null;
- switch (tk.type) {
+ switch(tk.type) {
case CBRACE:
groupNode = new Tree<>(new Node(GROUP, Node.GroupType.CODE));
break;
@@ -134,20 +134,20 @@ public class Parser {
}
Token matching = null;
- if (tk.type == CBRACKET) {
+ if(tk.type == CBRACKET) {
matching = new Token(Token.Type.OBRACKET, tk.intValue);
- } else if (tk.type == CBRACE) {
+ } else if(tk.type == CBRACE) {
matching = new Token(Token.Type.OBRACE, tk.intValue);
}
ITree<Node> matchNode = new Tree<>(new Node(OGROUP, matching));
- if (!working.contains(matchNode)) {
+ if(!working.contains(matchNode)) {
Errors.inst.printError(EK_PARSE_UNCLOSE, tk.toString(), matchNode.toString());
System.out.println("\tCurrent forest is: ");
int treeNo = 1;
- for (ITree<Node> ast : working) {
+ for(ITree<Node> ast : working) {
System.out.println("Tree " + treeNo++ + ": " + ast.toString());
}
@@ -155,14 +155,14 @@ public class Parser {
} else {
Deque<ITree<Node>> childs = new LinkedList<>();
- while (!working.peek().equals(matchNode)) {
+ while(!working.peek().equals(matchNode)) {
childs.push(working.pop());
}
// Discard opener
working.pop();
- for (ITree<Node> child : childs) {
+ for(ITree<Node> child : childs) {
groupNode.addChild(child);
}