aboutsummaryrefslogtreecommitdiffstats
path: root/searchlib
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@gmail.com>2022-02-15 11:19:46 +0100
committerJon Bratseth <bratseth@gmail.com>2022-02-15 11:19:46 +0100
commitd030467ed4b417c910bfb063a5e77e4a49553d82 (patch)
tree5e158d35a3cbb0110ffd52392bd33668f60a0408 /searchlib
parentd29d335828d98e248f1cb593882d2d4f08fe702c (diff)
Allow quoted string slice labels
Diffstat (limited to 'searchlib')
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/expression/ConstantNode.java4
-rwxr-xr-xsearchlib/src/main/javacc/RankingExpressionParser.jj12
2 files changed, 8 insertions, 8 deletions
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/ConstantNode.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/ConstantNode.java
index 2bab10d1830..e26900ac77e 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/expression/ConstantNode.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/ConstantNode.java
@@ -16,9 +16,7 @@ public class ConstantNode extends ExpressionNode {
public static final int classId = registerClass(0x4000 + 49, ConstantNode.class);
private ResultNode value = null;
- public ConstantNode() {
-
- }
+ public ConstantNode() {}
public ConstantNode(ResultNode value) {
this.value = value;
diff --git a/searchlib/src/main/javacc/RankingExpressionParser.jj b/searchlib/src/main/javacc/RankingExpressionParser.jj
index 0d46ab4ddb6..865820320d8 100755
--- a/searchlib/src/main/javacc/RankingExpressionParser.jj
+++ b/searchlib/src/main/javacc/RankingExpressionParser.jj
@@ -1032,11 +1032,13 @@ Slice.DimensionValue dimensionValue(Optional dimensionName) :
{
value = expression()
{
- if (value instanceof ReferenceNode && ((ReferenceNode)value).reference().isIdentifier())
- return new Slice.DimensionValue(dimensionName, ((ReferenceNode)value).reference().name());
- else
- return new Slice.DimensionValue(dimensionName, TensorFunctionNode.wrapScalar(value));
-}
+ if (value instanceof ReferenceNode && ((ReferenceNode)value).reference().isIdentifier()) // A label
+ return new Slice.DimensionValue(dimensionName, ((ReferenceNode)value).reference().name());
+ else if (value instanceof ConstantNode && ((ConstantNode)value).getValue() instanceof StringValue) // A quoted label
+ return new Slice.DimensionValue(dimensionName, ((StringValue)((ConstantNode)value).getValue()).asString());
+ else
+ return new Slice.DimensionValue(dimensionName, TensorFunctionNode.wrapScalar(value));
+ }
}
String label() :