aboutsummaryrefslogtreecommitdiffstats
path: root/config-model/src/main/javacc/IntermediateParser.jj
diff options
context:
space:
mode:
Diffstat (limited to 'config-model/src/main/javacc/IntermediateParser.jj')
-rw-r--r--config-model/src/main/javacc/IntermediateParser.jj27
1 files changed, 14 insertions, 13 deletions
diff --git a/config-model/src/main/javacc/IntermediateParser.jj b/config-model/src/main/javacc/IntermediateParser.jj
index 57fa9e4142c..314de9878ee 100644
--- a/config-model/src/main/javacc/IntermediateParser.jj
+++ b/config-model/src/main/javacc/IntermediateParser.jj
@@ -39,6 +39,7 @@ import com.yahoo.searchlib.rankingexpression.Reference;
import com.yahoo.searchlib.rankingexpression.evaluation.TensorValue;
import com.yahoo.searchlib.rankingexpression.evaluation.Value;
import com.yahoo.tensor.Tensor;
+import com.yahoo.tensor.IndexedTensor;
import com.yahoo.tensor.MixedTensor;
import com.yahoo.tensor.TensorType;
import com.yahoo.tensor.TensorAddress;
@@ -2499,10 +2500,10 @@ void mappedTensorBlock(Tensor.Builder builder) :
void indexedTensorBlockValues(TensorAddress sparseAddress, Tensor.Builder builder) :
{
- List<Double> values;
+ List<Double> values = new ArrayList<Double>();
}
{
- values = arrayTensorValues()
+ arrayTensorValues(values)
{
MixedTensor.BoundBuilder boundBuilder = (MixedTensor.BoundBuilder)builder;
double[] arrayValues = new double[values.size()];
@@ -2515,26 +2516,26 @@ void indexedTensorBlockValues(TensorAddress sparseAddress, Tensor.Builder builde
void indexedTensorValues(Tensor.Builder builder) :
{
- List<Double> values;
+ List<Double> values = new ArrayList<Double>();
}
{
- values = arrayTensorValues()
+ arrayTensorValues(values)
{
+ IndexedTensor.BoundBuilder boundBuilder = (IndexedTensor.BoundBuilder)builder;
+ double[] arrayValues = new double[values.size()];
for (int i = 0; i < values.size(); i++ ) {
- TensorAddress.Builder addressBuilder = new TensorAddress.Builder(builder.type());
- addressBuilder.add(String.valueOf(i));
- builder.cell(addressBuilder.build(), values.get(i));
+ arrayValues[i] = values.get(i);
}
+ boundBuilder.fill(arrayValues);
}
}
-List<Double> arrayTensorValues() :
-{
- List<Double> values = new ArrayList<Double>();
-}
+/** Tensor array values. Using sub-bracketing for multiple dimensions is optional and therefore ignored here. */
+void arrayTensorValues(List<Double> values) : {}
{
- "[" ( indexedTensorValue(values) )* ( <COMMA> (<NL>)* indexedTensorValue(values) )* "]"
- { return values; }
+ "[" ( ( indexedTensorValue(values) | arrayTensorValues(values)) )*
+ ( <COMMA> (<NL>)* ( indexedTensorValue(values) | arrayTensorValues(values)) )*
+ "]"
}
void indexedTensorValue(List<Double> values) :