summaryrefslogtreecommitdiff
path: root/dice-lang
diff options
context:
space:
mode:
authorbculkin2442 <bjculkin@mix.wvu.edu>2016-10-27 21:40:28 -0400
committerbculkin2442 <bjculkin@mix.wvu.edu>2016-10-27 21:40:28 -0400
commite13a6981bd278c2cfc3b5ecb2517367b117f7a52 (patch)
treec6a07aef91b5412a2f345316ccaa2fa8d0972e19 /dice-lang
parentbb27392419549bb40cbc4f194e38f471d2b9f63d (diff)
Work on documentation
Continued work on documenting how exactly the language works
Diffstat (limited to 'dice-lang')
-rw-r--r--dice-lang/lang-desc.md2
-rw-r--r--dice-lang/lang-process.md62
-rw-r--r--dice-lang/src/examples/java/bjc/dicelang/examples/DiceASTLanguageTest.java68
-rw-r--r--dice-lang/src/examples/java/bjc/dicelang/examples/DiceASTPragma.java2
-rw-r--r--dice-lang/src/examples/java/bjc/dicelang/examples/DiceExpressionPreparer.java15
-rw-r--r--dice-lang/src/main/java/bjc/dicelang/ast/DiceASTInliner.java13
-rw-r--r--dice-lang/tags336
7 files changed, 482 insertions, 16 deletions
diff --git a/dice-lang/lang-desc.md b/dice-lang/lang-desc.md
index efa9567..fade9a0 100644
--- a/dice-lang/lang-desc.md
+++ b/dice-lang/lang-desc.md
@@ -14,7 +14,7 @@ You can use it like a 4-function calculator.
2+2*2+2
-> 8
```
-However, we don't support floating point numbers or math
+However, we don't support floating point (numbers or math)
```
1.1
-> ERROR: Floating point literals are not supported
diff --git a/dice-lang/lang-process.md b/dice-lang/lang-process.md
new file mode 100644
index 0000000..3504738
--- /dev/null
+++ b/dice-lang/lang-process.md
@@ -0,0 +1,62 @@
+# Top level reader loop
+First, a command is read in from the user under a prompt
+
+Next, it is checked if the first token of the command (split on " ")
+corresponds to an action name
+* If it does, the corresponding action is executed, and the next command is
+ read
+* If it doesn't, the command is parsed as a language command and executed
+
+This continues until the command "quit" (non case-sensitive) is read
+
+# Known actions
+The currently implemented actions are:
+* env: print out the contents of the enviroment. Takes no arguments
+* inline: inline variables out of the definition of specified variables. Takes
+ at least two arguments
+ * The first is the name of the variable to do inlining in
+ * The second is the name of the variable to bind the inlined expression to
+ * The third and following are the names of the variables to inline in the
+ variable you are inlining
+
+## Details on inlining
+
+
+# Parsing language commands
+Once it is decided to parse a command as a language command, it goes through
+four steps:
+* Preparation
+* AST Building
+* AST Transformation
+* AST Evaluation
+
+# Command preparation
+Command preparation means turning the raw space-seperated tokens into tokens
+suitable for feeding the AST builder. It involves the following steps:
+* The first is operator expansion, which turns a token like 4+4 into the three
+ tokens 4, +, and 4
+* The next is token deaffixation which turns a token like (4 into the tokens (
+ and 4. However, ((4 will become (( 4, not ( ( 4, because (( is a different
+ nesting level than (
+* Next, any blank tokens that have been created as a result of the process are
+ disposed of
+* Finally, the entire expression is shunted, turning it from infix notation to
+ postfix notation. The only real special thing about this is that (( is a
+ different nesting level than (. The token precedence levels are (sorted from
+ lower to higher precedence):
+ * Math precedence
+ * + & -
+ * * & /
+ *
+ * Dice precedence
+ * d
+ * c
+ * Expression precedence
+ * =>
+ * :=
+
+# AST Building
+AST building is a slightly more complex process, as the tree is traversed
+twice: once to build the tree, and then again to convert the tokens from
+strings into data tokens. The only really finicky part about the first tree is
+arrays, because arrays are still in infix form at this point.
diff --git a/dice-lang/src/examples/java/bjc/dicelang/examples/DiceASTLanguageTest.java b/dice-lang/src/examples/java/bjc/dicelang/examples/DiceASTLanguageTest.java
index b331535..fa92fd2 100644
--- a/dice-lang/src/examples/java/bjc/dicelang/examples/DiceASTLanguageTest.java
+++ b/dice-lang/src/examples/java/bjc/dicelang/examples/DiceASTLanguageTest.java
@@ -3,11 +3,11 @@ package bjc.dicelang.examples;
import java.util.InputMismatchException;
import java.util.Scanner;
+import bjc.utils.data.ITree;
import bjc.utils.funcdata.FunctionalMap;
import bjc.utils.funcdata.FunctionalStringTokenizer;
import bjc.utils.funcdata.IList;
import bjc.utils.funcdata.IMap;
-import bjc.utils.funcdata.ITree;
import bjc.dicelang.ast.DiceASTEvaluator;
import bjc.dicelang.ast.DiceASTInliner;
@@ -30,26 +30,33 @@ public class DiceASTLanguageTest {
private static DiceASTOptimizer optimizer;
+ // Set up things that need to be configured
static {
actions = new FunctionalMap<>();
+ // Inline all the variables in a given expression
actions.put("inline", DiceASTLanguageTest::handleInlineAction);
+ // Print out the enviroment
actions.put("env", (tokenizer, enviroment) -> {
enviroment.forEach((varName, varValue) -> {
System.out.println(varName + " is bound to " + varValue);
});
});
-
+
+ // Create and configure the optimizer
optimizer = new DiceASTOptimizer();
optimizer.addPass(new ConstantCollapser());
}
+ // Read in a command
private static String getNextCommand(Scanner inputSource,
int commandNumber) {
+ // Print a prompt using the current command number
System.out.print("\ndice-lang-" + commandNumber + "> ");
+ // Read in the next command
return inputSource.nextLine();
}
@@ -59,24 +66,30 @@ public class DiceASTLanguageTest {
// Skip the pragma name
tokenizer.nextToken();
+ // Get the pragma arguments
IList<String> pragmaArgs = tokenizer.toList();
if (pragmaArgs.getSize() < 3) {
+ // Complain about pragma arguments not being valid
System.err.println(
"ERROR: Inline requires at least 3 parameters. They are:"
+ "\n\t1. The name of the expression to inline."
+ "\n\t2. The name of the variable to bind the result to."
+ "\n\t3 and onwards. Names of variables to inline in the expression.");
} else {
+ // Get arguments
String inlineExpression = pragmaArgs.getByIndex(0);
String variableName = pragmaArgs.getByIndex(1);
+ // Grab the variables we want to inline
IList<String> inlinedVariables = pragmaArgs.tail().tail();
+ // Actually inline the variable
ITree<IDiceASTNode> inlinedExpression = DiceASTInliner
.selectiveInline(enviroment.get(inlineExpression),
enviroment, inlinedVariables);
+ // Stick the inlined variable into the enviroment
enviroment.put(variableName, inlinedExpression);
}
}
@@ -85,39 +98,47 @@ public class DiceASTLanguageTest {
* Main method of class
*
* @param args
- * Unused CLI args
+ * Unused CLI args
*/
public static void main(String[] args) {
+ // Prepare the things we need for input
Scanner inputSource = new Scanner(System.in);
int commandNumber = 0;
- System.out.print("dice-lang-" + commandNumber + "> ");
- String currentLine = inputSource.nextLine();
+ // Grab the initial command
+ String currentLine = getNextCommand(inputSource, commandNumber);
// The enviroment for variables
IMap<String, ITree<IDiceASTNode>> enviroment = new FunctionalMap<>();
+ // Handle commands
while (!currentLine.equalsIgnoreCase("quit")) {
+ // Get the name of a possible action
String possibleActionName = currentLine.split(" ")[0];
+ // Check and see if we're executing an action
if (actions.containsKey(possibleActionName)) {
// Execute action
FunctionalStringTokenizer tokenizer = new FunctionalStringTokenizer(
currentLine);
+ // Execute the action
actions.get(possibleActionName).accept(tokenizer,
enviroment);
+ // Get the next command
currentLine = getNextCommand(inputSource, commandNumber);
continue;
}
- // Build an AST from the string expression
+ // The AST we are going to build
ITree<IDiceASTNode> builtAST;
+ // Time command preparation
long time = System.nanoTime();
+ // Prepare the command
IList<String> preparedTokens = DiceExpressionPreparer
.prepareCommand(currentLine);
@@ -126,8 +147,10 @@ public class DiceASTLanguageTest {
+ " s");
try {
+ // Time the AST creation
time = System.nanoTime();
+ // Create the AST
builtAST = DiceASTParser.createFromString(preparedTokens);
System.out
@@ -138,18 +161,22 @@ public class DiceASTLanguageTest {
+ " s");
} catch (InputMismatchException | IllegalStateException
| UnsupportedOperationException ex) {
- System.out.println("ERROR: " + ex.getLocalizedMessage());
+ // Tell the user there was an error in parsing
+ System.out.println("PARSING ERROR: " + ex.getLocalizedMessage());
+ // Move onto the next command
currentLine = getNextCommand(inputSource, commandNumber);
continue;
}
- // Print out results
+ // Print out parsed AST
System.out.println("\tParsed: " + builtAST.toString());
+ // Time AST transformation
time = System.nanoTime();
+ // Transform the AST
ITree<IDiceASTNode> transformedAST = transformAST(builtAST,
enviroment);
@@ -157,15 +184,17 @@ public class DiceASTLanguageTest {
+ (double) (System.nanoTime() - time) / 1000000000
+ " s");
+ // Print out the transformed AST
System.out
- .println("\tEvaluated: " + transformedAST.toString());
+ .println("\tTransformed: " + transformedAST.toString());
- IResult sampleRoll;
try {
+ // Time the evaluation
time = System.nanoTime();
- sampleRoll = DiceASTEvaluator.evaluateAST(transformedAST,
+ // Evaluate the expression once
+ IResult sampleResult = DiceASTEvaluator.evaluateAST(transformedAST,
enviroment);
System.out
@@ -175,20 +204,27 @@ public class DiceASTLanguageTest {
- time) / 1000000000
+ " s");
+ // Print out the result of evaluating the expression
+ System.out.println("\t\tSample Result: " + sampleResult);
+
+ // Update the 'last' meta-variable
enviroment.put("last", transformedAST);
} catch (UnsupportedOperationException usex) {
- System.out.println("ERROR: " + usex.getLocalizedMessage());
+ // Tell the user there was an error in evaluation
+ System.out.println("EVALUATION ERROR: " + usex.getLocalizedMessage());
+ // Get the next command
currentLine = getNextCommand(inputSource, commandNumber);
+ // Process it
continue;
}
- System.out.println("\t\tSample Roll: " + sampleRoll);
// Increase the number of commands
commandNumber++;
+ // Get the next command
currentLine = getNextCommand(inputSource, commandNumber);
}
@@ -198,20 +234,26 @@ public class DiceASTLanguageTest {
inputSource.close();
}
+ // Transform a parsed AST
private static ITree<IDiceASTNode> transformAST(
ITree<IDiceASTNode> builtAST,
IMap<String, ITree<IDiceASTNode>> enviroment) {
+ // Optimize the tree first
ITree<IDiceASTNode> optimizedTree = optimizer
.optimizeTree(builtAST, enviroment);
+ // Then, condense unnecessary operations
ITree<IDiceASTNode> condensedTree = OperationCondenser
.condense(optimizedTree);
+ // Next, sanitize references
ITree<IDiceASTNode> sanitizedTree = DiceASTReferenceSanitizer
.sanitize(condensedTree, enviroment);
+ // Re-optimize the sanitized & condensed tree
optimizedTree = optimizer.optimizeTree(sanitizedTree, enviroment);
+ // Re-condense the newly optimized tree
condensedTree = OperationCondenser.condense(optimizedTree);
return condensedTree;
diff --git a/dice-lang/src/examples/java/bjc/dicelang/examples/DiceASTPragma.java b/dice-lang/src/examples/java/bjc/dicelang/examples/DiceASTPragma.java
index 87065f1..4900e46 100644
--- a/dice-lang/src/examples/java/bjc/dicelang/examples/DiceASTPragma.java
+++ b/dice-lang/src/examples/java/bjc/dicelang/examples/DiceASTPragma.java
@@ -11,6 +11,8 @@ import bjc.dicelang.ast.nodes.IDiceASTNode;
/**
* Alias for the type of a 'pragma' or special language command
*
+ * To explain it, a pragma is a function that takes a tokenizer with the rest
+ * of the line, and an enviroment that contains variable bindings
* @author ben
*
*/
diff --git a/dice-lang/src/examples/java/bjc/dicelang/examples/DiceExpressionPreparer.java b/dice-lang/src/examples/java/bjc/dicelang/examples/DiceExpressionPreparer.java
index b9b4aab..5488b5d 100644
--- a/dice-lang/src/examples/java/bjc/dicelang/examples/DiceExpressionPreparer.java
+++ b/dice-lang/src/examples/java/bjc/dicelang/examples/DiceExpressionPreparer.java
@@ -26,9 +26,12 @@ public class DiceExpressionPreparer {
private static final int DICE_PREC = 10;
private static final int EXPR_PREC = 0;
+ // Do initialization for all parsers
static {
+ // The shunter we're going to use
yard = new ShuntingYard<>(false);
+ // Configure the shunters operators
// Basic mathematical operators
yard.addOp("+", 0 + MATH_PREC);
yard.addOp("-", 0 + MATH_PREC);
@@ -47,12 +50,16 @@ public class DiceExpressionPreparer {
// to a variable expression
}
- static IList<String> prepareCommand(String currentLine) {
+ // Prepare a command, turning raw tokens into input for the tree builder
+ public static IList<String> prepareCommand(String currentLine) {
+ // Split the command into tokens
IList<String> tokens = FunctionalStringTokenizer
.fromString(currentLine).toList();
+ // The linked list to use for handling tokens
Deque<IPair<String, String>> ops = new LinkedList<>();
+ // Prepare the list for operator expansion
ops.add(new Pair<>("+", "\\+"));
ops.add(new Pair<>("-", "-"));
ops.add(new Pair<>("*", "\\*"));
@@ -60,21 +67,27 @@ public class DiceExpressionPreparer {
ops.add(new Pair<>(":=", ":="));
ops.add(new Pair<>("=>", "=>"));
+ // Expand infix single tokens to multiple infix tokens
IList<String> semiExpandedTokens = ListUtils.splitTokens(tokens,
ops);
+ // Reinitialize the list
ops = new LinkedList<>();
+ // Prepare the list for deaffixation
ops.add(new Pair<>("(", "\\("));
ops.add(new Pair<>(")", "\\)"));
ops.add(new Pair<>("[", "\\["));
ops.add(new Pair<>("]", "\\]"));
+ // Deaffix ('s and ['s from tokens
IList<String> fullyExpandedTokens = ListUtils
.deAffixTokens(semiExpandedTokens, ops);
+ // Remove blank tokens
fullyExpandedTokens.removeIf((strang) -> strang.equals(""));
+ // Shunt the tokens, and hand them back
return yard.postfix(fullyExpandedTokens, (token) -> token);
}
}
diff --git a/dice-lang/src/main/java/bjc/dicelang/ast/DiceASTInliner.java b/dice-lang/src/main/java/bjc/dicelang/ast/DiceASTInliner.java
index 7f5f2d7..305c9af 100644
--- a/dice-lang/src/main/java/bjc/dicelang/ast/DiceASTInliner.java
+++ b/dice-lang/src/main/java/bjc/dicelang/ast/DiceASTInliner.java
@@ -36,33 +36,41 @@ public class DiceASTInliner {
private static ITree<IDiceASTNode> inlineNode(IDiceASTNode node,
IMap<String, ITree<IDiceASTNode>> enviroment,
boolean specificInline, IList<String> variableNames) {
+ // Only variables get inlined
if (node.getType() != DiceASTType.VARIABLE) {
return new Tree<>(node);
}
+ // Get the name of what we're inlining
String variableName = ((VariableDiceNode) node).getVariable();
+ // If we're inlining only certain variables, do so
if (specificInline) {
+ // Only inline the variable if we're supposed to
if (variableNames.contains(variableName)) {
+ // You can't inline non-existent variables
if (!enviroment.containsKey(variableName)) {
throw new UnsupportedOperationException(
"Attempted to inline non-existant variable "
+ variableName);
}
+ // Return the tree for the variable
return enviroment.get(variableName);
}
} else {
+ // You can't inline non-existent variables
if (!enviroment.containsKey(variableName)) {
throw new UnsupportedOperationException(
"Attempted to inline non-existant variable "
+ variableName);
}
+ // Return the tree for the variable
return enviroment.get(variableName);
}
- return new Tree<>(node);
+ // return new Tree<>(node);
}
/**
@@ -99,14 +107,17 @@ public class DiceASTInliner {
ITree<IDiceASTNode> ast,
IMap<String, ITree<IDiceASTNode>> enviroment,
String... variables) {
+ // If we're selectively inlining, do so
if (variables != null && variables.length > 0) {
IList<String> variableNames = new FunctionalList<>(variables);
+ // Selectively inline each tree node
return ast.flatMapTree((node) -> {
return inlineNode(node, enviroment, true, variableNames);
});
}
+ // Inline everything in each node
return ast.flatMapTree((node) -> {
return inlineNode(node, enviroment, false, null);
});
diff --git a/dice-lang/tags b/dice-lang/tags
new file mode 100644
index 0000000..7ccda18
--- /dev/null
+++ b/dice-lang/tags
@@ -0,0 +1,336 @@
+!_TAG_FILE_FORMAT 2 /extended format; --format=1 will not append ;" to lines/
+!_TAG_FILE_SORTED 1 /0=unsorted, 1=sorted, 2=foldcase/
+!_TAG_PROGRAM_AUTHOR Darren Hiebert /dhiebert@users.sourceforge.net/
+!_TAG_PROGRAM_NAME Exuberant Ctags //
+!_TAG_PROGRAM_URL http://ctags.sourceforge.net /official site/
+!_TAG_PROGRAM_VERSION 5.8 //
+ADD src/main/java/bjc/dicelang/DiceExpressionType.java /^ ADD,$/;" e enum:DiceExpressionType file:
+ADD src/main/java/bjc/dicelang/ast/nodes/OperatorDiceNode.java /^ ADD(MATH),$/;" e enum:OperatorDiceNode file:
+ARRAY src/main/java/bjc/dicelang/ast/ResultType.java /^ ARRAY,$/;" e enum:ResultType file:
+ARRAY src/main/java/bjc/dicelang/ast/nodes/DiceOperatorType.java /^ ARRAY,$/;" e enum:DiceOperatorType file:
+ARRAY src/main/java/bjc/dicelang/ast/nodes/OperatorDiceNode.java /^ ARRAY(DiceOperatorType.ARRAY),$/;" e enum:OperatorDiceNode file:
+ASSIGN src/main/java/bjc/dicelang/ast/nodes/OperatorDiceNode.java /^ ASSIGN(EXPRESSION),$/;" e enum:OperatorDiceNode file:
+ArithmeticCollapser src/main/java/bjc/dicelang/ast/ArithmeticCollapser.java /^ public ArithmeticCollapser(OperatorDiceNode type,$/;" m class:ArithmeticCollapser
+ArithmeticCollapser src/main/java/bjc/dicelang/ast/ArithmeticCollapser.java /^final class ArithmeticCollapser implements IOperatorCollapser {$/;" c
+ArithmeticCollapser src/main/java/bjc/dicelang/ast/optimization/ArithmeticCollapser.java /^ public ArithmeticCollapser(BinaryOperator<Integer> reducr,$/;" m class:ArithmeticCollapser
+ArithmeticCollapser src/main/java/bjc/dicelang/ast/optimization/ArithmeticCollapser.java /^class ArithmeticCollapser {$/;" c
+ArrayResult src/main/java/bjc/dicelang/ast/ArrayResult.java /^ public ArrayResult(IList<IResult> results) {$/;" m class:ArrayResult
+ArrayResult src/main/java/bjc/dicelang/ast/ArrayResult.java /^public class ArrayResult implements IResult {$/;" c
+BindingDiceExpression src/main/java/bjc/dicelang/BindingDiceExpression.java /^ public BindingDiceExpression(IDiceExpression left,$/;" m class:BindingDiceExpression
+BindingDiceExpression src/main/java/bjc/dicelang/BindingDiceExpression.java /^ public BindingDiceExpression(String name, IDiceExpression expression,$/;" m class:BindingDiceExpression
+BindingDiceExpression src/main/java/bjc/dicelang/BindingDiceExpression.java /^public class BindingDiceExpression implements IDiceExpression {$/;" c
+COMPOUND src/main/java/bjc/dicelang/ast/nodes/OperatorDiceNode.java /^ COMPOUND(DICE),$/;" e enum:OperatorDiceNode file:
+ComplexDice src/main/java/bjc/dicelang/ComplexDice.java /^ public ComplexDice(IDiceExpression nDce, IDiceExpression de) {$/;" m class:ComplexDice
+ComplexDice src/main/java/bjc/dicelang/ComplexDice.java /^ public ComplexDice(int nSides, int de) {$/;" m class:ComplexDice
+ComplexDice src/main/java/bjc/dicelang/ComplexDice.java /^public class ComplexDice implements IDiceExpression {$/;" c
+CompoundDice src/main/java/bjc/dicelang/CompoundDice.java /^ public CompoundDice(IDiceExpression left, IDiceExpression right) {$/;" m class:CompoundDice
+CompoundDice src/main/java/bjc/dicelang/CompoundDice.java /^ public CompoundDice(String leftExp, String rightExp) {$/;" m class:CompoundDice
+CompoundDice src/main/java/bjc/dicelang/CompoundDice.java /^ public CompoundDice(String[] exps) {$/;" m class:CompoundDice
+CompoundDice src/main/java/bjc/dicelang/CompoundDice.java /^public class CompoundDice implements IDiceExpression {$/;" c
+ConstantCollapser src/main/java/bjc/dicelang/ast/optimization/ConstantCollapser.java /^public class ConstantCollapser implements IOptimizationPass {$/;" c
+DICE src/main/java/bjc/dicelang/ast/nodes/DiceLiteralType.java /^ DICE;$/;" e enum:DiceLiteralType file:
+DICE src/main/java/bjc/dicelang/ast/nodes/DiceOperatorType.java /^ DICE,$/;" e enum:DiceOperatorType file:
+DICE_PREC src/examples/java/bjc/dicelang/examples/DiceExpressionPreparer.java /^ private static final int DICE_PREC = 10;$/;" f class:DiceExpressionPreparer file:
+DIVIDE src/main/java/bjc/dicelang/DiceExpressionType.java /^ DIVIDE,$/;" e enum:DiceExpressionType file:
+DIVIDE src/main/java/bjc/dicelang/ast/nodes/OperatorDiceNode.java /^ DIVIDE(MATH),$/;" e enum:OperatorDiceNode file:
+DUMMY src/main/java/bjc/dicelang/ast/ResultType.java /^ DUMMY$/;" e enum:ResultType file:
+DiceASTEvaluator src/main/java/bjc/dicelang/ast/DiceASTEvaluator.java /^public class DiceASTEvaluator {$/;" c
+DiceASTInliner src/main/java/bjc/dicelang/ast/DiceASTInliner.java /^public class DiceASTInliner {$/;" c
+DiceASTLanguageTest src/examples/java/bjc/dicelang/examples/DiceASTLanguageTest.java /^public class DiceASTLanguageTest {$/;" c
+DiceASTOptimizer src/main/java/bjc/dicelang/ast/DiceASTOptimizer.java /^ public DiceASTOptimizer() {$/;" m class:DiceASTOptimizer
+DiceASTOptimizer src/main/java/bjc/dicelang/ast/DiceASTOptimizer.java /^public class DiceASTOptimizer {$/;" c
+DiceASTParser src/main/java/bjc/dicelang/ast/DiceASTParser.java /^public class DiceASTParser {$/;" c
+DiceASTPragma src/examples/java/bjc/dicelang/examples/DiceASTPragma.java /^public interface DiceASTPragma extends$/;" i
+DiceASTReferenceChecker src/main/java/bjc/dicelang/ast/DiceASTReferenceChecker.java /^ public DiceASTReferenceChecker(IHolder<Boolean> referencesVar,$/;" m class:DiceASTReferenceChecker
+DiceASTReferenceChecker src/main/java/bjc/dicelang/ast/DiceASTReferenceChecker.java /^public final class DiceASTReferenceChecker$/;" c
+DiceASTReferenceSanitizer src/main/java/bjc/dicelang/ast/DiceASTReferenceSanitizer.java /^public class DiceASTReferenceSanitizer {$/;" c
+DiceASTType src/main/java/bjc/dicelang/ast/nodes/DiceASTType.java /^public enum DiceASTType {$/;" g
+DiceASTUtils src/main/java/bjc/dicelang/ast/DiceASTUtils.java /^public class DiceASTUtils {$/;" c
+DiceExpressionBuilder src/main/java/bjc/dicelang/DiceExpressionBuilder.java /^ public DiceExpressionBuilder(IDiceExpression seed) {$/;" m class:DiceExpressionBuilder
+DiceExpressionBuilder src/main/java/bjc/dicelang/DiceExpressionBuilder.java /^ public DiceExpressionBuilder(int nSides, int nDice) {$/;" m class:DiceExpressionBuilder
+DiceExpressionBuilder src/main/java/bjc/dicelang/DiceExpressionBuilder.java /^public class DiceExpressionBuilder {$/;" c
+DiceExpressionParser src/main/java/bjc/dicelang/DiceExpressionParser.java /^public class DiceExpressionParser {$/;" c
+DiceExpressionParserTest src/examples/java/bjc/dicelang/examples/DiceExpressionParserTest.java /^public class DiceExpressionParserTest {$/;" c
+DiceExpressionPreparer src/examples/java/bjc/dicelang/examples/DiceExpressionPreparer.java /^public class DiceExpressionPreparer {$/;" c
+DiceExpressionType src/main/java/bjc/dicelang/DiceExpressionType.java /^public enum DiceExpressionType {$/;" g
+DiceLanguageState src/examples/java/bjc/dicelang/examples/DiceLanguageState.java /^ public DiceLanguageState() {$/;" m class:DiceLanguageState
+DiceLanguageState src/examples/java/bjc/dicelang/examples/DiceLanguageState.java /^ public DiceLanguageState(DiceExpressionParser left,$/;" m class:DiceLanguageState
+DiceLanguageState src/examples/java/bjc/dicelang/examples/DiceLanguageState.java /^public class DiceLanguageState$/;" c
+DiceLanguageTest src/examples/java/bjc/dicelang/examples/DiceLanguageTest.java /^public class DiceLanguageTest {$/;" c
+DiceLiteralNode src/main/java/bjc/dicelang/ast/nodes/DiceLiteralNode.java /^ public DiceLiteralNode(IDiceExpression exp) {$/;" m class:DiceLiteralNode
+DiceLiteralNode src/main/java/bjc/dicelang/ast/nodes/DiceLiteralNode.java /^public class DiceLiteralNode implements ILiteralDiceNode {$/;" c
+DiceLiteralType src/main/java/bjc/dicelang/ast/nodes/DiceLiteralType.java /^public enum DiceLiteralType {$/;" g
+DiceOperatorType src/main/java/bjc/dicelang/ast/nodes/DiceOperatorType.java /^public enum DiceOperatorType {$/;" g
+Die src/main/java/bjc/dicelang/Die.java /^ public Die(int nSides) {$/;" m class:Die
+Die src/main/java/bjc/dicelang/Die.java /^public class Die implements IDiceExpression {$/;" c
+DummyResult src/main/java/bjc/dicelang/ast/DummyResult.java /^ public DummyResult(String data) {$/;" m class:DummyResult
+DummyResult src/main/java/bjc/dicelang/ast/DummyResult.java /^public class DummyResult implements IResult {$/;" c
+EXPRESSION src/main/java/bjc/dicelang/ast/nodes/DiceOperatorType.java /^ EXPRESSION;$/;" e enum:DiceOperatorType file:
+EXPR_PREC src/examples/java/bjc/dicelang/examples/DiceExpressionPreparer.java /^ private static final int EXPR_PREC = 0;$/;" f class:DiceExpressionPreparer file:
+GROUP src/main/java/bjc/dicelang/ast/nodes/OperatorDiceNode.java /^ GROUP(DICE),$/;" e enum:OperatorDiceNode file:
+IDiceASTNode src/main/java/bjc/dicelang/ast/nodes/IDiceASTNode.java /^public interface IDiceASTNode {$/;" i
+IDiceExpression src/main/java/bjc/dicelang/IDiceExpression.java /^public interface IDiceExpression {$/;" i
+ILiteralDiceNode src/main/java/bjc/dicelang/ast/nodes/ILiteralDiceNode.java /^public interface ILiteralDiceNode extends IDiceASTNode {$/;" i
+INTEGER src/main/java/bjc/dicelang/ast/ResultType.java /^ INTEGER,$/;" e enum:ResultType file:
+INTEGER src/main/java/bjc/dicelang/ast/nodes/DiceLiteralType.java /^ INTEGER,$/;" e enum:DiceLiteralType file:
+IOperatorCollapser src/main/java/bjc/dicelang/ast/IOperatorCollapser.java /^public interface IOperatorCollapser extends$/;" i
+IOptimizationPass src/main/java/bjc/dicelang/ast/optimization/IOptimizationPass.java /^public interface IOptimizationPass {$/;" i
+IResult src/main/java/bjc/dicelang/ast/IResult.java /^public interface IResult {$/;" i
+IntegerLiteralNode src/main/java/bjc/dicelang/ast/nodes/IntegerLiteralNode.java /^ public IntegerLiteralNode(int val) {$/;" m class:IntegerLiteralNode
+IntegerLiteralNode src/main/java/bjc/dicelang/ast/nodes/IntegerLiteralNode.java /^public class IntegerLiteralNode implements ILiteralDiceNode {$/;" c
+IntegerResult src/main/java/bjc/dicelang/ast/IntegerResult.java /^ public IntegerResult(int val) {$/;" m class:IntegerResult
+IntegerResult src/main/java/bjc/dicelang/ast/IntegerResult.java /^public class IntegerResult implements IResult {$/;" c
+LET src/main/java/bjc/dicelang/ast/nodes/OperatorDiceNode.java /^ LET(EXPRESSION);$/;" e enum:OperatorDiceNode file:
+LITERAL src/main/java/bjc/dicelang/ast/nodes/DiceASTType.java /^ LITERAL,$/;" e enum:DiceASTType file:
+MATH src/main/java/bjc/dicelang/ast/nodes/DiceOperatorType.java /^ MATH,$/;" e enum:DiceOperatorType file:
+MATH_PREC src/examples/java/bjc/dicelang/examples/DiceExpressionPreparer.java /^ private static final int MATH_PREC = 20;$/;" f class:DiceExpressionPreparer file:
+MULTIPLY src/main/java/bjc/dicelang/DiceExpressionType.java /^ MULTIPLY,$/;" e enum:DiceExpressionType file:
+MULTIPLY src/main/java/bjc/dicelang/ast/nodes/OperatorDiceNode.java /^ MULTIPLY(MATH),$/;" e enum:OperatorDiceNode file:
+OPERATOR src/main/java/bjc/dicelang/ast/nodes/DiceASTType.java /^ OPERATOR,$/;" e enum:DiceASTType file:
+OperationCondenser src/main/java/bjc/dicelang/ast/optimization/OperationCondenser.java /^public class OperationCondenser {$/;" c
+OperatorDiceExpression src/main/java/bjc/dicelang/OperatorDiceExpression.java /^ public OperatorDiceExpression(IDiceExpression right,$/;" m class:OperatorDiceExpression
+OperatorDiceExpression src/main/java/bjc/dicelang/OperatorDiceExpression.java /^public class OperatorDiceExpression implements IDiceExpression {$/;" c
+OperatorDiceNode src/main/java/bjc/dicelang/ast/nodes/OperatorDiceNode.java /^ private OperatorDiceNode(DiceOperatorType ty) {$/;" m class:OperatorDiceNode file:
+OperatorDiceNode src/main/java/bjc/dicelang/ast/nodes/OperatorDiceNode.java /^public enum OperatorDiceNode implements IDiceASTNode {$/;" g
+PolyhedralDice src/main/java/bjc/dicelang/PolyhedralDice.java /^public class PolyhedralDice {$/;" c
+ReferenceDiceExpression src/main/java/bjc/dicelang/ReferenceDiceExpression.java /^ public ReferenceDiceExpression(String name,$/;" m class:ReferenceDiceExpression
+ReferenceDiceExpression src/main/java/bjc/dicelang/ReferenceDiceExpression.java /^public class ReferenceDiceExpression implements IDiceExpression {$/;" c
+ResultType src/main/java/bjc/dicelang/ast/ResultType.java /^public enum ResultType {$/;" g
+SUBTRACT src/main/java/bjc/dicelang/DiceExpressionType.java /^ SUBTRACT;$/;" e enum:DiceExpressionType file:
+SUBTRACT src/main/java/bjc/dicelang/ast/nodes/OperatorDiceNode.java /^ SUBTRACT(MATH),$/;" e enum:OperatorDiceNode file:
+ScalarDie src/main/java/bjc/dicelang/ScalarDie.java /^ public ScalarDie(int num) {$/;" m class:ScalarDie
+ScalarDie src/main/java/bjc/dicelang/ScalarDie.java /^public class ScalarDie implements IDiceExpression {$/;" c
+VARIABLE src/main/java/bjc/dicelang/ast/nodes/DiceASTType.java /^ VARIABLE;$/;" e enum:DiceASTType file:
+VariableDiceNode src/main/java/bjc/dicelang/ast/nodes/VariableDiceNode.java /^ public VariableDiceNode(String varName) {$/;" m class:VariableDiceNode
+VariableDiceNode src/main/java/bjc/dicelang/ast/nodes/VariableDiceNode.java /^public class VariableDiceNode implements IDiceASTNode {$/;" c
+accept src/main/java/bjc/dicelang/ast/DiceASTReferenceChecker.java /^ public void accept(IDiceASTNode astNode) {$/;" m class:DiceASTReferenceChecker
+actions src/examples/java/bjc/dicelang/examples/DiceASTLanguageTest.java /^ private static IMap<String, DiceASTPragma> actions;$/;" f class:DiceASTLanguageTest file:
+acts src/examples/java/bjc/dicelang/examples/DiceLanguageTest.java /^ private static Map<String, BiConsumer<String, DiceLanguageState>> acts;$/;" f class:DiceLanguageTest file:
+add src/main/java/bjc/dicelang/DiceExpressionBuilder.java /^ public DiceExpressionBuilder add(IDiceExpression exp) {$/;" m class:DiceExpressionBuilder
+add src/main/java/bjc/dicelang/DiceExpressionBuilder.java /^ public DiceExpressionBuilder add(int num) {$/;" m class:DiceExpressionBuilder
+addPass src/main/java/bjc/dicelang/ast/DiceASTOptimizer.java /^ public void addPass(IOptimizationPass pass) {$/;" m class:DiceASTOptimizer
+additionCollapser src/main/java/bjc/dicelang/ast/optimization/ConstantCollapser.java /^ private static final ArithmeticCollapser additionCollapser = new ArithmeticCollapser($/;" f class:ConstantCollapser file:
+apply src/main/java/bjc/dicelang/ast/ArithmeticCollapser.java /^ public IPair<IResult, ITree<IDiceASTNode>> apply($/;" m class:ArithmeticCollapser
+arrayContents src/main/java/bjc/dicelang/ast/ArrayResult.java /^ private IList<IResult> arrayContents;$/;" f class:ArrayResult file:
+bake src/main/java/bjc/dicelang/DiceExpressionBuilder.java /^ public IDiceExpression bake() {$/;" m class:DiceExpressionBuilder
+baking src/main/java/bjc/dicelang/DiceExpressionBuilder.java /^ private IDiceExpression baking;$/;" f class:DiceExpressionBuilder file:
+bindLiteralValue src/main/java/bjc/dicelang/ast/DiceASTEvaluator.java /^ private static IResult bindLiteralValue(IDiceASTNode leafNode,$/;" m class:DiceASTEvaluator file:
+bjc.dicelang src/main/java/bjc/dicelang/BindingDiceExpression.java /^package bjc.dicelang;$/;" p
+bjc.dicelang src/main/java/bjc/dicelang/ComplexDice.java /^package bjc.dicelang;$/;" p
+bjc.dicelang src/main/java/bjc/dicelang/CompoundDice.java /^package bjc.dicelang;$/;" p
+bjc.dicelang src/main/java/bjc/dicelang/DiceExpressionBuilder.java /^package bjc.dicelang;$/;" p
+bjc.dicelang src/main/java/bjc/dicelang/DiceExpressionParser.java /^package bjc.dicelang;$/;" p
+bjc.dicelang src/main/java/bjc/dicelang/DiceExpressionType.java /^package bjc.dicelang;$/;" p
+bjc.dicelang src/main/java/bjc/dicelang/Die.java /^package bjc.dicelang;$/;" p
+bjc.dicelang src/main/java/bjc/dicelang/IDiceExpression.java /^package bjc.dicelang;$/;" p
+bjc.dicelang src/main/java/bjc/dicelang/OperatorDiceExpression.java /^package bjc.dicelang;$/;" p
+bjc.dicelang src/main/java/bjc/dicelang/PolyhedralDice.java /^package bjc.dicelang;$/;" p
+bjc.dicelang src/main/java/bjc/dicelang/ReferenceDiceExpression.java /^package bjc.dicelang;$/;" p
+bjc.dicelang src/main/java/bjc/dicelang/ScalarDie.java /^package bjc.dicelang;$/;" p
+bjc.dicelang.ast src/main/java/bjc/dicelang/ast/ArithmeticCollapser.java /^package bjc.dicelang.ast;$/;" p
+bjc.dicelang.ast src/main/java/bjc/dicelang/ast/ArrayResult.java /^package bjc.dicelang.ast;$/;" p
+bjc.dicelang.ast src/main/java/bjc/dicelang/ast/DiceASTEvaluator.java /^package bjc.dicelang.ast;$/;" p
+bjc.dicelang.ast src/main/java/bjc/dicelang/ast/DiceASTInliner.java /^package bjc.dicelang.ast;$/;" p
+bjc.dicelang.ast src/main/java/bjc/dicelang/ast/DiceASTOptimizer.java /^package bjc.dicelang.ast;$/;" p
+bjc.dicelang.ast src/main/java/bjc/dicelang/ast/DiceASTParser.java /^package bjc.dicelang.ast;$/;" p
+bjc.dicelang.ast src/main/java/bjc/dicelang/ast/DiceASTReferenceChecker.java /^package bjc.dicelang.ast;$/;" p
+bjc.dicelang.ast src/main/java/bjc/dicelang/ast/DiceASTReferenceSanitizer.java /^package bjc.dicelang.ast;$/;" p
+bjc.dicelang.ast src/main/java/bjc/dicelang/ast/DiceASTUtils.java /^package bjc.dicelang.ast;$/;" p
+bjc.dicelang.ast src/main/java/bjc/dicelang/ast/DummyResult.java /^package bjc.dicelang.ast;$/;" p
+bjc.dicelang.ast src/main/java/bjc/dicelang/ast/IOperatorCollapser.java /^package bjc.dicelang.ast;$/;" p
+bjc.dicelang.ast src/main/java/bjc/dicelang/ast/IResult.java /^package bjc.dicelang.ast;$/;" p
+bjc.dicelang.ast src/main/java/bjc/dicelang/ast/IntegerResult.java /^package bjc.dicelang.ast;$/;" p
+bjc.dicelang.ast src/main/java/bjc/dicelang/ast/ResultType.java /^package bjc.dicelang.ast;$/;" p
+bjc.dicelang.ast src/main/java/bjc/dicelang/ast/package-info.java /^package bjc.dicelang.ast;/;" p
+bjc.dicelang.ast.nodes src/main/java/bjc/dicelang/ast/nodes/DiceASTType.java /^package bjc.dicelang.ast.nodes;$/;" p
+bjc.dicelang.ast.nodes src/main/java/bjc/dicelang/ast/nodes/DiceLiteralNode.java /^package bjc.dicelang.ast.nodes;$/;" p
+bjc.dicelang.ast.nodes src/main/java/bjc/dicelang/ast/nodes/DiceLiteralType.java /^package bjc.dicelang.ast.nodes;$/;" p
+bjc.dicelang.ast.nodes src/main/java/bjc/dicelang/ast/nodes/DiceOperatorType.java /^package bjc.dicelang.ast.nodes;$/;" p
+bjc.dicelang.ast.nodes src/main/java/bjc/dicelang/ast/nodes/IDiceASTNode.java /^package bjc.dicelang.ast.nodes;$/;" p
+bjc.dicelang.ast.nodes src/main/java/bjc/dicelang/ast/nodes/ILiteralDiceNode.java /^package bjc.dicelang.ast.nodes;$/;" p
+bjc.dicelang.ast.nodes src/main/java/bjc/dicelang/ast/nodes/IntegerLiteralNode.java /^package bjc.dicelang.ast.nodes;$/;" p
+bjc.dicelang.ast.nodes src/main/java/bjc/dicelang/ast/nodes/OperatorDiceNode.java /^package bjc.dicelang.ast.nodes;$/;" p
+bjc.dicelang.ast.nodes src/main/java/bjc/dicelang/ast/nodes/VariableDiceNode.java /^package bjc.dicelang.ast.nodes;$/;" p
+bjc.dicelang.ast.nodes src/main/java/bjc/dicelang/ast/nodes/package-info.java /^package bjc.dicelang.ast.nodes;/;" p
+bjc.dicelang.ast.optimization src/main/java/bjc/dicelang/ast/optimization/ArithmeticCollapser.java /^package bjc.dicelang.ast.optimization;$/;" p
+bjc.dicelang.ast.optimization src/main/java/bjc/dicelang/ast/optimization/ConstantCollapser.java /^package bjc.dicelang.ast.optimization;$/;" p
+bjc.dicelang.ast.optimization src/main/java/bjc/dicelang/ast/optimization/IOptimizationPass.java /^package bjc.dicelang.ast.optimization;$/;" p
+bjc.dicelang.ast.optimization src/main/java/bjc/dicelang/ast/optimization/OperationCondenser.java /^package bjc.dicelang.ast.optimization;$/;" p
+bjc.dicelang.ast.optimization src/main/java/bjc/dicelang/ast/optimization/package-info.java /^package bjc.dicelang.ast.optimization;/;" p
+bjc.dicelang.examples src/examples/java/bjc/dicelang/examples/DiceASTLanguageTest.java /^package bjc.dicelang.examples;$/;" p
+bjc.dicelang.examples src/examples/java/bjc/dicelang/examples/DiceASTPragma.java /^package bjc.dicelang.examples;$/;" p
+bjc.dicelang.examples src/examples/java/bjc/dicelang/examples/DiceExpressionParserTest.java /^package bjc.dicelang.examples;$/;" p
+bjc.dicelang.examples src/examples/java/bjc/dicelang/examples/DiceExpressionPreparer.java /^package bjc.dicelang.examples;$/;" p
+bjc.dicelang.examples src/examples/java/bjc/dicelang/examples/DiceLanguageState.java /^package bjc.dicelang.examples;$/;" p
+bjc.dicelang.examples src/examples/java/bjc/dicelang/examples/DiceLanguageTest.java /^package bjc.dicelang.examples;$/;" p
+buildOperations src/main/java/bjc/dicelang/ast/DiceASTEvaluator.java /^ private static IMap<IDiceASTNode, IOperatorCollapser> buildOperations($/;" m class:DiceASTEvaluator file:
+canOptimize src/main/java/bjc/dicelang/ComplexDice.java /^ public boolean canOptimize() {$/;" m class:ComplexDice
+canOptimize src/main/java/bjc/dicelang/CompoundDice.java /^ public boolean canOptimize() {$/;" m class:CompoundDice
+canOptimize src/main/java/bjc/dicelang/Die.java /^ public boolean canOptimize() {$/;" m class:Die
+canOptimize src/main/java/bjc/dicelang/IDiceExpression.java /^ public default boolean canOptimize() {$/;" m interface:IDiceExpression
+canOptimize src/main/java/bjc/dicelang/ScalarDie.java /^ public boolean canOptimize() {$/;" m class:ScalarDie
+canOptimize src/main/java/bjc/dicelang/ast/nodes/DiceLiteralNode.java /^ public boolean canOptimize() {$/;" m class:DiceLiteralNode
+canOptimize src/main/java/bjc/dicelang/ast/nodes/ILiteralDiceNode.java /^ boolean canOptimize();$/;" m interface:ILiteralDiceNode
+canOptimize src/main/java/bjc/dicelang/ast/nodes/IntegerLiteralNode.java /^ public boolean canOptimize() {$/;" m class:IntegerLiteralNode
+collapse src/main/java/bjc/dicelang/ast/optimization/ArithmeticCollapser.java /^ public ITree<IDiceASTNode> collapse($/;" m class:ArithmeticCollapser
+combineArrayResults src/main/java/bjc/dicelang/ast/ArithmeticCollapser.java /^ private IList<IResult> combineArrayResults(IResult accumulatedValue,$/;" m class:ArithmeticCollapser file:
+compoundCollapser src/main/java/bjc/dicelang/ast/optimization/ConstantCollapser.java /^ private static final ArithmeticCollapser compoundCollapser = new ArithmeticCollapser($/;" f class:ConstantCollapser file:
+condense src/main/java/bjc/dicelang/ast/optimization/OperationCondenser.java /^ public static ITree<IDiceASTNode> condense(ITree<IDiceASTNode> ast) {$/;" m class:OperationCondenser
+containsSimpleVariable src/main/java/bjc/dicelang/ast/DiceASTUtils.java /^ public static boolean containsSimpleVariable($/;" m class:DiceASTUtils
+convertLeafNode src/main/java/bjc/dicelang/ast/DiceASTParser.java /^ private static IDiceASTNode convertLeafNode(String leafNode) {$/;" m class:DiceASTParser file:
+convertOperatorNode src/main/java/bjc/dicelang/ast/DiceASTParser.java /^ private static IDiceASTNode convertOperatorNode(String operatorNode) {$/;" m class:DiceASTParser file:
+createFromString src/main/java/bjc/dicelang/ast/DiceASTParser.java /^ public static ITree<IDiceASTNode> createFromString($/;" m class:DiceASTParser
+d10 src/main/java/bjc/dicelang/PolyhedralDice.java /^ public static IDiceExpression d10() {$/;" m class:PolyhedralDice
+d10 src/main/java/bjc/dicelang/PolyhedralDice.java /^ public static IDiceExpression d10(int nDice) {$/;" m class:PolyhedralDice
+d100 src/main/java/bjc/dicelang/PolyhedralDice.java /^ public static IDiceExpression d100() {$/;" m class:PolyhedralDice
+d100 src/main/java/bjc/dicelang/PolyhedralDice.java /^ public static IDiceExpression d100(int nDice) {$/;" m class:PolyhedralDice
+d12 src/main/java/bjc/dicelang/PolyhedralDice.java /^ public static IDiceExpression d12() {$/;" m class:PolyhedralDice
+d12 src/main/java/bjc/dicelang/PolyhedralDice.java /^ public static IDiceExpression d12(int nDice) {$/;" m class:PolyhedralDice
+d20 src/main/java/bjc/dicelang/PolyhedralDice.java /^ public static IDiceExpression d20() {$/;" m class:PolyhedralDice
+d20 src/main/java/bjc/dicelang/PolyhedralDice.java /^ public static IDiceExpression d20(int nDice) {$/;" m class:PolyhedralDice
+d4 src/main/java/bjc/dicelang/PolyhedralDice.java /^ public static IDiceExpression d4() {$/;" m class:PolyhedralDice
+d4 src/main/java/bjc/dicelang/PolyhedralDice.java /^ public static IDiceExpression d4(int nDice) {$/;" m class:PolyhedralDice
+d6 src/main/java/bjc/dicelang/PolyhedralDice.java /^ public static IDiceExpression d6() {$/;" m class:PolyhedralDice
+d6 src/main/java/bjc/dicelang/PolyhedralDice.java /^ public static IDiceExpression d6(int nDice) {$/;" m class:PolyhedralDice
+d8 src/main/java/bjc/dicelang/PolyhedralDice.java /^ public static IDiceExpression d8() {$/;" m class:PolyhedralDice
+d8 src/main/java/bjc/dicelang/PolyhedralDice.java /^ public static IDiceExpression d8(int nDice) {$/;" m class:PolyhedralDice
+die src/main/java/bjc/dicelang/ComplexDice.java /^ private IDiceExpression die;$/;" f class:ComplexDice file:
+divide src/main/java/bjc/dicelang/DiceExpressionBuilder.java /^ public DiceExpressionBuilder divide(IDiceExpression exp) {$/;" m class:DiceExpressionBuilder
+divide src/main/java/bjc/dicelang/DiceExpressionBuilder.java /^ public DiceExpressionBuilder divide(int num) {$/;" m class:DiceExpressionBuilder
+divideCollapser src/main/java/bjc/dicelang/ast/optimization/ConstantCollapser.java /^ private static final ArithmeticCollapser divideCollapser = new ArithmeticCollapser($/;" f class:ConstantCollapser file:
+doArithmeticCollapse src/main/java/bjc/dicelang/ast/ArithmeticCollapser.java /^ private IPair<IResult, ITree<IDiceASTNode>> doArithmeticCollapse($/;" m class:ArithmeticCollapser file:
+doArrayAssign src/main/java/bjc/dicelang/ast/DiceASTEvaluator.java /^ private static void doArrayAssign($/;" m class:DiceASTEvaluator file:
+doCondense src/main/java/bjc/dicelang/ast/optimization/OperationCondenser.java /^ private static ITree<IDiceASTNode> doCondense($/;" m class:OperationCondenser file:
+doSanitize src/main/java/bjc/dicelang/ast/DiceASTReferenceSanitizer.java /^ private static ITree<IDiceASTNode> doSanitize(ITree<IDiceASTNode> ast,$/;" m class:DiceASTReferenceSanitizer file:
+doSingleSanitize src/main/java/bjc/dicelang/ast/DiceASTReferenceSanitizer.java /^ private static ITree<IDiceASTNode> doSingleSanitize($/;" m class:DiceASTReferenceSanitizer file:
+dummyData src/main/java/bjc/dicelang/ast/DummyResult.java /^ private String dummyData;$/;" f class:DummyResult file:
+enviroment src/main/java/bjc/dicelang/ReferenceDiceExpression.java /^ private Map<String, IDiceExpression> enviroment;$/;" f class:ReferenceDiceExpression file:
+equals src/main/java/bjc/dicelang/ast/nodes/VariableDiceNode.java /^ public boolean equals(Object obj) {$/;" m class:VariableDiceNode
+evaluateAST src/main/java/bjc/dicelang/ast/DiceASTEvaluator.java /^ public static IResult evaluateAST(ITree<IDiceASTNode> expression,$/;" m class:DiceASTEvaluator
+evaluateLeaf src/main/java/bjc/dicelang/ast/DiceASTEvaluator.java /^ private static IPair<IResult, ITree<IDiceASTNode>> evaluateLeaf($/;" m class:DiceASTEvaluator file:
+evaluateLiteral src/main/java/bjc/dicelang/ast/DiceASTEvaluator.java /^ private static IResult evaluateLiteral(IDiceASTNode leafNode) {$/;" m class:DiceASTEvaluator file:
+expression src/main/java/bjc/dicelang/BindingDiceExpression.java /^ private IDiceExpression expression;$/;" f class:BindingDiceExpression file:
+expression src/main/java/bjc/dicelang/ast/nodes/DiceLiteralNode.java /^ private IDiceExpression expression;$/;" f class:DiceLiteralNode file:
+expressionType src/main/java/bjc/dicelang/OperatorDiceExpression.java /^ private DiceExpressionType expressionType;$/;" f class:OperatorDiceExpression file:
+fromString src/main/java/bjc/dicelang/ComplexDice.java /^ public static IDiceExpression fromString(String expression) {$/;" m class:ComplexDice
+fromString src/main/java/bjc/dicelang/ast/nodes/OperatorDiceNode.java /^ public static OperatorDiceNode fromString(String s) {$/;" m class:OperatorDiceNode
+getData src/main/java/bjc/dicelang/ast/DummyResult.java /^ public String getData() {$/;" m class:DummyResult
+getLiteralType src/main/java/bjc/dicelang/ast/nodes/DiceLiteralNode.java /^ public DiceLiteralType getLiteralType() {$/;" m class:DiceLiteralNode
+getLiteralType src/main/java/bjc/dicelang/ast/nodes/ILiteralDiceNode.java /^ DiceLiteralType getLiteralType();$/;" m interface:ILiteralDiceNode
+getLiteralType src/main/java/bjc/dicelang/ast/nodes/ILiteralDiceNode.java /^ static DiceLiteralType getLiteralType(String tok) {$/;" m interface:ILiteralDiceNode
+getLiteralType src/main/java/bjc/dicelang/ast/nodes/IntegerLiteralNode.java /^ public DiceLiteralType getLiteralType() {$/;" m class:IntegerLiteralNode
+getName src/main/java/bjc/dicelang/ReferenceDiceExpression.java /^ public String getName() {$/;" m class:ReferenceDiceExpression
+getNextCommand src/examples/java/bjc/dicelang/examples/DiceASTLanguageTest.java /^ private static String getNextCommand(Scanner inputSource,$/;" m class:DiceASTLanguageTest file:
+getType src/main/java/bjc/dicelang/ast/ArrayResult.java /^ public ResultType getType() {$/;" m class:ArrayResult
+getType src/main/java/bjc/dicelang/ast/DummyResult.java /^ public ResultType getType() {$/;" m class:DummyResult
+getType src/main/java/bjc/dicelang/ast/IResult.java /^ public ResultType getType();$/;" m interface:IResult
+getType src/main/java/bjc/dicelang/ast/IntegerResult.java /^ public ResultType getType() {$/;" m class:IntegerResult
+getType src/main/java/bjc/dicelang/ast/nodes/IDiceASTNode.java /^ public DiceASTType getType();$/;" m interface:IDiceASTNode
+getType src/main/java/bjc/dicelang/ast/nodes/ILiteralDiceNode.java /^ default DiceASTType getType() {$/;" m interface:ILiteralDiceNode
+getType src/main/java/bjc/dicelang/ast/nodes/OperatorDiceNode.java /^ public DiceASTType getType() {$/;" m class:OperatorDiceNode
+getType src/main/java/bjc/dicelang/ast/nodes/VariableDiceNode.java /^ public DiceASTType getType() {$/;" m class:VariableDiceNode
+getValue src/main/java/bjc/dicelang/ast/ArrayResult.java /^ public IList<IResult> getValue() {$/;" m class:ArrayResult
+getValue src/main/java/bjc/dicelang/ast/IntegerResult.java /^ public int getValue() {$/;" m class:IntegerResult
+getValue src/main/java/bjc/dicelang/ast/nodes/DiceLiteralNode.java /^ public IDiceExpression getValue() {$/;" m class:DiceLiteralNode
+getValue src/main/java/bjc/dicelang/ast/nodes/IntegerLiteralNode.java /^ public int getValue() {$/;" m class:IntegerLiteralNode
+getVariable src/main/java/bjc/dicelang/ast/nodes/VariableDiceNode.java /^ public String getVariable() {$/;" m class:VariableDiceNode
+halfCombineLists src/main/java/bjc/dicelang/ast/ArithmeticCollapser.java /^ private IList<IResult> halfCombineLists(IList<IResult> list,$/;" m class:ArithmeticCollapser file:
+handleInlineAction src/examples/java/bjc/dicelang/examples/DiceASTLanguageTest.java /^ private static void handleInlineAction($/;" m class:DiceASTLanguageTest file:
+hashCode src/main/java/bjc/dicelang/ast/nodes/VariableDiceNode.java /^ public int hashCode() {$/;" m class:VariableDiceNode
+initialValue src/main/java/bjc/dicelang/ast/ArithmeticCollapser.java /^ private int initialValue;$/;" f class:ArithmeticCollapser file:
+initialize src/main/java/bjc/dicelang/BindingDiceExpression.java /^ private void initialize(String name, IDiceExpression expr,$/;" m class:BindingDiceExpression file:
+inlineAll src/main/java/bjc/dicelang/ast/DiceASTInliner.java /^ public static ITree<IDiceASTNode> inlineAll(ITree<IDiceASTNode> ast,$/;" m class:DiceASTInliner
+inlineNode src/main/java/bjc/dicelang/ast/DiceASTInliner.java /^ private static ITree<IDiceASTNode> inlineNode(IDiceASTNode node,$/;" m class:DiceASTInliner file:
+isDirectReference src/main/java/bjc/dicelang/ast/DiceASTReferenceChecker.java /^ private boolean isDirectReference(IDiceASTNode astNode) {$/;" m class:DiceASTReferenceChecker file:
+isOperator src/main/java/bjc/dicelang/ast/nodes/IDiceASTNode.java /^ public boolean isOperator();$/;" m interface:IDiceASTNode
+isOperator src/main/java/bjc/dicelang/ast/nodes/ILiteralDiceNode.java /^ default boolean isOperator() {$/;" m interface:ILiteralDiceNode
+isOperator src/main/java/bjc/dicelang/ast/nodes/OperatorDiceNode.java /^ public boolean isOperator() {$/;" m class:OperatorDiceNode
+isOperator src/main/java/bjc/dicelang/ast/nodes/VariableDiceNode.java /^ public boolean isOperator() {$/;" m class:VariableDiceNode
+isOperatorNode src/main/java/bjc/dicelang/ast/DiceASTParser.java /^ private static boolean isOperatorNode(String token) {$/;" m class:DiceASTParser file:
+leftDice src/main/java/bjc/dicelang/CompoundDice.java /^ private IDiceExpression leftDice;$/;" f class:CompoundDice file:
+leftExpression src/main/java/bjc/dicelang/OperatorDiceExpression.java /^ private IDiceExpression leftExpression;$/;" f class:OperatorDiceExpression file:
+literalToExpression src/main/java/bjc/dicelang/ast/DiceASTUtils.java /^ public static IDiceExpression literalToExpression($/;" m class:DiceASTUtils
+literalToInteger src/main/java/bjc/dicelang/ast/DiceASTUtils.java /^ public static int literalToInteger(ITree<IDiceASTNode> tree) {$/;" m class:DiceASTUtils
+main src/examples/java/bjc/dicelang/examples/DiceASTLanguageTest.java /^ public static void main(String[] args) {$/;" m class:DiceASTLanguageTest
+main src/examples/java/bjc/dicelang/examples/DiceExpressionParserTest.java /^ public static void main(String[] args) {$/;" m class:DiceExpressionParserTest
+main src/examples/java/bjc/dicelang/examples/DiceLanguageTest.java /^ public static void main(String[] args) {$/;" m class:DiceLanguageTest
+multiply src/main/java/bjc/dicelang/DiceExpressionBuilder.java /^ public DiceExpressionBuilder multiply(IDiceExpression exp) {$/;" m class:DiceExpressionBuilder
+multiply src/main/java/bjc/dicelang/DiceExpressionBuilder.java /^ public DiceExpressionBuilder multiply(int num) {$/;" m class:DiceExpressionBuilder
+multiplyCollapser src/main/java/bjc/dicelang/ast/optimization/ConstantCollapser.java /^ private static final ArithmeticCollapser multiplyCollapser = new ArithmeticCollapser($/;" f class:ConstantCollapser file:
+nDice src/main/java/bjc/dicelang/ComplexDice.java /^ private IDiceExpression nDice;$/;" f class:ComplexDice file:
+nSides src/main/java/bjc/dicelang/Die.java /^ private int nSides;$/;" f class:Die file:
+number src/main/java/bjc/dicelang/ScalarDie.java /^ private int number;$/;" f class:ScalarDie file:
+optimize src/main/java/bjc/dicelang/ComplexDice.java /^ public int optimize() {$/;" m class:ComplexDice
+optimize src/main/java/bjc/dicelang/CompoundDice.java /^ public int optimize() {$/;" m class:CompoundDice
+optimize src/main/java/bjc/dicelang/Die.java /^ public int optimize() {$/;" m class:Die
+optimize src/main/java/bjc/dicelang/IDiceExpression.java /^ public default int optimize() {$/;" m interface:IDiceExpression
+optimize src/main/java/bjc/dicelang/ScalarDie.java /^ public int optimize() {$/;" m class:ScalarDie
+optimize src/main/java/bjc/dicelang/ast/nodes/DiceLiteralNode.java /^ public int optimize() {$/;" m class:DiceLiteralNode
+optimize src/main/java/bjc/dicelang/ast/nodes/ILiteralDiceNode.java /^ int optimize();$/;" m interface:ILiteralDiceNode
+optimize src/main/java/bjc/dicelang/ast/nodes/IntegerLiteralNode.java /^ public int optimize() {$/;" m class:IntegerLiteralNode
+optimizeLeaf src/main/java/bjc/dicelang/ast/optimization/ConstantCollapser.java /^ public ITree<IDiceASTNode> optimizeLeaf(IDiceASTNode leafNode) {$/;" m class:ConstantCollapser
+optimizeLeaf src/main/java/bjc/dicelang/ast/optimization/IOptimizationPass.java /^ public ITree<IDiceASTNode> optimizeLeaf(IDiceASTNode leafNode);$/;" m interface:IOptimizationPass
+optimizeOperator src/main/java/bjc/dicelang/ast/optimization/ConstantCollapser.java /^ public ITree<IDiceASTNode> optimizeOperator(IDiceASTNode operator,$/;" m class:ConstantCollapser
+optimizeOperator src/main/java/bjc/dicelang/ast/optimization/IOptimizationPass.java /^ public ITree<IDiceASTNode> optimizeOperator(IDiceASTNode operator,$/;" m interface:IOptimizationPass
+optimizeTree src/main/java/bjc/dicelang/ast/DiceASTOptimizer.java /^ public ITree<IDiceASTNode> optimizeTree(ITree<IDiceASTNode> ast,$/;" m class:DiceASTOptimizer
+optimizer src/examples/java/bjc/dicelang/examples/DiceASTLanguageTest.java /^ private static DiceASTOptimizer optimizer;$/;" f class:DiceASTLanguageTest file:
+parse src/main/java/bjc/dicelang/DiceExpressionParser.java /^ public static IDiceExpression parse(String expression,$/;" m class:DiceExpressionParser
+parseBinding src/main/java/bjc/dicelang/ast/DiceASTEvaluator.java /^ private static IPair<IResult, ITree<IDiceASTNode>> parseBinding($/;" m class:DiceASTEvaluator file:
+parseCloseArray src/main/java/bjc/dicelang/ast/DiceASTParser.java /^ private static ITree<String> parseCloseArray($/;" m class:DiceASTParser file:
+parseGroup src/main/java/bjc/dicelang/ast/DiceASTEvaluator.java /^ private static IPair<IResult, ITree<IDiceASTNode>> parseGroup($/;" m class:DiceASTEvaluator file:
+parseLet src/main/java/bjc/dicelang/ast/DiceASTEvaluator.java /^ private static IPair<IResult, ITree<IDiceASTNode>> parseLet($/;" m class:DiceASTEvaluator file:
+passes src/main/java/bjc/dicelang/ast/DiceASTOptimizer.java /^ private IList<IOptimizationPass> passes;$/;" f class:DiceASTOptimizer file:
+pickNode src/main/java/bjc/dicelang/ast/optimization/OperationCondenser.java /^ private static TopDownTransformResult pickNode(IDiceASTNode node) {$/;" m class:OperationCondenser file:
+pickOperator src/main/java/bjc/dicelang/ast/optimization/OperationCondenser.java /^ private static TopDownTransformResult pickOperator($/;" m class:OperationCondenser file:
+prepareCommand src/examples/java/bjc/dicelang/examples/DiceExpressionPreparer.java /^ static IList<String> prepareCommand(String currentLine) {$/;" m class:DiceExpressionPreparer
+printEnv src/examples/java/bjc/dicelang/examples/DiceLanguageTest.java /^ private static void printEnv(String ln, DiceLanguageState stat) {$/;" m class:DiceLanguageTest file:
+reduceStates src/main/java/bjc/dicelang/ast/ArithmeticCollapser.java /^ private IPair<IResult, ITree<IDiceASTNode>> reduceStates($/;" m class:ArithmeticCollapser file:
+reducer src/main/java/bjc/dicelang/ast/optimization/ArithmeticCollapser.java /^ private BinaryOperator<Integer> reducer;$/;" f class:ArithmeticCollapser file:
+referencesVariable src/main/java/bjc/dicelang/ast/DiceASTReferenceChecker.java /^ private IHolder<Boolean> referencesVariable;$/;" f class:DiceASTReferenceChecker file:
+rightDice src/main/java/bjc/dicelang/CompoundDice.java /^ private IDiceExpression rightDice;$/;" f class:CompoundDice file:
+rightExpression src/main/java/bjc/dicelang/OperatorDiceExpression.java /^ private IDiceExpression rightExpression;$/;" f class:OperatorDiceExpression file:
+rng src/main/java/bjc/dicelang/Die.java /^ private static Random rng = new Random();$/;" f class:Die file:
+roll src/main/java/bjc/dicelang/BindingDiceExpression.java /^ public int roll() {$/;" m class:BindingDiceExpression
+roll src/main/java/bjc/dicelang/ComplexDice.java /^ public int roll() {$/;" m class:ComplexDice
+roll src/main/java/bjc/dicelang/CompoundDice.java /^ public int roll() {$/;" m class:CompoundDice
+roll src/main/java/bjc/dicelang/Die.java /^ public int roll() {$/;" m class:Die
+roll src/main/java/bjc/dicelang/IDiceExpression.java /^ public int roll();$/;" m interface:IDiceExpression
+roll src/main/java/bjc/dicelang/OperatorDiceExpression.java /^ public int roll() {$/;" m class:OperatorDiceExpression
+roll src/main/java/bjc/dicelang/ReferenceDiceExpression.java /^ public int roll() {$/;" m class:ReferenceDiceExpression
+roll src/main/java/bjc/dicelang/ScalarDie.java /^ public int roll() {$/;" m class:ScalarDie
+rollReference src/examples/java/bjc/dicelang/examples/DiceLanguageTest.java /^ private static void rollReference(String ln, DiceLanguageState stat) {$/;" m class:DiceLanguageTest file:
+sanitize src/main/java/bjc/dicelang/ast/DiceASTReferenceSanitizer.java /^ public static ITree<IDiceASTNode> sanitize(ITree<IDiceASTNode> ast,$/;" m class:DiceASTReferenceSanitizer
+selectiveInline src/main/java/bjc/dicelang/ast/DiceASTInliner.java /^ public static ITree<IDiceASTNode> selectiveInline($/;" m class:DiceASTInliner
+shouldContinuePopping src/main/java/bjc/dicelang/ast/DiceASTParser.java /^ private static boolean shouldContinuePopping($/;" m class:DiceASTParser file:
+shouldSanitize src/main/java/bjc/dicelang/ast/DiceASTReferenceSanitizer.java /^ private static TopDownTransformResult shouldSanitize($/;" m class:DiceASTReferenceSanitizer file:
+subtract src/main/java/bjc/dicelang/DiceExpressionBuilder.java /^ public DiceExpressionBuilder subtract(IDiceExpression exp) {$/;" m class:DiceExpressionBuilder
+subtract src/main/java/bjc/dicelang/DiceExpressionBuilder.java /^ public DiceExpressionBuilder subtract(int num) {$/;" m class:DiceExpressionBuilder
+subtractCollapser src/main/java/bjc/dicelang/ast/optimization/ConstantCollapser.java /^ private static final ArithmeticCollapser subtractCollapser = new ArithmeticCollapser($/;" f class:ConstantCollapser file:
+toExpression src/main/java/bjc/dicelang/IDiceExpression.java /^ static IDiceExpression toExpression(String expression) {$/;" m interface:IDiceExpression
+toString src/main/java/bjc/dicelang/BindingDiceExpression.java /^ public String toString() {$/;" m class:BindingDiceExpression
+toString src/main/java/bjc/dicelang/ComplexDice.java /^ public String toString() {$/;" m class:ComplexDice
+toString src/main/java/bjc/dicelang/CompoundDice.java /^ public String toString() {$/;" m class:CompoundDice
+toString src/main/java/bjc/dicelang/DiceExpressionType.java /^ public String toString() {$/;" m class:DiceExpressionType
+toString src/main/java/bjc/dicelang/Die.java /^ public String toString() {$/;" m class:Die
+toString src/main/java/bjc/dicelang/OperatorDiceExpression.java /^ public String toString() {$/;" m class:OperatorDiceExpression
+toString src/main/java/bjc/dicelang/ReferenceDiceExpression.java /^ public String toString() {$/;" m class:ReferenceDiceExpression
+toString src/main/java/bjc/dicelang/ScalarDie.java /^ public String toString() {$/;" m class:ScalarDie
+toString src/main/java/bjc/dicelang/ast/ArrayResult.java /^ public String toString() {$/;" m class:ArrayResult
+toString src/main/java/bjc/dicelang/ast/DummyResult.java /^ public String toString() {$/;" m class:DummyResult
+toString src/main/java/bjc/dicelang/ast/IntegerResult.java /^ public String toString() {$/;" m class:IntegerResult
+toString src/main/java/bjc/dicelang/ast/nodes/DiceASTType.java /^ public String toString() {$/;" m class:DiceASTType
+toString src/main/java/bjc/dicelang/ast/nodes/DiceLiteralNode.java /^ public String toString() {$/;" m class:DiceLiteralNode
+toString src/main/java/bjc/dicelang/ast/nodes/IntegerLiteralNode.java /^ public String toString() {$/;" m class:IntegerLiteralNode
+toString src/main/java/bjc/dicelang/ast/nodes/VariableDiceNode.java /^ public String toString() {$/;" m class:VariableDiceNode
+transformAST src/examples/java/bjc/dicelang/examples/DiceASTLanguageTest.java /^ private static ITree<IDiceASTNode> transformAST($/;" m class:DiceASTLanguageTest file:
+type src/main/java/bjc/dicelang/ast/ArithmeticCollapser.java /^ private OperatorDiceNode type;$/;" f class:ArithmeticCollapser file:
+type src/main/java/bjc/dicelang/ast/nodes/OperatorDiceNode.java /^ public final DiceOperatorType type;$/;" f class:OperatorDiceNode
+type src/main/java/bjc/dicelang/ast/optimization/ArithmeticCollapser.java /^ private OperatorDiceNode type;$/;" f class:ArithmeticCollapser file:
+value src/main/java/bjc/dicelang/ast/IntegerResult.java /^ private int value;$/;" f class:IntegerResult file:
+value src/main/java/bjc/dicelang/ast/nodes/IntegerLiteralNode.java /^ private int value;$/;" f class:IntegerLiteralNode file:
+valueOp src/main/java/bjc/dicelang/ast/ArithmeticCollapser.java /^ private BinaryOperator<Integer> valueOp;$/;" f class:ArithmeticCollapser file:
+varName src/main/java/bjc/dicelang/ast/DiceASTReferenceChecker.java /^ private String varName;$/;" f class:DiceASTReferenceChecker file:
+variableName src/main/java/bjc/dicelang/BindingDiceExpression.java /^ private String variableName;$/;" f class:BindingDiceExpression file:
+variableName src/main/java/bjc/dicelang/ReferenceDiceExpression.java /^ private String variableName;$/;" f class:ReferenceDiceExpression file:
+variableName src/main/java/bjc/dicelang/ast/nodes/VariableDiceNode.java /^ private String variableName;$/;" f class:VariableDiceNode file:
+yard src/examples/java/bjc/dicelang/examples/DiceExpressionPreparer.java /^ private static ShuntingYard<String> yard;$/;" f class:DiceExpressionPreparer file: