diff options
author | Jon Bratseth <bratseth@gmail.com> | 2022-09-27 11:48:13 +0200 |
---|---|---|
committer | Jon Bratseth <bratseth@gmail.com> | 2022-09-27 11:48:13 +0200 |
commit | 7d85a435f99021af72cc522dd712a99573bdfaa4 (patch) | |
tree | 52e9c8572b55966aee6e4cca20f5865b27e6d614 /searchlib/src | |
parent | 6b97667072635b74fdd784b132f77722b1c12be4 (diff) |
Simplify: Use file order as precedence order
Diffstat (limited to 'searchlib/src')
-rw-r--r-- | searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/ArithmeticOperator.java | 26 |
1 files changed, 13 insertions, 13 deletions
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/ArithmeticOperator.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/ArithmeticOperator.java index 0a657c8ce58..799f0b3de55 100644 --- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/ArithmeticOperator.java +++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/ArithmeticOperator.java @@ -3,6 +3,7 @@ package com.yahoo.searchlib.rankingexpression.rule; import com.yahoo.searchlib.rankingexpression.evaluation.Value; +import java.util.Arrays; import java.util.List; import java.util.function.BiFunction; @@ -30,31 +31,30 @@ struct And : OperatorHelper<And> { And() : Helper("&& struct Or : OperatorHelper<Or> { Or() : Helper("||", 1, LEFT) {}}; */ - OR(0, "||", (x, y) -> x.or(y)), - AND(1, "&&", (x, y) -> x.and(y)), - PLUS(2, "+", (x, y) -> x.add(y)), - MINUS(3, "-", (x, y) -> x.subtract(y)), - MULTIPLY(4, "*", (x, y) -> x.multiply(y)), - DIVIDE(5, "/", (x, y) -> x.divide(y)), - MODULO(6, "%", (x, y) -> x.modulo(y)), - POWER(7, "^", (x, y) -> x.power(y)); + // In order from lowest to highest precedence + OR("||", (x, y) -> x.or(y)), + AND("&&", (x, y) -> x.and(y)), + PLUS("+", (x, y) -> x.add(y)), + MINUS("-", (x, y) -> x.subtract(y)), + MULTIPLY("*", (x, y) -> x.multiply(y)), + DIVIDE("/", (x, y) -> x.divide(y)), + MODULO("%", (x, y) -> x.modulo(y)), + POWER("^", (x, y) -> x.power(y)); /** A list of all the operators in this in order of decreasing precedence */ - public static final List<ArithmeticOperator> operatorsByPrecedence = List.of(POWER, MODULO, DIVIDE, MULTIPLY, MINUS, PLUS, AND, OR); + public static final List<ArithmeticOperator> operatorsByPrecedence = Arrays.stream(ArithmeticOperator.values()).toList(); - private final int precedence; private final String image; private final BiFunction<Value, Value, Value> function; - ArithmeticOperator(int precedence, String image, BiFunction<Value, Value, Value> function) { - this.precedence = precedence; + ArithmeticOperator(String image, BiFunction<Value, Value, Value> function) { this.image = image; this.function = function; } /** Returns true if this operator has precedence over the given operator */ public boolean hasPrecedenceOver(ArithmeticOperator op) { - return precedence > op.precedence; + return operatorsByPrecedence.indexOf(this) > operatorsByPrecedence.indexOf(op); } public final Value evaluate(Value x, Value y) { |