diff options
author | Geir Storli <geirst@yahoo-inc.com> | 2017-01-25 11:32:07 +0100 |
---|---|---|
committer | Geir Storli <geirst@yahoo-inc.com> | 2017-01-26 12:44:26 +0100 |
commit | 93958006886da9462961e5d1202ff05b9dd4c357 (patch) | |
tree | 426acd5c3a6996efb0371e7acb24ba007ff16165 /config-model/src/main/javacc | |
parent | d757ee1af9cf32b991c907ea21aa767118a5ab87 (diff) |
Simplify AST classes used for imported fields.
Diffstat (limited to 'config-model/src/main/javacc')
-rw-r--r-- | config-model/src/main/javacc/SDParser.jj | 22 |
1 files changed, 7 insertions, 15 deletions
diff --git a/config-model/src/main/javacc/SDParser.jj b/config-model/src/main/javacc/SDParser.jj index d8725b81969..cb6ac8c96f3 100644 --- a/config-model/src/main/javacc/SDParser.jj +++ b/config-model/src/main/javacc/SDParser.jj @@ -2392,32 +2392,24 @@ TensorType tensorType(String errorMessage) : void importField(Search search) : { - TemporaryFieldReference reference; - String fieldName; -} -{ - <IMPORT> <FIELD> reference = fieldReference() <AS> fieldName = identifier() lbrace() - <RBRACE> - { - search.importedFields().add(new TemporaryImportedField(fieldName, reference)); - } -} - -TemporaryFieldReference fieldReference() : -{ String fieldRefSpec; + String aliasFieldName; } { - fieldRefSpec = identifier() + <IMPORT> <FIELD> fieldRefSpec = identifier() <AS> aliasFieldName = identifier() lbrace() + <RBRACE> { if (StringUtils.countMatches(fieldRefSpec, ".") != 1) { throw new IllegalArgumentException("Illegal field reference spec '" + fieldRefSpec + "': Does not include a single '.'"); } int indexOfDot = fieldRefSpec.indexOf('.'); - return new TemporaryFieldReference(fieldRefSpec.substring(0, indexOfDot), fieldRefSpec.substring(indexOfDot + 1)); + String documentReferenceFieldName = fieldRefSpec.substring(0, indexOfDot); + String foreignFieldName = fieldRefSpec.substring(indexOfDot + 1); + search.importedFields().add(new TemporaryImportedField(aliasFieldName, documentReferenceFieldName, foreignFieldName)); } } + /** * This rule consumes an expression token and returns its image. * |