diff options
Diffstat (limited to 'config-model/src/main/javacc/IntermediateParser.jj')
-rw-r--r-- | config-model/src/main/javacc/IntermediateParser.jj | 27 |
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) : |