package me.august.lumen.compile.parser.components; import me.august.lumen.compile.parser.TokenParser; import me.august.lumen.compile.parser.ast.expr.AndExpr; import me.august.lumen.compile.parser.ast.expr.Expression; import me.august.lumen.compile.parser.ast.expr.OrExpr; import me.august.lumen.compile.scanner.Token; public final class LogicParsers { private LogicParsers() {} public static class LogicOrParser implements InfixParser { @Override public Expression parse(TokenParser parser, Expression left, Token token) { Expression right = parser.parseExpression(getPrecedence()); return new OrExpr(left, right); } @Override public int getPrecedence() { return Precedence.LOGIC_OR.getLevel(); } } public static class LogicAndParser implements InfixParser { @Override public Expression parse(TokenParser parser, Expression left, Token token) { Expression right = parser.parseExpression(getPrecedence()); return new AndExpr(left, right); } @Override public int getPrecedence() { return Precedence.LOGIC_AND.getLevel(); } } }