summaryrefslogtreecommitdiff
path: root/JPratt/src/examples/java/bjc/pratt
diff options
context:
space:
mode:
authorbculkin2442 <bjculkin@mix.wvu.edu>2017-04-05 10:22:24 -0400
committerbculkin2442 <bjculkin@mix.wvu.edu>2017-04-05 10:22:24 -0400
commit0b79409b36e0d14ce9c772a728c534dfb9c6f3be (patch)
tree09c21345efab940e15fa7957f89480505df765e3 /JPratt/src/examples/java/bjc/pratt
parentc82452e59b1547392c3e89d08d9173cc6dc79e23 (diff)
Tweak sample
Diffstat (limited to 'JPratt/src/examples/java/bjc/pratt')
-rw-r--r--JPratt/src/examples/java/bjc/pratt/examples/PrattParserTest.java12
-rw-r--r--JPratt/src/examples/java/bjc/pratt/examples/Tokenizer.java4
2 files changed, 14 insertions, 2 deletions
diff --git a/JPratt/src/examples/java/bjc/pratt/examples/PrattParserTest.java b/JPratt/src/examples/java/bjc/pratt/examples/PrattParserTest.java
index 4a9ae56..afb3e40 100644
--- a/JPratt/src/examples/java/bjc/pratt/examples/PrattParserTest.java
+++ b/JPratt/src/examples/java/bjc/pratt/examples/PrattParserTest.java
@@ -51,6 +51,7 @@ public class PrattParserTest {
ops.addAll(Arrays.asList("||", "&&"));
ops.addAll(Arrays.asList("<=", ">="));
+ ops.addAll(Arrays.asList("±"));
ops.addAll(Arrays.asList(".", ",", ";", ":"));
ops.addAll(Arrays.asList("=", "<", ">"));
ops.addAll(Arrays.asList("+", "-", "*", "/"));
@@ -77,6 +78,7 @@ public class PrattParserTest {
split.addCompoundDelim("||", "&&");
split.addCompoundDelim("<=", ">=");
+ split.addSimpleDelim("±");
split.addSimpleDelim(".", ",", ";", ":");
split.addSimpleDelim("=", "<", ">");
split.addSimpleDelim("+", "-", "*", "/");
@@ -210,6 +212,7 @@ public class PrattParserTest {
NonInitialCommand<String, String, TestContext> addSub = infixLeft(20);
parser.addNonInitialCommand("+", addSub);
parser.addNonInitialCommand("-", addSub);
+ parser.addNonInitialCommand("±", addSub);
NonInitialCommand<String, String, TestContext> mulDiv = infixLeft(30);
parser.addNonInitialCommand("*", mulDiv);
@@ -221,6 +224,9 @@ public class PrattParserTest {
parser.addNonInitialCommand("^", expon);
parser.addNonInitialCommand("root", expon);
+ NonInitialCommand<String, String, TestContext> superexpon = postfix(50);
+ parser.addNonInitialCommand("(superexp)", superexpon);
+
parser.addNonInitialCommand(".", infixLeft(60));
parser.addNonInitialCommand("[", postCircumfix(60, 0, "]", litToken("idx")));
@@ -240,6 +246,10 @@ public class PrattParserTest {
parser.addInitialCommand("-", unary(30));
+ InitialCommand<String, String, TestContext> root = unary(50);
+ parser.addInitialCommand("sqrt", root);
+ parser.addInitialCommand("cbrt", root);
+
InitialCommand<String, String, TestContext> leaf = leaf();
parser.addInitialCommand("(literal)", leaf);
parser.addInitialCommand("(vref)", leaf);
@@ -250,4 +260,4 @@ public class PrattParserTest {
return parser;
}
-} \ No newline at end of file
+}
diff --git a/JPratt/src/examples/java/bjc/pratt/examples/Tokenizer.java b/JPratt/src/examples/java/bjc/pratt/examples/Tokenizer.java
index 563b578..f6ecf98 100644
--- a/JPratt/src/examples/java/bjc/pratt/examples/Tokenizer.java
+++ b/JPratt/src/examples/java/bjc/pratt/examples/Tokenizer.java
@@ -25,8 +25,10 @@ final class Tokenizer implements Function<String, Token<String, String>> {
return litToken(strang);
} else if (ctx.scopes.top().containsKey(strang)) {
return new StringToken("(vref)", strang);
+ } else if(strang.matches("(?:[\\u00B2\\u00B3\\u00B9\\u2070]|[\\u2074-\\u2079])+")) {
+ return new StringToken("(superexp)", strang);
} else {
return new StringToken("(literal)", strang);
}
}
-} \ No newline at end of file
+}