summaryrefslogtreecommitdiffstats
path: root/searchlib/src/main
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@verizonmedia.com>2019-12-16 09:49:05 +0100
committerJon Bratseth <bratseth@verizonmedia.com>2019-12-16 09:49:05 +0100
commit45992cec4b915513372b1d8e777e505aaee3f4a1 (patch)
tree17642d76df3a1c0b78465c92c7097cb2ca99957b /searchlib/src/main
parent8456f802f14447fa4d93154eb0945bc7867686a4 (diff)
Expression parse mapped 1-d tensor short form
Diffstat (limited to 'searchlib/src/main')
-rwxr-xr-xsearchlib/src/main/javacc/RankingExpressionParser.jj19
1 files changed, 17 insertions, 2 deletions
diff --git a/searchlib/src/main/javacc/RankingExpressionParser.jj b/searchlib/src/main/javacc/RankingExpressionParser.jj
index 1bfb13cff6f..e413e398183 100755
--- a/searchlib/src/main/javacc/RankingExpressionParser.jj
+++ b/searchlib/src/main/javacc/RankingExpressionParser.jj
@@ -868,8 +868,8 @@ DynamicTensor mixedTensorValueBody(TensorType type, List dimensionOrder) :
}
{
<LCURLY>
- mixedBlock(type, dimensionOrder, cells)
- ( <COMMA> mixedBlock(type, dimensionOrder, cells))*
+ keyValueOrMixedBlock(type, dimensionOrder, cells)
+ ( <COMMA> keyValueOrMixedBlock(type, dimensionOrder, cells))*
<RCURLY>
{ return DynamicTensor.from(type, cells); }
}
@@ -883,6 +883,21 @@ DynamicTensor indexedTensorValueBody(TensorType type, List dimensionOrder) :
{ return DynamicTensor.from(type, TensorFunctionNode.wrapScalars(type, dimensionOrder, cells)); }
}
+void keyValueOrMixedBlock(TensorType type, List dimensionOrder, java.util.Map cellMap) : {}
+{
+ LOOKAHEAD(3) mixedBlock(type, dimensionOrder, cellMap) | keyValue(type, cellMap)
+}
+
+void keyValue(TensorType type, java.util.Map cellMap) :
+{
+ String label;
+ ExpressionNode value;
+}
+{
+ label = tag() <COLON> value = expression()
+ { cellMap.put(TensorAddress.ofLabels(label), TensorFunctionNode.wrapScalar(value)); }
+}
+
void mixedBlock(TensorType type, List dimensionOrder, java.util.Map cellMap) :
{
String label;