summaryrefslogtreecommitdiff
path: root/JPratt/src/examples
diff options
context:
space:
mode:
Diffstat (limited to 'JPratt/src/examples')
-rw-r--r--JPratt/src/examples/java/bjc/pratt/examples/lang/PrattParserTest.java12
-rw-r--r--JPratt/src/examples/java/bjc/pratt/examples/regex/Destringer.java31
-rw-r--r--JPratt/src/examples/java/bjc/pratt/examples/regex/RegexGrammar.java73
3 files changed, 6 insertions, 110 deletions
diff --git a/JPratt/src/examples/java/bjc/pratt/examples/lang/PrattParserTest.java b/JPratt/src/examples/java/bjc/pratt/examples/lang/PrattParserTest.java
index 7af16a0..34623c6 100644
--- a/JPratt/src/examples/java/bjc/pratt/examples/lang/PrattParserTest.java
+++ b/JPratt/src/examples/java/bjc/pratt/examples/lang/PrattParserTest.java
@@ -93,10 +93,10 @@ public class PrattParserTest {
final ConfigurableTokenSplitter hi = new ConfigurableTokenSplitter(true);
final ConfigurableTokenSplitter lo = new ConfigurableTokenSplitter(true);
- hi.addSimpleDelimiters("->");
- hi.addSimpleDelimiters(":=");
- hi.addSimpleDelimiters("||", "&&");
- hi.addSimpleDelimiters("<=", ">=");
+ lo.addSimpleDelimiters("->");
+ lo.addSimpleDelimiters(":=");
+ lo.addSimpleDelimiters("||", "&&");
+ lo.addSimpleDelimiters("<=", ">=");
lo.addSimpleDelimiters("\u00B1"); // Unicode plus/minus
lo.addSimpleDelimiters(".", ",", ";", ":");
@@ -109,12 +109,12 @@ public class PrattParserTest {
lo.addMultiDelimiters("[", "]");
lo.addMultiDelimiters("{", "}");
- hi.compile();
+ //hi.compile();
lo.compile();
nsplit.appendSplitters(hi, lo);
- final ExcludingTokenSplitter excluder = new ExcludingTokenSplitter(nsplit);
+ final ExcludingTokenSplitter excluder = new ExcludingTokenSplitter(lo);
excluder.addLiteralExclusions(reserved.toArray(new String[0]));
diff --git a/JPratt/src/examples/java/bjc/pratt/examples/regex/Destringer.java b/JPratt/src/examples/java/bjc/pratt/examples/regex/Destringer.java
deleted file mode 100644
index 7ba2d5b..0000000
--- a/JPratt/src/examples/java/bjc/pratt/examples/regex/Destringer.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package bjc.pratt.examples.regex;
-
-import java.util.Iterator;
-import java.util.Map;
-import java.util.function.UnaryOperator;
-
-import bjc.utils.data.GeneratingIterator;
-
-final class Destringer implements UnaryOperator<String> {
- private final Iterator<Integer> numbers;
- public final Map<String, String> stringLiterals;
-
- public Destringer(final Map<String, String> literals) {
- numbers = new GeneratingIterator<>(0, (num) -> num + 1, (val) -> true);
- stringLiterals = literals;
- }
-
- @Override
- public String apply(final String token) {
- if (token.startsWith("\"") && token.endsWith("\"")) {
- final String symName = "stringLiteral" + Integer.toString(numbers.next());
-
- final String dequotedString = token.substring(1, token.length() - 1);
- stringLiterals.put(symName, dequotedString);
-
- return symName;
- }
-
- return token;
- }
-} \ No newline at end of file
diff --git a/JPratt/src/examples/java/bjc/pratt/examples/regex/RegexGrammar.java b/JPratt/src/examples/java/bjc/pratt/examples/regex/RegexGrammar.java
deleted file mode 100644
index 5bb606e..0000000
--- a/JPratt/src/examples/java/bjc/pratt/examples/regex/RegexGrammar.java
+++ /dev/null
@@ -1,73 +0,0 @@
-package bjc.pratt.examples.regex;
-
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Scanner;
-
-import bjc.utils.funcdata.IList;
-import bjc.utils.parserutils.TokenUtils.StringTokenSplitter;
-import bjc.utils.parserutils.splitter.ChainTokenSplitter;
-import bjc.utils.parserutils.splitter.ConfigurableTokenSplitter;
-import bjc.utils.parserutils.splitter.TokenSplitter;
-import bjc.utils.parserutils.splitter.TransformTokenSplitter;
-
-/**
- * Grammar test for regular expressions.
- *
- * @author bjculkin
- *
- */
-public class RegexGrammar {
- /**
- * Main method.
- *
- * @param args
- * Unused CLI arguments.
- */
- public static void main(final String[] args) {
- final Scanner scn = new Scanner(System.in);
-
- System.out.print("Enter text to parse (blank line to exit): ");
- String ln = scn.nextLine().trim();
-
- final Map<String, String> stringLiterals = new HashMap<>();
-
- /*
- * Build the token splitter
- */
- final ChainTokenSplitter splitter = buildSplitter(stringLiterals);
-
- while (!ln.equals("")) {
- final IList<String> quotelessTokens = splitter.split(ln);
-
- System.out.println("\nSplit tokens: " + quotelessTokens);
-
- System.out.print("\nEnter text to parse (blank line to exit): ");
- ln = scn.nextLine().trim();
- }
-
- System.out.println("\nString table: ");
- for (final Entry<String, String> entry : stringLiterals.entrySet()) {
- System.out.printf("\t%s\t'%s'\n", entry.getKey(), entry.getValue());
- }
-
- scn.close();
- }
-
- private static ChainTokenSplitter buildSplitter(final Map<String, String> stringLiterals) {
- final Destringer destringer = new Destringer(stringLiterals);
-
- final TokenSplitter dquoteSplitter = new StringTokenSplitter();
- final TokenSplitter dquoteRemover = new TransformTokenSplitter(dquoteSplitter, destringer);
-
- final ConfigurableTokenSplitter regexSplitter = new ConfigurableTokenSplitter(true);
- regexSplitter.addSimpleDelimiters("+", "|");
- regexSplitter.compile();
-
- final ChainTokenSplitter splitter = new ChainTokenSplitter();
- splitter.appendSplitters(dquoteRemover, regexSplitter);
-
- return splitter;
- }
-}