package bjc.utils.parserutils.pratt.commands; import bjc.utils.data.ITree; import bjc.utils.data.Tree; import bjc.utils.parserutils.ParserException; import bjc.utils.parserutils.pratt.ParserContext; import bjc.utils.parserutils.pratt.Token; public abstract class BinaryCommand extends BinaryPostCommand { public BinaryCommand(int leftPower) { super(leftPower); } protected abstract int rightBinding(); @Override public ITree> denote(ITree> operand, Token operator, ParserContext ctx) throws ParserException { ITree> opr = ctx.parse.parseExpression(rightBinding(), ctx.tokens, ctx.state, false); return new Tree<>(operator, operand, opr); } }