summaryrefslogtreecommitdiffstats
path: root/searchlib
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@verizonmedia.com>2019-11-07 14:29:36 +0100
committerJon Bratseth <bratseth@verizonmedia.com>2019-11-07 14:29:36 +0100
commit2a2f56cf9bc196e2cbef3bb2be065e5dedefe2c8 (patch)
tree52b0f1ca59c33f4d974c1c7e548db4cc324ed703 /searchlib
parentec23c4e592ce76fd676b1d28e51800ed7a875a49 (diff)
Treat inner square brackets as syntactic sugar
Diffstat (limited to 'searchlib')
-rwxr-xr-xsearchlib/src/main/javacc/RankingExpressionParser.jj8
-rw-r--r--searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/evaluation/EvaluationTestCase.java2
2 files changed, 6 insertions, 4 deletions
diff --git a/searchlib/src/main/javacc/RankingExpressionParser.jj b/searchlib/src/main/javacc/RankingExpressionParser.jj
index 47555d95e58..01eed897bfd 100755
--- a/searchlib/src/main/javacc/RankingExpressionParser.jj
+++ b/searchlib/src/main/javacc/RankingExpressionParser.jj
@@ -855,10 +855,10 @@ DynamicTensor indexedTensorValueBody(TensorType type) :
ExpressionNode value;
}
{
- <LSQUARE>
- ( value = expression() { cells.add(value); } )*
- ( <COMMA> value = expression() { cells.add(value); } )*
- <RSQUARE>
+ <LSQUARE> // TODO: Parse inner square brackets properly
+ ( (<LSQUARE>)* value = expression() (<RSQUARE>)* { cells.add(value); } )*
+ ( <COMMA> (<LSQUARE>)* value = expression() (<RSQUARE>)* { cells.add(value); } )*
+// <RSQUARE>
{ return DynamicTensor.from(type, TensorFunctionNode.wrap(cells)); }
}
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 e28daefdabf..9ba5da05a06 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
@@ -371,6 +371,8 @@ public class EvaluationTestCase {
tester.assertEvaluates("tensor(x{}):{ {x:a}:6.0, {x:b}:4.0, {x:c}:14.0 }",
"tensor(x{}):{ {x:a}:1+2+3, {x:b}:if(1>2,3,4), {x:c}:sum(tensor0*tensor1) }",
"{ {x:0}:7 }", "tensor(x{}):{ {x:0}:2 }");
+ tester.assertEvaluates("tensor<float>(d0[1],x[3]):[[1.0, 0.5, 0.25]]",
+ "tensor<float>(d0[1],x[3]):[[one,one_half,a_quarter]]");
}
@Test