From e7313854ffd94a88cfed50dd71252534e418d67e Mon Sep 17 00:00:00 2001 From: bculkin2442 Date: Fri, 18 Mar 2016 15:13:26 -0400 Subject: Added examples for both the shunter and the tree builder --- .../java/bjc/utils/examples/ShuntTester.java | 26 ++++++++++++ .../java/bjc/utils/examples/TreeConstructTest.java | 47 ++++++++++++++++++++++ 2 files changed, 73 insertions(+) create mode 100644 BJC-Utils2/src/examples/java/bjc/utils/examples/ShuntTester.java create mode 100644 BJC-Utils2/src/examples/java/bjc/utils/examples/TreeConstructTest.java (limited to 'BJC-Utils2/src/examples') 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 yard = new ShuntingYard<>(); + + FunctionalList 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 yard = new ShuntingYard<>(); + + FunctionalList ls = yard.postfix( + new FunctionalStringTokenizer(ln).toList((s) -> s), + (s) -> s); + + System.out.println("Shunted: " + ls.toString()); + + AST ast = TreeConstructor.constructTree(ls, + new Predicate() { + @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(); + } +} -- cgit v1.2.3