summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xsearchlib/src/main/javacc/RankingExpressionParser.jj1
-rw-r--r--searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/evaluation/EvaluationTestCase.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/tensor/TensorAddress.java2
3 files changed, 4 insertions, 1 deletions
diff --git a/searchlib/src/main/javacc/RankingExpressionParser.jj b/searchlib/src/main/javacc/RankingExpressionParser.jj
index fdad824cd1b..83496c7c5f1 100755
--- a/searchlib/src/main/javacc/RankingExpressionParser.jj
+++ b/searchlib/src/main/javacc/RankingExpressionParser.jj
@@ -794,6 +794,7 @@ String tag() :
}
{
name = identifier() { return name; } |
+ <SUB> <INTEGER> { return "-" + token.image; } |
<INTEGER> { return token.image; }
}
diff --git a/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/evaluation/EvaluationTestCase.java b/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/evaluation/EvaluationTestCase.java
index 38f152d728c..00750c70d2c 100644
--- a/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/evaluation/EvaluationTestCase.java
+++ b/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/evaluation/EvaluationTestCase.java
@@ -387,6 +387,8 @@ public class EvaluationTestCase {
EvaluationTester tester = new EvaluationTester();
tester.assertEvaluates("tensor(x{}):{ {x:a}:1.0, {x:b}:2.0, {x:c}:3.0 }",
"tensor(x{}):{ {x:a}:1.0, {x:b}:2.0, {x:c}:3.0 }");
+ tester.assertEvaluates("tensor(x{}):{ {x:1}:1.0, {x:-2}:2.0 }",
+ "tensor(x{}):{ {x:1}:1.0, {x:-2}:2.0 }");
tester.assertEvaluates("tensor(x[3]):[1.0, 2, 3.0]",
"tensor(x[3]):[1.0, 2.0, 3]");
tester.assertEvaluates("tensor(x{},y{}):{ {x:a,y:0}:1.0, {x:b,y:0}:2.0, {x:c,y:0}:3.0 }",
diff --git a/vespajlib/src/main/java/com/yahoo/tensor/TensorAddress.java b/vespajlib/src/main/java/com/yahoo/tensor/TensorAddress.java
index 3812dd26370..556eec6174e 100644
--- a/vespajlib/src/main/java/com/yahoo/tensor/TensorAddress.java
+++ b/vespajlib/src/main/java/com/yahoo/tensor/TensorAddress.java
@@ -163,7 +163,7 @@ public abstract class TensorAddress implements Comparable<TensorAddress> {
/** Supports building of a tensor address */
public static class Builder {
- private Pattern identifierPattern = Pattern.compile("[A-Za-z0-9_]+");
+ private Pattern identifierPattern = Pattern.compile("[-,A-Za-z0-9_@]([A-Z,a-z0-9_@$])*");
private final TensorType type;
private final String[] labels;