summaryrefslogtreecommitdiffstats
path: root/searchlib/src/main
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@verizonmedia.com>2020-01-02 11:35:37 +0100
committerJon Bratseth <bratseth@verizonmedia.com>2020-01-02 11:35:37 +0100
commitfe102598a18b21a859d5b802883ccb2f462962f9 (patch)
tree70a8d6d239797c18a8634665e2a65bfaabebabba /searchlib/src/main
parent6d7909e022817be11b5f088cbd1e537d9b71919d (diff)
Add merge
Diffstat (limited to 'searchlib/src/main')
-rwxr-xr-xsearchlib/src/main/javacc/RankingExpressionParser.jj15
1 files changed, 15 insertions, 0 deletions
diff --git a/searchlib/src/main/javacc/RankingExpressionParser.jj b/searchlib/src/main/javacc/RankingExpressionParser.jj
index c3d597fca46..6fa915a134d 100755
--- a/searchlib/src/main/javacc/RankingExpressionParser.jj
+++ b/searchlib/src/main/javacc/RankingExpressionParser.jj
@@ -126,6 +126,7 @@ TOKEN :
<MAP: "map"> |
<REDUCE: "reduce"> |
<JOIN: "join"> |
+ <MERGE: "merge"> |
<RENAME: "rename"> |
<CONCAT: "concat"> |
<TENSOR: "tensor"> |
@@ -384,6 +385,7 @@ TensorFunctionNode tensorFunction() :
tensorExpression = tensorReduce() |
tensorExpression = tensorReduceComposites() |
tensorExpression = tensorJoin() |
+ tensorExpression = tensorMerge() |
tensorExpression = tensorRename() |
tensorExpression = tensorConcat() |
tensorExpression = tensorGenerate() |
@@ -447,6 +449,18 @@ TensorFunctionNode tensorJoin() :
doubleJoiner.asDoubleBinaryOperator())); }
}
+TensorFunctionNode tensorMerge() :
+{
+ ExpressionNode tensor1, tensor2;
+ LambdaFunctionNode doubleMerger;
+}
+{
+ <MERGE> <LBRACE> tensor1 = expression() <COMMA> tensor2 = expression() <COMMA> doubleMerger = lambdaFunction() <RBRACE>
+ { return new TensorFunctionNode(new Merge(TensorFunctionNode.wrap(tensor1),
+ TensorFunctionNode.wrap(tensor2),
+ doubleMerger.asDoubleBinaryOperator())); }
+}
+
TensorFunctionNode tensorRename() :
{
ExpressionNode tensor;
@@ -671,6 +685,7 @@ String tensorFunctionName() :
( <MAP> { return token.image; } ) |
( <REDUCE> { return token.image; } ) |
( <JOIN> { return token.image; } ) |
+ ( <MERGE> { return token.image; } ) |
( <RENAME> { return token.image; } ) |
( <CONCAT> { return token.image; } ) |
( <TENSOR> { return token.image; } ) |