diff options
| author | bculkin2442 <bjculkin@mix.wvu.edu> | 2016-03-18 19:47:49 -0400 |
|---|---|---|
| committer | bculkin2442 <bjculkin@mix.wvu.edu> | 2016-03-18 19:50:05 -0400 |
| commit | 1bff7e49ed64d74e36d901e84c594cf63b58350b (patch) | |
| tree | 234ee635d36a5a4a26994e07ac2367f87b0cba3a /BJC-Utils2/src/examples | |
| parent | 8ffe41a3575e7d9e4602deeb5f878c4687f4e389 (diff) | |
General changes to the dice package
The biggest change is the addition of variables and assignment
Diffstat (limited to 'BJC-Utils2/src/examples')
3 files changed, 99 insertions, 1 deletions
diff --git a/BJC-Utils2/src/examples/java/bjc/utils/examples/parsing/DiceExpressionParserTest.java b/BJC-Utils2/src/examples/java/bjc/utils/examples/parsing/DiceExpressionParserTest.java index 75f73c6..db26a5c 100644 --- a/BJC-Utils2/src/examples/java/bjc/utils/examples/parsing/DiceExpressionParserTest.java +++ b/BJC-Utils2/src/examples/java/bjc/utils/examples/parsing/DiceExpressionParserTest.java @@ -1,5 +1,6 @@ package bjc.utils.examples.parsing; +import java.util.HashMap; import java.util.Scanner; import bjc.utils.dice.DiceExpressionParser; @@ -43,7 +44,7 @@ public class DiceExpressionParserTest { */ DiceExpressionParser dep = new DiceExpressionParser(); - IDiceExpression dexp = dep.parse(exp); + IDiceExpression dexp = dep.parse(exp, new HashMap<>()); /* * Roll the dice a specified amount of times diff --git a/BJC-Utils2/src/examples/java/bjc/utils/examples/parsing/DiceLanguageState.java b/BJC-Utils2/src/examples/java/bjc/utils/examples/parsing/DiceLanguageState.java new file mode 100644 index 0000000..88c7e50 --- /dev/null +++ b/BJC-Utils2/src/examples/java/bjc/utils/examples/parsing/DiceLanguageState.java @@ -0,0 +1,19 @@ +package bjc.utils.examples.parsing; + +import java.util.Map; + +import bjc.utils.data.Pair; +import bjc.utils.dice.DiceExpressionParser; +import bjc.utils.dice.IDiceExpression; + +public class DiceLanguageState + extends Pair<DiceExpressionParser, Map<String, IDiceExpression>> { + + public DiceLanguageState() { + } + + public DiceLanguageState(DiceExpressionParser left, + Map<String, IDiceExpression> right) { + super(left, right); + } +} diff --git a/BJC-Utils2/src/examples/java/bjc/utils/examples/parsing/DiceLanguageTest.java b/BJC-Utils2/src/examples/java/bjc/utils/examples/parsing/DiceLanguageTest.java new file mode 100644 index 0000000..e8b2d40 --- /dev/null +++ b/BJC-Utils2/src/examples/java/bjc/utils/examples/parsing/DiceLanguageTest.java @@ -0,0 +1,78 @@ +package bjc.utils.examples.parsing; + +import java.util.HashMap; +import java.util.Map; +import java.util.Scanner; +import java.util.function.BiConsumer; + +import bjc.utils.dice.DiceExpressionParser; +import bjc.utils.dice.IDiceExpression; + +public class DiceLanguageTest { + private static Map<String, BiConsumer<String, DiceLanguageState>> acts; + + static { + acts = new HashMap<>(); + + acts.put("roll", DiceLanguageTest::rollReference); + acts.put("env", DiceLanguageTest::printEnv); + } + + public static void printEnv(String ln, DiceLanguageState stat) { + System.out.println("Printing enviroment for debugging purposes."); + + stat.doWith((dep, env) -> env.forEach((key, exp) -> System.out + .println("\tKey: " + key + "\tExp: " + exp.toString()))); + } + + public static void rollReference(String ln, DiceLanguageState stat) { + String[] strangs = ln.split(" "); + + System.out.println("\tRolling dice expression " + strangs[1] + " " + + strangs[2] + " times."); + + int nRolls = Integer.parseInt(strangs[2]); + + IDiceExpression dexp = stat + .merge((dep, env) -> env.get(strangs[1])); + + for (int i = 1; i <= nRolls; i++) { + int roll = dexp.roll(); + + System.out.println("\tRolled " + roll); + } + } + + public static void main(String[] args) { + Scanner scn = new Scanner(System.in); + int i = 0; + + System.out.print("dice-lang-" + i + "> "); + String ln = scn.nextLine(); + + DiceExpressionParser dep = new DiceExpressionParser(); + Map<String, IDiceExpression> env = new HashMap<>(); + DiceLanguageState state = new DiceLanguageState(dep, env); + + while (!ln.equalsIgnoreCase("quit")) { + String header = ln.split(" ")[0]; + + if (acts.containsKey(header)) { + acts.get(header).accept(ln, state); + } else { + IDiceExpression exp = dep.parse(ln, env); + + System.out.println("\tParsed: " + exp.toString()); + System.out.println("\tSample Roll: " + exp.roll()); + } + + i++; + + System.out.print("dice-lang-" + i + "> "); + ln = scn.nextLine(); + } + + System.out.println("Bye."); + scn.close(); + } +} |
