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 class PostCircumfixCommand extends BinaryPostCommand { private int insidePrec; private K term; private Token mark; public PostCircumfixCommand(int leftPower, int insidePower, K terminator, Token marker) { super(leftPower); insidePrec = insidePower; term = terminator; mark = marker; } @SuppressWarnings("unchecked") @Override public ITree> denote(ITree> operand, Token operator, ParserContext ctx) throws ParserException { ITree> inside = ctx.parse.parseExpression(insidePrec, ctx.tokens, ctx.state, false); ctx.tokens.expect(term); return new Tree<>(mark, operand, inside); } }