summaryrefslogtreecommitdiff
path: root/JPratt/src/examples
diff options
context:
space:
mode:
authorstudent <student@69.161.224.78>2018-02-15 11:19:00 -0500
committerstudent <student@69.161.224.78>2018-02-15 11:19:00 -0500
commit1112bb1b44bb3aabe439a2b9f88a51a9c1e435de (patch)
tree0a706393416c24240065b8e06cbc682b44745170 /JPratt/src/examples
parent9940d873a202e7a20ce61eecf1faebc5c15dab5a (diff)
Work on updating AST
Diffstat (limited to 'JPratt/src/examples')
-rw-r--r--JPratt/src/examples/java/bjc/pratt/examples/lang/PrattParserTest.java2
-rw-r--r--JPratt/src/examples/java/bjc/pratt/examples/lang/Tokenizer.java4
-rw-r--r--JPratt/src/examples/java/bjc/pratt/examples/lang/ast/LangAST.java16
-rw-r--r--JPratt/src/examples/java/bjc/pratt/examples/lang/ast/LiteralAST.java15
4 files changed, 32 insertions, 5 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 e9b0b1a..2d04440 100644
--- a/JPratt/src/examples/java/bjc/pratt/examples/lang/PrattParserTest.java
+++ b/JPratt/src/examples/java/bjc/pratt/examples/lang/PrattParserTest.java
@@ -146,7 +146,7 @@ public class PrattParserTest {
final ITree<LangAST> tokenTree = rawTree.rebuildTree(LangAST::fromToken, LangAST::fromToken);
System.out.printf("\nAST-ized expression:\n%s", tokenTree);
- } catch (final ParserException pex) {
+ } catch (ParserException pex) {
pex.printStackTrace();
}
diff --git a/JPratt/src/examples/java/bjc/pratt/examples/lang/Tokenizer.java b/JPratt/src/examples/java/bjc/pratt/examples/lang/Tokenizer.java
index 7a84d93..f84dd7d 100644
--- a/JPratt/src/examples/java/bjc/pratt/examples/lang/Tokenizer.java
+++ b/JPratt/src/examples/java/bjc/pratt/examples/lang/Tokenizer.java
@@ -33,6 +33,8 @@ final class Tokenizer implements Function<String, Token<String, String>> {
String subscript = strang;
return new StringToken("(superexp)", subscript);
- } else return new StringToken("(literal)", strang);
+ } else {
+ return new StringToken("(literal)", strang);
+ }
}
}
diff --git a/JPratt/src/examples/java/bjc/pratt/examples/lang/ast/LangAST.java b/JPratt/src/examples/java/bjc/pratt/examples/lang/ast/LangAST.java
index b5ea551..753276a 100644
--- a/JPratt/src/examples/java/bjc/pratt/examples/lang/ast/LangAST.java
+++ b/JPratt/src/examples/java/bjc/pratt/examples/lang/ast/LangAST.java
@@ -1,5 +1,6 @@
package bjc.pratt.examples.lang.ast;
+import bjc.pratt.examples.lang.evaluator.EvaluatorException;
import bjc.pratt.examples.lang.evaluator.LangResult;
import bjc.pratt.tokens.Token;
import bjc.utils.data.TopDownTransformResult;
@@ -7,10 +8,19 @@ import bjc.utils.data.TopDownTransformResult;
public interface LangAST {
LangResult toResult();
- static LangAST fromToken(Token<String, String> token) {
- return null;
+ static LangAST fromToken(Token<String, String> token) throws EvaluatorException {
+ String key = token.getKey();
+
+ switch (key) {
+ case "(literal)":
+ return LiteralAST.fromToken(token);
+ default:
+ String msg = String.format("Unknown token type '%s'", key);
+
+ throw new EvaluatorException(msg);
+ }
}
-
+
default TopDownTransformResult getEvaluationStrategy() {
return TopDownTransformResult.PUSHDOWN;
}
diff --git a/JPratt/src/examples/java/bjc/pratt/examples/lang/ast/LiteralAST.java b/JPratt/src/examples/java/bjc/pratt/examples/lang/ast/LiteralAST.java
new file mode 100644
index 0000000..cf12fe9
--- /dev/null
+++ b/JPratt/src/examples/java/bjc/pratt/examples/lang/ast/LiteralAST.java
@@ -0,0 +1,15 @@
+package bjc.pratt.examples.lang.ast;
+
+import bjc.pratt.tokens.Token;
+import bjc.utils.data.TopDownTransformResult;
+
+public interface LiteralAST extends LangAST {
+ static LiteralAST fromToken(Token<String, String> tok) {
+ return null;
+ }
+
+ @Override
+ default TopDownTransformResult getEvaluationStrategy() {
+ return TopDownTransformResult.TRANSFORM;
+ }
+}