diff options
author | Jon Bratseth <bratseth@verizonmedia.com> | 2019-12-06 08:57:09 -0800 |
---|---|---|
committer | Jon Bratseth <bratseth@verizonmedia.com> | 2019-12-06 08:57:09 -0800 |
commit | 7ef64a61b4f04a400428fe58ed2475aa37c43d39 (patch) | |
tree | 590627375d361e3d879285abb4210e70b84a29b0 /searchlib/src/main/javacc | |
parent | e4b328f4ee05b55131420df7f6b5a3685d5dffa5 (diff) |
Generalized Slice tensor function
Diffstat (limited to 'searchlib/src/main/javacc')
-rwxr-xr-x | searchlib/src/main/javacc/RankingExpressionParser.jj | 27 |
1 files changed, 14 insertions, 13 deletions
diff --git a/searchlib/src/main/javacc/RankingExpressionParser.jj b/searchlib/src/main/javacc/RankingExpressionParser.jj index fdad824cd1b..bb05abc9e47 100755 --- a/searchlib/src/main/javacc/RankingExpressionParser.jj +++ b/searchlib/src/main/javacc/RankingExpressionParser.jj @@ -18,6 +18,7 @@ PARSER_BEGIN(RankingExpressionParser) package com.yahoo.searchlib.rankingexpression.parser; import com.yahoo.searchlib.rankingexpression.rule.*; +import com.yahoo.searchlib.rankingexpression.evaluation.Value; import com.yahoo.searchlib.rankingexpression.evaluation.StringValue; import com.yahoo.searchlib.rankingexpression.evaluation.TensorValue; import com.yahoo.tensor.*; @@ -247,7 +248,7 @@ ExpressionNode value() : ( <LBRACE> value = expression() <RBRACE> { value = new EmbracedNode(value); } ) ) ) - [ LOOKAHEAD(2) valueAddress = valueAddress() { value = new TensorFunctionNode(new Value(TensorFunctionNode.wrap(value), valueAddress)); } ] + [ LOOKAHEAD(2) valueAddress = valueAddress() { value = new TensorFunctionNode(new Slice(TensorFunctionNode.wrap(value), valueAddress)); } ] { value = not ? new NotNode(value) : value; value = neg ? new NegativeNode(value) : value; @@ -817,17 +818,17 @@ ConstantNode constantPrimitive() : ( <INTEGER> { value = token.image; } | <FLOAT> { value = token.image; } | <STRING> { value = token.image; } ) - { return new ConstantNode(com.yahoo.searchlib.rankingexpression.evaluation.Value.parse(sign + value),sign + value); } + { return new ConstantNode(Value.parse(sign + value),sign + value); } } -com.yahoo.searchlib.rankingexpression.evaluation.Value primitiveValue() : +Value primitiveValue() : { String sign = ""; } { ( <SUB> { sign = "-";} ) ? ( <INTEGER> | <FLOAT> | <STRING> ) - { return com.yahoo.searchlib.rankingexpression.evaluation.Value.parse(sign + token.image); } + { return Value.parse(sign + token.image); } } TensorFunctionNode tensorValueBody(TensorType type) : @@ -893,7 +894,7 @@ void labelAndDimension(TensorAddress.Builder addressBuilder) : void labelAndDimensionValues(List addressValues) : { String dimension; - Value.DimensionValue dimensionValue; + Slice.DimensionValue dimensionValue; } { dimension = identifier() <COLON> dimensionValue = dimensionValue(Optional.of(dimension)) @@ -905,11 +906,11 @@ List valueAddress() : { List dimensionValues = new ArrayList(); ExpressionNode valueExpression; - Value.DimensionValue dimensionValue; + Slice.DimensionValue dimensionValue; } { ( - ( <LSQUARE> ( valueExpression = expression() { dimensionValues.add(new Value.DimensionValue(TensorFunctionNode.wrapScalar(valueExpression))); } ) <RSQUARE> ) + ( <LSQUARE> ( valueExpression = expression() { dimensionValues.add(new Slice.DimensionValue(TensorFunctionNode.wrapScalar(valueExpression))); } ) <RSQUARE> ) | LOOKAHEAD(3) ( <LCURLY> ( labelAndDimensionValues(dimensionValues))+ @@ -922,16 +923,16 @@ List valueAddress() : { return dimensionValues;} } -Value.DimensionValue dimensionValue(Optional dimensionName) : +Slice.DimensionValue dimensionValue(Optional dimensionName) : { ExpressionNode value; } { value = expression() { - if (value instanceof ReferenceNode && ((ReferenceNode)value).reference().isIdentifier()) - return new Value.DimensionValue(dimensionName, ((ReferenceNode)value).reference().name()); - else - return new Value.DimensionValue(dimensionName, TensorFunctionNode.wrapScalar(value)); - } + if (value instanceof ReferenceNode && ((ReferenceNode)value).reference().isIdentifier()) + return new Slice.DimensionValue(dimensionName, ((ReferenceNode)value).reference().name()); + else + return new Slice.DimensionValue(dimensionName, TensorFunctionNode.wrapScalar(value)); +} }
\ No newline at end of file |