diff options
author | Jon Bratseth <bratseth@oath.com> | 2019-01-11 14:54:17 +0100 |
---|---|---|
committer | Jon Bratseth <bratseth@oath.com> | 2019-01-11 14:54:17 +0100 |
commit | 943a90d07613cc13a52b2b7c561024c949be3741 (patch) | |
tree | 87f1cdf35132dcb59c060aa9a232eb26cda6e7d6 /config-model/src/main/javacc | |
parent | bf43cc85cdae96022904359acd3e8f443811fdcf (diff) |
Disallow dash in search definition, document, field and function names
Diffstat (limited to 'config-model/src/main/javacc')
-rw-r--r-- | config-model/src/main/javacc/SDParser.jj | 49 |
1 files changed, 31 insertions, 18 deletions
diff --git a/config-model/src/main/javacc/SDParser.jj b/config-model/src/main/javacc/SDParser.jj index e50cbabeb9f..cc365ecb655 100644 --- a/config-model/src/main/javacc/SDParser.jj +++ b/config-model/src/main/javacc/SDParser.jj @@ -360,7 +360,8 @@ TOKEN : | < CONSTANTS: "constants" > | < FILE: "file" > | < URI: "uri" > -| < IDENTIFIER: ["a"-"z","A"-"Z", "_"] (["a"-"z","A"-"Z","0"-"9","_","-"])* > +| < IDENTIFIER: ["a"-"z","A"-"Z", "_"] (["a"-"z","A"-"Z","0"-"9","_"])* > +| < IDENTIFIER_WITH_DASH: ["a"-"z","A"-"Z", "_"] (["a"-"z","A"-"Z","0"-"9","_","-"])* > | < QUOTEDSTRING: "\"" ( ~["\""] )* "\"" > | < CONTEXT: ["a"-"z","A"-"Z"] (["a"-"z", "A"-"Z", "0"-"9"])* > | < DOUBLE: ("-")? (["0"-"9"])+ "." (["0"-"9"])+ > @@ -672,14 +673,15 @@ void fieldSetItem(String setName, Search search) : ( <FIELDS><COLON> field=identifier() { search.fieldSets().addUserFieldSetItem(setName, field); } ( <COMMA> field=identifier() { search.fieldSets().addUserFieldSetItem(setName, field); } )* ) | - ( <QUERYCOMMAND> <COLON> (queryCommand = identifier() | queryCommand = quotedString())) { search.fieldSets().userFieldSets().get(setName).queryCommands().add(queryCommand);} + ( <QUERYCOMMAND> <COLON> (queryCommand = identifierWithDash() | queryCommand = quotedString())) { search.fieldSets().userFieldSets().get(setName).queryCommands().add(queryCommand);} | ( match(matchSettings) ) { matchSettings.applyOperations(); search.fieldSets().userFieldSets().get(setName).setMatching(matchSettings.getMatching());} } /** * This rule consumes a annotation block from within either a document element or a search element. - * @param search The search object to add content to. + + * @param search the search object to add content to. */ void annotationOutside(Search search) : { @@ -701,6 +703,7 @@ void annotationOutside(Search search) : /** * This rule consumes a annotation block from within either a document element. + * * @param document The document object to add content to. */ void annotation(Search search, SDDocumentType document) : @@ -1186,7 +1189,7 @@ Object sortingSetting(SortingOperation sorting, String attributeName) : | <QUATERNARY> { sorting.setStrength(Sorting.Strength.QUATERNARY); } | <IDENTICAL> { sorting.setStrength(Sorting.Strength.IDENTICAL); } ) - | <LOCALE> <COLON> locale = identifier() { sorting.setLocale(locale); } + | <LOCALE> <COLON> locale = identifierWithDash() { sorting.setLocale(locale); } ) { return null; } } @@ -1438,7 +1441,7 @@ void summaryProperty(SummaryInFieldLongOperation field) : String name, value; } { - name = identifier() <COLON> (value = identifier() | value = quotedString()) + name = identifierWithDash() <COLON> (value = identifierWithDash() | value = quotedString()) { field.addProperty(new SummaryField.Property(name, value)); } } @@ -1453,7 +1456,7 @@ void fieldStemming(FieldOperationContainer field) : StemmingOperation op = new StemmingOperation(); } { - <STEMMING> <COLON> setting = identifier() + <STEMMING> <COLON> setting = identifierWithDash() { op.setSetting(setting); field.addOperation(op); @@ -1470,7 +1473,7 @@ void searchStemming(Search search) : String setting; } { - <STEMMING> <COLON> setting = identifier() + <STEMMING> <COLON> setting = identifierWithDash() { search.setStemming(Stemming.get(setting)); } } @@ -1485,7 +1488,7 @@ void normalizing(FieldOperationContainer field) : String setting; } { - <NORMALIZING> <COLON> setting = identifier() + <NORMALIZING> <COLON> setting = identifierWithDash() { field.addOperation(new NormalizingOperation(setting)); } @@ -1543,7 +1546,7 @@ void queryCommand(FieldOperationContainer container) : QueryCommandOperation field = new QueryCommandOperation(); } { - <QUERYCOMMAND> <COLON> command = identifier() + <QUERYCOMMAND> <COLON> command = identifierWithDash() { field.addQueryCommand(command); container.addOperation(field); @@ -1556,7 +1559,7 @@ void alias(FieldOperationContainer container) : String alias; } { - <ALIAS> [aliasedName = identifier()] <COLON> alias = identifier() + <ALIAS> [aliasedName = identifier()] <COLON> alias = identifierWithDash() { AliasOperation op = new AliasOperation(aliasedName, alias); container.addOperation(op); @@ -1790,9 +1793,9 @@ Object indexBody(IndexOperation index) : double threshold; } { - ( <PREFIX> { index.setPrefix(true); } - | <ALIAS> <COLON> str = identifier() { index.addAlias(str); } - | <STEMMING> <COLON> str = identifier() { index.setStemming(str); } + ( <PREFIX> { index.setPrefix(true); } + | <ALIAS> <COLON> str = identifierWithDash() { index.addAlias(str); } + | <STEMMING> <COLON> str = identifierWithDash() { index.setStemming(str); } | <RISE> { if (true) throw new ParseException("'index:rise' is no longer an option. Use 'indexing:attribute' instead. " + "If it is a weighted set field you should also add 'attribute:fast-search'." + @@ -1877,7 +1880,7 @@ void rankProfile(Search search) : RankProfile profile; } { - ( <RANKPROFILE> name = identifier() + ( <RANKPROFILE> name = identifierWithDash() { if (documentsOnly) { profile = new DocumentsOnlyRankProfile(name, search, rankProfileRegistry); @@ -1934,7 +1937,7 @@ void inheritsRankProfile(RankProfile profile) : String str; } { - <INHERITS> str = identifier() + <INHERITS> str = identifierWithDash() { profile.setInherited(str); } } @@ -2233,9 +2236,9 @@ String rankPropertyItem() : String image, ret = ""; } { - ( ( image = identifier() { ret += image; } - | image = quotedString() { ret += image; } - | ( "(" | ")" | <DOT> | <COMMA> ) { ret += token.image; } )+ ) + ( ( image = identifierWithDash() { ret += image; } + | image = quotedString() { ret += image; } + | ( "(" | ")" | <DOT> | <COMMA> ) { ret += token.image; } )+ ) { return ret; } } @@ -2476,6 +2479,16 @@ String expression() : { return exp; } } +String identifierWithDash() : +{ + String identifier; +} +{ + ( identifier = identifier() { return identifier; } ) + | + ( <IDENTIFIER_WITH_DASH> { return token.image; } ) +} + /** * This rule consumes an identifier. This must be kept in sync with all word tokens that should be parseable as * identifiers. |