diff options
Diffstat (limited to 'dice-lang/src/bjc/dicelang/Parser.java')
| -rw-r--r-- | dice-lang/src/bjc/dicelang/Parser.java | 46 |
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); } |
