summaryrefslogtreecommitdiffstats
path: root/searchlib/src/main
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@gmail.com>2022-03-04 13:23:41 +0100
committerJon Bratseth <bratseth@gmail.com>2022-03-04 13:23:41 +0100
commitc58a1614763db71e81e3e2ee1dc4f68669ea213a (patch)
tree792bc8a6871fa81ffd9ed8746f0e9020ab14fb15 /searchlib/src/main
parent805b289fa69c72a5e857374ab38882442b17e480 (diff)
Revert "Revert "'true' and 'false' literals in ranking expressions""
This reverts commit 95979285c20b384c3053d210c9e4e4661e13ecd5.
Diffstat (limited to 'searchlib/src/main')
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/BooleanValue.java2
-rwxr-xr-xsearchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/ConstantNode.java3
-rwxr-xr-xsearchlib/src/main/javacc/RankingExpressionParser.jj21
3 files changed, 11 insertions, 15 deletions
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/BooleanValue.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/BooleanValue.java
index 770be98c739..49f267ca522 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/BooleanValue.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/BooleanValue.java
@@ -15,7 +15,7 @@ public class BooleanValue extends DoubleCompatibleValue {
* Create a boolean value which is frozen at the outset.
*/
public static BooleanValue frozen(boolean value) {
- BooleanValue booleanValue=new BooleanValue(value);
+ BooleanValue booleanValue = new BooleanValue(value);
booleanValue.freeze();
return booleanValue;
}
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/ConstantNode.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/ConstantNode.java
index 46e833197f9..2cfe20d8131 100755
--- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/ConstantNode.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/ConstantNode.java
@@ -2,6 +2,7 @@
package com.yahoo.searchlib.rankingexpression.rule;
import com.yahoo.searchlib.rankingexpression.Reference;
+import com.yahoo.searchlib.rankingexpression.evaluation.BooleanValue;
import com.yahoo.searchlib.rankingexpression.evaluation.Context;
import com.yahoo.searchlib.rankingexpression.evaluation.Value;
import com.yahoo.tensor.TensorType;
@@ -39,6 +40,8 @@ public final class ConstantNode extends ExpressionNode {
@Override
public StringBuilder toString(StringBuilder string, SerializationContext context, Deque<String> path, CompositeNode parent) {
+ if (value instanceof BooleanValue) // Convert booleans to floats
+ return string.append(value.asBoolean() ? "1.0" : "0.0");
return string.append(value.toString());
}
diff --git a/searchlib/src/main/javacc/RankingExpressionParser.jj b/searchlib/src/main/javacc/RankingExpressionParser.jj
index 865820320d8..ebe1e048247 100755
--- a/searchlib/src/main/javacc/RankingExpressionParser.jj
+++ b/searchlib/src/main/javacc/RankingExpressionParser.jj
@@ -153,6 +153,8 @@ TOKEN :
<MIN: "min"> |
<PROD: "prod"> |
<SUM: "sum"> |
+ <TRUE: "true"> |
+ <FALSE: "false"> |
<IDENTIFIER: (["A"-"Z","a"-"z","0"-"9","_","@"](["A"-"Z","a"-"z","0"-"9","_","@","$"])*)>
}
@@ -797,7 +799,9 @@ String identifier() :
func = binaryFunctionName() { return func.toString(); } |
<IF> { return token.image; } |
<IN> { return token.image; } |
- <IDENTIFIER> { return token.image; }
+ <IDENTIFIER> { return token.image; } |
+ <TRUE> { return token.image; } |
+ <FALSE> { return token.image; }
}
List<String> identifierList() :
@@ -854,25 +858,14 @@ ExpressionNode constantPrimitive(boolean negate) :
( <INTEGER> { value = token.image; } |
<FLOAT> { value = token.image; }
) { node = new ConstantNode(Value.parse(negate ? ("-" + value) : value)); } |
- <STRING> {
- value = token.image;
- node = new ConstantNode(Value.parse(value));
+ ( <STRING> | <TRUE> | <FALSE> ) {
+ node = new ConstantNode(Value.parse(token.image));
if (negate) node = new NegativeNode(node);
}
)
{ return node; }
}
-Value primitiveValue() :
-{
- String sign = "";
-}
-{
- ( <SUB> { sign = "-";} ) ?
- ( <INTEGER> | <FLOAT> | <STRING> )
- { return Value.parse(sign + token.image); }
-}
-
TensorFunctionNode tensorValueBody(TensorType type, List dimensionOrder) :
{
DynamicTensor dynamicTensor;