diff options
Diffstat (limited to 'JPratt/src/main/java/com/ashardalon/pratt/commands/NonInitialCommand.java')
| -rw-r--r-- | JPratt/src/main/java/com/ashardalon/pratt/commands/NonInitialCommand.java | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/JPratt/src/main/java/com/ashardalon/pratt/commands/NonInitialCommand.java b/JPratt/src/main/java/com/ashardalon/pratt/commands/NonInitialCommand.java new file mode 100644 index 0000000..a521e5c --- /dev/null +++ b/JPratt/src/main/java/com/ashardalon/pratt/commands/NonInitialCommand.java @@ -0,0 +1,66 @@ +package com.ashardalon.pratt.commands; + +import com.ashardalon.pratt.ParserContext; +import com.ashardalon.pratt.tokens.Token; + +import bjc.data.Tree; +import bjc.utils.parserutils.ParserException; + +/** + * Represents a non-initial command in parsing. + * + * @author EVE + * + * @param <K> + * The key type for the tokens. + * + * @param <V> + * The value type for the tokens. + * + * @param <C> + * The state type of the parser. + * + */ +public abstract class NonInitialCommand<K, V, C> { + /** + * Construct the left denotation of this command. + * + * @param operand + * The left-hand operand of this command. + * @param operator + * The operator for this command. + * + * @param ctx + * The state needed for commands. + * + * @return The result of executing the command. + * + * @throws ParserException + * If something went wrong during parsing. + */ + public abstract CommandResult<K, V> denote(Tree<Token<K, V>> operand, Token<K, V> operator, + ParserContext<K, V, C> ctx) throws ParserException; + + /** + * Get the left-binding power of this command. + * + * This represents the general precedence of this command. + * + * @return The left-binding power of this command. + */ + public abstract int leftBinding(); + + /** + * Get the next-binding power of this command. + * + * This represents the highest precedence of command this command can be + * the left operand of. + * + * This is the same as the left-binding power by default. + * + * @return The next-binding power of this command. + */ + public int nextBinding() { + return leftBinding(); + } +} |
