From e13a6981bd278c2cfc3b5ecb2517367b117f7a52 Mon Sep 17 00:00:00 2001 From: bculkin2442 Date: Thu, 27 Oct 2016 21:40:28 -0400 Subject: Work on documentation Continued work on documenting how exactly the language works --- dice-lang/lang-desc.md | 2 +- dice-lang/lang-process.md | 62 ++++ .../bjc/dicelang/examples/DiceASTLanguageTest.java | 68 ++++- .../java/bjc/dicelang/examples/DiceASTPragma.java | 2 + .../dicelang/examples/DiceExpressionPreparer.java | 15 +- .../main/java/bjc/dicelang/ast/DiceASTInliner.java | 13 +- dice-lang/tags | 336 +++++++++++++++++++++ 7 files changed, 482 insertions(+), 16 deletions(-) create mode 100644 dice-lang/lang-process.md create mode 100644 dice-lang/tags 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 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 inlinedVariables = pragmaArgs.tail().tail(); + // Actually inline the variable ITree 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> 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 builtAST; + // Time command preparation long time = System.nanoTime(); + // Prepare the command IList 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 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 transformAST( ITree builtAST, IMap> enviroment) { + // Optimize the tree first ITree optimizedTree = optimizer .optimizeTree(builtAST, enviroment); + // Then, condense unnecessary operations ITree condensedTree = OperationCondenser .condense(optimizedTree); + // Next, sanitize references ITree 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 prepareCommand(String currentLine) { + // Prepare a command, turning raw tokens into input for the tree builder + public static IList prepareCommand(String currentLine) { + // Split the command into tokens IList tokens = FunctionalStringTokenizer .fromString(currentLine).toList(); + // The linked list to use for handling tokens Deque> 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 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 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 inlineNode(IDiceASTNode node, IMap> enviroment, boolean specificInline, IList 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 ast, IMap> enviroment, String... variables) { + // If we're selectively inlining, do so if (variables != null && variables.length > 0) { IList 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 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 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 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 actions;$/;" f class:DiceASTLanguageTest file: +acts src/examples/java/bjc/dicelang/examples/DiceLanguageTest.java /^ private static Map> 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> apply($/;" m class:ArithmeticCollapser +arrayContents src/main/java/bjc/dicelang/ast/ArrayResult.java /^ private IList 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 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 collapse($/;" m class:ArithmeticCollapser +combineArrayResults src/main/java/bjc/dicelang/ast/ArithmeticCollapser.java /^ private IList 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 condense(ITree 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 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> 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 doCondense($/;" m class:OperationCondenser file: +doSanitize src/main/java/bjc/dicelang/ast/DiceASTReferenceSanitizer.java /^ private static ITree doSanitize(ITree ast,$/;" m class:DiceASTReferenceSanitizer file: +doSingleSanitize src/main/java/bjc/dicelang/ast/DiceASTReferenceSanitizer.java /^ private static ITree 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 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 expression,$/;" m class:DiceASTEvaluator +evaluateLeaf src/main/java/bjc/dicelang/ast/DiceASTEvaluator.java /^ private static IPair> 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 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 halfCombineLists(IList 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 inlineAll(ITree ast,$/;" m class:DiceASTInliner +inlineNode src/main/java/bjc/dicelang/ast/DiceASTInliner.java /^ private static ITree 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 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 optimizeLeaf(IDiceASTNode leafNode) {$/;" m class:ConstantCollapser +optimizeLeaf src/main/java/bjc/dicelang/ast/optimization/IOptimizationPass.java /^ public ITree optimizeLeaf(IDiceASTNode leafNode);$/;" m interface:IOptimizationPass +optimizeOperator src/main/java/bjc/dicelang/ast/optimization/ConstantCollapser.java /^ public ITree optimizeOperator(IDiceASTNode operator,$/;" m class:ConstantCollapser +optimizeOperator src/main/java/bjc/dicelang/ast/optimization/IOptimizationPass.java /^ public ITree optimizeOperator(IDiceASTNode operator,$/;" m interface:IOptimizationPass +optimizeTree src/main/java/bjc/dicelang/ast/DiceASTOptimizer.java /^ public ITree optimizeTree(ITree 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> parseBinding($/;" m class:DiceASTEvaluator file: +parseCloseArray src/main/java/bjc/dicelang/ast/DiceASTParser.java /^ private static ITree parseCloseArray($/;" m class:DiceASTParser file: +parseGroup src/main/java/bjc/dicelang/ast/DiceASTEvaluator.java /^ private static IPair> parseGroup($/;" m class:DiceASTEvaluator file: +parseLet src/main/java/bjc/dicelang/ast/DiceASTEvaluator.java /^ private static IPair> parseLet($/;" m class:DiceASTEvaluator file: +passes src/main/java/bjc/dicelang/ast/DiceASTOptimizer.java /^ private IList 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 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> reduceStates($/;" m class:ArithmeticCollapser file: +reducer src/main/java/bjc/dicelang/ast/optimization/ArithmeticCollapser.java /^ private BinaryOperator reducer;$/;" f class:ArithmeticCollapser file: +referencesVariable src/main/java/bjc/dicelang/ast/DiceASTReferenceChecker.java /^ private IHolder 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 sanitize(ITree ast,$/;" m class:DiceASTReferenceSanitizer +selectiveInline src/main/java/bjc/dicelang/ast/DiceASTInliner.java /^ public static ITree 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 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 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 yard;$/;" f class:DiceExpressionPreparer file: -- cgit v1.2.3