summaryrefslogtreecommitdiff
path: root/dice-lang/src/bjc/dicelang/expr
diff options
context:
space:
mode:
authorBenjamin J. Culkin <bjculkin@mix.wvu.edu>2017-07-23 22:58:58 -0300
committerBenjamin J. Culkin <bjculkin@mix.wvu.edu>2017-07-23 22:58:58 -0300
commitc74cb8eaf454d9243b75e3770001d8d128356b28 (patch)
tree899197afc0b7c382aa37c778053357e0e9b56c26 /dice-lang/src/bjc/dicelang/expr
parent57f9a3bfdad20bead5b35ee540e8790e80a6b9a4 (diff)
Format
Diffstat (limited to 'dice-lang/src/bjc/dicelang/expr')
-rw-r--r--dice-lang/src/bjc/dicelang/expr/Parser.java9
-rw-r--r--dice-lang/src/bjc/dicelang/expr/Shunter.java1
-rw-r--r--dice-lang/src/bjc/dicelang/expr/Token.java7
-rw-r--r--dice-lang/src/bjc/dicelang/expr/TokenType.java4
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;