summaryrefslogtreecommitdiffstats
path: root/searchlib/src/main/javacc
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@verizonmedia.com>2019-12-06 08:57:09 -0800
committerJon Bratseth <bratseth@verizonmedia.com>2019-12-06 08:57:09 -0800
commit7ef64a61b4f04a400428fe58ed2475aa37c43d39 (patch)
tree590627375d361e3d879285abb4210e70b84a29b0 /searchlib/src/main/javacc
parente4b328f4ee05b55131420df7f6b5a3685d5dffa5 (diff)
Generalized Slice tensor function
Diffstat (limited to 'searchlib/src/main/javacc')
-rwxr-xr-xsearchlib/src/main/javacc/RankingExpressionParser.jj27
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