summaryrefslogtreecommitdiffstats
path: root/config-model
diff options
context:
space:
mode:
authorBjørn Christian Seime <bjorncs@yahoo-inc.com>2017-01-20 15:59:01 +0100
committerBjørn Christian Seime <bjorncs@yahoo-inc.com>2017-01-23 13:22:32 +0100
commit3b6a6c55ed9185991a77fc8406780e4a7748b6ea (patch)
tree869773f004a9de4a6b0c22e55ae44c776dc65c47 /config-model
parentb79aaf1245991484c1cdc1f74709c551503407d9 (diff)
Support reference fields in SD parser
Diffstat (limited to 'config-model')
-rw-r--r--config-model/src/main/javacc/SDParser.jj15
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;