summaryrefslogtreecommitdiffstats
path: root/config-model/src/main/javacc
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@gmail.com>2022-05-06 15:17:15 +0200
committerJon Bratseth <bratseth@gmail.com>2022-05-06 15:17:15 +0200
commit719332f44bdb9a6337f62751ef7891d34a60d815 (patch)
tree54fefcaf3e622d309e1a49b92bc82269652711a9 /config-model/src/main/javacc
parenta2eb1feb808a0533b5d7ef2b691a873f91c4c26b (diff)
Insert all dense values
Diffstat (limited to 'config-model/src/main/javacc')
-rw-r--r--config-model/src/main/javacc/IntermediateParser.jj39
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) :