diff options
| author | bjculkin <bjculkin@WIT-136XG42.wvu-ad.wvu.edu> | 2017-04-10 10:34:25 -0400 |
|---|---|---|
| committer | bjculkin <bjculkin@WIT-136XG42.wvu-ad.wvu.edu> | 2017-04-10 10:34:25 -0400 |
| commit | c99e1e03069b9d145d7ba3089351f5a1e53f582a (patch) | |
| tree | 1694866550ec45bf8c23fc78c588ce8b855eabc2 /JPratt/src/examples/java/bjc/pratt | |
| parent | 497a638ac9b907473835eb2ec985c2cac7d4de4e (diff) | |
| parent | ee8ab3464bdfe423c8b09b3f9a403899127f1078 (diff) | |
Merge branch 'master' of https://github.com/bculkin2442/JPratt.git
Conflicts:
JPratt/src/examples/java/bjc/pratt/examples/PrattParserTest.java
Diffstat (limited to 'JPratt/src/examples/java/bjc/pratt')
| -rw-r--r-- | JPratt/src/examples/java/bjc/pratt/examples/PrattParserTest.java | 29 | ||||
| -rw-r--r-- | JPratt/src/examples/java/bjc/pratt/examples/Tokenizer.java | 4 |
2 files changed, 25 insertions, 8 deletions
diff --git a/JPratt/src/examples/java/bjc/pratt/examples/PrattParserTest.java b/JPratt/src/examples/java/bjc/pratt/examples/PrattParserTest.java index 6e7170b..ebf0cc8 100644 --- a/JPratt/src/examples/java/bjc/pratt/examples/PrattParserTest.java +++ b/JPratt/src/examples/java/bjc/pratt/examples/PrattParserTest.java @@ -48,11 +48,14 @@ public class PrattParserTest { */ Set<String> ops = new LinkedHashSet<>(); - ops.addAll(Arrays.asList("->")); + ops.add("!!!"); + + ops.addAll(Arrays.asList("->", "=>")); ops.add(":="); ops.addAll(Arrays.asList("||", "&&")); ops.addAll(Arrays.asList("<=", ">=")); + ops.addAll(Arrays.asList("±")); ops.addAll(Arrays.asList(".", ",", ";", ":")); ops.addAll(Arrays.asList("=", "<", ">")); ops.addAll(Arrays.asList("+", "-", "*", "/")); @@ -82,15 +85,17 @@ public class PrattParserTest { hi.addSimpleDelimiters("||", "&&"); hi.addSimpleDelimiters("<=", ">="); + lo.addSimpleDelimiters("±"); lo.addSimpleDelimiters(".", ",", ";", ":"); lo.addSimpleDelimiters("=", "<", ">"); lo.addSimpleDelimiters("+", "-", "*", "/"); - lo.addSimpleDelimiters("^", "!"); - - lo.addMultiDelimiters("\\(", "\\)"); - lo.addMultiDelimiters("\\[", "\\]"); - lo.addMultiDelimiters("\\{", "\\}"); + lo.addSimpleDelimiters("^"); + lo.addMultiDelimiters("!"); + lo.addMultiDelimiters("(", ")"); + lo.addMultiDelimiters("[", "]"); + lo.addMultiDelimiters("{", "}"); + hi.compile(); lo.compile(); @@ -196,6 +201,8 @@ public class PrattParserTest { PrattParser<String, String, TestContext> parser = new PrattParser<>(); + parser.addNonInitialCommand("!!!", postfix(0)); + parser.addNonInitialCommand(":", infixNon(3)); parser.addNonInitialCommand("if", ternary(5, 0, "else", litToken("cond"), false)); @@ -222,6 +229,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); @@ -233,6 +241,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"))); @@ -252,6 +263,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); @@ -262,4 +277,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 +} |
