summaryrefslogtreecommitdiff
path: root/dice-lang/src/main/java/bjc/dicelang/ast/nodes
diff options
context:
space:
mode:
Diffstat (limited to 'dice-lang/src/main/java/bjc/dicelang/ast/nodes')
-rw-r--r--dice-lang/src/main/java/bjc/dicelang/ast/nodes/DiceLiteralNode.java24
-rw-r--r--dice-lang/src/main/java/bjc/dicelang/ast/nodes/ILiteralDiceNode.java16
-rw-r--r--dice-lang/src/main/java/bjc/dicelang/ast/nodes/IntegerLiteralNode.java12
3 files changed, 34 insertions, 18 deletions
diff --git a/dice-lang/src/main/java/bjc/dicelang/ast/nodes/DiceLiteralNode.java b/dice-lang/src/main/java/bjc/dicelang/ast/nodes/DiceLiteralNode.java
index b2e1825..b398ac6 100644
--- a/dice-lang/src/main/java/bjc/dicelang/ast/nodes/DiceLiteralNode.java
+++ b/dice-lang/src/main/java/bjc/dicelang/ast/nodes/DiceLiteralNode.java
@@ -21,12 +21,7 @@ public class DiceLiteralNode implements ILiteralDiceNode {
expression = exp;
}
- /**
- * Check if this node can be optimized to a constant
- *
- * @return Whether or not this node can be optimized to a constant
- * @see bjc.dicelang.IDiceExpression#canOptimize()
- */
+ @Override
public boolean canOptimize() {
return expression.canOptimize();
}
@@ -37,24 +32,19 @@ public class DiceLiteralNode implements ILiteralDiceNode {
}
/**
- * Return a value from the expression being represented
+ * Return the expression being represented
*
- * @return A value from the expression being represented
+ * @return The expression being represented
*/
- public int getValue() {
- return expression.roll();
+ public IDiceExpression getValue() {
+ return expression;
}
- /**
- * Optimize this node to a constant if possible
- *
- * @return This node in constant form if possible
- * @see bjc.dicelang.IDiceExpression#optimize()
- */
+ @Override
public int optimize() {
return expression.optimize();
}
-
+
@Override
public String toString() {
return expression.toString();
diff --git a/dice-lang/src/main/java/bjc/dicelang/ast/nodes/ILiteralDiceNode.java b/dice-lang/src/main/java/bjc/dicelang/ast/nodes/ILiteralDiceNode.java
index b12b516..994a680 100644
--- a/dice-lang/src/main/java/bjc/dicelang/ast/nodes/ILiteralDiceNode.java
+++ b/dice-lang/src/main/java/bjc/dicelang/ast/nodes/ILiteralDiceNode.java
@@ -27,6 +27,22 @@ public interface ILiteralDiceNode extends IDiceASTNode {
DiceLiteralType getLiteralType();
/**
+ * Optimize this node to a constant if possible
+ *
+ * @return This node in constant form if possible
+ * @see bjc.dicelang.IDiceExpression#optimize()
+ */
+ int optimize();
+
+ /**
+ * Check if this node can be optimized to a constant
+ *
+ * @return Whether or not this node can be optimized to a constant
+ * @see bjc.dicelang.IDiceExpression#canOptimize()
+ */
+ boolean canOptimize();
+
+ /**
* Check if a token represents a literal, and if so, what type
*
* @param tok
diff --git a/dice-lang/src/main/java/bjc/dicelang/ast/nodes/IntegerLiteralNode.java b/dice-lang/src/main/java/bjc/dicelang/ast/nodes/IntegerLiteralNode.java
index 0ed2c2c..d25adbc 100644
--- a/dice-lang/src/main/java/bjc/dicelang/ast/nodes/IntegerLiteralNode.java
+++ b/dice-lang/src/main/java/bjc/dicelang/ast/nodes/IntegerLiteralNode.java
@@ -32,9 +32,19 @@ public class IntegerLiteralNode implements ILiteralDiceNode {
public int getValue() {
return value;
}
-
+
@Override
public String toString() {
return Integer.toString(value);
}
+
+ @Override
+ public int optimize() {
+ return value;
+ }
+
+ @Override
+ public boolean canOptimize() {
+ return true;
+ }
}