diff options
author | Jon Bratseth <bratseth@gmail.com> | 2022-05-06 15:17:15 +0200 |
---|---|---|
committer | Jon Bratseth <bratseth@gmail.com> | 2022-05-06 15:17:15 +0200 |
commit | 719332f44bdb9a6337f62751ef7891d34a60d815 (patch) | |
tree | 54fefcaf3e622d309e1a49b92bc82269652711a9 /config-model/src/main/javacc | |
parent | a2eb1feb808a0533b5d7ef2b691a873f91c4c26b (diff) |
Insert all dense values
Diffstat (limited to 'config-model/src/main/javacc')
-rw-r--r-- | config-model/src/main/javacc/IntermediateParser.jj | 39 |
1 files changed, 29 insertions, 10 deletions
diff --git a/config-model/src/main/javacc/IntermediateParser.jj b/config-model/src/main/javacc/IntermediateParser.jj index 3fe2b6d3cdd..2520101fbc6 100644 --- a/config-model/src/main/javacc/IntermediateParser.jj +++ b/config-model/src/main/javacc/IntermediateParser.jj @@ -2476,7 +2476,7 @@ Tensor tensorValue(TensorType type) : Tensor.Builder builder = Tensor.Builder.of(type); } { - ( mappedTensorValue(builder) | indexedTensorValue(builder) ) + ( mappedTensorValue(builder) | indexedTensorValues(new TensorAddress.Builder(TensorType.empty).build(), builder) ) { return builder.build(); } } @@ -2486,28 +2486,47 @@ void mappedTensorValue(Tensor.Builder builder) : {} "{" ( mappedTensorBlock(builder) )* ( <COMMA> (<NL>)* mappedTensorBlock(builder) )* "}" } -void indexedTensorValue(Tensor.Builder builder) : {} -{ - "[" ( indexedTensorCell(builder) )* ( <COMMA> (<NL>)* indexedTensorCell(builder) )* "]" -} void mappedTensorBlock(Tensor.Builder builder) : { TensorAddress address; - double value; } { - address = tensorAddress(builder.type()) <COLON> (<NL>)* value = tensorCellValue() - { builder.cell(address, value); } + address = tensorAddress(builder.type()) <COLON> (<NL>)* + ( mappedTensorCellValue(address, builder) | indexedTensorValues(address, builder) ) +} + +void indexedTensorValues(TensorAddress partialAddress, Tensor.Builder builder) : +{ + List<Double> values = new ArrayList<Double>(); +} +{ + "[" ( indexedTensorValue(values) )* ( <COMMA> (<NL>)* indexedTensorValue(values) )* "]" + { + 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)); + } + } +} + +void indexedTensorValue(List<Double> values) : +{ + Number value; +} +{ + value = consumeNumber() + { values.add(value.doubleValue()); } } -void indexedTensorCell(Tensor.Builder builder) : +void mappedTensorCellValue(TensorAddress address, Tensor.Builder builder) : { double value; } { value = tensorCellValue() - { builder.cell(value); } + { builder.cell(address, value); } } TensorAddress tensorAddress(TensorType type) : |