package me.august.lumen.compile.parser.components;
import me.august.lumen.compile.parser.TokenParser;
import me.august.lumen.compile.parser.ast.expr.Expression;
import me.august.lumen.compile.parser.ast.expr.TernaryExpr;
import me.august.lumen.compile.scanner.Token;
import me.august.lumen.compile.scanner.Type;
public class TernaryParser implements InfixParser {
@Override
public Expression parse(TokenParser parser, Expression left, Token token) {
Expression ifBranch = parser.parseExpression(getPrecedence());
parser.expect(Type.COLON);
Expression elseBranch = parser.parseExpression(getPrecedence());
return new TernaryExpr(left, ifBranch, elseBranch);
}
@Override
public int getPrecedence() {
return Precedence.TERNARY.getLevel();
}
}