diff options
author | Bjørn Christian Seime <bjorncs@yahoo-inc.com> | 2017-01-20 15:59:01 +0100 |
---|---|---|
committer | Bjørn Christian Seime <bjorncs@yahoo-inc.com> | 2017-01-23 13:22:32 +0100 |
commit | 3b6a6c55ed9185991a77fc8406780e4a7748b6ea (patch) | |
tree | 869773f004a9de4a6b0c22e55ae44c776dc65c47 /config-model | |
parent | b79aaf1245991484c1cdc1f74709c551503407d9 (diff) |
Support reference fields in SD parser
Diffstat (limited to 'config-model')
-rw-r--r-- | config-model/src/main/javacc/SDParser.jj | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/config-model/src/main/javacc/SDParser.jj b/config-model/src/main/javacc/SDParser.jj index 2e9f8f72cc3..30b9b77f368 100644 --- a/config-model/src/main/javacc/SDParser.jj +++ b/config-model/src/main/javacc/SDParser.jj @@ -293,6 +293,7 @@ TOKEN : | < ARRAY: "array" > | < WEIGHTEDSET: "weightedset" > | < MAP: "map" > +| < REFERENCE: "reference" > | < QUESTIONMARK: "?" > | < CREATEIFNONEXISTENT: "create-if-nonexistent" > | < REMOVEIFZERO: "remove-if-zero" > @@ -806,6 +807,8 @@ DataType dataType() : DataType arrayType=null; DataType wsetType=null; TensorType tensorType; + TemporaryStructuredDataType referenceType; + } { ( LOOKAHEAD(<ARRAY> <LESSTHAN>) ( <ARRAY> <LESSTHAN> arrayType = dataType() <GREATERTHAN> { return DataType.getArray(arrayType); } ) @@ -813,6 +816,7 @@ DataType dataType() : | LOOKAHEAD(<MAP> <LESSTHAN>) ( mapType = mapDataType() { return mapType; } ) | LOOKAHEAD(<ANNOTATIONREFERENCE> <LESSTHAN>) ( mapType = annotationRefDataType() { return mapType; } ) | LOOKAHEAD(<TENSOR_TYPE>) ( tensorType = tensorType("Field type") { return DataType.getTensor(tensorType); } ) + | LOOKAHEAD(<REFERENCE>) ( <REFERENCE> <LESSTHAN> referenceType = referenceType() <GREATERTHAN> { return new TemporaryReferenceField(referenceType); } ) | ( typeName = identifier() ["[]" { isArrayOldStyle = true; }] ) ) { @@ -834,6 +838,17 @@ DataType dataType() : } } +TemporaryStructuredDataType referenceType() : +{ + String documentName; +} +{ + ( documentName = identifier() ) + { + return TemporaryStructuredDataType.create(documentName); + } +} + DataType annotationRefDataType() : { DataType dataType; |