diff options
Diffstat (limited to 'JPratt')
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; + } +} |
