summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--BJC-Utils2/src/examples/java/bjc/utils/examples/ShuntTester.java26
-rw-r--r--BJC-Utils2/src/examples/java/bjc/utils/examples/TreeConstructTest.java47
2 files changed, 73 insertions, 0 deletions
diff --git a/BJC-Utils2/src/examples/java/bjc/utils/examples/ShuntTester.java b/BJC-Utils2/src/examples/java/bjc/utils/examples/ShuntTester.java
new file mode 100644
index 0000000..b1d8487
--- /dev/null
+++ b/BJC-Utils2/src/examples/java/bjc/utils/examples/ShuntTester.java
@@ -0,0 +1,26 @@
+package bjc.utils.examples;
+
+import java.util.Scanner;
+
+import bjc.utils.funcdata.FunctionalList;
+import bjc.utils.funcdata.FunctionalStringTokenizer;
+import bjc.utils.parserutils.ShuntingYard;
+
+public class ShuntTester {
+ public static void main(String[] args) {
+ Scanner scn = new Scanner(System.in);
+
+ System.out.print("Enter a expression to shunt: ");
+ String ln = scn.nextLine();
+
+ ShuntingYard<String> yard = new ShuntingYard<>();
+
+ FunctionalList<String> ls = yard.postfix(
+ new FunctionalStringTokenizer(ln).toList((s) -> s),
+ (s) -> s);
+
+ System.out.println(ls.toString());
+
+ scn.close();
+ }
+}
diff --git a/BJC-Utils2/src/examples/java/bjc/utils/examples/TreeConstructTest.java b/BJC-Utils2/src/examples/java/bjc/utils/examples/TreeConstructTest.java
new file mode 100644
index 0000000..1c5c9b2
--- /dev/null
+++ b/BJC-Utils2/src/examples/java/bjc/utils/examples/TreeConstructTest.java
@@ -0,0 +1,47 @@
+package bjc.utils.examples;
+
+import java.util.Scanner;
+import java.util.function.Predicate;
+
+import bjc.utils.funcdata.FunctionalList;
+import bjc.utils.funcdata.FunctionalStringTokenizer;
+import bjc.utils.parserutils.AST;
+import bjc.utils.parserutils.ShuntingYard;
+import bjc.utils.parserutils.TreeConstructor;
+
+public class TreeConstructTest {
+ public static void main(String[] args) {
+ Scanner scn = new Scanner(System.in);
+
+ System.out.print("Enter a expression to parse: ");
+ String ln = scn.nextLine();
+
+ ShuntingYard<String> yard = new ShuntingYard<>();
+
+ FunctionalList<String> ls = yard.postfix(
+ new FunctionalStringTokenizer(ln).toList((s) -> s),
+ (s) -> s);
+
+ System.out.println("Shunted: " + ls.toString());
+
+ AST<String> ast = TreeConstructor.constructTree(ls,
+ new Predicate<String>() {
+ @Override
+ public boolean test(String tok) {
+ switch (tok) {
+ case "+":
+ case "-":
+ case "*":
+ case "/":
+ return true;
+ default:
+ return false;
+ }
+ }
+ });
+
+ System.out.println("AST: " + ast.toString());
+
+ scn.close();
+ }
+}