From 02af075e89fbdeb22575f235a3acb2607e0b4edf Mon Sep 17 00:00:00 2001 From: Ben Culkin Date: Tue, 27 Sep 2022 19:18:09 -0400 Subject: Minor changes --- .../src/main/java/bjc/pratt/blocks/GrammarParseBlock.java | 1 - JPratt/src/main/java/bjc/pratt/blocks/ParseBlock.java | 2 -- .../main/java/bjc/pratt/blocks/TriggeredParseBlock.java | 2 -- .../java/bjc/pratt/commands/AbstractInitialCommand.java | 1 - .../src/main/java/bjc/pratt/commands/InitialCommand.java | 1 - .../bjc/pratt/commands/impls/BlockInitialCommand.java | 1 - .../bjc/pratt/commands/impls/DefaultInitialCommand.java | 1 - .../java/bjc/pratt/commands/impls/DenestingCommand.java | 1 - .../java/bjc/pratt/commands/impls/InitialCommands.java | 4 +--- .../main/java/bjc/pratt/commands/impls/LeafCommand.java | 1 - .../main/java/bjc/pratt/commands/impls/PanfixCommand.java | 15 +++++++++++++++ .../src/main/java/bjc/pratt/tokens/StringTokenStream.java | 5 +++++ 12 files changed, 21 insertions(+), 14 deletions(-) (limited to 'JPratt/src/main') diff --git a/JPratt/src/main/java/bjc/pratt/blocks/GrammarParseBlock.java b/JPratt/src/main/java/bjc/pratt/blocks/GrammarParseBlock.java index 3f79665..b0a3844 100644 --- a/JPratt/src/main/java/bjc/pratt/blocks/GrammarParseBlock.java +++ b/JPratt/src/main/java/bjc/pratt/blocks/GrammarParseBlock.java @@ -5,7 +5,6 @@ import java.util.function.Function; import bjc.pratt.ParserContext; import bjc.pratt.PrattParser; import bjc.pratt.commands.CommandResult; -import bjc.pratt.commands.CommandResult.Status; import bjc.pratt.tokens.Token; import bjc.pratt.tokens.TokenStream; import bjc.data.Tree; diff --git a/JPratt/src/main/java/bjc/pratt/blocks/ParseBlock.java b/JPratt/src/main/java/bjc/pratt/blocks/ParseBlock.java index fede096..aa2fa2e 100644 --- a/JPratt/src/main/java/bjc/pratt/blocks/ParseBlock.java +++ b/JPratt/src/main/java/bjc/pratt/blocks/ParseBlock.java @@ -2,8 +2,6 @@ package bjc.pratt.blocks; import bjc.pratt.ParserContext; import bjc.pratt.commands.CommandResult; -import bjc.pratt.tokens.Token; -import bjc.data.Tree; import bjc.utils.parserutils.ParserException; /** diff --git a/JPratt/src/main/java/bjc/pratt/blocks/TriggeredParseBlock.java b/JPratt/src/main/java/bjc/pratt/blocks/TriggeredParseBlock.java index df17595..d404eea 100644 --- a/JPratt/src/main/java/bjc/pratt/blocks/TriggeredParseBlock.java +++ b/JPratt/src/main/java/bjc/pratt/blocks/TriggeredParseBlock.java @@ -5,8 +5,6 @@ import java.util.function.UnaryOperator; import bjc.pratt.ParserContext; import bjc.pratt.commands.CommandResult; import bjc.pratt.commands.CommandResult.Status; -import bjc.pratt.tokens.Token; -import bjc.data.Tree; import bjc.utils.parserutils.ParserException; /** diff --git a/JPratt/src/main/java/bjc/pratt/commands/AbstractInitialCommand.java b/JPratt/src/main/java/bjc/pratt/commands/AbstractInitialCommand.java index 48f9ba7..3e4f3a9 100644 --- a/JPratt/src/main/java/bjc/pratt/commands/AbstractInitialCommand.java +++ b/JPratt/src/main/java/bjc/pratt/commands/AbstractInitialCommand.java @@ -2,7 +2,6 @@ package bjc.pratt.commands; import bjc.pratt.ParserContext; import bjc.pratt.tokens.Token; -import bjc.data.Tree; import bjc.utils.parserutils.ParserException; /** diff --git a/JPratt/src/main/java/bjc/pratt/commands/InitialCommand.java b/JPratt/src/main/java/bjc/pratt/commands/InitialCommand.java index ba544b4..0cfa290 100644 --- a/JPratt/src/main/java/bjc/pratt/commands/InitialCommand.java +++ b/JPratt/src/main/java/bjc/pratt/commands/InitialCommand.java @@ -2,7 +2,6 @@ package bjc.pratt.commands; import bjc.pratt.ParserContext; import bjc.pratt.tokens.Token; -import bjc.data.Tree; import bjc.utils.parserutils.ParserException; /** diff --git a/JPratt/src/main/java/bjc/pratt/commands/impls/BlockInitialCommand.java b/JPratt/src/main/java/bjc/pratt/commands/impls/BlockInitialCommand.java index 1d54996..07d9a76 100644 --- a/JPratt/src/main/java/bjc/pratt/commands/impls/BlockInitialCommand.java +++ b/JPratt/src/main/java/bjc/pratt/commands/impls/BlockInitialCommand.java @@ -5,7 +5,6 @@ import bjc.pratt.blocks.ParseBlock; import bjc.pratt.commands.AbstractInitialCommand; import bjc.pratt.commands.CommandResult; import bjc.pratt.tokens.Token; -import bjc.data.Tree; import bjc.utils.parserutils.ParserException; /** diff --git a/JPratt/src/main/java/bjc/pratt/commands/impls/DefaultInitialCommand.java b/JPratt/src/main/java/bjc/pratt/commands/impls/DefaultInitialCommand.java index 2dfc576..8d28b57 100644 --- a/JPratt/src/main/java/bjc/pratt/commands/impls/DefaultInitialCommand.java +++ b/JPratt/src/main/java/bjc/pratt/commands/impls/DefaultInitialCommand.java @@ -4,7 +4,6 @@ import bjc.pratt.ParserContext; import bjc.pratt.commands.CommandResult; import bjc.pratt.commands.InitialCommand; import bjc.pratt.tokens.Token; -import bjc.data.Tree; import bjc.utils.parserutils.ParserException; /** diff --git a/JPratt/src/main/java/bjc/pratt/commands/impls/DenestingCommand.java b/JPratt/src/main/java/bjc/pratt/commands/impls/DenestingCommand.java index 4935c81..de39e0b 100644 --- a/JPratt/src/main/java/bjc/pratt/commands/impls/DenestingCommand.java +++ b/JPratt/src/main/java/bjc/pratt/commands/impls/DenestingCommand.java @@ -6,7 +6,6 @@ import bjc.pratt.commands.CommandResult; import bjc.pratt.commands.CommandResult.Status; import bjc.pratt.commands.InitialCommand; import bjc.pratt.tokens.Token; -import bjc.data.Tree; import bjc.utils.parserutils.ParserException; /** diff --git a/JPratt/src/main/java/bjc/pratt/commands/impls/InitialCommands.java b/JPratt/src/main/java/bjc/pratt/commands/impls/InitialCommands.java index 9801788..bfc4e4f 100644 --- a/JPratt/src/main/java/bjc/pratt/commands/impls/InitialCommands.java +++ b/JPratt/src/main/java/bjc/pratt/commands/impls/InitialCommands.java @@ -9,8 +9,6 @@ import java.util.function.UnaryOperator; import bjc.pratt.blocks.ParseBlock; import bjc.pratt.commands.InitialCommand; import bjc.pratt.tokens.Token; -import bjc.utils.parserutils.ParserException; -import bjc.data.SimpleTree; import bjc.data.Tree; /** @@ -211,6 +209,6 @@ public class InitialCommands { * @return A command that implements a panfix operator */ public static InitialCommand panfix(final int precedence, final K term, final Token marker) { - return new PanfixCommand(marker, term, precedence); + return new PanfixCommand<>(marker, term, precedence); } } \ No newline at end of file diff --git a/JPratt/src/main/java/bjc/pratt/commands/impls/LeafCommand.java b/JPratt/src/main/java/bjc/pratt/commands/impls/LeafCommand.java index c702323..20fb3d4 100644 --- a/JPratt/src/main/java/bjc/pratt/commands/impls/LeafCommand.java +++ b/JPratt/src/main/java/bjc/pratt/commands/impls/LeafCommand.java @@ -4,7 +4,6 @@ import bjc.pratt.ParserContext; import bjc.pratt.commands.CommandResult; import bjc.pratt.commands.InitialCommand; import bjc.pratt.tokens.Token; -import bjc.data.Tree; import bjc.data.SimpleTree; import bjc.utils.parserutils.ParserException; diff --git a/JPratt/src/main/java/bjc/pratt/commands/impls/PanfixCommand.java b/JPratt/src/main/java/bjc/pratt/commands/impls/PanfixCommand.java index 06e69c1..04ad370 100644 --- a/JPratt/src/main/java/bjc/pratt/commands/impls/PanfixCommand.java +++ b/JPratt/src/main/java/bjc/pratt/commands/impls/PanfixCommand.java @@ -9,11 +9,26 @@ import bjc.pratt.commands.CommandResult.Status; import bjc.pratt.tokens.Token; import bjc.utils.parserutils.ParserException; +/** + * Represents a 'panfix' command, one where the operator is repeated prefix, infix and postfix. + * @author bjcul + * + * @param The key type of the token + * @param The value type of the token + * @param The context type of the parser + */ public final class PanfixCommand implements InitialCommand { private final Token marker; private final K term; private final int precedence; + /** + * Create a new panfix command. + * + * @param marker The marker token. + * @param term The value to use as the root of the result-tree + * @param precedence The precedence for this command + */ public PanfixCommand(Token marker, K term, int precedence) { this.marker = marker; this.term = term; diff --git a/JPratt/src/main/java/bjc/pratt/tokens/StringTokenStream.java b/JPratt/src/main/java/bjc/pratt/tokens/StringTokenStream.java index 8c7fcec..70876f2 100644 --- a/JPratt/src/main/java/bjc/pratt/tokens/StringTokenStream.java +++ b/JPratt/src/main/java/bjc/pratt/tokens/StringTokenStream.java @@ -33,6 +33,9 @@ public class StringTokenStream extends TokenStream { @Override public Token current() { + // Prime stream if necessary + if (curr == null) + return next(); return curr; } @@ -70,6 +73,8 @@ public class StringTokenStream extends TokenStream { @Override public void rollback() { iter.rollback(); + + curr = iter.current(); } @Override -- cgit v1.2.3