diff options
author | Jon Bratseth <bratseth@verizonmedia.com> | 2019-11-27 17:49:39 +0200 |
---|---|---|
committer | Jon Bratseth <bratseth@verizonmedia.com> | 2019-11-27 17:49:39 +0200 |
commit | 9f1564bc8eb6568b54ed344a2c3201bfe634ac0e (patch) | |
tree | 9037b54f17e3175a8d11e1b43b55b71887f867a4 | |
parent | b8552a194770a887c27ae09924013f1dd5872aab (diff) |
Revert "Prefix index variables by %"
This reverts commit b8552a194770a887c27ae09924013f1dd5872aab.
3 files changed, 13 insertions, 33 deletions
diff --git a/searchlib/src/main/javacc/RankingExpressionParser.jj b/searchlib/src/main/javacc/RankingExpressionParser.jj index 1153053ed09..c7870182939 100755 --- a/searchlib/src/main/javacc/RankingExpressionParser.jj +++ b/searchlib/src/main/javacc/RankingExpressionParser.jj @@ -68,7 +68,7 @@ TOKEN : <MOD: "%"> | <POWOP: "^"> | - <DOLLAR:"$"> | + <DOLLAR: "$"> | <COMMA: ","> | <COLON: ":"> | @@ -244,7 +244,6 @@ ExpressionNode value() : LOOKAHEAD(4) value = function() | value = feature() | value = legacyQueryFeature() | - value = indexVariable() | ( <LBRACE> value = expression() <RBRACE> { value = new EmbracedNode(value); } ) ) ) @@ -291,17 +290,6 @@ ReferenceNode legacyQueryFeature() : } } -ReferenceNode indexVariable() : -{ - String name; -} -{ - ( <MOD> name = identifier() ) - { - return new ReferenceNode("%" + name); - } -} - String outs() : { StringBuilder ret = new StringBuilder(); 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 f89d5358922..99047aeb79d 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 @@ -361,21 +361,16 @@ public class EvaluationTestCase { tester.assertEvaluates("tensor(j[3]):[3, 3, 3]", "tensor(j[3])(tensor0[2])", "tensor(values[5]):[1, 2, 3, 4, 5]"); - // tensor result dimensions are given from argument dimensions, not the resulting values - tester.assertEvaluates("tensor(x{}):{}", "tensor0 * tensor1", "{ {x:0}:1 }", "tensor(x{}):{ {x:1}:1 }"); - tester.assertEvaluates("tensor(x{},y{}):{}", "tensor0 * tensor1", "{ {x:0}:1 }", "tensor(x{},y{}):{ {x:1,y:0}:1, {x:2,y:1}:1 }"); - } - - @Test - public void testTensorReshape() { - EvaluationTester tester = new EvaluationTester(); tester.assertEvaluates("tensor(j[3]):[5, 4, 3]", - "tensor(j[3])(tensor0[4-%j])", + "tensor(j[3])(tensor0[4-j])", "tensor(values[5]):[1, 2, 3, 4, 5]"); tester.assertEvaluates("tensor(j[2]):[6, 5]", - "tensor(j[2])(tensor0{key:bar,i:2-%j})", + "tensor(j[2])(tensor0{key:bar,i:2-j})", "tensor(key{},i[5]):{{key:foo,i:0}:1,{key:foo,i:1}:2,{key:foo,i:2}:2,{key:bar,i:0}:4,{key:bar,i:1}:5,{key:bar,i:2}:6}"); + // tensor result dimensions are given from argument dimensions, not the resulting values + tester.assertEvaluates("tensor(x{}):{}", "tensor0 * tensor1", "{ {x:0}:1 }", "tensor(x{}):{ {x:1}:1 }"); + tester.assertEvaluates("tensor(x{},y{}):{}", "tensor0 * tensor1", "{ {x:0}:1 }", "tensor(x{},y{}):{ {x:1,y:0}:1, {x:2,y:1}:1 }"); } @Test diff --git a/vespajlib/src/main/java/com/yahoo/tensor/functions/Generate.java b/vespajlib/src/main/java/com/yahoo/tensor/functions/Generate.java index d3a2dc9169c..aaed607aaa1 100644 --- a/vespajlib/src/main/java/com/yahoo/tensor/functions/Generate.java +++ b/vespajlib/src/main/java/com/yahoo/tensor/functions/Generate.java @@ -145,15 +145,17 @@ public class Generate<NAMETYPE extends TypeContext.Name> extends PrimitiveTenso @Override public Tensor getTensor(String name) { - if (name.startsWith("%")) // this is the name of a dimension - return Tensor.from(indexes.indexesForReading()[dimensionIndexFrom(name)]); + Optional<Integer> index = type.indexOfDimension(name); + if (index.isPresent()) // this is the name of a dimension + return Tensor.from(indexes.indexesForReading()[index.get()]); else return context.getTensor(name); } @Override public TensorType getType(NAMETYPE name) { - if (name.name().startsWith("%")) // this is the name of a dimension + Optional<Integer> index = type.indexOfDimension(name.name()); + if (index.isPresent()) // this is the name of a dimension return TensorType.empty; else return context.getType(name); @@ -161,18 +163,13 @@ public class Generate<NAMETYPE extends TypeContext.Name> extends PrimitiveTenso @Override public TensorType getType(String name) { - if (name.startsWith("%")) // this is the name of a dimension + Optional<Integer> index = type.indexOfDimension(name); + if (index.isPresent()) // this is the name of a dimension return TensorType.empty; else return context.getType(name); } - private int dimensionIndexFrom(String nameWithPercentage) { - String name = nameWithPercentage.substring(1); - return type.indexOfDimension(name) - .orElseThrow(() -> new IllegalArgumentException("No dimension '" + name + "' in " + type)); - } - } } |