diff options
| author | Benjamin J. Culkin <bjculkin@mix.wvu.edu> | 2017-07-23 22:58:58 -0300 |
|---|---|---|
| committer | Benjamin J. Culkin <bjculkin@mix.wvu.edu> | 2017-07-23 22:58:58 -0300 |
| commit | c74cb8eaf454d9243b75e3770001d8d128356b28 (patch) | |
| tree | 899197afc0b7c382aa37c778053357e0e9b56c26 /dice-lang/src/bjc/dicelang/expr | |
| parent | 57f9a3bfdad20bead5b35ee540e8790e80a6b9a4 (diff) | |
Format
Diffstat (limited to 'dice-lang/src/bjc/dicelang/expr')
| -rw-r--r-- | dice-lang/src/bjc/dicelang/expr/Parser.java | 9 | ||||
| -rw-r--r-- | dice-lang/src/bjc/dicelang/expr/Shunter.java | 1 | ||||
| -rw-r--r-- | dice-lang/src/bjc/dicelang/expr/Token.java | 7 | ||||
| -rw-r--r-- | dice-lang/src/bjc/dicelang/expr/TokenType.java | 4 |
4 files changed, 18 insertions, 3 deletions
diff --git a/dice-lang/src/bjc/dicelang/expr/Parser.java b/dice-lang/src/bjc/dicelang/expr/Parser.java index 90a6b38..b3f83a4 100644 --- a/dice-lang/src/bjc/dicelang/expr/Parser.java +++ b/dice-lang/src/bjc/dicelang/expr/Parser.java @@ -52,6 +52,7 @@ public class Parser { */ final Token[] infixTokens = lex.lexString(ln, toks); System.out.println("Lexed tokens: "); + for (final Token tok : infixTokens) { System.out.println("\t" + tok); } @@ -60,9 +61,11 @@ public class Parser { * Print out infix expression. */ System.out.print("Lexed expression: "); + for (final Token tok : infixTokens) { System.out.print(tok.toExpr() + " "); } + System.out.println(); System.out.println(); @@ -71,6 +74,7 @@ public class Parser { */ final Token[] postfixTokens = Shunter.shuntTokens(infixTokens); System.out.println("Lexed tokens: "); + for (final Token tok : postfixTokens) { System.out.println("\t" + tok); } @@ -79,14 +83,17 @@ public class Parser { * Print out postfix tokens. */ System.out.print("Shunted expression: "); + for (final Token tok : postfixTokens) { System.out.print(tok.toExpr() + " "); } + System.out.println(); System.out.println(); final FunctionalList<Token> tokList = new FunctionalList<>(Arrays.asList(postfixTokens)); - final ITree<Token> ast = TreeConstructor.constructTree(tokList, tok -> tok.typ.isOperator); + final ITree<Token> ast = TreeConstructor.constructTree(tokList, + tok -> tok.typ.isOperator); /* * Print the tree, then the canonical expression for it. diff --git a/dice-lang/src/bjc/dicelang/expr/Shunter.java b/dice-lang/src/bjc/dicelang/expr/Shunter.java index 19b30c3..3e49356 100644 --- a/dice-lang/src/bjc/dicelang/expr/Shunter.java +++ b/dice-lang/src/bjc/dicelang/expr/Shunter.java @@ -41,6 +41,7 @@ public class Shunter { int leftPriority = tok.typ.operatorPriority; int rightPriority; + if (curOp == null) { rightPriority = 0; } else { diff --git a/dice-lang/src/bjc/dicelang/expr/Token.java b/dice-lang/src/bjc/dicelang/expr/Token.java index d7fc0e2..1a506bf 100644 --- a/dice-lang/src/bjc/dicelang/expr/Token.java +++ b/dice-lang/src/bjc/dicelang/expr/Token.java @@ -70,18 +70,25 @@ public class Token { switch (typ) { case ADD: return "+"; + case SUBTRACT: return "-"; + case MULTIPLY: return "*"; + case DIVIDE: return "/"; + case VREF: return tks.symbolTable.get(intValue); + case OPAREN: return "("; + case CPAREN: return ")"; + default: return "???"; } diff --git a/dice-lang/src/bjc/dicelang/expr/TokenType.java b/dice-lang/src/bjc/dicelang/expr/TokenType.java index fa20813..d88283e 100644 --- a/dice-lang/src/bjc/dicelang/expr/TokenType.java +++ b/dice-lang/src/bjc/dicelang/expr/TokenType.java @@ -44,11 +44,11 @@ public enum TokenType { /** * Whether or not this type of token is an operator. */ - public final boolean isOperator; + public final boolean isOperator; /** * The priority of this operator, if it is one. */ - public final int operatorPriority; + public final int operatorPriority; private TokenType(final int num, final boolean isOp, final int priority) { nVal = num; |
