diff --git a/source/java/org/alfresco/cmis/search/CMISQueryParser.java b/source/java/org/alfresco/cmis/search/CMISQueryParser.java index fe9298ef17..3d577cd076 100644 --- a/source/java/org/alfresco/cmis/search/CMISQueryParser.java +++ b/source/java/org/alfresco/cmis/search/CMISQueryParser.java @@ -46,6 +46,7 @@ import org.alfresco.repo.search.impl.parsers.CMISLexer; import org.alfresco.repo.search.impl.parsers.CMISParser; import org.alfresco.repo.search.impl.parsers.FTSLexer; import org.alfresco.repo.search.impl.parsers.FTSParser; +import org.alfresco.repo.search.impl.parsers.FTSQueryParser; import org.alfresco.repo.search.impl.querymodel.Argument; import org.alfresco.repo.search.impl.querymodel.ArgumentDefinition; import org.alfresco.repo.search.impl.querymodel.Column; @@ -356,7 +357,8 @@ public class CMISQueryParser return factory.createFunctionalConstraint(function, functionArguments); case CMISParser.PRED_FTS: String ftsExpression = predicateNode.getChild(0).getText(); - return buildFTS(ftsExpression, factory, selectors, columns); + FTSQueryParser ftsQueryParser = new FTSQueryParser(cmisDictionaryService); + return ftsQueryParser.buildFTS(ftsExpression.substring(1, ftsExpression.length()-1), factory, selectors, columns); case CMISParser.PRED_IN: functionName = In.NAME; function = factory.getFunction(functionName); @@ -391,163 +393,8 @@ public class CMISQueryParser } } - private Constraint buildFTS(String ftsExpression, QueryModelFactory factory, Map selectors, ArrayList columns) - { - // TODO: transform '' to ' to reverse encoding - FTSParser parser = null; - try - { - CharStream cs = new ANTLRStringStream(ftsExpression.substring(1, ftsExpression.length() - 1)); - FTSLexer lexer = new FTSLexer(cs); - CommonTokenStream tokens = new CommonTokenStream(lexer); - parser = new FTSParser(tokens); - CommonTree ftsNode = (CommonTree) parser.fts().getTree(); - if (ftsNode.getType() == FTSParser.CONJUNCTION) - { - return buildFTSConjunction(ftsNode, factory, selectors, columns); - } - else - { - return buildFTSDisjunction(ftsNode, factory, selectors, columns); - } - } - catch (RecognitionException e) - { - if (parser != null) - { - String[] tokenNames = parser.getTokenNames(); - String hdr = parser.getErrorHeader(e); - String msg = parser.getErrorMessage(e, tokenNames); - throw new CMISQueryException(hdr + "\n" + msg, e); - } - return null; - } - - } - - private Constraint buildFTSDisjunction(CommonTree orNode, QueryModelFactory factory, Map selectors, ArrayList columns) - { - List constraints = new ArrayList(orNode.getChildCount()); - for (int i = 0; i < orNode.getChildCount(); i++) - { - CommonTree andNode = (CommonTree) orNode.getChild(i); - Constraint constraint = buildFTSConjunction(andNode, factory, selectors, columns); - constraints.add(constraint); - } - if (constraints.size() == 1) - { - return constraints.get(0); - } - else - { - return factory.createDisjunction(constraints); - } - } - - private Constraint buildFTSConjunction(CommonTree andNode, QueryModelFactory factory, Map selectors, ArrayList columns) - { - List constraints = new ArrayList(andNode.getChildCount()); - for (int i = 0; i < andNode.getChildCount(); i++) - { - CommonTree notNode = (CommonTree) andNode.getChild(i); - Constraint constraint = buildFTSNegation(notNode, factory, selectors, columns); - constraints.add(constraint); - } - if (constraints.size() == 1) - { - return constraints.get(0); - } - else - { - return factory.createConjunction(constraints); - } - } - - private Constraint buildFTSNegation(CommonTree notNode, QueryModelFactory factory, Map selectors, ArrayList columns) - { - if (notNode.getType() == FTSParser.NEGATION) - { - Constraint constraint = buildFTSTest(notNode, factory, selectors, columns); - return factory.createNegation(constraint); - } - else - { - return buildFTSTest(notNode, factory, selectors, columns); - } - } - - private Constraint buildFTSTest(CommonTree testNode, QueryModelFactory factory, Map selectors, ArrayList columns) - { - String functionName; - Function function; - Map functionArguments; - LiteralArgument larg; - PropertyArgument parg; - switch (testNode.getType()) - { - case FTSParser.DISJUNCTION: - return buildFTSDisjunction(testNode, factory, selectors, columns); - case FTSParser.CONJUNCTION: - return buildFTSConjunction(testNode, factory, selectors, columns); - case FTSParser.TERM: - functionName = FTSTerm.NAME; - function = factory.getFunction(functionName); - functionArguments = new LinkedHashMap(); - larg = factory.createLiteralArgument(FTSTerm.ARG_TERM, DataTypeDefinition.TEXT, testNode.getChild(0).getText()); - functionArguments.put(larg.getName(), larg); - if (testNode.getChildCount() > 1) - { - parg = buildColumnReference(FTSTerm.ARG_PROPERTY, (CommonTree) testNode.getChild(1), factory); - if(!selectors.containsKey(parg.getSelector())) - { - throw new CMISQueryException("No table with alias "+parg.getSelector()); - } - functionArguments.put(parg.getName(), parg); - } - return factory.createFunctionalConstraint(function, functionArguments); - case FTSParser.EXACT_TERM: - functionName = FTSExactTerm.NAME; - function = factory.getFunction(functionName); - functionArguments = new LinkedHashMap(); - larg = factory.createLiteralArgument(FTSExactTerm.ARG_TERM, DataTypeDefinition.TEXT, testNode.getChild(0).getText()); - functionArguments.put(larg.getName(), larg); - if (testNode.getChildCount() > 1) - { - parg = buildColumnReference(FTSExactTerm.ARG_PROPERTY, (CommonTree) testNode.getChild(1), factory); - if(!selectors.containsKey(parg.getSelector())) - { - throw new CMISQueryException("No table with alias "+parg.getSelector()); - } - functionArguments.put(parg.getName(), parg); - } - return factory.createFunctionalConstraint(function, functionArguments); - case FTSParser.PHRASE: - // TODO: transform "" to " to reverse escaping - functionName = FTSPhrase.NAME; - function = factory.getFunction(functionName); - functionArguments = new LinkedHashMap(); - larg = factory.createLiteralArgument(FTSPhrase.ARG_PHRASE, DataTypeDefinition.TEXT, testNode.getChild(0).getText()); - functionArguments.put(larg.getName(), larg); - if (testNode.getChildCount() > 1) - { - parg = buildColumnReference(FTSPhrase.ARG_PROPERTY, (CommonTree) testNode.getChild(1), factory); - if(!selectors.containsKey(parg.getSelector())) - { - throw new CMISQueryException("No table with alias "+parg.getSelector()); - } - functionArguments.put(parg.getName(), parg); - } - return factory.createFunctionalConstraint(function, functionArguments); - case FTSParser.SYNONYM: - case FTSParser.FG_PROXIMITY: - case FTSParser.FG_RANGE: - case FTSParser.FIELD_GROUP: - case FTSParser.FIELD_CONJUNCTION: - case FTSParser.FIELD_DISJUNCTION: - default: - throw new CMISQueryException("Unsupported FTS option " + testNode.getText()); - } - } + + /** * @param queryNode diff --git a/source/java/org/alfresco/cmis/search/QueryTest.java b/source/java/org/alfresco/cmis/search/QueryTest.java index e37e0beba3..3a08893c5e 100644 --- a/source/java/org/alfresco/cmis/search/QueryTest.java +++ b/source/java/org/alfresco/cmis/search/QueryTest.java @@ -46,6 +46,7 @@ import org.alfresco.cmis.mapping.BaseCMISTest; import org.alfresco.model.ContentModel; import org.alfresco.repo.search.impl.parsers.CMISLexer; import org.alfresco.repo.search.impl.parsers.CMISParser; +import org.alfresco.repo.search.impl.parsers.FTSQueryException; import org.alfresco.repo.search.impl.querymodel.QueryModelException; import org.alfresco.service.cmr.repository.ContentData; import org.alfresco.service.cmr.repository.ContentWriter; @@ -352,6 +353,17 @@ public class QueryTest extends BaseCMISTest throw e; } } + catch(FTSQueryException e) + { + if (shouldThrow) + { + return null; + } + else + { + throw e; + } + } finally { if (rs != null) @@ -1743,6 +1755,10 @@ public class QueryTest extends BaseCMISTest public void testAspectJoin() { + testQuery( + "select o.*, t.* from ( cm_ownable o join cm_titled t on (o.objectid = t.objectid) JOIN DOCUMENT AS D ON (D.objectid = o.objectid ) ) where o.cm_owner = 'andy' and t.cm_title = 'Alfresco tutorial' and CONTAINS('\"jumped\"') and 2 <> D.ContentStreamLength ", + 1, false, "objectid", new String(), false, CMISQueryMode.CMS_WITH_ALFRESCO_EXTENSIONS); + testQuery("SELECT * FROM CM_OWNABLE", 1, false, "ObjectId", new String(), false, CMISQueryMode.CMS_WITH_ALFRESCO_EXTENSIONS); testQuery("SELECT * FROM CM_OWNABLE where CM_oWNER = 'andy'", 1, false, "ObjectId", new String(), false, CMISQueryMode.CMS_WITH_ALFRESCO_EXTENSIONS); testQuery("SELECT * FROM CM_OWNABLE where CM_OWNER = 'bob'", 0, false, "ObjectId", new String(), false, CMISQueryMode.CMS_WITH_ALFRESCO_EXTENSIONS); @@ -1766,6 +1782,9 @@ public class QueryTest extends BaseCMISTest CMISQueryMode.CMS_WITH_ALFRESCO_EXTENSIONS); testQuery("select o.*, t.* from ( cm_ownable o join cm_titled t on (o.objectid = t.objectid) JOIN DOCUMENT AS D ON (D.objectid = o.objectid ) )", 1, false, "objectid", new String(), false, CMISQueryMode.CMS_WITH_ALFRESCO_EXTENSIONS); + testQuery( + "select o.*, t.* from ( cm_ownable o join cm_titled t on (o.objectid = t.objectid) JOIN DOCUMENT AS D ON (D.objectid = o.objectid ) ) where o.cm_owner = 'andy' and t.cm_title = 'Alfresco tutorial' and CONTAINS('\"jumped\"') and 2 <> D.ContentStreamLength ", + 1, false, "objectid", new String(), false, CMISQueryMode.CMS_WITH_ALFRESCO_EXTENSIONS); testQuery( "select o.*, t.* from ( cm_ownable o join cm_titled t on (o.objectid = t.objectid) JOIN DOCUMENT AS D ON (D.objectid = o.objectid ) ) where o.cm_owner = 'andy' and t.cm_title = 'Alfresco tutorial' and CONTAINS('jumped') and 2 <> D.ContentStreamLength ", 1, false, "objectid", new String(), false, CMISQueryMode.CMS_WITH_ALFRESCO_EXTENSIONS); diff --git a/source/java/org/alfresco/repo/search/impl/lucene/index/IndexInfo.java b/source/java/org/alfresco/repo/search/impl/lucene/index/IndexInfo.java index ddd0e3d09e..89e55befc2 100644 --- a/source/java/org/alfresco/repo/search/impl/lucene/index/IndexInfo.java +++ b/source/java/org/alfresco/repo/search/impl/lucene/index/IndexInfo.java @@ -78,6 +78,7 @@ import org.apache.lucene.index.MultiReader; import org.apache.lucene.index.SerialMergeScheduler; import org.apache.lucene.index.Term; import org.apache.lucene.index.TermEnum; +import org.apache.lucene.index.IndexWriter.MaxFieldLength; import org.apache.lucene.search.Hits; import org.apache.lucene.search.IndexSearcher; import org.apache.lucene.search.Searcher; @@ -444,7 +445,7 @@ public class IndexInfo implements IndexMonitor IndexWriter writer; try { - writer = new IndexWriter(emptyIndex, new AlfrescoStandardAnalyser(), true); + writer = new IndexWriter(emptyIndex, new AlfrescoStandardAnalyser(), true, MaxFieldLength.LIMITED); writer.setUseCompoundFile(writerUseCompoundFile); writer.setMaxBufferedDocs(writerMinMergeDocs); writer.setMergeFactor(writerMergeFactor); @@ -511,7 +512,7 @@ public class IndexInfo implements IndexMonitor IndexWriter writer; try { - writer = new IndexWriter(oldIndex, new AlfrescoStandardAnalyser(), false); + writer = new IndexWriter(oldIndex, new AlfrescoStandardAnalyser(), false, MaxFieldLength.LIMITED); writer.setUseCompoundFile(writerUseCompoundFile); writer.setMaxBufferedDocs(writerMinMergeDocs); writer.setMergeFactor(writerMergeFactor); @@ -522,7 +523,7 @@ public class IndexInfo implements IndexMonitor writer.setMergeScheduler(new SerialMergeScheduler()); writer.setMergePolicy(new LogDocMergePolicy()); writer.optimize(); - long docs = writer.docCount(); + long docs = writer.numDocs(); writer.close(); IndexEntry entry = new IndexEntry(IndexType.INDEX, OLD_INDEX, "", TransactionStatus.COMMITTED, "", docs, 0, false); @@ -832,11 +833,11 @@ public class IndexInfo implements IndexMonitor IndexWriter writer; if (!IndexReader.indexExists(location)) { - writer = new IndexWriter(location, analyzer, true); + writer = new IndexWriter(location, analyzer, true, MaxFieldLength.LIMITED); } else { - writer = new IndexWriter(location, analyzer, false); + writer = new IndexWriter(location, analyzer, false, MaxFieldLength.LIMITED); } writer.setUseCompoundFile(writerUseCompoundFile); writer.setMaxBufferedDocs(writerMinMergeDocs); @@ -3451,11 +3452,11 @@ public class IndexInfo implements IndexMonitor if (docCount < maxDocsForInMemoryMerge) { ramDirectory = new RAMDirectory(); - writer = new IndexWriter(ramDirectory, new AlfrescoStandardAnalyser(), true); + writer = new IndexWriter(ramDirectory, new AlfrescoStandardAnalyser(), true, MaxFieldLength.UNLIMITED); } else { - writer = new IndexWriter(location, new AlfrescoStandardAnalyser(), true); + writer = new IndexWriter(location, new AlfrescoStandardAnalyser(), true, MaxFieldLength.UNLIMITED); } writer.setUseCompoundFile(mergerUseCompoundFile); diff --git a/source/java/org/alfresco/repo/search/impl/parsers/CMIS.g b/source/java/org/alfresco/repo/search/impl/parsers/CMIS.g index 56d11b2e89..e127026007 100644 --- a/source/java/org/alfresco/repo/search/impl/parsers/CMIS.g +++ b/source/java/org/alfresco/repo/search/impl/parsers/CMIS.g @@ -578,7 +578,10 @@ FLOATING_POINT_LITERAL ; -ID : ('a'..'z'|'A'..'Z'|'_')('a'..'z'|'A'..'Z'|'0'..'0'|'_'|'$'|'#')* ; +/** + * We should support _x????_ encoding for invalid sql characters + */ +ID : ('a'..'z'|'A'..'Z'|'_')('a'..'z'|'A'..'Z'|'0'..'9'|'_'|'$'|'#')* ; WS : ( ' ' | '\t' | '\r' | '\n' )+ { $channel = HIDDEN; } ; diff --git a/source/java/org/alfresco/repo/search/impl/parsers/CMISLexer.java b/source/java/org/alfresco/repo/search/impl/parsers/CMISLexer.java index 9f0e33d6ad..eda99ee37c 100644 --- a/source/java/org/alfresco/repo/search/impl/parsers/CMISLexer.java +++ b/source/java/org/alfresco/repo/search/impl/parsers/CMISLexer.java @@ -1,4 +1,4 @@ -// $ANTLR 3.1.2 W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\CMIS.g 2009-03-18 14:58:50 +// $ANTLR 3.1.2 W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\CMIS.g 2009-04-06 14:38:12 package org.alfresco.repo.search.impl.parsers; import org.antlr.runtime.*; @@ -2256,8 +2256,8 @@ public class CMISLexer extends Lexer { try { int _type = ID; int _channel = DEFAULT_TOKEN_CHANNEL; - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\CMIS.g:581:4: ( ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '0' | '_' | '$' | '#' )* ) - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\CMIS.g:581:6: ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '0' | '_' | '$' | '#' )* + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\CMIS.g:584:4: ( ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' | '_' | '$' | '#' )* ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\CMIS.g:584:6: ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' | '_' | '$' | '#' )* { if ( (input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z') ) { input.consume(); @@ -2268,13 +2268,13 @@ public class CMISLexer extends Lexer { recover(mse); throw mse;} - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\CMIS.g:581:29: ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '0' | '_' | '$' | '#' )* + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\CMIS.g:584:29: ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' | '_' | '$' | '#' )* loop10: do { int alt10=2; int LA10_0 = input.LA(1); - if ( ((LA10_0>='#' && LA10_0<='$')||LA10_0=='0'||(LA10_0>='A' && LA10_0<='Z')||LA10_0=='_'||(LA10_0>='a' && LA10_0<='z')) ) { + if ( ((LA10_0>='#' && LA10_0<='$')||(LA10_0>='0' && LA10_0<='9')||(LA10_0>='A' && LA10_0<='Z')||LA10_0=='_'||(LA10_0>='a' && LA10_0<='z')) ) { alt10=1; } @@ -2283,7 +2283,7 @@ public class CMISLexer extends Lexer { case 1 : // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\CMIS.g: { - if ( (input.LA(1)>='#' && input.LA(1)<='$')||input.LA(1)=='0'||(input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z') ) { + if ( (input.LA(1)>='#' && input.LA(1)<='$')||(input.LA(1)>='0' && input.LA(1)<='9')||(input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z') ) { input.consume(); } @@ -2317,10 +2317,10 @@ public class CMISLexer extends Lexer { try { int _type = WS; int _channel = DEFAULT_TOKEN_CHANNEL; - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\CMIS.g:582:4: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ ) - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\CMIS.g:582:6: ( ' ' | '\\t' | '\\r' | '\\n' )+ + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\CMIS.g:585:4: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\CMIS.g:585:6: ( ' ' | '\\t' | '\\r' | '\\n' )+ { - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\CMIS.g:582:6: ( ' ' | '\\t' | '\\r' | '\\n' )+ + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\CMIS.g:585:6: ( ' ' | '\\t' | '\\r' | '\\n' )+ int cnt11=0; loop11: do { @@ -2373,7 +2373,7 @@ public class CMISLexer extends Lexer { // $ANTLR start "DECIMAL_NUMERAL" public final void mDECIMAL_NUMERAL() throws RecognitionException { try { - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\CMIS.g:591:2: ( ZERO_DIGIT | NON_ZERO_DIGIT ( DIGIT )* ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\CMIS.g:594:2: ( ZERO_DIGIT | NON_ZERO_DIGIT ( DIGIT )* ) int alt13=2; int LA13_0 = input.LA(1); @@ -2391,17 +2391,17 @@ public class CMISLexer extends Lexer { } switch (alt13) { case 1 : - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\CMIS.g:591:4: ZERO_DIGIT + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\CMIS.g:594:4: ZERO_DIGIT { mZERO_DIGIT(); } break; case 2 : - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\CMIS.g:592:4: NON_ZERO_DIGIT ( DIGIT )* + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\CMIS.g:595:4: NON_ZERO_DIGIT ( DIGIT )* { mNON_ZERO_DIGIT(); - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\CMIS.g:592:19: ( DIGIT )* + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\CMIS.g:595:19: ( DIGIT )* loop12: do { int alt12=2; @@ -2414,7 +2414,7 @@ public class CMISLexer extends Lexer { switch (alt12) { case 1 : - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\CMIS.g:592:19: DIGIT + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\CMIS.g:595:19: DIGIT { mDIGIT(); @@ -2440,7 +2440,7 @@ public class CMISLexer extends Lexer { // $ANTLR start "DIGIT" public final void mDIGIT() throws RecognitionException { try { - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\CMIS.g:595:7: ( ZERO_DIGIT | NON_ZERO_DIGIT ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\CMIS.g:598:7: ( ZERO_DIGIT | NON_ZERO_DIGIT ) // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\CMIS.g: { if ( (input.LA(1)>='0' && input.LA(1)<='9') ) { @@ -2464,8 +2464,8 @@ public class CMISLexer extends Lexer { // $ANTLR start "ZERO_DIGIT" public final void mZERO_DIGIT() throws RecognitionException { try { - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\CMIS.g:598:2: ( '0' ) - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\CMIS.g:598:4: '0' + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\CMIS.g:601:2: ( '0' ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\CMIS.g:601:4: '0' { match('0'); @@ -2480,8 +2480,8 @@ public class CMISLexer extends Lexer { // $ANTLR start "NON_ZERO_DIGIT" public final void mNON_ZERO_DIGIT() throws RecognitionException { try { - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\CMIS.g:601:2: ( '1' .. '9' ) - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\CMIS.g:601:4: '1' .. '9' + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\CMIS.g:604:2: ( '1' .. '9' ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\CMIS.g:604:4: '1' .. '9' { matchRange('1','9'); @@ -2496,8 +2496,8 @@ public class CMISLexer extends Lexer { // $ANTLR start "PLUS" public final void mPLUS() throws RecognitionException { try { - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\CMIS.g:603:6: ( '+' ) - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\CMIS.g:603:8: '+' + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\CMIS.g:606:6: ( '+' ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\CMIS.g:606:8: '+' { match('+'); @@ -2512,8 +2512,8 @@ public class CMISLexer extends Lexer { // $ANTLR start "MINUS" public final void mMINUS() throws RecognitionException { try { - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\CMIS.g:605:7: ( '-' ) - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\CMIS.g:605:9: '-' + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\CMIS.g:608:7: ( '-' ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\CMIS.g:608:9: '-' { match('-'); @@ -2528,8 +2528,8 @@ public class CMISLexer extends Lexer { // $ANTLR start "E" public final void mE() throws RecognitionException { try { - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\CMIS.g:608:3: ( ( 'e' | 'E' ) ) - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\CMIS.g:608:5: ( 'e' | 'E' ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\CMIS.g:611:3: ( ( 'e' | 'E' ) ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\CMIS.g:611:5: ( 'e' | 'E' ) { if ( input.LA(1)=='E'||input.LA(1)=='e' ) { input.consume(); @@ -2552,8 +2552,8 @@ public class CMISLexer extends Lexer { // $ANTLR start "EXPONENT" public final void mEXPONENT() throws RecognitionException { try { - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\CMIS.g:619:2: ( E SIGNED_INTEGER ) - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\CMIS.g:619:4: E SIGNED_INTEGER + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\CMIS.g:622:2: ( E SIGNED_INTEGER ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\CMIS.g:622:4: E SIGNED_INTEGER { mE(); mSIGNED_INTEGER(); @@ -2569,10 +2569,10 @@ public class CMISLexer extends Lexer { // $ANTLR start "SIGNED_INTEGER" public final void mSIGNED_INTEGER() throws RecognitionException { try { - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\CMIS.g:623:2: ( ( PLUS | MINUS )? ( DIGIT )+ ) - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\CMIS.g:623:4: ( PLUS | MINUS )? ( DIGIT )+ + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\CMIS.g:626:2: ( ( PLUS | MINUS )? ( DIGIT )+ ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\CMIS.g:626:4: ( PLUS | MINUS )? ( DIGIT )+ { - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\CMIS.g:623:4: ( PLUS | MINUS )? + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\CMIS.g:626:4: ( PLUS | MINUS )? int alt14=2; int LA14_0 = input.LA(1); @@ -2598,7 +2598,7 @@ public class CMISLexer extends Lexer { } - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\CMIS.g:623:20: ( DIGIT )+ + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\CMIS.g:626:20: ( DIGIT )+ int cnt15=0; loop15: do { @@ -2612,7 +2612,7 @@ public class CMISLexer extends Lexer { switch (alt15) { case 1 : - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\CMIS.g:623:20: DIGIT + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\CMIS.g:626:20: DIGIT { mDIGIT(); @@ -3125,7 +3125,7 @@ public class CMISLexer extends Lexer { "", "\1\76\37\uffff\1\76", "\1\77\37\uffff\1\77", - "\2\35\13\uffff\1\35\20\uffff\2\35\1\100\27\35\4\uffff\1\35"+ + "\2\35\13\uffff\12\35\7\uffff\2\35\1\100\27\35\4\uffff\1\35"+ "\1\uffff\2\35\1\100\27\35", "\1\102\24\uffff\1\103\12\uffff\1\102\24\uffff\1\103", "\1\104\37\uffff\1\104", @@ -3134,20 +3134,20 @@ public class CMISLexer extends Lexer { "\1\107\37\uffff\1\107", "\1\110\37\uffff\1\110", "\1\111\37\uffff\1\111", - "\2\35\13\uffff\1\35\20\uffff\15\35\1\112\14\35\4\uffff\1\113"+ + "\2\35\13\uffff\12\35\7\uffff\15\35\1\112\14\35\4\uffff\1\113"+ "\1\uffff\15\35\1\112\14\35", - "\2\35\13\uffff\1\35\20\uffff\32\35\4\uffff\1\35\1\uffff\32"+ + "\2\35\13\uffff\12\35\7\uffff\32\35\4\uffff\1\35\1\uffff\32"+ "\35", "\1\116\37\uffff\1\116", - "\2\35\13\uffff\1\35\20\uffff\32\35\4\uffff\1\35\1\uffff\32"+ + "\2\35\13\uffff\12\35\7\uffff\32\35\4\uffff\1\35\1\uffff\32"+ "\35", - "\2\35\13\uffff\1\35\20\uffff\3\35\1\120\26\35\4\uffff\1\35"+ + "\2\35\13\uffff\12\35\7\uffff\3\35\1\120\26\35\4\uffff\1\35"+ "\1\uffff\3\35\1\120\26\35", "\1\122\37\uffff\1\122", "\1\123\37\uffff\1\123", "\1\124\37\uffff\1\124", "\1\125\37\uffff\1\125", - "\2\35\13\uffff\1\35\20\uffff\32\35\4\uffff\1\35\1\uffff\32"+ + "\2\35\13\uffff\12\35\7\uffff\32\35\4\uffff\1\35\1\uffff\32"+ "\35", "\1\127\37\uffff\1\127", "", @@ -3162,12 +3162,12 @@ public class CMISLexer extends Lexer { "\1\67\1\uffff\12\75\13\uffff\1\67\37\uffff\1\67", "\1\130\37\uffff\1\130", "\1\131\37\uffff\1\131", - "\2\35\13\uffff\1\35\20\uffff\32\35\4\uffff\1\35\1\uffff\32"+ + "\2\35\13\uffff\12\35\7\uffff\32\35\4\uffff\1\35\1\uffff\32"+ "\35", "", - "\2\35\13\uffff\1\35\20\uffff\32\35\4\uffff\1\35\1\uffff\32"+ + "\2\35\13\uffff\12\35\7\uffff\32\35\4\uffff\1\35\1\uffff\32"+ "\35", - "\2\35\13\uffff\1\35\20\uffff\32\35\4\uffff\1\35\1\uffff\32"+ + "\2\35\13\uffff\12\35\7\uffff\32\35\4\uffff\1\35\1\uffff\32"+ "\35", "\1\135\37\uffff\1\135", "\1\136\37\uffff\1\136", @@ -3184,7 +3184,7 @@ public class CMISLexer extends Lexer { "\1\147\37\uffff\1\147", "", "\1\150\37\uffff\1\150", - "\2\35\13\uffff\1\35\20\uffff\32\35\4\uffff\1\35\1\uffff\32"+ + "\2\35\13\uffff\12\35\7\uffff\32\35\4\uffff\1\35\1\uffff\32"+ "\35", "\1\152\37\uffff\1\152", "\1\153\37\uffff\1\153", @@ -3197,13 +3197,13 @@ public class CMISLexer extends Lexer { "", "\1\157\37\uffff\1\157", "\1\160\37\uffff\1\160", - "\2\35\13\uffff\1\35\20\uffff\32\35\4\uffff\1\35\1\uffff\32"+ + "\2\35\13\uffff\12\35\7\uffff\32\35\4\uffff\1\35\1\uffff\32"+ "\35", - "\2\35\13\uffff\1\35\20\uffff\32\35\4\uffff\1\35\1\uffff\32"+ + "\2\35\13\uffff\12\35\7\uffff\32\35\4\uffff\1\35\1\uffff\32"+ "\35", - "\2\35\13\uffff\1\35\20\uffff\32\35\4\uffff\1\35\1\uffff\32"+ + "\2\35\13\uffff\12\35\7\uffff\32\35\4\uffff\1\35\1\uffff\32"+ "\35", - "\2\35\13\uffff\1\35\20\uffff\32\35\4\uffff\1\35\1\uffff\32"+ + "\2\35\13\uffff\12\35\7\uffff\32\35\4\uffff\1\35\1\uffff\32"+ "\35", "\1\165\37\uffff\1\165", "\1\166\37\uffff\1\166", @@ -3212,36 +3212,36 @@ public class CMISLexer extends Lexer { "\1\171\37\uffff\1\171", "\1\172\37\uffff\1\172", "", - "\2\35\13\uffff\1\35\20\uffff\32\35\4\uffff\1\35\1\uffff\32"+ + "\2\35\13\uffff\12\35\7\uffff\32\35\4\uffff\1\35\1\uffff\32"+ "\35", "\1\174\37\uffff\1\174", - "\2\35\13\uffff\1\35\20\uffff\32\35\4\uffff\1\35\1\uffff\32"+ + "\2\35\13\uffff\12\35\7\uffff\32\35\4\uffff\1\35\1\uffff\32"+ "\35", "\1\176\37\uffff\1\176", - "\2\35\13\uffff\1\35\20\uffff\32\35\4\uffff\1\35\1\uffff\32"+ + "\2\35\13\uffff\12\35\7\uffff\32\35\4\uffff\1\35\1\uffff\32"+ "\35", - "\2\35\13\uffff\1\35\20\uffff\32\35\4\uffff\1\35\1\uffff\32"+ + "\2\35\13\uffff\12\35\7\uffff\32\35\4\uffff\1\35\1\uffff\32"+ "\35", - "\2\35\13\uffff\1\35\20\uffff\32\35\4\uffff\1\35\1\uffff\32"+ + "\2\35\13\uffff\12\35\7\uffff\32\35\4\uffff\1\35\1\uffff\32"+ "\35", "", "", "", "", - "\2\35\13\uffff\1\35\20\uffff\32\35\4\uffff\1\35\1\uffff\32"+ + "\2\35\13\uffff\12\35\7\uffff\32\35\4\uffff\1\35\1\uffff\32"+ "\35", "\1\u0083\37\uffff\1\u0083", "\1\u0084\37\uffff\1\u0084", - "\2\35\13\uffff\1\35\20\uffff\32\35\4\uffff\1\35\1\uffff\32"+ + "\2\35\13\uffff\12\35\7\uffff\32\35\4\uffff\1\35\1\uffff\32"+ "\35", - "\2\35\13\uffff\1\35\20\uffff\32\35\4\uffff\1\35\1\uffff\32"+ + "\2\35\13\uffff\12\35\7\uffff\32\35\4\uffff\1\35\1\uffff\32"+ "\35", - "\2\35\13\uffff\1\35\20\uffff\32\35\4\uffff\1\35\1\uffff\32"+ + "\2\35\13\uffff\12\35\7\uffff\32\35\4\uffff\1\35\1\uffff\32"+ "\35", "", "\1\u0088\37\uffff\1\u0088", "", - "\2\35\13\uffff\1\35\20\uffff\32\35\4\uffff\1\35\1\uffff\32"+ + "\2\35\13\uffff\12\35\7\uffff\32\35\4\uffff\1\35\1\uffff\32"+ "\35", "", "", @@ -3255,14 +3255,14 @@ public class CMISLexer extends Lexer { "\1\u008c\37\uffff\1\u008c", "", "\1\u008d\37\uffff\1\u008d", - "\2\35\13\uffff\1\35\20\uffff\32\35\4\uffff\1\35\1\uffff\32"+ + "\2\35\13\uffff\12\35\7\uffff\32\35\4\uffff\1\35\1\uffff\32"+ "\35", "\1\u008f\37\uffff\1\u008f", "\1\u0090\37\uffff\1\u0090", "", - "\2\35\13\uffff\1\35\20\uffff\32\35\4\uffff\1\35\1\uffff\32"+ + "\2\35\13\uffff\12\35\7\uffff\32\35\4\uffff\1\35\1\uffff\32"+ "\35", - "\2\35\13\uffff\1\35\20\uffff\32\35\4\uffff\1\35\1\uffff\32"+ + "\2\35\13\uffff\12\35\7\uffff\32\35\4\uffff\1\35\1\uffff\32"+ "\35", "", "" diff --git a/source/java/org/alfresco/repo/search/impl/parsers/CMISParser.java b/source/java/org/alfresco/repo/search/impl/parsers/CMISParser.java index cad389f897..e161f0e3ee 100644 --- a/source/java/org/alfresco/repo/search/impl/parsers/CMISParser.java +++ b/source/java/org/alfresco/repo/search/impl/parsers/CMISParser.java @@ -1,4 +1,4 @@ -// $ANTLR 3.1.2 W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\CMIS.g 2009-03-18 14:58:50 +// $ANTLR 3.1.2 W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\CMIS.g 2009-04-06 14:38:11 package org.alfresco.repo.search.impl.parsers; import org.antlr.runtime.*; @@ -277,7 +277,7 @@ public class CMISParser extends Parser { // AST REWRITE - // elements: orderByClause, fromClause, whereClause, selectList + // elements: selectList, fromClause, whereClause, orderByClause // token labels: // rule labels: retval // token list labels: @@ -717,7 +717,7 @@ public class CMISParser extends Parser { // AST REWRITE - // elements: columnName, valueExpression + // elements: valueExpression, columnName // token labels: // rule labels: retval // token list labels: @@ -1111,7 +1111,7 @@ public class CMISParser extends Parser { // AST REWRITE - // elements: qualifier, columnName + // elements: columnName, qualifier // token labels: // rule labels: retval // token list labels: @@ -1256,7 +1256,7 @@ public class CMISParser extends Parser { // AST REWRITE - // elements: qualifier, multiValuedColumnName + // elements: multiValuedColumnName, qualifier // token labels: // rule labels: retval // token list labels: @@ -1597,7 +1597,7 @@ public class CMISParser extends Parser { // AST REWRITE - // elements: qualifier, columnName + // elements: columnName, qualifier // token labels: // rule labels: retval // token list labels: @@ -2401,7 +2401,7 @@ public class CMISParser extends Parser { // AST REWRITE - // elements: joinSpecification, joinType, tableReference, JOIN + // elements: joinSpecification, joinType, JOIN, tableReference // token labels: // rule labels: retval // token list labels: @@ -2788,7 +2788,7 @@ public class CMISParser extends Parser { // AST REWRITE - // elements: rhs, EQUALS, ON, lhs + // elements: ON, lhs, rhs, EQUALS // token labels: // rule labels: retval, rhs, lhs // token list labels: @@ -3638,7 +3638,7 @@ public class CMISParser extends Parser { // AST REWRITE - // elements: valueExpression, compOp, literalOrParameterName + // elements: compOp, valueExpression, literalOrParameterName // token labels: // rule labels: retval // token list labels: @@ -3999,7 +3999,7 @@ public class CMISParser extends Parser { // AST REWRITE - // elements: columnReference, inValueList, NOT + // elements: NOT, columnReference, inValueList // token labels: // rule labels: retval // token list labels: @@ -4244,7 +4244,7 @@ public class CMISParser extends Parser { // AST REWRITE - // elements: characterStringLiteral, columnReference, NOT + // elements: NOT, columnReference, characterStringLiteral // token labels: // rule labels: retval // token list labels: @@ -4745,7 +4745,7 @@ public class CMISParser extends Parser { // AST REWRITE - // elements: multiValuedColumnReference, compOp, literalOrParameterName, ANY + // elements: multiValuedColumnReference, ANY, literalOrParameterName, compOp // token labels: // rule labels: retval // token list labels: @@ -4881,7 +4881,7 @@ public class CMISParser extends Parser { // AST REWRITE - // elements: NOT, multiValuedColumnReference, inValueList, ANY + // elements: inValueList, ANY, multiValuedColumnReference, NOT // token labels: // rule labels: retval // token list labels: @@ -5322,7 +5322,7 @@ public class CMISParser extends Parser { // AST REWRITE - // elements: folderId, qualifier + // elements: qualifier, folderId // token labels: // rule labels: retval // token list labels: diff --git a/source/java/org/alfresco/repo/search/impl/parsers/FTS.g b/source/java/org/alfresco/repo/search/impl/parsers/FTS.g index a9b8200ae8..4de1a28957 100644 --- a/source/java/org/alfresco/repo/search/impl/parsers/FTS.g +++ b/source/java/org/alfresco/repo/search/impl/parsers/FTS.g @@ -24,7 +24,8 @@ */ /* - * Parser for the Alfresco query language + * Parser for the Alfresco full text query language. + * It may be used stand-alone or embedded, for example, in CMIS SQL contains() * */ @@ -46,10 +47,19 @@ tokens PHRASE; SYNONYM; + DEFAULT; + MANDATORY; + OPTIONAL; + EXCLUDE; + FIELD_DISJUNCTION; FIELD_CONJUNCTION; FIELD_NEGATION; FIELD_GROUP; + FIELD_DEFAULT; + FIELD_MANDATORY; + FIELD_OPTIONAL; + FIELD_EXCLUDE; FG_TERM; FG_EXACT_TERM; FG_PHRASE; @@ -58,6 +68,9 @@ tokens FG_RANGE; COLUMN_REF; + + INCLUSIVE; + EXCLUSIVE; } @lexer::header{package org.alfresco.repo.search.impl.parsers;} @@ -127,7 +140,7 @@ catch(RecognitionException e) } } -fts +ftsQuery : ftsImplicitConjunctionOrDisjunction EOF -> ftsImplicitConjunctionOrDisjunction ; @@ -140,21 +153,28 @@ ftsImplicitConjunctionOrDisjunction ; ftsExplicitDisjunction - : ftsExplictConjunction (OR ftsExplictConjunction)* + : ftsExplictConjunction ((or) => or ftsExplictConjunction)* -> ^(DISJUNCTION ftsExplictConjunction+) ; ftsExplictConjunction - : ftsNot (AND ftsNot)* - -> ^(CONJUNCTION ftsNot) + : ftsPrefixed ((and) => and ftsPrefixed)* + -> ^(CONJUNCTION ftsPrefixed) ; -ftsNot - : MINUS ftsTest + +ftsPrefixed + : (not) => not ftsTest -> ^(NEGATION ftsTest) - | ftsTest - -> ftsTest - ; + | ftsTest + -> ^(DEFAULT ftsTest) + | PLUS ftsTest + -> ^(MANDATORY ftsTest) + | BAR ftsTest + -> ^(OPTIONAL ftsTest) + | MINUS ftsTest + -> ^(EXCLUDE ftsTest) + ; ftsTest : ftsTerm @@ -180,7 +200,7 @@ ftsTerm ; ftsExactTerm - : PLUS ftsTerm + : EQUALS ftsTerm -> ftsTerm ; @@ -208,21 +228,28 @@ ftsFieldGroupImplicitConjunctionOrDisjunction ; ftsFieldGroupExplicitDisjunction - : ftsFieldGroupExplictConjunction (OR ftsFieldGroupExplictConjunction)* + : ftsFieldGroupExplictConjunction ((or) => or ftsFieldGroupExplictConjunction)* -> ^(FIELD_DISJUNCTION ftsFieldGroupExplictConjunction+) ; ftsFieldGroupExplictConjunction - : ftsFieldGroupNot (AND ftsFieldGroupNot)* - -> ^(FIELD_CONJUNCTION ftsFieldGroupNot+) + : ftsFieldGroupPrefixed ((and) => and ftsFieldGroupPrefixed)* + -> ^(FIELD_CONJUNCTION ftsFieldGroupPrefixed+) ; -ftsFieldGroupNot : MINUS ftsFieldGroupTest - -> FIELD_NEGATION ftsFieldGroupTest - | ftsFieldGroupTest - -> ftsFieldGroupTest - ; +ftsFieldGroupPrefixed +: (not) => not ftsFieldGroupTest + -> ^(FIELD_NEGATION ftsFieldGroupTest) + | ftsFieldGroupTest + -> ^(FIELD_DEFAULT ftsFieldGroupTest) + | PLUS ftsFieldGroupTest + -> ^(FIELD_MANDATORY ftsFieldGroupTest) + | BAR ftsFieldGroupTest + -> ^(FIELD_OPTIONAL ftsFieldGroupTest) + | MINUS ftsFieldGroupTest + -> ^(FIELD_EXCLUDE ftsFieldGroupTest) + ; ftsFieldGroupTest @@ -247,7 +274,7 @@ ftsFieldGroupTerm ; ftsFieldGroupExactTerm - : PLUS ftsFieldGroupTerm + : EQUALS ftsFieldGroupTerm -> ftsFieldGroupTerm ; @@ -265,10 +292,28 @@ ftsFieldGroupProximity -> ftsFieldGroupTerm ftsFieldGroupTerm ; -ftsFieldGroupRange: ftsFieldGroupTerm DOTDOT ftsFieldGroupTerm - -> ftsFieldGroupTerm ftsFieldGroupTerm +ftsFieldGroupRange + : ftsRangeWord DOTDOT ftsRangeWord + -> INCLUSIVE ftsRangeWord ftsRangeWord INCLUSIVE + | range_left ftsRangeWord TO ftsRangeWord range_right + -> range_left ftsRangeWord ftsRangeWord range_right ; +range_left + : LPAREN + -> INCLUSIVE + | LCURL + -> EXCLUSIVE + ; + +range_right + : RPAREN + -> INCLUSIVE + | RCURL + -> EXCLUSIVE + ; + + columnReference : ( qualifier=identifier DOT )? name=identifier -> ^(COLUMN_REF $name $qualifier?) @@ -281,8 +326,39 @@ identifier ftsWord : ID | FTSWORD + | OR + | AND + | NOT + | TO + ; + +ftsRangeWord + : ID + | FTSWORD + | FTSPHRASE ; +or + : OR + | BAR BAR + ; + +and + : AND + | AMP AMP + ; + +not + : NOT + | EXCLAMATION + ; + + + +FTSPHRASE + : '"' (F_ESC | ~('\\'|'"') )* '"' ; + + OR : ('O'|'o')('R'|'r'); AND : ('A'|'a')('N'|'n')('D'|'d'); NOT : ('N'|'n')('O'|'o')('T'|'t'); @@ -295,10 +371,41 @@ COLON : ':' ; STAR : '*' ; DOTDOT : '..' ; DOT : '.' ; +AMP : '&' ; +EXCLAMATION : '!' ; +BAR : '|' ; +EQUALS : '=' ; +QUESTION_MARK : '?' ; +LCURL : '{' ; +RCURL : '}' ; +LSQUARE : '[' ; +RSQUARE : ']' ; +TO : ('T'|'t')('O'|'o') ; +COMMA : ','; +CARAT : '^'; +DOLLAR : '$'; -ID : ('a'..'z'|'A'..'Z'|'_')('a'..'z'|'A'..'Z'|'0'..'0'|'_'|'$'|'#')* ; +/** + * We should support _x????_ encoding for invalid sql characters + */ +ID : ('a'..'z'|'A'..'Z'|'_')('a'..'z'|'A'..'Z'|'0'..'9'|'_'|'$'|'#')* ; -FTSWORD : INWORD+; + +FTSWORD : (F_ESC | INWORD)+; + +fragment +F_ESC : '\\' + ( 'u' F_HEX F_HEX F_HEX F_HEX + | . // any single char escaped + ) + ; + +fragment +F_HEX : + '0' .. '9' + | 'a' .. 'f' + | 'A' .. 'F' + ; fragment INWORD : '\u0041' .. '\u005A' @@ -317,7 +424,7 @@ INWORD : '\u0041' .. '\u005A' | '\u0660' .. '\u0669' | '\u06F0' .. '\u06F9' | '\u0966' .. '\u096F' - | '\u09E6' .. '\u09EF' + | '\u09E6' .. '\u09EF' | '\u0A66' .. '\u0A6F' | '\u0AE6' .. '\u0AEF' | '\u0B66' .. '\u0B6F' @@ -330,7 +437,6 @@ INWORD : '\u0041' .. '\u005A' | '\u1040' .. '\u1049' ; -FTSPHRASE - : '"' (~'"' | '""')* '"' ; + WS : ( ' ' | '\t' | '\r' | '\n' )+ { $channel = HIDDEN; } ; diff --git a/source/java/org/alfresco/repo/search/impl/parsers/FTS.tokens b/source/java/org/alfresco/repo/search/impl/parsers/FTS.tokens index f46e6c263a..9e4feac9af 100644 --- a/source/java/org/alfresco/repo/search/impl/parsers/FTS.tokens +++ b/source/java/org/alfresco/repo/search/impl/parsers/FTS.tokens @@ -1,36 +1,61 @@ +DOLLAR=61 TERM=8 -STAR=32 -FG_PROXIMITY=20 -CONJUNCTION=6 -FG_TERM=16 +STAR=42 +LSQUARE=57 +AMP=53 +FG_PROXIMITY=28 +FG_TERM=24 EXACT_TERM=9 -FIELD_GROUP=15 -INWORD=38 -FIELD_DISJUNCTION=12 -DOTDOT=33 -NOT=37 -FG_EXACT_TERM=17 -MINUS=25 -ID=35 -AND=24 -FTSWORD=36 -LPAREN=26 -PHRASE=10 -COLON=28 -DISJUNCTION=5 -RPAREN=27 -TILDA=31 -FTS=4 -WS=39 -FG_SYNONYM=19 -NEGATION=7 -FTSPHRASE=30 -FIELD_CONJUNCTION=13 -OR=23 -PLUS=29 -DOT=34 -COLUMN_REF=22 -FG_RANGE=21 +FIELD_DISJUNCTION=16 +EQUALS=39 +DOTDOT=43 +NOT=52 +MANDATORY=13 +FG_EXACT_TERM=25 +FIELD_EXCLUDE=23 +EXCLUSIVE=32 +AND=51 +ID=48 +LPAREN=36 +RPAREN=37 +TILDA=41 +EXCLAMATION=54 +COMMA=59 +FIELD_DEFAULT=20 +QUESTION_MARK=56 +CARAT=60 +PLUS=33 +FIELD_OPTIONAL=22 +DOT=47 +COLUMN_REF=30 +F_ESC=55 SYNONYM=11 -FG_PHRASE=18 -FIELD_NEGATION=14 +EXCLUDE=15 +TO=44 +CONJUNCTION=6 +FIELD_GROUP=19 +DEFAULT=12 +INWORD=62 +RSQUARE=58 +MINUS=35 +FTSWORD=49 +PHRASE=10 +OPTIONAL=14 +COLON=38 +DISJUNCTION=5 +LCURL=45 +FTS=4 +WS=64 +FG_SYNONYM=27 +NEGATION=7 +FTSPHRASE=40 +FIELD_CONJUNCTION=17 +INCLUSIVE=31 +OR=50 +RCURL=46 +FIELD_MANDATORY=21 +F_HEX=63 +FG_RANGE=29 +BAR=34 +FG_PHRASE=26 +FIELD_NEGATION=18 diff --git a/source/java/org/alfresco/repo/search/impl/parsers/FTSLexer.java b/source/java/org/alfresco/repo/search/impl/parsers/FTSLexer.java index 5f60c4e6f8..df4ff8315d 100644 --- a/source/java/org/alfresco/repo/search/impl/parsers/FTSLexer.java +++ b/source/java/org/alfresco/repo/search/impl/parsers/FTSLexer.java @@ -1,4 +1,4 @@ -// $ANTLR 3.1.2 W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g 2009-03-18 14:58:19 +// $ANTLR 3.1.2 W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g 2009-04-06 14:56:17 package org.alfresco.repo.search.impl.parsers; import org.antlr.runtime.*; @@ -7,43 +7,68 @@ import java.util.List; import java.util.ArrayList; public class FTSLexer extends Lexer { + public static final int DOLLAR=61; public static final int TERM=8; - public static final int STAR=32; - public static final int FG_PROXIMITY=20; - public static final int CONJUNCTION=6; - public static final int FG_TERM=16; + public static final int STAR=42; + public static final int LSQUARE=57; + public static final int AMP=53; + public static final int FG_PROXIMITY=28; + public static final int FG_TERM=24; public static final int EXACT_TERM=9; - public static final int FIELD_GROUP=15; - public static final int INWORD=38; - public static final int FIELD_DISJUNCTION=12; - public static final int DOTDOT=33; - public static final int NOT=37; - public static final int FG_EXACT_TERM=17; - public static final int MINUS=25; - public static final int ID=35; - public static final int AND=24; + public static final int FIELD_DISJUNCTION=16; + public static final int DOTDOT=43; + public static final int EQUALS=39; + public static final int FG_EXACT_TERM=25; + public static final int MANDATORY=13; + public static final int NOT=52; + public static final int EXCLUSIVE=32; + public static final int FIELD_EXCLUDE=23; + public static final int AND=51; + public static final int ID=48; public static final int EOF=-1; - public static final int PHRASE=10; - public static final int LPAREN=26; - public static final int FTSWORD=36; - public static final int COLON=28; - public static final int DISJUNCTION=5; - public static final int RPAREN=27; - public static final int FTS=4; - public static final int TILDA=31; - public static final int FG_SYNONYM=19; - public static final int WS=39; - public static final int NEGATION=7; - public static final int FTSPHRASE=30; - public static final int FIELD_CONJUNCTION=13; - public static final int OR=23; - public static final int PLUS=29; - public static final int DOT=34; - public static final int COLUMN_REF=22; + public static final int LPAREN=36; + public static final int RPAREN=37; + public static final int TILDA=41; + public static final int EXCLAMATION=54; + public static final int COMMA=59; + public static final int FIELD_DEFAULT=20; + public static final int QUESTION_MARK=56; + public static final int CARAT=60; + public static final int PLUS=33; + public static final int FIELD_OPTIONAL=22; + public static final int DOT=47; + public static final int COLUMN_REF=30; + public static final int F_ESC=55; public static final int SYNONYM=11; - public static final int FG_RANGE=21; - public static final int FG_PHRASE=18; - public static final int FIELD_NEGATION=14; + public static final int EXCLUDE=15; + public static final int TO=44; + public static final int CONJUNCTION=6; + public static final int FIELD_GROUP=19; + public static final int DEFAULT=12; + public static final int INWORD=62; + public static final int RSQUARE=58; + public static final int MINUS=35; + public static final int PHRASE=10; + public static final int FTSWORD=49; + public static final int OPTIONAL=14; + public static final int COLON=38; + public static final int DISJUNCTION=5; + public static final int FTS=4; + public static final int LCURL=45; + public static final int FG_SYNONYM=27; + public static final int WS=64; + public static final int NEGATION=7; + public static final int FTSPHRASE=40; + public static final int FIELD_CONJUNCTION=17; + public static final int INCLUSIVE=31; + public static final int RCURL=46; + public static final int OR=50; + public static final int FIELD_MANDATORY=21; + public static final int F_HEX=63; + public static final int FG_RANGE=29; + public static final int BAR=34; + public static final int FG_PHRASE=26; + public static final int FIELD_NEGATION=18; // delegates // delegators @@ -58,13 +83,77 @@ public class FTSLexer extends Lexer { } public String getGrammarFileName() { return "W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g"; } + // $ANTLR start "FTSPHRASE" + public final void mFTSPHRASE() throws RecognitionException { + try { + int _type = FTSPHRASE; + int _channel = DEFAULT_TOKEN_CHANNEL; + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:359:3: ( '\"' ( F_ESC | ~ ( '\\\\' | '\"' ) )* '\"' ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:359:5: '\"' ( F_ESC | ~ ( '\\\\' | '\"' ) )* '\"' + { + match('\"'); + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:359:9: ( F_ESC | ~ ( '\\\\' | '\"' ) )* + loop1: + do { + int alt1=3; + int LA1_0 = input.LA(1); + + if ( (LA1_0=='\\') ) { + alt1=1; + } + else if ( ((LA1_0>='\u0000' && LA1_0<='!')||(LA1_0>='#' && LA1_0<='[')||(LA1_0>=']' && LA1_0<='\uFFFF')) ) { + alt1=2; + } + + + switch (alt1) { + case 1 : + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:359:10: F_ESC + { + mF_ESC(); + + } + break; + case 2 : + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:359:18: ~ ( '\\\\' | '\"' ) + { + if ( (input.LA(1)>='\u0000' && input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) { + input.consume(); + + } + else { + MismatchedSetException mse = new MismatchedSetException(null,input); + recover(mse); + throw mse;} + + + } + break; + + default : + break loop1; + } + } while (true); + + match('\"'); + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "FTSPHRASE" + // $ANTLR start "OR" public final void mOR() throws RecognitionException { try { int _type = OR; int _channel = DEFAULT_TOKEN_CHANNEL; - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:286:4: ( ( 'O' | 'o' ) ( 'R' | 'r' ) ) - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:286:6: ( 'O' | 'o' ) ( 'R' | 'r' ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:362:4: ( ( 'O' | 'o' ) ( 'R' | 'r' ) ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:362:6: ( 'O' | 'o' ) ( 'R' | 'r' ) { if ( input.LA(1)=='O'||input.LA(1)=='o' ) { input.consume(); @@ -100,8 +189,8 @@ public class FTSLexer extends Lexer { try { int _type = AND; int _channel = DEFAULT_TOKEN_CHANNEL; - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:287:5: ( ( 'A' | 'a' ) ( 'N' | 'n' ) ( 'D' | 'd' ) ) - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:287:7: ( 'A' | 'a' ) ( 'N' | 'n' ) ( 'D' | 'd' ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:363:5: ( ( 'A' | 'a' ) ( 'N' | 'n' ) ( 'D' | 'd' ) ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:363:7: ( 'A' | 'a' ) ( 'N' | 'n' ) ( 'D' | 'd' ) { if ( input.LA(1)=='A'||input.LA(1)=='a' ) { input.consume(); @@ -146,8 +235,8 @@ public class FTSLexer extends Lexer { try { int _type = NOT; int _channel = DEFAULT_TOKEN_CHANNEL; - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:288:5: ( ( 'N' | 'n' ) ( 'O' | 'o' ) ( 'T' | 't' ) ) - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:288:7: ( 'N' | 'n' ) ( 'O' | 'o' ) ( 'T' | 't' ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:364:5: ( ( 'N' | 'n' ) ( 'O' | 'o' ) ( 'T' | 't' ) ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:364:7: ( 'N' | 'n' ) ( 'O' | 'o' ) ( 'T' | 't' ) { if ( input.LA(1)=='N'||input.LA(1)=='n' ) { input.consume(); @@ -192,8 +281,8 @@ public class FTSLexer extends Lexer { try { int _type = TILDA; int _channel = DEFAULT_TOKEN_CHANNEL; - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:289:7: ( '~' ) - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:289:9: '~' + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:365:7: ( '~' ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:365:9: '~' { match('~'); @@ -212,8 +301,8 @@ public class FTSLexer extends Lexer { try { int _type = LPAREN; int _channel = DEFAULT_TOKEN_CHANNEL; - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:290:8: ( '(' ) - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:290:10: '(' + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:366:8: ( '(' ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:366:10: '(' { match('('); @@ -232,8 +321,8 @@ public class FTSLexer extends Lexer { try { int _type = RPAREN; int _channel = DEFAULT_TOKEN_CHANNEL; - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:291:8: ( ')' ) - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:291:10: ')' + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:367:8: ( ')' ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:367:10: ')' { match(')'); @@ -252,8 +341,8 @@ public class FTSLexer extends Lexer { try { int _type = PLUS; int _channel = DEFAULT_TOKEN_CHANNEL; - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:292:6: ( '+' ) - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:292:8: '+' + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:368:6: ( '+' ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:368:8: '+' { match('+'); @@ -272,8 +361,8 @@ public class FTSLexer extends Lexer { try { int _type = MINUS; int _channel = DEFAULT_TOKEN_CHANNEL; - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:293:7: ( '-' ) - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:293:9: '-' + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:369:7: ( '-' ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:369:9: '-' { match('-'); @@ -292,8 +381,8 @@ public class FTSLexer extends Lexer { try { int _type = COLON; int _channel = DEFAULT_TOKEN_CHANNEL; - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:294:7: ( ':' ) - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:294:9: ':' + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:370:7: ( ':' ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:370:9: ':' { match(':'); @@ -312,8 +401,8 @@ public class FTSLexer extends Lexer { try { int _type = STAR; int _channel = DEFAULT_TOKEN_CHANNEL; - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:295:6: ( '*' ) - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:295:8: '*' + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:371:6: ( '*' ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:371:8: '*' { match('*'); @@ -332,8 +421,8 @@ public class FTSLexer extends Lexer { try { int _type = DOTDOT; int _channel = DEFAULT_TOKEN_CHANNEL; - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:296:8: ( '..' ) - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:296:10: '..' + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:372:8: ( '..' ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:372:10: '..' { match(".."); @@ -353,8 +442,8 @@ public class FTSLexer extends Lexer { try { int _type = DOT; int _channel = DEFAULT_TOKEN_CHANNEL; - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:297:5: ( '.' ) - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:297:7: '.' + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:373:5: ( '.' ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:373:7: '.' { match('.'); @@ -368,13 +457,290 @@ public class FTSLexer extends Lexer { } // $ANTLR end "DOT" + // $ANTLR start "AMP" + public final void mAMP() throws RecognitionException { + try { + int _type = AMP; + int _channel = DEFAULT_TOKEN_CHANNEL; + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:374:5: ( '&' ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:374:7: '&' + { + match('&'); + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "AMP" + + // $ANTLR start "EXCLAMATION" + public final void mEXCLAMATION() throws RecognitionException { + try { + int _type = EXCLAMATION; + int _channel = DEFAULT_TOKEN_CHANNEL; + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:375:13: ( '!' ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:375:15: '!' + { + match('!'); + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "EXCLAMATION" + + // $ANTLR start "BAR" + public final void mBAR() throws RecognitionException { + try { + int _type = BAR; + int _channel = DEFAULT_TOKEN_CHANNEL; + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:376:5: ( '|' ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:376:7: '|' + { + match('|'); + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "BAR" + + // $ANTLR start "EQUALS" + public final void mEQUALS() throws RecognitionException { + try { + int _type = EQUALS; + int _channel = DEFAULT_TOKEN_CHANNEL; + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:377:8: ( '=' ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:377:10: '=' + { + match('='); + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "EQUALS" + + // $ANTLR start "QUESTION_MARK" + public final void mQUESTION_MARK() throws RecognitionException { + try { + int _type = QUESTION_MARK; + int _channel = DEFAULT_TOKEN_CHANNEL; + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:378:15: ( '?' ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:378:17: '?' + { + match('?'); + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "QUESTION_MARK" + + // $ANTLR start "LCURL" + public final void mLCURL() throws RecognitionException { + try { + int _type = LCURL; + int _channel = DEFAULT_TOKEN_CHANNEL; + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:379:7: ( '{' ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:379:9: '{' + { + match('{'); + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "LCURL" + + // $ANTLR start "RCURL" + public final void mRCURL() throws RecognitionException { + try { + int _type = RCURL; + int _channel = DEFAULT_TOKEN_CHANNEL; + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:380:7: ( '}' ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:380:9: '}' + { + match('}'); + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "RCURL" + + // $ANTLR start "LSQUARE" + public final void mLSQUARE() throws RecognitionException { + try { + int _type = LSQUARE; + int _channel = DEFAULT_TOKEN_CHANNEL; + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:381:9: ( '[' ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:381:11: '[' + { + match('['); + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "LSQUARE" + + // $ANTLR start "RSQUARE" + public final void mRSQUARE() throws RecognitionException { + try { + int _type = RSQUARE; + int _channel = DEFAULT_TOKEN_CHANNEL; + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:382:9: ( ']' ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:382:11: ']' + { + match(']'); + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "RSQUARE" + + // $ANTLR start "TO" + public final void mTO() throws RecognitionException { + try { + int _type = TO; + int _channel = DEFAULT_TOKEN_CHANNEL; + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:383:4: ( ( 'T' | 't' ) ( 'O' | 'o' ) ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:383:6: ( 'T' | 't' ) ( 'O' | 'o' ) + { + if ( input.LA(1)=='T'||input.LA(1)=='t' ) { + input.consume(); + + } + else { + MismatchedSetException mse = new MismatchedSetException(null,input); + recover(mse); + throw mse;} + + if ( input.LA(1)=='O'||input.LA(1)=='o' ) { + input.consume(); + + } + else { + MismatchedSetException mse = new MismatchedSetException(null,input); + recover(mse); + throw mse;} + + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "TO" + + // $ANTLR start "COMMA" + public final void mCOMMA() throws RecognitionException { + try { + int _type = COMMA; + int _channel = DEFAULT_TOKEN_CHANNEL; + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:384:7: ( ',' ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:384:9: ',' + { + match(','); + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "COMMA" + + // $ANTLR start "CARAT" + public final void mCARAT() throws RecognitionException { + try { + int _type = CARAT; + int _channel = DEFAULT_TOKEN_CHANNEL; + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:385:7: ( '^' ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:385:9: '^' + { + match('^'); + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "CARAT" + + // $ANTLR start "DOLLAR" + public final void mDOLLAR() throws RecognitionException { + try { + int _type = DOLLAR; + int _channel = DEFAULT_TOKEN_CHANNEL; + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:386:8: ( '$' ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:386:11: '$' + { + match('$'); + + } + + state.type = _type; + state.channel = _channel; + } + finally { + } + } + // $ANTLR end "DOLLAR" + // $ANTLR start "ID" public final void mID() throws RecognitionException { try { int _type = ID; int _channel = DEFAULT_TOKEN_CHANNEL; - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:299:5: ( ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '0' | '_' | '$' | '#' )* ) - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:299:9: ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '0' | '_' | '$' | '#' )* + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:391:5: ( ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' | '_' | '$' | '#' )* ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:391:9: ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' | '_' | '$' | '#' )* { if ( (input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z') ) { input.consume(); @@ -385,22 +751,22 @@ public class FTSLexer extends Lexer { recover(mse); throw mse;} - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:299:32: ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '0' | '_' | '$' | '#' )* - loop1: + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:391:32: ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' | '_' | '$' | '#' )* + loop2: do { - int alt1=2; - int LA1_0 = input.LA(1); + int alt2=2; + int LA2_0 = input.LA(1); - if ( ((LA1_0>='#' && LA1_0<='$')||LA1_0=='0'||(LA1_0>='A' && LA1_0<='Z')||LA1_0=='_'||(LA1_0>='a' && LA1_0<='z')) ) { - alt1=1; + if ( ((LA2_0>='#' && LA2_0<='$')||(LA2_0>='0' && LA2_0<='9')||(LA2_0>='A' && LA2_0<='Z')||LA2_0=='_'||(LA2_0>='a' && LA2_0<='z')) ) { + alt2=1; } - switch (alt1) { + switch (alt2) { case 1 : // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g: { - if ( (input.LA(1)>='#' && input.LA(1)<='$')||input.LA(1)=='0'||(input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z') ) { + if ( (input.LA(1)>='#' && input.LA(1)<='$')||(input.LA(1)>='0' && input.LA(1)<='9')||(input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z') ) { input.consume(); } @@ -414,7 +780,7 @@ public class FTSLexer extends Lexer { break; default : - break loop1; + break loop2; } } while (true); @@ -434,24 +800,34 @@ public class FTSLexer extends Lexer { try { int _type = FTSWORD; int _channel = DEFAULT_TOKEN_CHANNEL; - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:301:9: ( ( INWORD )+ ) - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:301:12: ( INWORD )+ + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:394:9: ( ( F_ESC | INWORD )+ ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:394:12: ( F_ESC | INWORD )+ { - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:301:12: ( INWORD )+ - int cnt2=0; - loop2: + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:394:12: ( F_ESC | INWORD )+ + int cnt3=0; + loop3: do { - int alt2=2; - int LA2_0 = input.LA(1); + int alt3=3; + int LA3_0 = input.LA(1); - if ( ((LA2_0>='0' && LA2_0<='9')||(LA2_0>='A' && LA2_0<='Z')||(LA2_0>='a' && LA2_0<='z')||(LA2_0>='\u00C0' && LA2_0<='\u00D6')||(LA2_0>='\u00D8' && LA2_0<='\u00F6')||(LA2_0>='\u00F8' && LA2_0<='\u1FFF')||(LA2_0>='\u3040' && LA2_0<='\u318F')||(LA2_0>='\u3300' && LA2_0<='\u337F')||(LA2_0>='\u3400' && LA2_0<='\u3D2D')||(LA2_0>='\u4E00' && LA2_0<='\u9FFF')||(LA2_0>='\uAC00' && LA2_0<='\uD7AF')||(LA2_0>='\uF900' && LA2_0<='\uFAFF')) ) { - alt2=1; + if ( (LA3_0=='\\') ) { + alt3=1; + } + else if ( ((LA3_0>='0' && LA3_0<='9')||(LA3_0>='A' && LA3_0<='Z')||(LA3_0>='a' && LA3_0<='z')||(LA3_0>='\u00C0' && LA3_0<='\u00D6')||(LA3_0>='\u00D8' && LA3_0<='\u00F6')||(LA3_0>='\u00F8' && LA3_0<='\u1FFF')||(LA3_0>='\u3040' && LA3_0<='\u318F')||(LA3_0>='\u3300' && LA3_0<='\u337F')||(LA3_0>='\u3400' && LA3_0<='\u3D2D')||(LA3_0>='\u4E00' && LA3_0<='\u9FFF')||(LA3_0>='\uAC00' && LA3_0<='\uD7AF')||(LA3_0>='\uF900' && LA3_0<='\uFAFF')) ) { + alt3=2; } - switch (alt2) { + switch (alt3) { case 1 : - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:301:12: INWORD + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:394:13: F_ESC + { + mF_ESC(); + + } + break; + case 2 : + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:394:21: INWORD { mINWORD(); @@ -459,12 +835,12 @@ public class FTSLexer extends Lexer { break; default : - if ( cnt2 >= 1 ) break loop2; + if ( cnt3 >= 1 ) break loop3; EarlyExitException eee = - new EarlyExitException(2, input); + new EarlyExitException(3, input); throw eee; } - cnt2++; + cnt3++; } while (true); @@ -478,10 +854,94 @@ public class FTSLexer extends Lexer { } // $ANTLR end "FTSWORD" + // $ANTLR start "F_ESC" + public final void mF_ESC() throws RecognitionException { + try { + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:397:9: ( '\\\\' ( 'u' F_HEX F_HEX F_HEX F_HEX | . ) ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:397:11: '\\\\' ( 'u' F_HEX F_HEX F_HEX F_HEX | . ) + { + match('\\'); + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:398:5: ( 'u' F_HEX F_HEX F_HEX F_HEX | . ) + int alt4=2; + int LA4_0 = input.LA(1); + + if ( (LA4_0=='u') ) { + int LA4_1 = input.LA(2); + + if ( ((LA4_1>='0' && LA4_1<='9')||(LA4_1>='A' && LA4_1<='F')||(LA4_1>='a' && LA4_1<='f')) ) { + alt4=1; + } + else { + alt4=2;} + } + else if ( ((LA4_0>='\u0000' && LA4_0<='t')||(LA4_0>='v' && LA4_0<='\uFFFF')) ) { + alt4=2; + } + else { + NoViableAltException nvae = + new NoViableAltException("", 4, 0, input); + + throw nvae; + } + switch (alt4) { + case 1 : + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:398:7: 'u' F_HEX F_HEX F_HEX F_HEX + { + match('u'); + mF_HEX(); + mF_HEX(); + mF_HEX(); + mF_HEX(); + + } + break; + case 2 : + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:399:7: . + { + matchAny(); + + } + break; + + } + + + } + + } + finally { + } + } + // $ANTLR end "F_ESC" + + // $ANTLR start "F_HEX" + public final void mF_HEX() throws RecognitionException { + try { + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:404:7: ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g: + { + if ( (input.LA(1)>='0' && input.LA(1)<='9')||(input.LA(1)>='A' && input.LA(1)<='F')||(input.LA(1)>='a' && input.LA(1)<='f') ) { + input.consume(); + + } + else { + MismatchedSetException mse = new MismatchedSetException(null,input); + recover(mse); + throw mse;} + + + } + + } + finally { + } + } + // $ANTLR end "F_HEX" + // $ANTLR start "INWORD" public final void mINWORD() throws RecognitionException { try { - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:304:8: ( '\\u0041' .. '\\u005A' | '\\u0061' .. '\\u007A' | '\\u00C0' .. '\\u00D6' | '\\u00D8' .. '\\u00F6' | '\\u00F8' .. '\\u00FF' | '\\u0100' .. '\\u1FFF' | '\\u3040' .. '\\u318F' | '\\u3300' .. '\\u337F' | '\\u3400' .. '\\u3D2D' | '\\u4E00' .. '\\u9FFF' | '\\uF900' .. '\\uFAFF' | '\\uAC00' .. '\\uD7AF' | '\\u0030' .. '\\u0039' | '\\u0660' .. '\\u0669' | '\\u06F0' .. '\\u06F9' | '\\u0966' .. '\\u096F' | '\\u09E6' .. '\\u09EF' | '\\u0A66' .. '\\u0A6F' | '\\u0AE6' .. '\\u0AEF' | '\\u0B66' .. '\\u0B6F' | '\\u0BE7' .. '\\u0BEF' | '\\u0C66' .. '\\u0C6F' | '\\u0CE6' .. '\\u0CEF' | '\\u0D66' .. '\\u0D6F' | '\\u0E50' .. '\\u0E59' | '\\u0ED0' .. '\\u0ED9' | '\\u1040' .. '\\u1049' ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:411:8: ( '\\u0041' .. '\\u005A' | '\\u0061' .. '\\u007A' | '\\u00C0' .. '\\u00D6' | '\\u00D8' .. '\\u00F6' | '\\u00F8' .. '\\u00FF' | '\\u0100' .. '\\u1FFF' | '\\u3040' .. '\\u318F' | '\\u3300' .. '\\u337F' | '\\u3400' .. '\\u3D2D' | '\\u4E00' .. '\\u9FFF' | '\\uF900' .. '\\uFAFF' | '\\uAC00' .. '\\uD7AF' | '\\u0030' .. '\\u0039' | '\\u0660' .. '\\u0669' | '\\u06F0' .. '\\u06F9' | '\\u0966' .. '\\u096F' | '\\u09E6' .. '\\u09EF' | '\\u0A66' .. '\\u0A6F' | '\\u0AE6' .. '\\u0AEF' | '\\u0B66' .. '\\u0B6F' | '\\u0BE7' .. '\\u0BEF' | '\\u0C66' .. '\\u0C6F' | '\\u0CE6' .. '\\u0CEF' | '\\u0D66' .. '\\u0D6F' | '\\u0E50' .. '\\u0E59' | '\\u0ED0' .. '\\u0ED9' | '\\u1040' .. '\\u1049' ) // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g: { if ( (input.LA(1)>='0' && input.LA(1)<='9')||(input.LA(1)>='A' && input.LA(1)<='Z')||(input.LA(1)>='a' && input.LA(1)<='z')||(input.LA(1)>='\u00C0' && input.LA(1)<='\u00D6')||(input.LA(1)>='\u00D8' && input.LA(1)<='\u00F6')||(input.LA(1)>='\u00F8' && input.LA(1)<='\u1FFF')||(input.LA(1)>='\u3040' && input.LA(1)<='\u318F')||(input.LA(1)>='\u3300' && input.LA(1)<='\u337F')||(input.LA(1)>='\u3400' && input.LA(1)<='\u3D2D')||(input.LA(1)>='\u4E00' && input.LA(1)<='\u9FFF')||(input.LA(1)>='\uAC00' && input.LA(1)<='\uD7AF')||(input.LA(1)>='\uF900' && input.LA(1)<='\uFAFF') ) { @@ -502,98 +962,27 @@ public class FTSLexer extends Lexer { } // $ANTLR end "INWORD" - // $ANTLR start "FTSPHRASE" - public final void mFTSPHRASE() throws RecognitionException { - try { - int _type = FTSPHRASE; - int _channel = DEFAULT_TOKEN_CHANNEL; - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:334:2: ( '\"' (~ '\"' | '\"\"' )* '\"' ) - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:334:4: '\"' (~ '\"' | '\"\"' )* '\"' - { - match('\"'); - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:334:8: (~ '\"' | '\"\"' )* - loop3: - do { - int alt3=3; - int LA3_0 = input.LA(1); - - if ( (LA3_0=='\"') ) { - int LA3_1 = input.LA(2); - - if ( (LA3_1=='\"') ) { - alt3=2; - } - - - } - else if ( ((LA3_0>='\u0000' && LA3_0<='!')||(LA3_0>='#' && LA3_0<='\uFFFF')) ) { - alt3=1; - } - - - switch (alt3) { - case 1 : - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:334:9: ~ '\"' - { - if ( (input.LA(1)>='\u0000' && input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='\uFFFF') ) { - input.consume(); - - } - else { - MismatchedSetException mse = new MismatchedSetException(null,input); - recover(mse); - throw mse;} - - - } - break; - case 2 : - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:334:16: '\"\"' - { - match("\"\""); - - - } - break; - - default : - break loop3; - } - } while (true); - - match('\"'); - - } - - state.type = _type; - state.channel = _channel; - } - finally { - } - } - // $ANTLR end "FTSPHRASE" - // $ANTLR start "WS" public final void mWS() throws RecognitionException { try { int _type = WS; int _channel = DEFAULT_TOKEN_CHANNEL; - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:336:4: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ ) - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:336:6: ( ' ' | '\\t' | '\\r' | '\\n' )+ + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:442:4: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:442:6: ( ' ' | '\\t' | '\\r' | '\\n' )+ { - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:336:6: ( ' ' | '\\t' | '\\r' | '\\n' )+ - int cnt4=0; - loop4: + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:442:6: ( ' ' | '\\t' | '\\r' | '\\n' )+ + int cnt5=0; + loop5: do { - int alt4=2; - int LA4_0 = input.LA(1); + int alt5=2; + int LA5_0 = input.LA(1); - if ( ((LA4_0>='\t' && LA4_0<='\n')||LA4_0=='\r'||LA4_0==' ') ) { - alt4=1; + if ( ((LA5_0>='\t' && LA5_0<='\n')||LA5_0=='\r'||LA5_0==' ') ) { + alt5=1; } - switch (alt4) { + switch (alt5) { case 1 : // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g: { @@ -611,12 +1000,12 @@ public class FTSLexer extends Lexer { break; default : - if ( cnt4 >= 1 ) break loop4; + if ( cnt5 >= 1 ) break loop5; EarlyExitException eee = - new EarlyExitException(4, input); + new EarlyExitException(5, input); throw eee; } - cnt4++; + cnt5++; } while (true); _channel = HIDDEN; @@ -632,117 +1021,208 @@ public class FTSLexer extends Lexer { // $ANTLR end "WS" public void mTokens() throws RecognitionException { - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:1:8: ( OR | AND | NOT | TILDA | LPAREN | RPAREN | PLUS | MINUS | COLON | STAR | DOTDOT | DOT | ID | FTSWORD | FTSPHRASE | WS ) - int alt5=16; - alt5 = dfa5.predict(input); - switch (alt5) { + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:1:8: ( FTSPHRASE | OR | AND | NOT | TILDA | LPAREN | RPAREN | PLUS | MINUS | COLON | STAR | DOTDOT | DOT | AMP | EXCLAMATION | BAR | EQUALS | QUESTION_MARK | LCURL | RCURL | LSQUARE | RSQUARE | TO | COMMA | CARAT | DOLLAR | ID | FTSWORD | WS ) + int alt6=29; + alt6 = dfa6.predict(input); + switch (alt6) { case 1 : - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:1:10: OR - { - mOR(); - - } - break; - case 2 : - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:1:13: AND - { - mAND(); - - } - break; - case 3 : - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:1:17: NOT - { - mNOT(); - - } - break; - case 4 : - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:1:21: TILDA - { - mTILDA(); - - } - break; - case 5 : - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:1:27: LPAREN - { - mLPAREN(); - - } - break; - case 6 : - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:1:34: RPAREN - { - mRPAREN(); - - } - break; - case 7 : - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:1:41: PLUS - { - mPLUS(); - - } - break; - case 8 : - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:1:46: MINUS - { - mMINUS(); - - } - break; - case 9 : - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:1:52: COLON - { - mCOLON(); - - } - break; - case 10 : - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:1:58: STAR - { - mSTAR(); - - } - break; - case 11 : - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:1:63: DOTDOT - { - mDOTDOT(); - - } - break; - case 12 : - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:1:70: DOT - { - mDOT(); - - } - break; - case 13 : - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:1:74: ID - { - mID(); - - } - break; - case 14 : - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:1:77: FTSWORD - { - mFTSWORD(); - - } - break; - case 15 : - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:1:85: FTSPHRASE + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:1:10: FTSPHRASE { mFTSPHRASE(); + } + break; + case 2 : + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:1:20: OR + { + mOR(); + + } + break; + case 3 : + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:1:23: AND + { + mAND(); + + } + break; + case 4 : + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:1:27: NOT + { + mNOT(); + + } + break; + case 5 : + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:1:31: TILDA + { + mTILDA(); + + } + break; + case 6 : + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:1:37: LPAREN + { + mLPAREN(); + + } + break; + case 7 : + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:1:44: RPAREN + { + mRPAREN(); + + } + break; + case 8 : + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:1:51: PLUS + { + mPLUS(); + + } + break; + case 9 : + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:1:56: MINUS + { + mMINUS(); + + } + break; + case 10 : + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:1:62: COLON + { + mCOLON(); + + } + break; + case 11 : + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:1:68: STAR + { + mSTAR(); + + } + break; + case 12 : + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:1:73: DOTDOT + { + mDOTDOT(); + + } + break; + case 13 : + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:1:80: DOT + { + mDOT(); + + } + break; + case 14 : + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:1:84: AMP + { + mAMP(); + + } + break; + case 15 : + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:1:88: EXCLAMATION + { + mEXCLAMATION(); + } break; case 16 : - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:1:95: WS + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:1:100: BAR + { + mBAR(); + + } + break; + case 17 : + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:1:104: EQUALS + { + mEQUALS(); + + } + break; + case 18 : + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:1:111: QUESTION_MARK + { + mQUESTION_MARK(); + + } + break; + case 19 : + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:1:125: LCURL + { + mLCURL(); + + } + break; + case 20 : + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:1:131: RCURL + { + mRCURL(); + + } + break; + case 21 : + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:1:137: LSQUARE + { + mLSQUARE(); + + } + break; + case 22 : + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:1:145: RSQUARE + { + mRSQUARE(); + + } + break; + case 23 : + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:1:153: TO + { + mTO(); + + } + break; + case 24 : + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:1:156: COMMA + { + mCOMMA(); + + } + break; + case 25 : + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:1:162: CARAT + { + mCARAT(); + + } + break; + case 26 : + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:1:168: DOLLAR + { + mDOLLAR(); + + } + break; + case 27 : + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:1:175: ID + { + mID(); + + } + break; + case 28 : + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:1:178: FTSWORD + { + mFTSWORD(); + + } + break; + case 29 : + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:1:186: WS { mWS(); @@ -754,42 +1234,47 @@ public class FTSLexer extends Lexer { } - protected DFA5 dfa5 = new DFA5(this); - static final String DFA5_eotS = - "\1\uffff\3\15\7\uffff\1\26\1\15\4\uffff\1\27\3\15\3\uffff\1\32"+ - "\1\33\2\uffff"; - static final String DFA5_eofS = - "\34\uffff"; - static final String DFA5_minS = - "\1\11\3\60\7\uffff\1\56\1\60\4\uffff\1\43\3\60\3\uffff\2\43\2\uffff"; - static final String DFA5_maxS = - "\4\ufaff\7\uffff\1\56\1\ufaff\4\uffff\4\ufaff\3\uffff\2\ufaff\2"+ - "\uffff"; - static final String DFA5_acceptS = - "\4\uffff\1\4\1\5\1\6\1\7\1\10\1\11\1\12\2\uffff\1\15\1\16\1\17"+ - "\1\20\4\uffff\1\13\1\14\1\1\2\uffff\1\2\1\3"; - static final String DFA5_specialS = - "\34\uffff}>"; - static final String[] DFA5_transitionS = { - "\2\20\2\uffff\1\20\22\uffff\1\20\1\uffff\1\17\5\uffff\1\5\1"+ - "\6\1\12\1\7\1\uffff\1\10\1\13\1\uffff\12\16\1\11\6\uffff\1\2"+ - "\14\14\1\3\1\1\13\14\4\uffff\1\15\1\uffff\1\2\14\14\1\3\1\1"+ - "\13\14\3\uffff\1\4\101\uffff\27\16\1\uffff\37\16\1\uffff\u1f08"+ - "\16\u1040\uffff\u0150\16\u0170\uffff\u0080\16\u0080\uffff\u092e"+ - "\16\u10d2\uffff\u5200\16\u0c00\uffff\u2bb0\16\u2150\uffff\u0200"+ - "\16", - "\1\22\11\16\7\uffff\21\22\1\21\10\22\6\uffff\21\22\1\21\10"+ - "\22\105\uffff\27\16\1\uffff\37\16\1\uffff\u1f08\16\u1040\uffff"+ - "\u0150\16\u0170\uffff\u0080\16\u0080\uffff\u092e\16\u10d2\uffff"+ - "\u5200\16\u0c00\uffff\u2bb0\16\u2150\uffff\u0200\16", - "\1\22\11\16\7\uffff\15\22\1\23\14\22\6\uffff\15\22\1\23\14"+ - "\22\105\uffff\27\16\1\uffff\37\16\1\uffff\u1f08\16\u1040\uffff"+ - "\u0150\16\u0170\uffff\u0080\16\u0080\uffff\u092e\16\u10d2\uffff"+ - "\u5200\16\u0c00\uffff\u2bb0\16\u2150\uffff\u0200\16", - "\1\22\11\16\7\uffff\16\22\1\24\13\22\6\uffff\16\22\1\24\13"+ - "\22\105\uffff\27\16\1\uffff\37\16\1\uffff\u1f08\16\u1040\uffff"+ - "\u0150\16\u0170\uffff\u0080\16\u0080\uffff\u092e\16\u10d2\uffff"+ - "\u5200\16\u0c00\uffff\u2bb0\16\u2150\uffff\u0200\16", + protected DFA6 dfa6 = new DFA6(this); + static final String DFA6_eotS = + "\2\uffff\3\34\7\uffff\1\43\11\uffff\1\34\3\uffff\1\34\3\uffff\1"+ + "\45\3\34\2\uffff\1\50\1\uffff\1\51\1\52\3\uffff"; + static final String DFA6_eofS = + "\53\uffff"; + static final String DFA6_minS = + "\1\11\1\uffff\3\60\7\uffff\1\56\11\uffff\1\60\3\uffff\1\60\3\uffff"+ + "\1\43\3\60\2\uffff\1\43\1\uffff\2\43\3\uffff"; + static final String DFA6_maxS = + "\1\ufaff\1\uffff\3\ufaff\7\uffff\1\56\11\uffff\1\ufaff\3\uffff"+ + "\1\ufaff\3\uffff\4\ufaff\2\uffff\1\ufaff\1\uffff\2\ufaff\3\uffff"; + static final String DFA6_acceptS = + "\1\uffff\1\1\3\uffff\1\5\1\6\1\7\1\10\1\11\1\12\1\13\1\uffff\1"+ + "\16\1\17\1\20\1\21\1\22\1\23\1\24\1\25\1\26\1\uffff\1\30\1\31\1"+ + "\32\1\uffff\1\34\1\33\1\35\4\uffff\1\14\1\15\1\uffff\1\2\2\uffff"+ + "\1\27\1\3\1\4"; + static final String DFA6_specialS = + "\53\uffff}>"; + static final String[] DFA6_transitionS = { + "\2\35\2\uffff\1\35\22\uffff\1\35\1\16\1\1\1\uffff\1\31\1\uffff"+ + "\1\15\1\uffff\1\6\1\7\1\13\1\10\1\27\1\11\1\14\1\uffff\12\33"+ + "\1\12\2\uffff\1\20\1\uffff\1\21\1\uffff\1\3\14\32\1\4\1\2\4"+ + "\32\1\26\6\32\1\24\1\33\1\25\1\30\1\34\1\uffff\1\3\14\32\1\4"+ + "\1\2\4\32\1\26\6\32\1\22\1\17\1\23\1\5\101\uffff\27\33\1\uffff"+ + "\37\33\1\uffff\u1f08\33\u1040\uffff\u0150\33\u0170\uffff\u0080"+ + "\33\u0080\uffff\u092e\33\u10d2\uffff\u5200\33\u0c00\uffff\u2bb0"+ + "\33\u2150\uffff\u0200\33", + "", + "\12\37\7\uffff\21\37\1\36\10\37\1\uffff\1\33\4\uffff\21\37"+ + "\1\36\10\37\105\uffff\27\33\1\uffff\37\33\1\uffff\u1f08\33\u1040"+ + "\uffff\u0150\33\u0170\uffff\u0080\33\u0080\uffff\u092e\33\u10d2"+ + "\uffff\u5200\33\u0c00\uffff\u2bb0\33\u2150\uffff\u0200\33", + "\12\37\7\uffff\15\37\1\40\14\37\1\uffff\1\33\4\uffff\15\37"+ + "\1\40\14\37\105\uffff\27\33\1\uffff\37\33\1\uffff\u1f08\33\u1040"+ + "\uffff\u0150\33\u0170\uffff\u0080\33\u0080\uffff\u092e\33\u10d2"+ + "\uffff\u5200\33\u0c00\uffff\u2bb0\33\u2150\uffff\u0200\33", + "\12\37\7\uffff\16\37\1\41\13\37\1\uffff\1\33\4\uffff\16\37"+ + "\1\41\13\37\105\uffff\27\33\1\uffff\37\33\1\uffff\u1f08\33\u1040"+ + "\uffff\u0150\33\u0170\uffff\u0080\33\u0080\uffff\u092e\33\u10d2"+ + "\uffff\u5200\33\u0c00\uffff\u2bb0\33\u2150\uffff\u0200\33", "", "", "", @@ -797,77 +1282,101 @@ public class FTSLexer extends Lexer { "", "", "", - "\1\25", - "\1\22\11\16\7\uffff\32\22\6\uffff\32\22\105\uffff\27\16\1"+ - "\uffff\37\16\1\uffff\u1f08\16\u1040\uffff\u0150\16\u0170\uffff"+ - "\u0080\16\u0080\uffff\u092e\16\u10d2\uffff\u5200\16\u0c00\uffff"+ - "\u2bb0\16\u2150\uffff\u0200\16", + "\1\42", "", "", "", "", - "\2\15\13\uffff\1\22\11\16\7\uffff\32\22\4\uffff\1\15\1\uffff"+ - "\32\22\105\uffff\27\16\1\uffff\37\16\1\uffff\u1f08\16\u1040"+ - "\uffff\u0150\16\u0170\uffff\u0080\16\u0080\uffff\u092e\16\u10d2"+ - "\uffff\u5200\16\u0c00\uffff\u2bb0\16\u2150\uffff\u0200\16", - "\1\22\11\16\7\uffff\32\22\6\uffff\32\22\105\uffff\27\16\1"+ - "\uffff\37\16\1\uffff\u1f08\16\u1040\uffff\u0150\16\u0170\uffff"+ - "\u0080\16\u0080\uffff\u092e\16\u10d2\uffff\u5200\16\u0c00\uffff"+ - "\u2bb0\16\u2150\uffff\u0200\16", - "\1\22\11\16\7\uffff\3\22\1\30\26\22\6\uffff\3\22\1\30\26\22"+ - "\105\uffff\27\16\1\uffff\37\16\1\uffff\u1f08\16\u1040\uffff"+ - "\u0150\16\u0170\uffff\u0080\16\u0080\uffff\u092e\16\u10d2\uffff"+ - "\u5200\16\u0c00\uffff\u2bb0\16\u2150\uffff\u0200\16", - "\1\22\11\16\7\uffff\23\22\1\31\6\22\6\uffff\23\22\1\31\6\22"+ - "\105\uffff\27\16\1\uffff\37\16\1\uffff\u1f08\16\u1040\uffff"+ - "\u0150\16\u0170\uffff\u0080\16\u0080\uffff\u092e\16\u10d2\uffff"+ - "\u5200\16\u0c00\uffff\u2bb0\16\u2150\uffff\u0200\16", "", "", "", - "\2\15\13\uffff\1\22\11\16\7\uffff\32\22\4\uffff\1\15\1\uffff"+ - "\32\22\105\uffff\27\16\1\uffff\37\16\1\uffff\u1f08\16\u1040"+ - "\uffff\u0150\16\u0170\uffff\u0080\16\u0080\uffff\u092e\16\u10d2"+ - "\uffff\u5200\16\u0c00\uffff\u2bb0\16\u2150\uffff\u0200\16", - "\2\15\13\uffff\1\22\11\16\7\uffff\32\22\4\uffff\1\15\1\uffff"+ - "\32\22\105\uffff\27\16\1\uffff\37\16\1\uffff\u1f08\16\u1040"+ - "\uffff\u0150\16\u0170\uffff\u0080\16\u0080\uffff\u092e\16\u10d2"+ - "\uffff\u5200\16\u0c00\uffff\u2bb0\16\u2150\uffff\u0200\16", + "", + "", + "\12\37\7\uffff\16\37\1\44\13\37\1\uffff\1\33\4\uffff\16\37"+ + "\1\44\13\37\105\uffff\27\33\1\uffff\37\33\1\uffff\u1f08\33\u1040"+ + "\uffff\u0150\33\u0170\uffff\u0080\33\u0080\uffff\u092e\33\u10d2"+ + "\uffff\u5200\33\u0c00\uffff\u2bb0\33\u2150\uffff\u0200\33", + "", + "", + "", + "\12\37\7\uffff\32\37\1\uffff\1\33\4\uffff\32\37\105\uffff"+ + "\27\33\1\uffff\37\33\1\uffff\u1f08\33\u1040\uffff\u0150\33\u0170"+ + "\uffff\u0080\33\u0080\uffff\u092e\33\u10d2\uffff\u5200\33\u0c00"+ + "\uffff\u2bb0\33\u2150\uffff\u0200\33", + "", + "", + "", + "\2\34\13\uffff\12\37\7\uffff\32\37\1\uffff\1\33\2\uffff\1"+ + "\34\1\uffff\32\37\105\uffff\27\33\1\uffff\37\33\1\uffff\u1f08"+ + "\33\u1040\uffff\u0150\33\u0170\uffff\u0080\33\u0080\uffff\u092e"+ + "\33\u10d2\uffff\u5200\33\u0c00\uffff\u2bb0\33\u2150\uffff\u0200"+ + "\33", + "\12\37\7\uffff\32\37\1\uffff\1\33\4\uffff\32\37\105\uffff"+ + "\27\33\1\uffff\37\33\1\uffff\u1f08\33\u1040\uffff\u0150\33\u0170"+ + "\uffff\u0080\33\u0080\uffff\u092e\33\u10d2\uffff\u5200\33\u0c00"+ + "\uffff\u2bb0\33\u2150\uffff\u0200\33", + "\12\37\7\uffff\3\37\1\46\26\37\1\uffff\1\33\4\uffff\3\37\1"+ + "\46\26\37\105\uffff\27\33\1\uffff\37\33\1\uffff\u1f08\33\u1040"+ + "\uffff\u0150\33\u0170\uffff\u0080\33\u0080\uffff\u092e\33\u10d2"+ + "\uffff\u5200\33\u0c00\uffff\u2bb0\33\u2150\uffff\u0200\33", + "\12\37\7\uffff\23\37\1\47\6\37\1\uffff\1\33\4\uffff\23\37"+ + "\1\47\6\37\105\uffff\27\33\1\uffff\37\33\1\uffff\u1f08\33\u1040"+ + "\uffff\u0150\33\u0170\uffff\u0080\33\u0080\uffff\u092e\33\u10d2"+ + "\uffff\u5200\33\u0c00\uffff\u2bb0\33\u2150\uffff\u0200\33", + "", + "", + "\2\34\13\uffff\12\37\7\uffff\32\37\1\uffff\1\33\2\uffff\1"+ + "\34\1\uffff\32\37\105\uffff\27\33\1\uffff\37\33\1\uffff\u1f08"+ + "\33\u1040\uffff\u0150\33\u0170\uffff\u0080\33\u0080\uffff\u092e"+ + "\33\u10d2\uffff\u5200\33\u0c00\uffff\u2bb0\33\u2150\uffff\u0200"+ + "\33", + "", + "\2\34\13\uffff\12\37\7\uffff\32\37\1\uffff\1\33\2\uffff\1"+ + "\34\1\uffff\32\37\105\uffff\27\33\1\uffff\37\33\1\uffff\u1f08"+ + "\33\u1040\uffff\u0150\33\u0170\uffff\u0080\33\u0080\uffff\u092e"+ + "\33\u10d2\uffff\u5200\33\u0c00\uffff\u2bb0\33\u2150\uffff\u0200"+ + "\33", + "\2\34\13\uffff\12\37\7\uffff\32\37\1\uffff\1\33\2\uffff\1"+ + "\34\1\uffff\32\37\105\uffff\27\33\1\uffff\37\33\1\uffff\u1f08"+ + "\33\u1040\uffff\u0150\33\u0170\uffff\u0080\33\u0080\uffff\u092e"+ + "\33\u10d2\uffff\u5200\33\u0c00\uffff\u2bb0\33\u2150\uffff\u0200"+ + "\33", + "", "", "" }; - static final short[] DFA5_eot = DFA.unpackEncodedString(DFA5_eotS); - static final short[] DFA5_eof = DFA.unpackEncodedString(DFA5_eofS); - static final char[] DFA5_min = DFA.unpackEncodedStringToUnsignedChars(DFA5_minS); - static final char[] DFA5_max = DFA.unpackEncodedStringToUnsignedChars(DFA5_maxS); - static final short[] DFA5_accept = DFA.unpackEncodedString(DFA5_acceptS); - static final short[] DFA5_special = DFA.unpackEncodedString(DFA5_specialS); - static final short[][] DFA5_transition; + static final short[] DFA6_eot = DFA.unpackEncodedString(DFA6_eotS); + static final short[] DFA6_eof = DFA.unpackEncodedString(DFA6_eofS); + static final char[] DFA6_min = DFA.unpackEncodedStringToUnsignedChars(DFA6_minS); + static final char[] DFA6_max = DFA.unpackEncodedStringToUnsignedChars(DFA6_maxS); + static final short[] DFA6_accept = DFA.unpackEncodedString(DFA6_acceptS); + static final short[] DFA6_special = DFA.unpackEncodedString(DFA6_specialS); + static final short[][] DFA6_transition; static { - int numStates = DFA5_transitionS.length; - DFA5_transition = new short[numStates][]; + int numStates = DFA6_transitionS.length; + DFA6_transition = new short[numStates][]; for (int i=0; i", "", "", "", "FTS", "DISJUNCTION", "CONJUNCTION", "NEGATION", "TERM", "EXACT_TERM", "PHRASE", "SYNONYM", "FIELD_DISJUNCTION", "FIELD_CONJUNCTION", "FIELD_NEGATION", "FIELD_GROUP", "FG_TERM", "FG_EXACT_TERM", "FG_PHRASE", "FG_SYNONYM", "FG_PROXIMITY", "FG_RANGE", "COLUMN_REF", "OR", "AND", "MINUS", "LPAREN", "RPAREN", "COLON", "PLUS", "FTSPHRASE", "TILDA", "STAR", "DOTDOT", "DOT", "ID", "FTSWORD", "NOT", "INWORD", "WS" + "", "", "", "", "FTS", "DISJUNCTION", "CONJUNCTION", "NEGATION", "TERM", "EXACT_TERM", "PHRASE", "SYNONYM", "DEFAULT", "MANDATORY", "OPTIONAL", "EXCLUDE", "FIELD_DISJUNCTION", "FIELD_CONJUNCTION", "FIELD_NEGATION", "FIELD_GROUP", "FIELD_DEFAULT", "FIELD_MANDATORY", "FIELD_OPTIONAL", "FIELD_EXCLUDE", "FG_TERM", "FG_EXACT_TERM", "FG_PHRASE", "FG_SYNONYM", "FG_PROXIMITY", "FG_RANGE", "COLUMN_REF", "INCLUSIVE", "EXCLUSIVE", "PLUS", "BAR", "MINUS", "LPAREN", "RPAREN", "COLON", "EQUALS", "FTSPHRASE", "TILDA", "STAR", "DOTDOT", "TO", "LCURL", "RCURL", "DOT", "ID", "FTSWORD", "OR", "AND", "NOT", "AMP", "EXCLAMATION", "F_ESC", "QUESTION_MARK", "LSQUARE", "RSQUARE", "COMMA", "CARAT", "DOLLAR", "INWORD", "F_HEX", "WS" }; + public static final int DOLLAR=61; public static final int TERM=8; - public static final int STAR=32; - public static final int FG_PROXIMITY=20; - public static final int CONJUNCTION=6; - public static final int FG_TERM=16; + public static final int STAR=42; + public static final int LSQUARE=57; + public static final int AMP=53; + public static final int FG_PROXIMITY=28; + public static final int FG_TERM=24; public static final int EXACT_TERM=9; - public static final int FIELD_GROUP=15; - public static final int INWORD=38; - public static final int FIELD_DISJUNCTION=12; - public static final int DOTDOT=33; - public static final int NOT=37; - public static final int FG_EXACT_TERM=17; - public static final int MINUS=25; - public static final int ID=35; - public static final int AND=24; + public static final int FIELD_DISJUNCTION=16; + public static final int EQUALS=39; + public static final int DOTDOT=43; + public static final int NOT=52; + public static final int MANDATORY=13; + public static final int FG_EXACT_TERM=25; + public static final int FIELD_EXCLUDE=23; + public static final int EXCLUSIVE=32; + public static final int AND=51; + public static final int ID=48; public static final int EOF=-1; - public static final int FTSWORD=36; - public static final int LPAREN=26; - public static final int PHRASE=10; - public static final int COLON=28; - public static final int DISJUNCTION=5; - public static final int RPAREN=27; - public static final int TILDA=31; - public static final int FTS=4; - public static final int WS=39; - public static final int FG_SYNONYM=19; - public static final int NEGATION=7; - public static final int FTSPHRASE=30; - public static final int FIELD_CONJUNCTION=13; - public static final int OR=23; - public static final int PLUS=29; - public static final int DOT=34; - public static final int COLUMN_REF=22; - public static final int FG_RANGE=21; + public static final int LPAREN=36; + public static final int RPAREN=37; + public static final int TILDA=41; + public static final int EXCLAMATION=54; + public static final int COMMA=59; + public static final int FIELD_DEFAULT=20; + public static final int QUESTION_MARK=56; + public static final int CARAT=60; + public static final int PLUS=33; + public static final int FIELD_OPTIONAL=22; + public static final int DOT=47; + public static final int COLUMN_REF=30; + public static final int F_ESC=55; public static final int SYNONYM=11; - public static final int FG_PHRASE=18; - public static final int FIELD_NEGATION=14; + public static final int EXCLUDE=15; + public static final int TO=44; + public static final int CONJUNCTION=6; + public static final int FIELD_GROUP=19; + public static final int DEFAULT=12; + public static final int INWORD=62; + public static final int RSQUARE=58; + public static final int MINUS=35; + public static final int FTSWORD=49; + public static final int PHRASE=10; + public static final int OPTIONAL=14; + public static final int COLON=38; + public static final int DISJUNCTION=5; + public static final int LCURL=45; + public static final int FTS=4; + public static final int WS=64; + public static final int FG_SYNONYM=27; + public static final int NEGATION=7; + public static final int FTSPHRASE=40; + public static final int FIELD_CONJUNCTION=17; + public static final int INCLUSIVE=31; + public static final int OR=50; + public static final int RCURL=46; + public static final int FIELD_MANDATORY=21; + public static final int F_HEX=63; + public static final int FG_RANGE=29; + public static final int BAR=34; + public static final int FG_PHRASE=26; + public static final int FIELD_NEGATION=18; // delegates // delegators @@ -129,15 +155,15 @@ public class FTSParser extends Parser { } - public static class fts_return extends ParserRuleReturnScope { + public static class ftsQuery_return extends ParserRuleReturnScope { Object tree; public Object getTree() { return tree; } }; - // $ANTLR start "fts" - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:130:1: fts : ftsImplicitConjunctionOrDisjunction EOF -> ftsImplicitConjunctionOrDisjunction ; - public final FTSParser.fts_return fts() throws RecognitionException { - FTSParser.fts_return retval = new FTSParser.fts_return(); + // $ANTLR start "ftsQuery" + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:143:1: ftsQuery : ftsImplicitConjunctionOrDisjunction EOF -> ftsImplicitConjunctionOrDisjunction ; + public final FTSParser.ftsQuery_return ftsQuery() throws RecognitionException { + FTSParser.ftsQuery_return retval = new FTSParser.ftsQuery_return(); retval.start = input.LT(1); Object root_0 = null; @@ -150,17 +176,17 @@ public class FTSParser extends Parser { RewriteRuleTokenStream stream_EOF=new RewriteRuleTokenStream(adaptor,"token EOF"); RewriteRuleSubtreeStream stream_ftsImplicitConjunctionOrDisjunction=new RewriteRuleSubtreeStream(adaptor,"rule ftsImplicitConjunctionOrDisjunction"); try { - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:131:5: ( ftsImplicitConjunctionOrDisjunction EOF -> ftsImplicitConjunctionOrDisjunction ) - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:131:8: ftsImplicitConjunctionOrDisjunction EOF + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:144:5: ( ftsImplicitConjunctionOrDisjunction EOF -> ftsImplicitConjunctionOrDisjunction ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:144:8: ftsImplicitConjunctionOrDisjunction EOF { - pushFollow(FOLLOW_ftsImplicitConjunctionOrDisjunction_in_fts146); + pushFollow(FOLLOW_ftsImplicitConjunctionOrDisjunction_in_ftsQuery190); ftsImplicitConjunctionOrDisjunction1=ftsImplicitConjunctionOrDisjunction(); state._fsp--; - - stream_ftsImplicitConjunctionOrDisjunction.add(ftsImplicitConjunctionOrDisjunction1.getTree()); - EOF2=(Token)match(input,EOF,FOLLOW_EOF_in_fts148); - stream_EOF.add(EOF2); + if (state.failed) return retval; + if ( state.backtracking==0 ) stream_ftsImplicitConjunctionOrDisjunction.add(ftsImplicitConjunctionOrDisjunction1.getTree()); + EOF2=(Token)match(input,EOF,FOLLOW_EOF_in_ftsQuery192); if (state.failed) return retval; + if ( state.backtracking==0 ) stream_EOF.add(EOF2); @@ -171,24 +197,27 @@ public class FTSParser extends Parser { // token list labels: // rule list labels: // wildcard labels: + if ( state.backtracking==0 ) { retval.tree = root_0; RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); root_0 = (Object)adaptor.nil(); - // 132:3: -> ftsImplicitConjunctionOrDisjunction + // 145:3: -> ftsImplicitConjunctionOrDisjunction { adaptor.addChild(root_0, stream_ftsImplicitConjunctionOrDisjunction.nextTree()); } - retval.tree = root_0; + retval.tree = root_0;} } retval.stop = input.LT(-1); + if ( state.backtracking==0 ) { + retval.tree = (Object)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); - + } } catch(RecognitionException e) @@ -199,7 +228,7 @@ public class FTSParser extends Parser { } return retval; } - // $ANTLR end "fts" + // $ANTLR end "ftsQuery" public static class ftsImplicitConjunctionOrDisjunction_return extends ParserRuleReturnScope { Object tree; @@ -207,7 +236,7 @@ public class FTSParser extends Parser { }; // $ANTLR start "ftsImplicitConjunctionOrDisjunction" - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:135:1: ftsImplicitConjunctionOrDisjunction : ({...}? ftsExplicitDisjunction ( ftsExplicitDisjunction )* -> ^( CONJUNCTION ( ftsExplicitDisjunction )+ ) | ftsExplicitDisjunction ( ftsExplicitDisjunction )* -> ^( DISJUNCTION ( ftsExplicitDisjunction )+ ) ); + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:148:1: ftsImplicitConjunctionOrDisjunction : ({...}? ftsExplicitDisjunction ( ftsExplicitDisjunction )* -> ^( CONJUNCTION ( ftsExplicitDisjunction )+ ) | ftsExplicitDisjunction ( ftsExplicitDisjunction )* -> ^( DISJUNCTION ( ftsExplicitDisjunction )+ ) ); public final FTSParser.ftsImplicitConjunctionOrDisjunction_return ftsImplicitConjunctionOrDisjunction() throws RecognitionException { FTSParser.ftsImplicitConjunctionOrDisjunction_return retval = new FTSParser.ftsImplicitConjunctionOrDisjunction_return(); retval.start = input.LT(1); @@ -225,43 +254,44 @@ public class FTSParser extends Parser { RewriteRuleSubtreeStream stream_ftsExplicitDisjunction=new RewriteRuleSubtreeStream(adaptor,"rule ftsExplicitDisjunction"); try { - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:136:2: ({...}? ftsExplicitDisjunction ( ftsExplicitDisjunction )* -> ^( CONJUNCTION ( ftsExplicitDisjunction )+ ) | ftsExplicitDisjunction ( ftsExplicitDisjunction )* -> ^( DISJUNCTION ( ftsExplicitDisjunction )+ ) ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:149:2: ({...}? ftsExplicitDisjunction ( ftsExplicitDisjunction )* -> ^( CONJUNCTION ( ftsExplicitDisjunction )+ ) | ftsExplicitDisjunction ( ftsExplicitDisjunction )* -> ^( DISJUNCTION ( ftsExplicitDisjunction )+ ) ) int alt3=2; alt3 = dfa3.predict(input); switch (alt3) { case 1 : - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:136:4: {...}? ftsExplicitDisjunction ( ftsExplicitDisjunction )* + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:149:4: {...}? ftsExplicitDisjunction ( ftsExplicitDisjunction )* { if ( !((defaultConjunction())) ) { + if (state.backtracking>0) {state.failed=true; return retval;} throw new FailedPredicateException(input, "ftsImplicitConjunctionOrDisjunction", "defaultConjunction()"); } - pushFollow(FOLLOW_ftsExplicitDisjunction_in_ftsImplicitConjunctionOrDisjunction170); + pushFollow(FOLLOW_ftsExplicitDisjunction_in_ftsImplicitConjunctionOrDisjunction214); ftsExplicitDisjunction3=ftsExplicitDisjunction(); state._fsp--; - - stream_ftsExplicitDisjunction.add(ftsExplicitDisjunction3.getTree()); - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:136:51: ( ftsExplicitDisjunction )* + if (state.failed) return retval; + if ( state.backtracking==0 ) stream_ftsExplicitDisjunction.add(ftsExplicitDisjunction3.getTree()); + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:149:51: ( ftsExplicitDisjunction )* loop1: do { int alt1=2; int LA1_0 = input.LA(1); - if ( ((LA1_0>=MINUS && LA1_0<=LPAREN)||(LA1_0>=PLUS && LA1_0<=TILDA)||(LA1_0>=ID && LA1_0<=FTSWORD)) ) { + if ( ((LA1_0>=PLUS && LA1_0<=LPAREN)||(LA1_0>=EQUALS && LA1_0<=TILDA)||(LA1_0>=TO && LA1_0<=LCURL)||(LA1_0>=ID && LA1_0<=NOT)||LA1_0==EXCLAMATION) ) { alt1=1; } switch (alt1) { case 1 : - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:136:52: ftsExplicitDisjunction + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:149:52: ftsExplicitDisjunction { - pushFollow(FOLLOW_ftsExplicitDisjunction_in_ftsImplicitConjunctionOrDisjunction173); + pushFollow(FOLLOW_ftsExplicitDisjunction_in_ftsImplicitConjunctionOrDisjunction217); ftsExplicitDisjunction4=ftsExplicitDisjunction(); state._fsp--; - - stream_ftsExplicitDisjunction.add(ftsExplicitDisjunction4.getTree()); + if (state.failed) return retval; + if ( state.backtracking==0 ) stream_ftsExplicitDisjunction.add(ftsExplicitDisjunction4.getTree()); } break; @@ -280,13 +310,14 @@ public class FTSParser extends Parser { // token list labels: // rule list labels: // wildcard labels: + if ( state.backtracking==0 ) { retval.tree = root_0; RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); root_0 = (Object)adaptor.nil(); - // 137:3: -> ^( CONJUNCTION ( ftsExplicitDisjunction )+ ) + // 150:3: -> ^( CONJUNCTION ( ftsExplicitDisjunction )+ ) { - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:137:6: ^( CONJUNCTION ( ftsExplicitDisjunction )+ ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:150:6: ^( CONJUNCTION ( ftsExplicitDisjunction )+ ) { Object root_1 = (Object)adaptor.nil(); root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(CONJUNCTION, "CONJUNCTION"), root_1); @@ -305,39 +336,39 @@ public class FTSParser extends Parser { } - retval.tree = root_0; + retval.tree = root_0;} } break; case 2 : - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:138:5: ftsExplicitDisjunction ( ftsExplicitDisjunction )* + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:151:5: ftsExplicitDisjunction ( ftsExplicitDisjunction )* { - pushFollow(FOLLOW_ftsExplicitDisjunction_in_ftsImplicitConjunctionOrDisjunction192); + pushFollow(FOLLOW_ftsExplicitDisjunction_in_ftsImplicitConjunctionOrDisjunction236); ftsExplicitDisjunction5=ftsExplicitDisjunction(); state._fsp--; - - stream_ftsExplicitDisjunction.add(ftsExplicitDisjunction5.getTree()); - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:138:28: ( ftsExplicitDisjunction )* + if (state.failed) return retval; + if ( state.backtracking==0 ) stream_ftsExplicitDisjunction.add(ftsExplicitDisjunction5.getTree()); + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:151:28: ( ftsExplicitDisjunction )* loop2: do { int alt2=2; int LA2_0 = input.LA(1); - if ( ((LA2_0>=MINUS && LA2_0<=LPAREN)||(LA2_0>=PLUS && LA2_0<=TILDA)||(LA2_0>=ID && LA2_0<=FTSWORD)) ) { + if ( ((LA2_0>=PLUS && LA2_0<=LPAREN)||(LA2_0>=EQUALS && LA2_0<=TILDA)||(LA2_0>=TO && LA2_0<=LCURL)||(LA2_0>=ID && LA2_0<=NOT)||LA2_0==EXCLAMATION) ) { alt2=1; } switch (alt2) { case 1 : - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:138:29: ftsExplicitDisjunction + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:151:29: ftsExplicitDisjunction { - pushFollow(FOLLOW_ftsExplicitDisjunction_in_ftsImplicitConjunctionOrDisjunction195); + pushFollow(FOLLOW_ftsExplicitDisjunction_in_ftsImplicitConjunctionOrDisjunction239); ftsExplicitDisjunction6=ftsExplicitDisjunction(); state._fsp--; - - stream_ftsExplicitDisjunction.add(ftsExplicitDisjunction6.getTree()); + if (state.failed) return retval; + if ( state.backtracking==0 ) stream_ftsExplicitDisjunction.add(ftsExplicitDisjunction6.getTree()); } break; @@ -356,13 +387,14 @@ public class FTSParser extends Parser { // token list labels: // rule list labels: // wildcard labels: + if ( state.backtracking==0 ) { retval.tree = root_0; RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); root_0 = (Object)adaptor.nil(); - // 139:3: -> ^( DISJUNCTION ( ftsExplicitDisjunction )+ ) + // 152:3: -> ^( DISJUNCTION ( ftsExplicitDisjunction )+ ) { - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:139:6: ^( DISJUNCTION ( ftsExplicitDisjunction )+ ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:152:6: ^( DISJUNCTION ( ftsExplicitDisjunction )+ ) { Object root_1 = (Object)adaptor.nil(); root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(DISJUNCTION, "DISJUNCTION"), root_1); @@ -381,16 +413,18 @@ public class FTSParser extends Parser { } - retval.tree = root_0; + retval.tree = root_0;} } break; } retval.stop = input.LT(-1); + if ( state.backtracking==0 ) { + retval.tree = (Object)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); - + } } catch(RecognitionException e) @@ -409,56 +443,53 @@ public class FTSParser extends Parser { }; // $ANTLR start "ftsExplicitDisjunction" - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:142:1: ftsExplicitDisjunction : ftsExplictConjunction ( OR ftsExplictConjunction )* -> ^( DISJUNCTION ( ftsExplictConjunction )+ ) ; + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:155:1: ftsExplicitDisjunction : ftsExplictConjunction ( ( or )=> or ftsExplictConjunction )* -> ^( DISJUNCTION ( ftsExplictConjunction )+ ) ; public final FTSParser.ftsExplicitDisjunction_return ftsExplicitDisjunction() throws RecognitionException { FTSParser.ftsExplicitDisjunction_return retval = new FTSParser.ftsExplicitDisjunction_return(); retval.start = input.LT(1); Object root_0 = null; - Token OR8=null; FTSParser.ftsExplictConjunction_return ftsExplictConjunction7 = null; + FTSParser.or_return or8 = null; + FTSParser.ftsExplictConjunction_return ftsExplictConjunction9 = null; - Object OR8_tree=null; - RewriteRuleTokenStream stream_OR=new RewriteRuleTokenStream(adaptor,"token OR"); + RewriteRuleSubtreeStream stream_or=new RewriteRuleSubtreeStream(adaptor,"rule or"); RewriteRuleSubtreeStream stream_ftsExplictConjunction=new RewriteRuleSubtreeStream(adaptor,"rule ftsExplictConjunction"); try { - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:143:2: ( ftsExplictConjunction ( OR ftsExplictConjunction )* -> ^( DISJUNCTION ( ftsExplictConjunction )+ ) ) - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:143:4: ftsExplictConjunction ( OR ftsExplictConjunction )* + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:156:2: ( ftsExplictConjunction ( ( or )=> or ftsExplictConjunction )* -> ^( DISJUNCTION ( ftsExplictConjunction )+ ) ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:156:4: ftsExplictConjunction ( ( or )=> or ftsExplictConjunction )* { - pushFollow(FOLLOW_ftsExplictConjunction_in_ftsExplicitDisjunction220); + pushFollow(FOLLOW_ftsExplictConjunction_in_ftsExplicitDisjunction264); ftsExplictConjunction7=ftsExplictConjunction(); state._fsp--; - - stream_ftsExplictConjunction.add(ftsExplictConjunction7.getTree()); - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:143:26: ( OR ftsExplictConjunction )* + if (state.failed) return retval; + if ( state.backtracking==0 ) stream_ftsExplictConjunction.add(ftsExplictConjunction7.getTree()); + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:156:26: ( ( or )=> or ftsExplictConjunction )* loop4: do { int alt4=2; - int LA4_0 = input.LA(1); - - if ( (LA4_0==OR) ) { - alt4=1; - } - - + alt4 = dfa4.predict(input); switch (alt4) { case 1 : - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:143:27: OR ftsExplictConjunction + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:156:27: ( or )=> or ftsExplictConjunction { - OR8=(Token)match(input,OR,FOLLOW_OR_in_ftsExplicitDisjunction223); - stream_OR.add(OR8); + pushFollow(FOLLOW_or_in_ftsExplicitDisjunction273); + or8=or(); - pushFollow(FOLLOW_ftsExplictConjunction_in_ftsExplicitDisjunction225); + state._fsp--; + if (state.failed) return retval; + if ( state.backtracking==0 ) stream_or.add(or8.getTree()); + pushFollow(FOLLOW_ftsExplictConjunction_in_ftsExplicitDisjunction275); ftsExplictConjunction9=ftsExplictConjunction(); state._fsp--; - - stream_ftsExplictConjunction.add(ftsExplictConjunction9.getTree()); + if (state.failed) return retval; + if ( state.backtracking==0 ) stream_ftsExplictConjunction.add(ftsExplictConjunction9.getTree()); } break; @@ -477,13 +508,14 @@ public class FTSParser extends Parser { // token list labels: // rule list labels: // wildcard labels: + if ( state.backtracking==0 ) { retval.tree = root_0; RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); root_0 = (Object)adaptor.nil(); - // 144:3: -> ^( DISJUNCTION ( ftsExplictConjunction )+ ) + // 157:3: -> ^( DISJUNCTION ( ftsExplictConjunction )+ ) { - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:144:6: ^( DISJUNCTION ( ftsExplictConjunction )+ ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:157:6: ^( DISJUNCTION ( ftsExplictConjunction )+ ) { Object root_1 = (Object)adaptor.nil(); root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(DISJUNCTION, "DISJUNCTION"), root_1); @@ -502,14 +534,16 @@ public class FTSParser extends Parser { } - retval.tree = root_0; + retval.tree = root_0;} } retval.stop = input.LT(-1); + if ( state.backtracking==0 ) { + retval.tree = (Object)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); - + } } catch(RecognitionException e) @@ -528,56 +562,53 @@ public class FTSParser extends Parser { }; // $ANTLR start "ftsExplictConjunction" - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:147:1: ftsExplictConjunction : ftsNot ( AND ftsNot )* -> ^( CONJUNCTION ftsNot ) ; + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:160:1: ftsExplictConjunction : ftsPrefixed ( ( and )=> and ftsPrefixed )* -> ^( CONJUNCTION ftsPrefixed ) ; public final FTSParser.ftsExplictConjunction_return ftsExplictConjunction() throws RecognitionException { FTSParser.ftsExplictConjunction_return retval = new FTSParser.ftsExplictConjunction_return(); retval.start = input.LT(1); Object root_0 = null; - Token AND11=null; - FTSParser.ftsNot_return ftsNot10 = null; + FTSParser.ftsPrefixed_return ftsPrefixed10 = null; - FTSParser.ftsNot_return ftsNot12 = null; + FTSParser.and_return and11 = null; + + FTSParser.ftsPrefixed_return ftsPrefixed12 = null; - Object AND11_tree=null; - RewriteRuleTokenStream stream_AND=new RewriteRuleTokenStream(adaptor,"token AND"); - RewriteRuleSubtreeStream stream_ftsNot=new RewriteRuleSubtreeStream(adaptor,"rule ftsNot"); + RewriteRuleSubtreeStream stream_ftsPrefixed=new RewriteRuleSubtreeStream(adaptor,"rule ftsPrefixed"); + RewriteRuleSubtreeStream stream_and=new RewriteRuleSubtreeStream(adaptor,"rule and"); try { - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:148:2: ( ftsNot ( AND ftsNot )* -> ^( CONJUNCTION ftsNot ) ) - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:148:4: ftsNot ( AND ftsNot )* + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:161:2: ( ftsPrefixed ( ( and )=> and ftsPrefixed )* -> ^( CONJUNCTION ftsPrefixed ) ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:161:4: ftsPrefixed ( ( and )=> and ftsPrefixed )* { - pushFollow(FOLLOW_ftsNot_in_ftsExplictConjunction250); - ftsNot10=ftsNot(); + pushFollow(FOLLOW_ftsPrefixed_in_ftsExplictConjunction300); + ftsPrefixed10=ftsPrefixed(); state._fsp--; - - stream_ftsNot.add(ftsNot10.getTree()); - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:148:11: ( AND ftsNot )* + if (state.failed) return retval; + if ( state.backtracking==0 ) stream_ftsPrefixed.add(ftsPrefixed10.getTree()); + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:161:16: ( ( and )=> and ftsPrefixed )* loop5: do { int alt5=2; - int LA5_0 = input.LA(1); - - if ( (LA5_0==AND) ) { - alt5=1; - } - - + alt5 = dfa5.predict(input); switch (alt5) { case 1 : - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:148:12: AND ftsNot + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:161:17: ( and )=> and ftsPrefixed { - AND11=(Token)match(input,AND,FOLLOW_AND_in_ftsExplictConjunction253); - stream_AND.add(AND11); - - pushFollow(FOLLOW_ftsNot_in_ftsExplictConjunction255); - ftsNot12=ftsNot(); + pushFollow(FOLLOW_and_in_ftsExplictConjunction309); + and11=and(); state._fsp--; + if (state.failed) return retval; + if ( state.backtracking==0 ) stream_and.add(and11.getTree()); + pushFollow(FOLLOW_ftsPrefixed_in_ftsExplictConjunction311); + ftsPrefixed12=ftsPrefixed(); - stream_ftsNot.add(ftsNot12.getTree()); + state._fsp--; + if (state.failed) return retval; + if ( state.backtracking==0 ) stream_ftsPrefixed.add(ftsPrefixed12.getTree()); } break; @@ -590,38 +621,41 @@ public class FTSParser extends Parser { // AST REWRITE - // elements: ftsNot + // elements: ftsPrefixed // token labels: // rule labels: retval // token list labels: // rule list labels: // wildcard labels: + if ( state.backtracking==0 ) { retval.tree = root_0; RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); root_0 = (Object)adaptor.nil(); - // 149:3: -> ^( CONJUNCTION ftsNot ) + // 162:3: -> ^( CONJUNCTION ftsPrefixed ) { - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:149:6: ^( CONJUNCTION ftsNot ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:162:6: ^( CONJUNCTION ftsPrefixed ) { Object root_1 = (Object)adaptor.nil(); root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(CONJUNCTION, "CONJUNCTION"), root_1); - adaptor.addChild(root_1, stream_ftsNot.nextTree()); + adaptor.addChild(root_1, stream_ftsPrefixed.nextTree()); adaptor.addChild(root_0, root_1); } } - retval.tree = root_0; + retval.tree = root_0;} } retval.stop = input.LT(-1); + if ( state.backtracking==0 ) { + retval.tree = (Object)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); - + } } catch(RecognitionException e) @@ -634,58 +668,63 @@ public class FTSParser extends Parser { } // $ANTLR end "ftsExplictConjunction" - public static class ftsNot_return extends ParserRuleReturnScope { + public static class ftsPrefixed_return extends ParserRuleReturnScope { Object tree; public Object getTree() { return tree; } }; - // $ANTLR start "ftsNot" - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:152:1: ftsNot : ( MINUS ftsTest -> ^( NEGATION ftsTest ) | ftsTest -> ftsTest ); - public final FTSParser.ftsNot_return ftsNot() throws RecognitionException { - FTSParser.ftsNot_return retval = new FTSParser.ftsNot_return(); + // $ANTLR start "ftsPrefixed" + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:166:1: ftsPrefixed : ( ( not )=> not ftsTest -> ^( NEGATION ftsTest ) | ftsTest -> ^( DEFAULT ftsTest ) | PLUS ftsTest -> ^( MANDATORY ftsTest ) | BAR ftsTest -> ^( OPTIONAL ftsTest ) | MINUS ftsTest -> ^( EXCLUDE ftsTest ) ); + public final FTSParser.ftsPrefixed_return ftsPrefixed() throws RecognitionException { + FTSParser.ftsPrefixed_return retval = new FTSParser.ftsPrefixed_return(); retval.start = input.LT(1); Object root_0 = null; - Token MINUS13=null; + Token PLUS16=null; + Token BAR18=null; + Token MINUS20=null; + FTSParser.not_return not13 = null; + FTSParser.ftsTest_return ftsTest14 = null; FTSParser.ftsTest_return ftsTest15 = null; + FTSParser.ftsTest_return ftsTest17 = null; - Object MINUS13_tree=null; + FTSParser.ftsTest_return ftsTest19 = null; + + FTSParser.ftsTest_return ftsTest21 = null; + + + Object PLUS16_tree=null; + Object BAR18_tree=null; + Object MINUS20_tree=null; + RewriteRuleTokenStream stream_PLUS=new RewriteRuleTokenStream(adaptor,"token PLUS"); RewriteRuleTokenStream stream_MINUS=new RewriteRuleTokenStream(adaptor,"token MINUS"); + RewriteRuleTokenStream stream_BAR=new RewriteRuleTokenStream(adaptor,"token BAR"); + RewriteRuleSubtreeStream stream_not=new RewriteRuleSubtreeStream(adaptor,"rule not"); RewriteRuleSubtreeStream stream_ftsTest=new RewriteRuleSubtreeStream(adaptor,"rule ftsTest"); try { - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:153:5: ( MINUS ftsTest -> ^( NEGATION ftsTest ) | ftsTest -> ftsTest ) - int alt6=2; - int LA6_0 = input.LA(1); - - if ( (LA6_0==MINUS) ) { - alt6=1; - } - else if ( (LA6_0==LPAREN||(LA6_0>=PLUS && LA6_0<=TILDA)||(LA6_0>=ID && LA6_0<=FTSWORD)) ) { - alt6=2; - } - else { - NoViableAltException nvae = - new NoViableAltException("", 6, 0, input); - - throw nvae; - } + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:167:5: ( ( not )=> not ftsTest -> ^( NEGATION ftsTest ) | ftsTest -> ^( DEFAULT ftsTest ) | PLUS ftsTest -> ^( MANDATORY ftsTest ) | BAR ftsTest -> ^( OPTIONAL ftsTest ) | MINUS ftsTest -> ^( EXCLUDE ftsTest ) ) + int alt6=5; + alt6 = dfa6.predict(input); switch (alt6) { case 1 : - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:153:7: MINUS ftsTest + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:167:7: ( not )=> not ftsTest { - MINUS13=(Token)match(input,MINUS,FOLLOW_MINUS_in_ftsNot285); - stream_MINUS.add(MINUS13); + pushFollow(FOLLOW_not_in_ftsPrefixed349); + not13=not(); - pushFollow(FOLLOW_ftsTest_in_ftsNot287); + state._fsp--; + if (state.failed) return retval; + if ( state.backtracking==0 ) stream_not.add(not13.getTree()); + pushFollow(FOLLOW_ftsTest_in_ftsPrefixed351); ftsTest14=ftsTest(); state._fsp--; - - stream_ftsTest.add(ftsTest14.getTree()); + if (state.failed) return retval; + if ( state.backtracking==0 ) stream_ftsTest.add(ftsTest14.getTree()); // AST REWRITE @@ -695,13 +734,14 @@ public class FTSParser extends Parser { // token list labels: // rule list labels: // wildcard labels: + if ( state.backtracking==0 ) { retval.tree = root_0; RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); root_0 = (Object)adaptor.nil(); - // 154:3: -> ^( NEGATION ftsTest ) + // 168:3: -> ^( NEGATION ftsTest ) { - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:154:6: ^( NEGATION ftsTest ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:168:6: ^( NEGATION ftsTest ) { Object root_1 = (Object)adaptor.nil(); root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(NEGATION, "NEGATION"), root_1); @@ -713,18 +753,18 @@ public class FTSParser extends Parser { } - retval.tree = root_0; + retval.tree = root_0;} } break; case 2 : - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:155:4: ftsTest + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:169:7: ftsTest { - pushFollow(FOLLOW_ftsTest_in_ftsNot302); + pushFollow(FOLLOW_ftsTest_in_ftsPrefixed369); ftsTest15=ftsTest(); state._fsp--; - - stream_ftsTest.add(ftsTest15.getTree()); + if (state.failed) return retval; + if ( state.backtracking==0 ) stream_ftsTest.add(ftsTest15.getTree()); // AST REWRITE @@ -734,26 +774,166 @@ public class FTSParser extends Parser { // token list labels: // rule list labels: // wildcard labels: + if ( state.backtracking==0 ) { retval.tree = root_0; RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); root_0 = (Object)adaptor.nil(); - // 156:3: -> ftsTest + // 170:3: -> ^( DEFAULT ftsTest ) { - adaptor.addChild(root_0, stream_ftsTest.nextTree()); + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:170:6: ^( DEFAULT ftsTest ) + { + Object root_1 = (Object)adaptor.nil(); + root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(DEFAULT, "DEFAULT"), root_1); + + adaptor.addChild(root_1, stream_ftsTest.nextTree()); + + adaptor.addChild(root_0, root_1); + } } + retval.tree = root_0;} + } + break; + case 3 : + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:171:9: PLUS ftsTest + { + PLUS16=(Token)match(input,PLUS,FOLLOW_PLUS_in_ftsPrefixed389); if (state.failed) return retval; + if ( state.backtracking==0 ) stream_PLUS.add(PLUS16); + + pushFollow(FOLLOW_ftsTest_in_ftsPrefixed391); + ftsTest17=ftsTest(); + + state._fsp--; + if (state.failed) return retval; + if ( state.backtracking==0 ) stream_ftsTest.add(ftsTest17.getTree()); + + + // AST REWRITE + // elements: ftsTest + // token labels: + // rule labels: retval + // token list labels: + // rule list labels: + // wildcard labels: + if ( state.backtracking==0 ) { retval.tree = root_0; + RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); + + root_0 = (Object)adaptor.nil(); + // 172:17: -> ^( MANDATORY ftsTest ) + { + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:172:20: ^( MANDATORY ftsTest ) + { + Object root_1 = (Object)adaptor.nil(); + root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(MANDATORY, "MANDATORY"), root_1); + + adaptor.addChild(root_1, stream_ftsTest.nextTree()); + + adaptor.addChild(root_0, root_1); + } + + } + + retval.tree = root_0;} + } + break; + case 4 : + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:173:9: BAR ftsTest + { + BAR18=(Token)match(input,BAR,FOLLOW_BAR_in_ftsPrefixed425); if (state.failed) return retval; + if ( state.backtracking==0 ) stream_BAR.add(BAR18); + + pushFollow(FOLLOW_ftsTest_in_ftsPrefixed427); + ftsTest19=ftsTest(); + + state._fsp--; + if (state.failed) return retval; + if ( state.backtracking==0 ) stream_ftsTest.add(ftsTest19.getTree()); + + + // AST REWRITE + // elements: ftsTest + // token labels: + // rule labels: retval + // token list labels: + // rule list labels: + // wildcard labels: + if ( state.backtracking==0 ) { + retval.tree = root_0; + RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); + + root_0 = (Object)adaptor.nil(); + // 174:17: -> ^( OPTIONAL ftsTest ) + { + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:174:20: ^( OPTIONAL ftsTest ) + { + Object root_1 = (Object)adaptor.nil(); + root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(OPTIONAL, "OPTIONAL"), root_1); + + adaptor.addChild(root_1, stream_ftsTest.nextTree()); + + adaptor.addChild(root_0, root_1); + } + + } + + retval.tree = root_0;} + } + break; + case 5 : + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:175:9: MINUS ftsTest + { + MINUS20=(Token)match(input,MINUS,FOLLOW_MINUS_in_ftsPrefixed461); if (state.failed) return retval; + if ( state.backtracking==0 ) stream_MINUS.add(MINUS20); + + pushFollow(FOLLOW_ftsTest_in_ftsPrefixed463); + ftsTest21=ftsTest(); + + state._fsp--; + if (state.failed) return retval; + if ( state.backtracking==0 ) stream_ftsTest.add(ftsTest21.getTree()); + + + // AST REWRITE + // elements: ftsTest + // token labels: + // rule labels: retval + // token list labels: + // rule list labels: + // wildcard labels: + if ( state.backtracking==0 ) { + retval.tree = root_0; + RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); + + root_0 = (Object)adaptor.nil(); + // 176:17: -> ^( EXCLUDE ftsTest ) + { + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:176:20: ^( EXCLUDE ftsTest ) + { + Object root_1 = (Object)adaptor.nil(); + root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(EXCLUDE, "EXCLUDE"), root_1); + + adaptor.addChild(root_1, stream_ftsTest.nextTree()); + + adaptor.addChild(root_0, root_1); + } + + } + + retval.tree = root_0;} } break; } retval.stop = input.LT(-1); + if ( state.backtracking==0 ) { + retval.tree = (Object)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); - + } } catch(RecognitionException e) @@ -764,7 +944,7 @@ public class FTSParser extends Parser { } return retval; } - // $ANTLR end "ftsNot" + // $ANTLR end "ftsPrefixed" public static class ftsTest_return extends ParserRuleReturnScope { Object tree; @@ -772,34 +952,34 @@ public class FTSParser extends Parser { }; // $ANTLR start "ftsTest" - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:159:1: ftsTest : ( ftsTerm -> ^( TERM ftsTerm ) | ftsExactTerm -> ^( EXACT_TERM ftsExactTerm ) | ftsPhrase -> ^( PHRASE ftsPhrase ) | ftsSynonym -> ^( SYNONYM ftsSynonym ) | ftsFieldGroupProximity -> ^( FG_PROXIMITY ftsFieldGroupProximity ) | ftsFieldGroupRange -> ^( FG_RANGE ftsFieldGroupRange ) | ftsFieldGroup | LPAREN ftsImplicitConjunctionOrDisjunction RPAREN -> ftsImplicitConjunctionOrDisjunction ); + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:179:1: ftsTest : ( ftsTerm -> ^( TERM ftsTerm ) | ftsExactTerm -> ^( EXACT_TERM ftsExactTerm ) | ftsPhrase -> ^( PHRASE ftsPhrase ) | ftsSynonym -> ^( SYNONYM ftsSynonym ) | ftsFieldGroupProximity -> ^( FG_PROXIMITY ftsFieldGroupProximity ) | ftsFieldGroupRange -> ^( FG_RANGE ftsFieldGroupRange ) | ftsFieldGroup | LPAREN ftsImplicitConjunctionOrDisjunction RPAREN -> ftsImplicitConjunctionOrDisjunction ); public final FTSParser.ftsTest_return ftsTest() throws RecognitionException { FTSParser.ftsTest_return retval = new FTSParser.ftsTest_return(); retval.start = input.LT(1); Object root_0 = null; - Token LPAREN23=null; - Token RPAREN25=null; - FTSParser.ftsTerm_return ftsTerm16 = null; + Token LPAREN29=null; + Token RPAREN31=null; + FTSParser.ftsTerm_return ftsTerm22 = null; - FTSParser.ftsExactTerm_return ftsExactTerm17 = null; + FTSParser.ftsExactTerm_return ftsExactTerm23 = null; - FTSParser.ftsPhrase_return ftsPhrase18 = null; + FTSParser.ftsPhrase_return ftsPhrase24 = null; - FTSParser.ftsSynonym_return ftsSynonym19 = null; + FTSParser.ftsSynonym_return ftsSynonym25 = null; - FTSParser.ftsFieldGroupProximity_return ftsFieldGroupProximity20 = null; + FTSParser.ftsFieldGroupProximity_return ftsFieldGroupProximity26 = null; - FTSParser.ftsFieldGroupRange_return ftsFieldGroupRange21 = null; + FTSParser.ftsFieldGroupRange_return ftsFieldGroupRange27 = null; - FTSParser.ftsFieldGroup_return ftsFieldGroup22 = null; + FTSParser.ftsFieldGroup_return ftsFieldGroup28 = null; - FTSParser.ftsImplicitConjunctionOrDisjunction_return ftsImplicitConjunctionOrDisjunction24 = null; + FTSParser.ftsImplicitConjunctionOrDisjunction_return ftsImplicitConjunctionOrDisjunction30 = null; - Object LPAREN23_tree=null; - Object RPAREN25_tree=null; + Object LPAREN29_tree=null; + Object RPAREN31_tree=null; RewriteRuleTokenStream stream_RPAREN=new RewriteRuleTokenStream(adaptor,"token RPAREN"); RewriteRuleTokenStream stream_LPAREN=new RewriteRuleTokenStream(adaptor,"token LPAREN"); RewriteRuleSubtreeStream stream_ftsFieldGroupRange=new RewriteRuleSubtreeStream(adaptor,"rule ftsFieldGroupRange"); @@ -810,19 +990,19 @@ public class FTSParser extends Parser { RewriteRuleSubtreeStream stream_ftsSynonym=new RewriteRuleSubtreeStream(adaptor,"rule ftsSynonym"); RewriteRuleSubtreeStream stream_ftsFieldGroupProximity=new RewriteRuleSubtreeStream(adaptor,"rule ftsFieldGroupProximity"); try { - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:160:5: ( ftsTerm -> ^( TERM ftsTerm ) | ftsExactTerm -> ^( EXACT_TERM ftsExactTerm ) | ftsPhrase -> ^( PHRASE ftsPhrase ) | ftsSynonym -> ^( SYNONYM ftsSynonym ) | ftsFieldGroupProximity -> ^( FG_PROXIMITY ftsFieldGroupProximity ) | ftsFieldGroupRange -> ^( FG_RANGE ftsFieldGroupRange ) | ftsFieldGroup | LPAREN ftsImplicitConjunctionOrDisjunction RPAREN -> ftsImplicitConjunctionOrDisjunction ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:180:5: ( ftsTerm -> ^( TERM ftsTerm ) | ftsExactTerm -> ^( EXACT_TERM ftsExactTerm ) | ftsPhrase -> ^( PHRASE ftsPhrase ) | ftsSynonym -> ^( SYNONYM ftsSynonym ) | ftsFieldGroupProximity -> ^( FG_PROXIMITY ftsFieldGroupProximity ) | ftsFieldGroupRange -> ^( FG_RANGE ftsFieldGroupRange ) | ftsFieldGroup | LPAREN ftsImplicitConjunctionOrDisjunction RPAREN -> ftsImplicitConjunctionOrDisjunction ) int alt7=8; alt7 = dfa7.predict(input); switch (alt7) { case 1 : - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:160:7: ftsTerm + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:180:7: ftsTerm { - pushFollow(FOLLOW_ftsTerm_in_ftsTest323); - ftsTerm16=ftsTerm(); + pushFollow(FOLLOW_ftsTerm_in_ftsTest505); + ftsTerm22=ftsTerm(); state._fsp--; - - stream_ftsTerm.add(ftsTerm16.getTree()); + if (state.failed) return retval; + if ( state.backtracking==0 ) stream_ftsTerm.add(ftsTerm22.getTree()); // AST REWRITE @@ -832,13 +1012,14 @@ public class FTSParser extends Parser { // token list labels: // rule list labels: // wildcard labels: + if ( state.backtracking==0 ) { retval.tree = root_0; RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); root_0 = (Object)adaptor.nil(); - // 161:3: -> ^( TERM ftsTerm ) + // 181:3: -> ^( TERM ftsTerm ) { - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:161:6: ^( TERM ftsTerm ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:181:6: ^( TERM ftsTerm ) { Object root_1 = (Object)adaptor.nil(); root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(TERM, "TERM"), root_1); @@ -850,18 +1031,18 @@ public class FTSParser extends Parser { } - retval.tree = root_0; + retval.tree = root_0;} } break; case 2 : - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:162:4: ftsExactTerm + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:182:4: ftsExactTerm { - pushFollow(FOLLOW_ftsExactTerm_in_ftsTest338); - ftsExactTerm17=ftsExactTerm(); + pushFollow(FOLLOW_ftsExactTerm_in_ftsTest520); + ftsExactTerm23=ftsExactTerm(); state._fsp--; - - stream_ftsExactTerm.add(ftsExactTerm17.getTree()); + if (state.failed) return retval; + if ( state.backtracking==0 ) stream_ftsExactTerm.add(ftsExactTerm23.getTree()); // AST REWRITE @@ -871,13 +1052,14 @@ public class FTSParser extends Parser { // token list labels: // rule list labels: // wildcard labels: + if ( state.backtracking==0 ) { retval.tree = root_0; RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); root_0 = (Object)adaptor.nil(); - // 163:3: -> ^( EXACT_TERM ftsExactTerm ) + // 183:3: -> ^( EXACT_TERM ftsExactTerm ) { - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:163:6: ^( EXACT_TERM ftsExactTerm ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:183:6: ^( EXACT_TERM ftsExactTerm ) { Object root_1 = (Object)adaptor.nil(); root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(EXACT_TERM, "EXACT_TERM"), root_1); @@ -889,18 +1071,18 @@ public class FTSParser extends Parser { } - retval.tree = root_0; + retval.tree = root_0;} } break; case 3 : - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:164:9: ftsPhrase + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:184:9: ftsPhrase { - pushFollow(FOLLOW_ftsPhrase_in_ftsTest358); - ftsPhrase18=ftsPhrase(); + pushFollow(FOLLOW_ftsPhrase_in_ftsTest540); + ftsPhrase24=ftsPhrase(); state._fsp--; - - stream_ftsPhrase.add(ftsPhrase18.getTree()); + if (state.failed) return retval; + if ( state.backtracking==0 ) stream_ftsPhrase.add(ftsPhrase24.getTree()); // AST REWRITE @@ -910,13 +1092,14 @@ public class FTSParser extends Parser { // token list labels: // rule list labels: // wildcard labels: + if ( state.backtracking==0 ) { retval.tree = root_0; RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); root_0 = (Object)adaptor.nil(); - // 165:9: -> ^( PHRASE ftsPhrase ) + // 185:9: -> ^( PHRASE ftsPhrase ) { - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:165:12: ^( PHRASE ftsPhrase ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:185:12: ^( PHRASE ftsPhrase ) { Object root_1 = (Object)adaptor.nil(); root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(PHRASE, "PHRASE"), root_1); @@ -928,18 +1111,18 @@ public class FTSParser extends Parser { } - retval.tree = root_0; + retval.tree = root_0;} } break; case 4 : - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:166:9: ftsSynonym + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:186:9: ftsSynonym { - pushFollow(FOLLOW_ftsSynonym_in_ftsTest384); - ftsSynonym19=ftsSynonym(); + pushFollow(FOLLOW_ftsSynonym_in_ftsTest566); + ftsSynonym25=ftsSynonym(); state._fsp--; - - stream_ftsSynonym.add(ftsSynonym19.getTree()); + if (state.failed) return retval; + if ( state.backtracking==0 ) stream_ftsSynonym.add(ftsSynonym25.getTree()); // AST REWRITE @@ -949,13 +1132,14 @@ public class FTSParser extends Parser { // token list labels: // rule list labels: // wildcard labels: + if ( state.backtracking==0 ) { retval.tree = root_0; RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); root_0 = (Object)adaptor.nil(); - // 167:9: -> ^( SYNONYM ftsSynonym ) + // 187:9: -> ^( SYNONYM ftsSynonym ) { - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:167:12: ^( SYNONYM ftsSynonym ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:187:12: ^( SYNONYM ftsSynonym ) { Object root_1 = (Object)adaptor.nil(); root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(SYNONYM, "SYNONYM"), root_1); @@ -967,18 +1151,18 @@ public class FTSParser extends Parser { } - retval.tree = root_0; + retval.tree = root_0;} } break; case 5 : - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:168:7: ftsFieldGroupProximity + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:188:7: ftsFieldGroupProximity { - pushFollow(FOLLOW_ftsFieldGroupProximity_in_ftsTest408); - ftsFieldGroupProximity20=ftsFieldGroupProximity(); + pushFollow(FOLLOW_ftsFieldGroupProximity_in_ftsTest590); + ftsFieldGroupProximity26=ftsFieldGroupProximity(); state._fsp--; - - stream_ftsFieldGroupProximity.add(ftsFieldGroupProximity20.getTree()); + if (state.failed) return retval; + if ( state.backtracking==0 ) stream_ftsFieldGroupProximity.add(ftsFieldGroupProximity26.getTree()); // AST REWRITE @@ -988,13 +1172,14 @@ public class FTSParser extends Parser { // token list labels: // rule list labels: // wildcard labels: + if ( state.backtracking==0 ) { retval.tree = root_0; RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); root_0 = (Object)adaptor.nil(); - // 169:9: -> ^( FG_PROXIMITY ftsFieldGroupProximity ) + // 189:9: -> ^( FG_PROXIMITY ftsFieldGroupProximity ) { - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:169:12: ^( FG_PROXIMITY ftsFieldGroupProximity ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:189:12: ^( FG_PROXIMITY ftsFieldGroupProximity ) { Object root_1 = (Object)adaptor.nil(); root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FG_PROXIMITY, "FG_PROXIMITY"), root_1); @@ -1006,18 +1191,18 @@ public class FTSParser extends Parser { } - retval.tree = root_0; + retval.tree = root_0;} } break; case 6 : - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:170:8: ftsFieldGroupRange + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:190:8: ftsFieldGroupRange { - pushFollow(FOLLOW_ftsFieldGroupRange_in_ftsTest435); - ftsFieldGroupRange21=ftsFieldGroupRange(); + pushFollow(FOLLOW_ftsFieldGroupRange_in_ftsTest617); + ftsFieldGroupRange27=ftsFieldGroupRange(); state._fsp--; - - stream_ftsFieldGroupRange.add(ftsFieldGroupRange21.getTree()); + if (state.failed) return retval; + if ( state.backtracking==0 ) stream_ftsFieldGroupRange.add(ftsFieldGroupRange27.getTree()); // AST REWRITE @@ -1027,13 +1212,14 @@ public class FTSParser extends Parser { // token list labels: // rule list labels: // wildcard labels: + if ( state.backtracking==0 ) { retval.tree = root_0; RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); root_0 = (Object)adaptor.nil(); - // 171:9: -> ^( FG_RANGE ftsFieldGroupRange ) + // 191:9: -> ^( FG_RANGE ftsFieldGroupRange ) { - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:171:12: ^( FG_RANGE ftsFieldGroupRange ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:191:12: ^( FG_RANGE ftsFieldGroupRange ) { Object root_1 = (Object)adaptor.nil(); root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FG_RANGE, "FG_RANGE"), root_1); @@ -1045,37 +1231,37 @@ public class FTSParser extends Parser { } - retval.tree = root_0; + retval.tree = root_0;} } break; case 7 : - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:172:7: ftsFieldGroup + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:192:7: ftsFieldGroup { root_0 = (Object)adaptor.nil(); - pushFollow(FOLLOW_ftsFieldGroup_in_ftsTest459); - ftsFieldGroup22=ftsFieldGroup(); + pushFollow(FOLLOW_ftsFieldGroup_in_ftsTest641); + ftsFieldGroup28=ftsFieldGroup(); state._fsp--; - - adaptor.addChild(root_0, ftsFieldGroup22.getTree()); + if (state.failed) return retval; + if ( state.backtracking==0 ) adaptor.addChild(root_0, ftsFieldGroup28.getTree()); } break; case 8 : - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:173:4: LPAREN ftsImplicitConjunctionOrDisjunction RPAREN + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:193:4: LPAREN ftsImplicitConjunctionOrDisjunction RPAREN { - LPAREN23=(Token)match(input,LPAREN,FOLLOW_LPAREN_in_ftsTest468); - stream_LPAREN.add(LPAREN23); + LPAREN29=(Token)match(input,LPAREN,FOLLOW_LPAREN_in_ftsTest650); if (state.failed) return retval; + if ( state.backtracking==0 ) stream_LPAREN.add(LPAREN29); - pushFollow(FOLLOW_ftsImplicitConjunctionOrDisjunction_in_ftsTest470); - ftsImplicitConjunctionOrDisjunction24=ftsImplicitConjunctionOrDisjunction(); + pushFollow(FOLLOW_ftsImplicitConjunctionOrDisjunction_in_ftsTest652); + ftsImplicitConjunctionOrDisjunction30=ftsImplicitConjunctionOrDisjunction(); state._fsp--; - - stream_ftsImplicitConjunctionOrDisjunction.add(ftsImplicitConjunctionOrDisjunction24.getTree()); - RPAREN25=(Token)match(input,RPAREN,FOLLOW_RPAREN_in_ftsTest472); - stream_RPAREN.add(RPAREN25); + if (state.failed) return retval; + if ( state.backtracking==0 ) stream_ftsImplicitConjunctionOrDisjunction.add(ftsImplicitConjunctionOrDisjunction30.getTree()); + RPAREN31=(Token)match(input,RPAREN,FOLLOW_RPAREN_in_ftsTest654); if (state.failed) return retval; + if ( state.backtracking==0 ) stream_RPAREN.add(RPAREN31); @@ -1086,26 +1272,29 @@ public class FTSParser extends Parser { // token list labels: // rule list labels: // wildcard labels: + if ( state.backtracking==0 ) { retval.tree = root_0; RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); root_0 = (Object)adaptor.nil(); - // 174:3: -> ftsImplicitConjunctionOrDisjunction + // 194:3: -> ftsImplicitConjunctionOrDisjunction { adaptor.addChild(root_0, stream_ftsImplicitConjunctionOrDisjunction.nextTree()); } - retval.tree = root_0; + retval.tree = root_0;} } break; } retval.stop = input.LT(-1); + if ( state.backtracking==0 ) { + retval.tree = (Object)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); - + } } catch(RecognitionException e) @@ -1124,28 +1313,28 @@ public class FTSParser extends Parser { }; // $ANTLR start "ftsTerm" - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:177:1: ftsTerm : ( columnReference COLON )? ftsWord -> ftsWord ( columnReference )? ; + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:197:1: ftsTerm : ( columnReference COLON )? ftsWord -> ftsWord ( columnReference )? ; public final FTSParser.ftsTerm_return ftsTerm() throws RecognitionException { FTSParser.ftsTerm_return retval = new FTSParser.ftsTerm_return(); retval.start = input.LT(1); Object root_0 = null; - Token COLON27=null; - FTSParser.columnReference_return columnReference26 = null; + Token COLON33=null; + FTSParser.columnReference_return columnReference32 = null; - FTSParser.ftsWord_return ftsWord28 = null; + FTSParser.ftsWord_return ftsWord34 = null; - Object COLON27_tree=null; + Object COLON33_tree=null; RewriteRuleTokenStream stream_COLON=new RewriteRuleTokenStream(adaptor,"token COLON"); RewriteRuleSubtreeStream stream_columnReference=new RewriteRuleSubtreeStream(adaptor,"rule columnReference"); RewriteRuleSubtreeStream stream_ftsWord=new RewriteRuleSubtreeStream(adaptor,"rule ftsWord"); try { - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:178:2: ( ( columnReference COLON )? ftsWord -> ftsWord ( columnReference )? ) - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:178:4: ( columnReference COLON )? ftsWord + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:198:2: ( ( columnReference COLON )? ftsWord -> ftsWord ( columnReference )? ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:198:4: ( columnReference COLON )? ftsWord { - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:178:4: ( columnReference COLON )? + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:198:4: ( columnReference COLON )? int alt8=2; int LA8_0 = input.LA(1); @@ -1158,16 +1347,16 @@ public class FTSParser extends Parser { } switch (alt8) { case 1 : - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:178:5: columnReference COLON + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:198:5: columnReference COLON { - pushFollow(FOLLOW_columnReference_in_ftsTerm490); - columnReference26=columnReference(); + pushFollow(FOLLOW_columnReference_in_ftsTerm672); + columnReference32=columnReference(); state._fsp--; - - stream_columnReference.add(columnReference26.getTree()); - COLON27=(Token)match(input,COLON,FOLLOW_COLON_in_ftsTerm492); - stream_COLON.add(COLON27); + if (state.failed) return retval; + if ( state.backtracking==0 ) stream_columnReference.add(columnReference32.getTree()); + COLON33=(Token)match(input,COLON,FOLLOW_COLON_in_ftsTerm674); if (state.failed) return retval; + if ( state.backtracking==0 ) stream_COLON.add(COLON33); } @@ -1175,29 +1364,30 @@ public class FTSParser extends Parser { } - pushFollow(FOLLOW_ftsWord_in_ftsTerm496); - ftsWord28=ftsWord(); + pushFollow(FOLLOW_ftsWord_in_ftsTerm678); + ftsWord34=ftsWord(); state._fsp--; - - stream_ftsWord.add(ftsWord28.getTree()); + if (state.failed) return retval; + if ( state.backtracking==0 ) stream_ftsWord.add(ftsWord34.getTree()); // AST REWRITE - // elements: ftsWord, columnReference + // elements: columnReference, ftsWord // token labels: // rule labels: retval // token list labels: // rule list labels: // wildcard labels: + if ( state.backtracking==0 ) { retval.tree = root_0; RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); root_0 = (Object)adaptor.nil(); - // 179:3: -> ftsWord ( columnReference )? + // 199:3: -> ftsWord ( columnReference )? { adaptor.addChild(root_0, stream_ftsWord.nextTree()); - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:179:14: ( columnReference )? + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:199:14: ( columnReference )? if ( stream_columnReference.hasNext() ) { adaptor.addChild(root_0, stream_columnReference.nextTree()); @@ -1206,14 +1396,16 @@ public class FTSParser extends Parser { } - retval.tree = root_0; + retval.tree = root_0;} } retval.stop = input.LT(-1); + if ( state.backtracking==0 ) { + retval.tree = (Object)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); - + } } catch(RecognitionException e) @@ -1232,33 +1424,33 @@ public class FTSParser extends Parser { }; // $ANTLR start "ftsExactTerm" - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:182:1: ftsExactTerm : PLUS ftsTerm -> ftsTerm ; + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:202:1: ftsExactTerm : EQUALS ftsTerm -> ftsTerm ; public final FTSParser.ftsExactTerm_return ftsExactTerm() throws RecognitionException { FTSParser.ftsExactTerm_return retval = new FTSParser.ftsExactTerm_return(); retval.start = input.LT(1); Object root_0 = null; - Token PLUS29=null; - FTSParser.ftsTerm_return ftsTerm30 = null; + Token EQUALS35=null; + FTSParser.ftsTerm_return ftsTerm36 = null; - Object PLUS29_tree=null; - RewriteRuleTokenStream stream_PLUS=new RewriteRuleTokenStream(adaptor,"token PLUS"); + Object EQUALS35_tree=null; + RewriteRuleTokenStream stream_EQUALS=new RewriteRuleTokenStream(adaptor,"token EQUALS"); RewriteRuleSubtreeStream stream_ftsTerm=new RewriteRuleSubtreeStream(adaptor,"rule ftsTerm"); try { - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:183:2: ( PLUS ftsTerm -> ftsTerm ) - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:183:4: PLUS ftsTerm + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:203:2: ( EQUALS ftsTerm -> ftsTerm ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:203:4: EQUALS ftsTerm { - PLUS29=(Token)match(input,PLUS,FOLLOW_PLUS_in_ftsExactTerm517); - stream_PLUS.add(PLUS29); + EQUALS35=(Token)match(input,EQUALS,FOLLOW_EQUALS_in_ftsExactTerm699); if (state.failed) return retval; + if ( state.backtracking==0 ) stream_EQUALS.add(EQUALS35); - pushFollow(FOLLOW_ftsTerm_in_ftsExactTerm519); - ftsTerm30=ftsTerm(); + pushFollow(FOLLOW_ftsTerm_in_ftsExactTerm701); + ftsTerm36=ftsTerm(); state._fsp--; - - stream_ftsTerm.add(ftsTerm30.getTree()); + if (state.failed) return retval; + if ( state.backtracking==0 ) stream_ftsTerm.add(ftsTerm36.getTree()); // AST REWRITE @@ -1268,24 +1460,27 @@ public class FTSParser extends Parser { // token list labels: // rule list labels: // wildcard labels: + if ( state.backtracking==0 ) { retval.tree = root_0; RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); root_0 = (Object)adaptor.nil(); - // 184:3: -> ftsTerm + // 204:3: -> ftsTerm { adaptor.addChild(root_0, stream_ftsTerm.nextTree()); } - retval.tree = root_0; + retval.tree = root_0;} } retval.stop = input.LT(-1); + if ( state.backtracking==0 ) { + retval.tree = (Object)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); - + } } catch(RecognitionException e) @@ -1304,28 +1499,28 @@ public class FTSParser extends Parser { }; // $ANTLR start "ftsPhrase" - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:187:1: ftsPhrase : ( columnReference COLON )? FTSPHRASE -> FTSPHRASE ( columnReference )? ; + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:207:1: ftsPhrase : ( columnReference COLON )? FTSPHRASE -> FTSPHRASE ( columnReference )? ; public final FTSParser.ftsPhrase_return ftsPhrase() throws RecognitionException { FTSParser.ftsPhrase_return retval = new FTSParser.ftsPhrase_return(); retval.start = input.LT(1); Object root_0 = null; - Token COLON32=null; - Token FTSPHRASE33=null; - FTSParser.columnReference_return columnReference31 = null; + Token COLON38=null; + Token FTSPHRASE39=null; + FTSParser.columnReference_return columnReference37 = null; - Object COLON32_tree=null; - Object FTSPHRASE33_tree=null; + Object COLON38_tree=null; + Object FTSPHRASE39_tree=null; RewriteRuleTokenStream stream_COLON=new RewriteRuleTokenStream(adaptor,"token COLON"); RewriteRuleTokenStream stream_FTSPHRASE=new RewriteRuleTokenStream(adaptor,"token FTSPHRASE"); RewriteRuleSubtreeStream stream_columnReference=new RewriteRuleSubtreeStream(adaptor,"rule columnReference"); try { - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:188:2: ( ( columnReference COLON )? FTSPHRASE -> FTSPHRASE ( columnReference )? ) - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:188:6: ( columnReference COLON )? FTSPHRASE + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:208:2: ( ( columnReference COLON )? FTSPHRASE -> FTSPHRASE ( columnReference )? ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:208:6: ( columnReference COLON )? FTSPHRASE { - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:188:6: ( columnReference COLON )? + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:208:6: ( columnReference COLON )? int alt9=2; int LA9_0 = input.LA(1); @@ -1334,16 +1529,16 @@ public class FTSParser extends Parser { } switch (alt9) { case 1 : - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:188:7: columnReference COLON + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:208:7: columnReference COLON { - pushFollow(FOLLOW_columnReference_in_ftsPhrase540); - columnReference31=columnReference(); + pushFollow(FOLLOW_columnReference_in_ftsPhrase722); + columnReference37=columnReference(); state._fsp--; - - stream_columnReference.add(columnReference31.getTree()); - COLON32=(Token)match(input,COLON,FOLLOW_COLON_in_ftsPhrase542); - stream_COLON.add(COLON32); + if (state.failed) return retval; + if ( state.backtracking==0 ) stream_columnReference.add(columnReference37.getTree()); + COLON38=(Token)match(input,COLON,FOLLOW_COLON_in_ftsPhrase724); if (state.failed) return retval; + if ( state.backtracking==0 ) stream_COLON.add(COLON38); } @@ -1351,8 +1546,8 @@ public class FTSParser extends Parser { } - FTSPHRASE33=(Token)match(input,FTSPHRASE,FOLLOW_FTSPHRASE_in_ftsPhrase546); - stream_FTSPHRASE.add(FTSPHRASE33); + FTSPHRASE39=(Token)match(input,FTSPHRASE,FOLLOW_FTSPHRASE_in_ftsPhrase728); if (state.failed) return retval; + if ( state.backtracking==0 ) stream_FTSPHRASE.add(FTSPHRASE39); @@ -1363,14 +1558,15 @@ public class FTSParser extends Parser { // token list labels: // rule list labels: // wildcard labels: + if ( state.backtracking==0 ) { retval.tree = root_0; RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); root_0 = (Object)adaptor.nil(); - // 189:3: -> FTSPHRASE ( columnReference )? + // 209:3: -> FTSPHRASE ( columnReference )? { adaptor.addChild(root_0, stream_FTSPHRASE.nextNode()); - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:189:16: ( columnReference )? + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:209:16: ( columnReference )? if ( stream_columnReference.hasNext() ) { adaptor.addChild(root_0, stream_columnReference.nextTree()); @@ -1379,14 +1575,16 @@ public class FTSParser extends Parser { } - retval.tree = root_0; + retval.tree = root_0;} } retval.stop = input.LT(-1); + if ( state.backtracking==0 ) { + retval.tree = (Object)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); - + } } catch(RecognitionException e) @@ -1405,33 +1603,33 @@ public class FTSParser extends Parser { }; // $ANTLR start "ftsSynonym" - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:192:1: ftsSynonym : TILDA ftsTerm -> ftsTerm ; + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:212:1: ftsSynonym : TILDA ftsTerm -> ftsTerm ; public final FTSParser.ftsSynonym_return ftsSynonym() throws RecognitionException { FTSParser.ftsSynonym_return retval = new FTSParser.ftsSynonym_return(); retval.start = input.LT(1); Object root_0 = null; - Token TILDA34=null; - FTSParser.ftsTerm_return ftsTerm35 = null; + Token TILDA40=null; + FTSParser.ftsTerm_return ftsTerm41 = null; - Object TILDA34_tree=null; + Object TILDA40_tree=null; RewriteRuleTokenStream stream_TILDA=new RewriteRuleTokenStream(adaptor,"token TILDA"); RewriteRuleSubtreeStream stream_ftsTerm=new RewriteRuleSubtreeStream(adaptor,"rule ftsTerm"); try { - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:193:2: ( TILDA ftsTerm -> ftsTerm ) - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:193:4: TILDA ftsTerm + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:213:2: ( TILDA ftsTerm -> ftsTerm ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:213:4: TILDA ftsTerm { - TILDA34=(Token)match(input,TILDA,FOLLOW_TILDA_in_ftsSynonym567); - stream_TILDA.add(TILDA34); + TILDA40=(Token)match(input,TILDA,FOLLOW_TILDA_in_ftsSynonym749); if (state.failed) return retval; + if ( state.backtracking==0 ) stream_TILDA.add(TILDA40); - pushFollow(FOLLOW_ftsTerm_in_ftsSynonym569); - ftsTerm35=ftsTerm(); + pushFollow(FOLLOW_ftsTerm_in_ftsSynonym751); + ftsTerm41=ftsTerm(); state._fsp--; - - stream_ftsTerm.add(ftsTerm35.getTree()); + if (state.failed) return retval; + if ( state.backtracking==0 ) stream_ftsTerm.add(ftsTerm41.getTree()); // AST REWRITE @@ -1441,24 +1639,27 @@ public class FTSParser extends Parser { // token list labels: // rule list labels: // wildcard labels: + if ( state.backtracking==0 ) { retval.tree = root_0; RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); root_0 = (Object)adaptor.nil(); - // 194:3: -> ftsTerm + // 214:3: -> ftsTerm { adaptor.addChild(root_0, stream_ftsTerm.nextTree()); } - retval.tree = root_0; + retval.tree = root_0;} } retval.stop = input.LT(-1); + if ( state.backtracking==0 ) { + retval.tree = (Object)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); - + } } catch(RecognitionException e) @@ -1477,70 +1678,71 @@ public class FTSParser extends Parser { }; // $ANTLR start "ftsFieldGroup" - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:198:1: ftsFieldGroup : columnReference COLON LPAREN ftsFieldGroupImplicitConjunctionOrDisjunction RPAREN -> ^( FIELD_GROUP columnReference ftsFieldGroupImplicitConjunctionOrDisjunction ) ; + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:218:1: ftsFieldGroup : columnReference COLON LPAREN ftsFieldGroupImplicitConjunctionOrDisjunction RPAREN -> ^( FIELD_GROUP columnReference ftsFieldGroupImplicitConjunctionOrDisjunction ) ; public final FTSParser.ftsFieldGroup_return ftsFieldGroup() throws RecognitionException { FTSParser.ftsFieldGroup_return retval = new FTSParser.ftsFieldGroup_return(); retval.start = input.LT(1); Object root_0 = null; - Token COLON37=null; - Token LPAREN38=null; - Token RPAREN40=null; - FTSParser.columnReference_return columnReference36 = null; + Token COLON43=null; + Token LPAREN44=null; + Token RPAREN46=null; + FTSParser.columnReference_return columnReference42 = null; - FTSParser.ftsFieldGroupImplicitConjunctionOrDisjunction_return ftsFieldGroupImplicitConjunctionOrDisjunction39 = null; + FTSParser.ftsFieldGroupImplicitConjunctionOrDisjunction_return ftsFieldGroupImplicitConjunctionOrDisjunction45 = null; - Object COLON37_tree=null; - Object LPAREN38_tree=null; - Object RPAREN40_tree=null; + Object COLON43_tree=null; + Object LPAREN44_tree=null; + Object RPAREN46_tree=null; RewriteRuleTokenStream stream_COLON=new RewriteRuleTokenStream(adaptor,"token COLON"); RewriteRuleTokenStream stream_RPAREN=new RewriteRuleTokenStream(adaptor,"token RPAREN"); RewriteRuleTokenStream stream_LPAREN=new RewriteRuleTokenStream(adaptor,"token LPAREN"); RewriteRuleSubtreeStream stream_columnReference=new RewriteRuleSubtreeStream(adaptor,"rule columnReference"); RewriteRuleSubtreeStream stream_ftsFieldGroupImplicitConjunctionOrDisjunction=new RewriteRuleSubtreeStream(adaptor,"rule ftsFieldGroupImplicitConjunctionOrDisjunction"); try { - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:199:2: ( columnReference COLON LPAREN ftsFieldGroupImplicitConjunctionOrDisjunction RPAREN -> ^( FIELD_GROUP columnReference ftsFieldGroupImplicitConjunctionOrDisjunction ) ) - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:199:4: columnReference COLON LPAREN ftsFieldGroupImplicitConjunctionOrDisjunction RPAREN + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:219:2: ( columnReference COLON LPAREN ftsFieldGroupImplicitConjunctionOrDisjunction RPAREN -> ^( FIELD_GROUP columnReference ftsFieldGroupImplicitConjunctionOrDisjunction ) ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:219:4: columnReference COLON LPAREN ftsFieldGroupImplicitConjunctionOrDisjunction RPAREN { - pushFollow(FOLLOW_columnReference_in_ftsFieldGroup588); - columnReference36=columnReference(); + pushFollow(FOLLOW_columnReference_in_ftsFieldGroup770); + columnReference42=columnReference(); state._fsp--; + if (state.failed) return retval; + if ( state.backtracking==0 ) stream_columnReference.add(columnReference42.getTree()); + COLON43=(Token)match(input,COLON,FOLLOW_COLON_in_ftsFieldGroup772); if (state.failed) return retval; + if ( state.backtracking==0 ) stream_COLON.add(COLON43); - stream_columnReference.add(columnReference36.getTree()); - COLON37=(Token)match(input,COLON,FOLLOW_COLON_in_ftsFieldGroup590); - stream_COLON.add(COLON37); + LPAREN44=(Token)match(input,LPAREN,FOLLOW_LPAREN_in_ftsFieldGroup774); if (state.failed) return retval; + if ( state.backtracking==0 ) stream_LPAREN.add(LPAREN44); - LPAREN38=(Token)match(input,LPAREN,FOLLOW_LPAREN_in_ftsFieldGroup592); - stream_LPAREN.add(LPAREN38); - - pushFollow(FOLLOW_ftsFieldGroupImplicitConjunctionOrDisjunction_in_ftsFieldGroup594); - ftsFieldGroupImplicitConjunctionOrDisjunction39=ftsFieldGroupImplicitConjunctionOrDisjunction(); + pushFollow(FOLLOW_ftsFieldGroupImplicitConjunctionOrDisjunction_in_ftsFieldGroup776); + ftsFieldGroupImplicitConjunctionOrDisjunction45=ftsFieldGroupImplicitConjunctionOrDisjunction(); state._fsp--; - - stream_ftsFieldGroupImplicitConjunctionOrDisjunction.add(ftsFieldGroupImplicitConjunctionOrDisjunction39.getTree()); - RPAREN40=(Token)match(input,RPAREN,FOLLOW_RPAREN_in_ftsFieldGroup596); - stream_RPAREN.add(RPAREN40); + if (state.failed) return retval; + if ( state.backtracking==0 ) stream_ftsFieldGroupImplicitConjunctionOrDisjunction.add(ftsFieldGroupImplicitConjunctionOrDisjunction45.getTree()); + RPAREN46=(Token)match(input,RPAREN,FOLLOW_RPAREN_in_ftsFieldGroup778); if (state.failed) return retval; + if ( state.backtracking==0 ) stream_RPAREN.add(RPAREN46); // AST REWRITE - // elements: ftsFieldGroupImplicitConjunctionOrDisjunction, columnReference + // elements: columnReference, ftsFieldGroupImplicitConjunctionOrDisjunction // token labels: // rule labels: retval // token list labels: // rule list labels: // wildcard labels: + if ( state.backtracking==0 ) { retval.tree = root_0; RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); root_0 = (Object)adaptor.nil(); - // 200:3: -> ^( FIELD_GROUP columnReference ftsFieldGroupImplicitConjunctionOrDisjunction ) + // 220:3: -> ^( FIELD_GROUP columnReference ftsFieldGroupImplicitConjunctionOrDisjunction ) { - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:200:6: ^( FIELD_GROUP columnReference ftsFieldGroupImplicitConjunctionOrDisjunction ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:220:6: ^( FIELD_GROUP columnReference ftsFieldGroupImplicitConjunctionOrDisjunction ) { Object root_1 = (Object)adaptor.nil(); root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FIELD_GROUP, "FIELD_GROUP"), root_1); @@ -1553,14 +1755,16 @@ public class FTSParser extends Parser { } - retval.tree = root_0; + retval.tree = root_0;} } retval.stop = input.LT(-1); + if ( state.backtracking==0 ) { + retval.tree = (Object)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); - + } } catch(RecognitionException e) @@ -1579,177 +1783,62 @@ public class FTSParser extends Parser { }; // $ANTLR start "ftsFieldGroupImplicitConjunctionOrDisjunction" - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:203:1: ftsFieldGroupImplicitConjunctionOrDisjunction : ({...}? ftsFieldGroupExplicitDisjunction ( ftsFieldGroupExplicitDisjunction )* -> ^( FIELD_CONJUNCTION ( ftsFieldGroupExplicitDisjunction )+ ) | ftsFieldGroupExplicitDisjunction ( ftsFieldGroupExplicitDisjunction )* -> ^( FIELD_DISJUNCTION ( ftsFieldGroupExplicitDisjunction )+ ) ); + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:223:1: ftsFieldGroupImplicitConjunctionOrDisjunction : ({...}? ftsFieldGroupExplicitDisjunction ( ftsFieldGroupExplicitDisjunction )* -> ^( FIELD_CONJUNCTION ( ftsFieldGroupExplicitDisjunction )+ ) | ftsFieldGroupExplicitDisjunction ( ftsFieldGroupExplicitDisjunction )* -> ^( FIELD_DISJUNCTION ( ftsFieldGroupExplicitDisjunction )+ ) ); public final FTSParser.ftsFieldGroupImplicitConjunctionOrDisjunction_return ftsFieldGroupImplicitConjunctionOrDisjunction() throws RecognitionException { FTSParser.ftsFieldGroupImplicitConjunctionOrDisjunction_return retval = new FTSParser.ftsFieldGroupImplicitConjunctionOrDisjunction_return(); retval.start = input.LT(1); Object root_0 = null; - FTSParser.ftsFieldGroupExplicitDisjunction_return ftsFieldGroupExplicitDisjunction41 = null; + FTSParser.ftsFieldGroupExplicitDisjunction_return ftsFieldGroupExplicitDisjunction47 = null; - FTSParser.ftsFieldGroupExplicitDisjunction_return ftsFieldGroupExplicitDisjunction42 = null; + FTSParser.ftsFieldGroupExplicitDisjunction_return ftsFieldGroupExplicitDisjunction48 = null; - FTSParser.ftsFieldGroupExplicitDisjunction_return ftsFieldGroupExplicitDisjunction43 = null; + FTSParser.ftsFieldGroupExplicitDisjunction_return ftsFieldGroupExplicitDisjunction49 = null; - FTSParser.ftsFieldGroupExplicitDisjunction_return ftsFieldGroupExplicitDisjunction44 = null; + FTSParser.ftsFieldGroupExplicitDisjunction_return ftsFieldGroupExplicitDisjunction50 = null; RewriteRuleSubtreeStream stream_ftsFieldGroupExplicitDisjunction=new RewriteRuleSubtreeStream(adaptor,"rule ftsFieldGroupExplicitDisjunction"); try { - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:204:2: ({...}? ftsFieldGroupExplicitDisjunction ( ftsFieldGroupExplicitDisjunction )* -> ^( FIELD_CONJUNCTION ( ftsFieldGroupExplicitDisjunction )+ ) | ftsFieldGroupExplicitDisjunction ( ftsFieldGroupExplicitDisjunction )* -> ^( FIELD_DISJUNCTION ( ftsFieldGroupExplicitDisjunction )+ ) ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:224:2: ({...}? ftsFieldGroupExplicitDisjunction ( ftsFieldGroupExplicitDisjunction )* -> ^( FIELD_CONJUNCTION ( ftsFieldGroupExplicitDisjunction )+ ) | ftsFieldGroupExplicitDisjunction ( ftsFieldGroupExplicitDisjunction )* -> ^( FIELD_DISJUNCTION ( ftsFieldGroupExplicitDisjunction )+ ) ) int alt12=2; - switch ( input.LA(1) ) { - case MINUS: - { - int LA12_1 = input.LA(2); - - if ( ((defaultFieldConjunction())) ) { - alt12=1; - } - else if ( (true) ) { - alt12=2; - } - else { - NoViableAltException nvae = - new NoViableAltException("", 12, 1, input); - - throw nvae; - } - } - break; - case ID: - case FTSWORD: - { - int LA12_2 = input.LA(2); - - if ( ((defaultFieldConjunction())) ) { - alt12=1; - } - else if ( (true) ) { - alt12=2; - } - else { - NoViableAltException nvae = - new NoViableAltException("", 12, 2, input); - - throw nvae; - } - } - break; - case PLUS: - { - int LA12_3 = input.LA(2); - - if ( ((defaultFieldConjunction())) ) { - alt12=1; - } - else if ( (true) ) { - alt12=2; - } - else { - NoViableAltException nvae = - new NoViableAltException("", 12, 3, input); - - throw nvae; - } - } - break; - case FTSPHRASE: - { - int LA12_4 = input.LA(2); - - if ( ((defaultFieldConjunction())) ) { - alt12=1; - } - else if ( (true) ) { - alt12=2; - } - else { - NoViableAltException nvae = - new NoViableAltException("", 12, 4, input); - - throw nvae; - } - } - break; - case TILDA: - { - int LA12_5 = input.LA(2); - - if ( ((defaultFieldConjunction())) ) { - alt12=1; - } - else if ( (true) ) { - alt12=2; - } - else { - NoViableAltException nvae = - new NoViableAltException("", 12, 5, input); - - throw nvae; - } - } - break; - case LPAREN: - { - int LA12_6 = input.LA(2); - - if ( ((defaultFieldConjunction())) ) { - alt12=1; - } - else if ( (true) ) { - alt12=2; - } - else { - NoViableAltException nvae = - new NoViableAltException("", 12, 6, input); - - throw nvae; - } - } - break; - default: - NoViableAltException nvae = - new NoViableAltException("", 12, 0, input); - - throw nvae; - } - + alt12 = dfa12.predict(input); switch (alt12) { case 1 : - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:204:4: {...}? ftsFieldGroupExplicitDisjunction ( ftsFieldGroupExplicitDisjunction )* + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:224:4: {...}? ftsFieldGroupExplicitDisjunction ( ftsFieldGroupExplicitDisjunction )* { if ( !((defaultFieldConjunction())) ) { + if (state.backtracking>0) {state.failed=true; return retval;} throw new FailedPredicateException(input, "ftsFieldGroupImplicitConjunctionOrDisjunction", "defaultFieldConjunction()"); } - pushFollow(FOLLOW_ftsFieldGroupExplicitDisjunction_in_ftsFieldGroupImplicitConjunctionOrDisjunction622); - ftsFieldGroupExplicitDisjunction41=ftsFieldGroupExplicitDisjunction(); + pushFollow(FOLLOW_ftsFieldGroupExplicitDisjunction_in_ftsFieldGroupImplicitConjunctionOrDisjunction804); + ftsFieldGroupExplicitDisjunction47=ftsFieldGroupExplicitDisjunction(); state._fsp--; - - stream_ftsFieldGroupExplicitDisjunction.add(ftsFieldGroupExplicitDisjunction41.getTree()); - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:204:66: ( ftsFieldGroupExplicitDisjunction )* + if (state.failed) return retval; + if ( state.backtracking==0 ) stream_ftsFieldGroupExplicitDisjunction.add(ftsFieldGroupExplicitDisjunction47.getTree()); + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:224:66: ( ftsFieldGroupExplicitDisjunction )* loop10: do { int alt10=2; int LA10_0 = input.LA(1); - if ( ((LA10_0>=MINUS && LA10_0<=LPAREN)||(LA10_0>=PLUS && LA10_0<=TILDA)||(LA10_0>=ID && LA10_0<=FTSWORD)) ) { + if ( ((LA10_0>=PLUS && LA10_0<=LPAREN)||(LA10_0>=EQUALS && LA10_0<=TILDA)||(LA10_0>=TO && LA10_0<=LCURL)||(LA10_0>=ID && LA10_0<=NOT)||LA10_0==EXCLAMATION) ) { alt10=1; } switch (alt10) { case 1 : - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:204:67: ftsFieldGroupExplicitDisjunction + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:224:67: ftsFieldGroupExplicitDisjunction { - pushFollow(FOLLOW_ftsFieldGroupExplicitDisjunction_in_ftsFieldGroupImplicitConjunctionOrDisjunction625); - ftsFieldGroupExplicitDisjunction42=ftsFieldGroupExplicitDisjunction(); + pushFollow(FOLLOW_ftsFieldGroupExplicitDisjunction_in_ftsFieldGroupImplicitConjunctionOrDisjunction807); + ftsFieldGroupExplicitDisjunction48=ftsFieldGroupExplicitDisjunction(); state._fsp--; - - stream_ftsFieldGroupExplicitDisjunction.add(ftsFieldGroupExplicitDisjunction42.getTree()); + if (state.failed) return retval; + if ( state.backtracking==0 ) stream_ftsFieldGroupExplicitDisjunction.add(ftsFieldGroupExplicitDisjunction48.getTree()); } break; @@ -1768,13 +1857,14 @@ public class FTSParser extends Parser { // token list labels: // rule list labels: // wildcard labels: + if ( state.backtracking==0 ) { retval.tree = root_0; RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); root_0 = (Object)adaptor.nil(); - // 205:3: -> ^( FIELD_CONJUNCTION ( ftsFieldGroupExplicitDisjunction )+ ) + // 225:3: -> ^( FIELD_CONJUNCTION ( ftsFieldGroupExplicitDisjunction )+ ) { - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:205:6: ^( FIELD_CONJUNCTION ( ftsFieldGroupExplicitDisjunction )+ ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:225:6: ^( FIELD_CONJUNCTION ( ftsFieldGroupExplicitDisjunction )+ ) { Object root_1 = (Object)adaptor.nil(); root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FIELD_CONJUNCTION, "FIELD_CONJUNCTION"), root_1); @@ -1793,39 +1883,39 @@ public class FTSParser extends Parser { } - retval.tree = root_0; + retval.tree = root_0;} } break; case 2 : - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:206:4: ftsFieldGroupExplicitDisjunction ( ftsFieldGroupExplicitDisjunction )* + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:226:4: ftsFieldGroupExplicitDisjunction ( ftsFieldGroupExplicitDisjunction )* { - pushFollow(FOLLOW_ftsFieldGroupExplicitDisjunction_in_ftsFieldGroupImplicitConjunctionOrDisjunction643); - ftsFieldGroupExplicitDisjunction43=ftsFieldGroupExplicitDisjunction(); + pushFollow(FOLLOW_ftsFieldGroupExplicitDisjunction_in_ftsFieldGroupImplicitConjunctionOrDisjunction825); + ftsFieldGroupExplicitDisjunction49=ftsFieldGroupExplicitDisjunction(); state._fsp--; - - stream_ftsFieldGroupExplicitDisjunction.add(ftsFieldGroupExplicitDisjunction43.getTree()); - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:206:37: ( ftsFieldGroupExplicitDisjunction )* + if (state.failed) return retval; + if ( state.backtracking==0 ) stream_ftsFieldGroupExplicitDisjunction.add(ftsFieldGroupExplicitDisjunction49.getTree()); + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:226:37: ( ftsFieldGroupExplicitDisjunction )* loop11: do { int alt11=2; int LA11_0 = input.LA(1); - if ( ((LA11_0>=MINUS && LA11_0<=LPAREN)||(LA11_0>=PLUS && LA11_0<=TILDA)||(LA11_0>=ID && LA11_0<=FTSWORD)) ) { + if ( ((LA11_0>=PLUS && LA11_0<=LPAREN)||(LA11_0>=EQUALS && LA11_0<=TILDA)||(LA11_0>=TO && LA11_0<=LCURL)||(LA11_0>=ID && LA11_0<=NOT)||LA11_0==EXCLAMATION) ) { alt11=1; } switch (alt11) { case 1 : - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:206:38: ftsFieldGroupExplicitDisjunction + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:226:38: ftsFieldGroupExplicitDisjunction { - pushFollow(FOLLOW_ftsFieldGroupExplicitDisjunction_in_ftsFieldGroupImplicitConjunctionOrDisjunction646); - ftsFieldGroupExplicitDisjunction44=ftsFieldGroupExplicitDisjunction(); + pushFollow(FOLLOW_ftsFieldGroupExplicitDisjunction_in_ftsFieldGroupImplicitConjunctionOrDisjunction828); + ftsFieldGroupExplicitDisjunction50=ftsFieldGroupExplicitDisjunction(); state._fsp--; - - stream_ftsFieldGroupExplicitDisjunction.add(ftsFieldGroupExplicitDisjunction44.getTree()); + if (state.failed) return retval; + if ( state.backtracking==0 ) stream_ftsFieldGroupExplicitDisjunction.add(ftsFieldGroupExplicitDisjunction50.getTree()); } break; @@ -1844,13 +1934,14 @@ public class FTSParser extends Parser { // token list labels: // rule list labels: // wildcard labels: + if ( state.backtracking==0 ) { retval.tree = root_0; RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); root_0 = (Object)adaptor.nil(); - // 207:3: -> ^( FIELD_DISJUNCTION ( ftsFieldGroupExplicitDisjunction )+ ) + // 227:3: -> ^( FIELD_DISJUNCTION ( ftsFieldGroupExplicitDisjunction )+ ) { - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:207:6: ^( FIELD_DISJUNCTION ( ftsFieldGroupExplicitDisjunction )+ ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:227:6: ^( FIELD_DISJUNCTION ( ftsFieldGroupExplicitDisjunction )+ ) { Object root_1 = (Object)adaptor.nil(); root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FIELD_DISJUNCTION, "FIELD_DISJUNCTION"), root_1); @@ -1869,16 +1960,18 @@ public class FTSParser extends Parser { } - retval.tree = root_0; + retval.tree = root_0;} } break; } retval.stop = input.LT(-1); + if ( state.backtracking==0 ) { + retval.tree = (Object)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); - + } } catch(RecognitionException e) @@ -1897,56 +1990,53 @@ public class FTSParser extends Parser { }; // $ANTLR start "ftsFieldGroupExplicitDisjunction" - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:210:1: ftsFieldGroupExplicitDisjunction : ftsFieldGroupExplictConjunction ( OR ftsFieldGroupExplictConjunction )* -> ^( FIELD_DISJUNCTION ( ftsFieldGroupExplictConjunction )+ ) ; + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:230:1: ftsFieldGroupExplicitDisjunction : ftsFieldGroupExplictConjunction ( ( or )=> or ftsFieldGroupExplictConjunction )* -> ^( FIELD_DISJUNCTION ( ftsFieldGroupExplictConjunction )+ ) ; public final FTSParser.ftsFieldGroupExplicitDisjunction_return ftsFieldGroupExplicitDisjunction() throws RecognitionException { FTSParser.ftsFieldGroupExplicitDisjunction_return retval = new FTSParser.ftsFieldGroupExplicitDisjunction_return(); retval.start = input.LT(1); Object root_0 = null; - Token OR46=null; - FTSParser.ftsFieldGroupExplictConjunction_return ftsFieldGroupExplictConjunction45 = null; + FTSParser.ftsFieldGroupExplictConjunction_return ftsFieldGroupExplictConjunction51 = null; - FTSParser.ftsFieldGroupExplictConjunction_return ftsFieldGroupExplictConjunction47 = null; + FTSParser.or_return or52 = null; + + FTSParser.ftsFieldGroupExplictConjunction_return ftsFieldGroupExplictConjunction53 = null; - Object OR46_tree=null; - RewriteRuleTokenStream stream_OR=new RewriteRuleTokenStream(adaptor,"token OR"); RewriteRuleSubtreeStream stream_ftsFieldGroupExplictConjunction=new RewriteRuleSubtreeStream(adaptor,"rule ftsFieldGroupExplictConjunction"); + RewriteRuleSubtreeStream stream_or=new RewriteRuleSubtreeStream(adaptor,"rule or"); try { - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:211:2: ( ftsFieldGroupExplictConjunction ( OR ftsFieldGroupExplictConjunction )* -> ^( FIELD_DISJUNCTION ( ftsFieldGroupExplictConjunction )+ ) ) - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:211:4: ftsFieldGroupExplictConjunction ( OR ftsFieldGroupExplictConjunction )* + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:231:2: ( ftsFieldGroupExplictConjunction ( ( or )=> or ftsFieldGroupExplictConjunction )* -> ^( FIELD_DISJUNCTION ( ftsFieldGroupExplictConjunction )+ ) ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:231:4: ftsFieldGroupExplictConjunction ( ( or )=> or ftsFieldGroupExplictConjunction )* { - pushFollow(FOLLOW_ftsFieldGroupExplictConjunction_in_ftsFieldGroupExplicitDisjunction671); - ftsFieldGroupExplictConjunction45=ftsFieldGroupExplictConjunction(); + pushFollow(FOLLOW_ftsFieldGroupExplictConjunction_in_ftsFieldGroupExplicitDisjunction853); + ftsFieldGroupExplictConjunction51=ftsFieldGroupExplictConjunction(); state._fsp--; - - stream_ftsFieldGroupExplictConjunction.add(ftsFieldGroupExplictConjunction45.getTree()); - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:211:36: ( OR ftsFieldGroupExplictConjunction )* + if (state.failed) return retval; + if ( state.backtracking==0 ) stream_ftsFieldGroupExplictConjunction.add(ftsFieldGroupExplictConjunction51.getTree()); + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:231:36: ( ( or )=> or ftsFieldGroupExplictConjunction )* loop13: do { int alt13=2; - int LA13_0 = input.LA(1); - - if ( (LA13_0==OR) ) { - alt13=1; - } - - + alt13 = dfa13.predict(input); switch (alt13) { case 1 : - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:211:37: OR ftsFieldGroupExplictConjunction + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:231:37: ( or )=> or ftsFieldGroupExplictConjunction { - OR46=(Token)match(input,OR,FOLLOW_OR_in_ftsFieldGroupExplicitDisjunction674); - stream_OR.add(OR46); - - pushFollow(FOLLOW_ftsFieldGroupExplictConjunction_in_ftsFieldGroupExplicitDisjunction676); - ftsFieldGroupExplictConjunction47=ftsFieldGroupExplictConjunction(); + pushFollow(FOLLOW_or_in_ftsFieldGroupExplicitDisjunction862); + or52=or(); state._fsp--; + if (state.failed) return retval; + if ( state.backtracking==0 ) stream_or.add(or52.getTree()); + pushFollow(FOLLOW_ftsFieldGroupExplictConjunction_in_ftsFieldGroupExplicitDisjunction864); + ftsFieldGroupExplictConjunction53=ftsFieldGroupExplictConjunction(); - stream_ftsFieldGroupExplictConjunction.add(ftsFieldGroupExplictConjunction47.getTree()); + state._fsp--; + if (state.failed) return retval; + if ( state.backtracking==0 ) stream_ftsFieldGroupExplictConjunction.add(ftsFieldGroupExplictConjunction53.getTree()); } break; @@ -1965,13 +2055,14 @@ public class FTSParser extends Parser { // token list labels: // rule list labels: // wildcard labels: + if ( state.backtracking==0 ) { retval.tree = root_0; RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); root_0 = (Object)adaptor.nil(); - // 212:3: -> ^( FIELD_DISJUNCTION ( ftsFieldGroupExplictConjunction )+ ) + // 232:3: -> ^( FIELD_DISJUNCTION ( ftsFieldGroupExplictConjunction )+ ) { - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:212:6: ^( FIELD_DISJUNCTION ( ftsFieldGroupExplictConjunction )+ ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:232:6: ^( FIELD_DISJUNCTION ( ftsFieldGroupExplictConjunction )+ ) { Object root_1 = (Object)adaptor.nil(); root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FIELD_DISJUNCTION, "FIELD_DISJUNCTION"), root_1); @@ -1990,14 +2081,16 @@ public class FTSParser extends Parser { } - retval.tree = root_0; + retval.tree = root_0;} } retval.stop = input.LT(-1); + if ( state.backtracking==0 ) { + retval.tree = (Object)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); - + } } catch(RecognitionException e) @@ -2016,56 +2109,53 @@ public class FTSParser extends Parser { }; // $ANTLR start "ftsFieldGroupExplictConjunction" - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:215:1: ftsFieldGroupExplictConjunction : ftsFieldGroupNot ( AND ftsFieldGroupNot )* -> ^( FIELD_CONJUNCTION ( ftsFieldGroupNot )+ ) ; + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:235:1: ftsFieldGroupExplictConjunction : ftsFieldGroupPrefixed ( ( and )=> and ftsFieldGroupPrefixed )* -> ^( FIELD_CONJUNCTION ( ftsFieldGroupPrefixed )+ ) ; public final FTSParser.ftsFieldGroupExplictConjunction_return ftsFieldGroupExplictConjunction() throws RecognitionException { FTSParser.ftsFieldGroupExplictConjunction_return retval = new FTSParser.ftsFieldGroupExplictConjunction_return(); retval.start = input.LT(1); Object root_0 = null; - Token AND49=null; - FTSParser.ftsFieldGroupNot_return ftsFieldGroupNot48 = null; + FTSParser.ftsFieldGroupPrefixed_return ftsFieldGroupPrefixed54 = null; - FTSParser.ftsFieldGroupNot_return ftsFieldGroupNot50 = null; + FTSParser.and_return and55 = null; + + FTSParser.ftsFieldGroupPrefixed_return ftsFieldGroupPrefixed56 = null; - Object AND49_tree=null; - RewriteRuleTokenStream stream_AND=new RewriteRuleTokenStream(adaptor,"token AND"); - RewriteRuleSubtreeStream stream_ftsFieldGroupNot=new RewriteRuleSubtreeStream(adaptor,"rule ftsFieldGroupNot"); + RewriteRuleSubtreeStream stream_ftsFieldGroupPrefixed=new RewriteRuleSubtreeStream(adaptor,"rule ftsFieldGroupPrefixed"); + RewriteRuleSubtreeStream stream_and=new RewriteRuleSubtreeStream(adaptor,"rule and"); try { - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:216:2: ( ftsFieldGroupNot ( AND ftsFieldGroupNot )* -> ^( FIELD_CONJUNCTION ( ftsFieldGroupNot )+ ) ) - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:216:4: ftsFieldGroupNot ( AND ftsFieldGroupNot )* + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:236:2: ( ftsFieldGroupPrefixed ( ( and )=> and ftsFieldGroupPrefixed )* -> ^( FIELD_CONJUNCTION ( ftsFieldGroupPrefixed )+ ) ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:236:4: ftsFieldGroupPrefixed ( ( and )=> and ftsFieldGroupPrefixed )* { - pushFollow(FOLLOW_ftsFieldGroupNot_in_ftsFieldGroupExplictConjunction701); - ftsFieldGroupNot48=ftsFieldGroupNot(); + pushFollow(FOLLOW_ftsFieldGroupPrefixed_in_ftsFieldGroupExplictConjunction889); + ftsFieldGroupPrefixed54=ftsFieldGroupPrefixed(); state._fsp--; - - stream_ftsFieldGroupNot.add(ftsFieldGroupNot48.getTree()); - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:216:21: ( AND ftsFieldGroupNot )* + if (state.failed) return retval; + if ( state.backtracking==0 ) stream_ftsFieldGroupPrefixed.add(ftsFieldGroupPrefixed54.getTree()); + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:236:26: ( ( and )=> and ftsFieldGroupPrefixed )* loop14: do { int alt14=2; - int LA14_0 = input.LA(1); - - if ( (LA14_0==AND) ) { - alt14=1; - } - - + alt14 = dfa14.predict(input); switch (alt14) { case 1 : - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:216:22: AND ftsFieldGroupNot + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:236:27: ( and )=> and ftsFieldGroupPrefixed { - AND49=(Token)match(input,AND,FOLLOW_AND_in_ftsFieldGroupExplictConjunction704); - stream_AND.add(AND49); - - pushFollow(FOLLOW_ftsFieldGroupNot_in_ftsFieldGroupExplictConjunction706); - ftsFieldGroupNot50=ftsFieldGroupNot(); + pushFollow(FOLLOW_and_in_ftsFieldGroupExplictConjunction898); + and55=and(); state._fsp--; + if (state.failed) return retval; + if ( state.backtracking==0 ) stream_and.add(and55.getTree()); + pushFollow(FOLLOW_ftsFieldGroupPrefixed_in_ftsFieldGroupExplictConjunction900); + ftsFieldGroupPrefixed56=ftsFieldGroupPrefixed(); - stream_ftsFieldGroupNot.add(ftsFieldGroupNot50.getTree()); + state._fsp--; + if (state.failed) return retval; + if ( state.backtracking==0 ) stream_ftsFieldGroupPrefixed.add(ftsFieldGroupPrefixed56.getTree()); } break; @@ -2078,45 +2168,48 @@ public class FTSParser extends Parser { // AST REWRITE - // elements: ftsFieldGroupNot + // elements: ftsFieldGroupPrefixed // token labels: // rule labels: retval // token list labels: // rule list labels: // wildcard labels: + if ( state.backtracking==0 ) { retval.tree = root_0; RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); root_0 = (Object)adaptor.nil(); - // 217:3: -> ^( FIELD_CONJUNCTION ( ftsFieldGroupNot )+ ) + // 237:3: -> ^( FIELD_CONJUNCTION ( ftsFieldGroupPrefixed )+ ) { - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:217:6: ^( FIELD_CONJUNCTION ( ftsFieldGroupNot )+ ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:237:6: ^( FIELD_CONJUNCTION ( ftsFieldGroupPrefixed )+ ) { Object root_1 = (Object)adaptor.nil(); root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FIELD_CONJUNCTION, "FIELD_CONJUNCTION"), root_1); - if ( !(stream_ftsFieldGroupNot.hasNext()) ) { + if ( !(stream_ftsFieldGroupPrefixed.hasNext()) ) { throw new RewriteEarlyExitException(); } - while ( stream_ftsFieldGroupNot.hasNext() ) { - adaptor.addChild(root_1, stream_ftsFieldGroupNot.nextTree()); + while ( stream_ftsFieldGroupPrefixed.hasNext() ) { + adaptor.addChild(root_1, stream_ftsFieldGroupPrefixed.nextTree()); } - stream_ftsFieldGroupNot.reset(); + stream_ftsFieldGroupPrefixed.reset(); adaptor.addChild(root_0, root_1); } } - retval.tree = root_0; + retval.tree = root_0;} } retval.stop = input.LT(-1); + if ( state.backtracking==0 ) { + retval.tree = (Object)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); - + } } catch(RecognitionException e) @@ -2129,58 +2222,63 @@ public class FTSParser extends Parser { } // $ANTLR end "ftsFieldGroupExplictConjunction" - public static class ftsFieldGroupNot_return extends ParserRuleReturnScope { + public static class ftsFieldGroupPrefixed_return extends ParserRuleReturnScope { Object tree; public Object getTree() { return tree; } }; - // $ANTLR start "ftsFieldGroupNot" - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:221:1: ftsFieldGroupNot : ( MINUS ftsFieldGroupTest -> FIELD_NEGATION ftsFieldGroupTest | ftsFieldGroupTest -> ftsFieldGroupTest ); - public final FTSParser.ftsFieldGroupNot_return ftsFieldGroupNot() throws RecognitionException { - FTSParser.ftsFieldGroupNot_return retval = new FTSParser.ftsFieldGroupNot_return(); + // $ANTLR start "ftsFieldGroupPrefixed" + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:241:1: ftsFieldGroupPrefixed : ( ( not )=> not ftsFieldGroupTest -> ^( FIELD_NEGATION ftsFieldGroupTest ) | ftsFieldGroupTest -> ^( FIELD_DEFAULT ftsFieldGroupTest ) | PLUS ftsFieldGroupTest -> ^( FIELD_MANDATORY ftsFieldGroupTest ) | BAR ftsFieldGroupTest -> ^( FIELD_OPTIONAL ftsFieldGroupTest ) | MINUS ftsFieldGroupTest -> ^( FIELD_EXCLUDE ftsFieldGroupTest ) ); + public final FTSParser.ftsFieldGroupPrefixed_return ftsFieldGroupPrefixed() throws RecognitionException { + FTSParser.ftsFieldGroupPrefixed_return retval = new FTSParser.ftsFieldGroupPrefixed_return(); retval.start = input.LT(1); Object root_0 = null; - Token MINUS51=null; - FTSParser.ftsFieldGroupTest_return ftsFieldGroupTest52 = null; + Token PLUS60=null; + Token BAR62=null; + Token MINUS64=null; + FTSParser.not_return not57 = null; - FTSParser.ftsFieldGroupTest_return ftsFieldGroupTest53 = null; + FTSParser.ftsFieldGroupTest_return ftsFieldGroupTest58 = null; + + FTSParser.ftsFieldGroupTest_return ftsFieldGroupTest59 = null; + + FTSParser.ftsFieldGroupTest_return ftsFieldGroupTest61 = null; + + FTSParser.ftsFieldGroupTest_return ftsFieldGroupTest63 = null; + + FTSParser.ftsFieldGroupTest_return ftsFieldGroupTest65 = null; - Object MINUS51_tree=null; + Object PLUS60_tree=null; + Object BAR62_tree=null; + Object MINUS64_tree=null; + RewriteRuleTokenStream stream_PLUS=new RewriteRuleTokenStream(adaptor,"token PLUS"); RewriteRuleTokenStream stream_MINUS=new RewriteRuleTokenStream(adaptor,"token MINUS"); + RewriteRuleTokenStream stream_BAR=new RewriteRuleTokenStream(adaptor,"token BAR"); + RewriteRuleSubtreeStream stream_not=new RewriteRuleSubtreeStream(adaptor,"rule not"); RewriteRuleSubtreeStream stream_ftsFieldGroupTest=new RewriteRuleSubtreeStream(adaptor,"rule ftsFieldGroupTest"); try { - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:221:19: ( MINUS ftsFieldGroupTest -> FIELD_NEGATION ftsFieldGroupTest | ftsFieldGroupTest -> ftsFieldGroupTest ) - int alt15=2; - int LA15_0 = input.LA(1); - - if ( (LA15_0==MINUS) ) { - alt15=1; - } - else if ( (LA15_0==LPAREN||(LA15_0>=PLUS && LA15_0<=TILDA)||(LA15_0>=ID && LA15_0<=FTSWORD)) ) { - alt15=2; - } - else { - NoViableAltException nvae = - new NoViableAltException("", 15, 0, input); - - throw nvae; - } + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:242:1: ( ( not )=> not ftsFieldGroupTest -> ^( FIELD_NEGATION ftsFieldGroupTest ) | ftsFieldGroupTest -> ^( FIELD_DEFAULT ftsFieldGroupTest ) | PLUS ftsFieldGroupTest -> ^( FIELD_MANDATORY ftsFieldGroupTest ) | BAR ftsFieldGroupTest -> ^( FIELD_OPTIONAL ftsFieldGroupTest ) | MINUS ftsFieldGroupTest -> ^( FIELD_EXCLUDE ftsFieldGroupTest ) ) + int alt15=5; + alt15 = dfa15.predict(input); switch (alt15) { case 1 : - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:221:21: MINUS ftsFieldGroupTest + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:242:3: ( not )=> not ftsFieldGroupTest { - MINUS51=(Token)match(input,MINUS,FOLLOW_MINUS_in_ftsFieldGroupNot733); - stream_MINUS.add(MINUS51); - - pushFollow(FOLLOW_ftsFieldGroupTest_in_ftsFieldGroupNot735); - ftsFieldGroupTest52=ftsFieldGroupTest(); + pushFollow(FOLLOW_not_in_ftsFieldGroupPrefixed934); + not57=not(); state._fsp--; + if (state.failed) return retval; + if ( state.backtracking==0 ) stream_not.add(not57.getTree()); + pushFollow(FOLLOW_ftsFieldGroupTest_in_ftsFieldGroupPrefixed936); + ftsFieldGroupTest58=ftsFieldGroupTest(); - stream_ftsFieldGroupTest.add(ftsFieldGroupTest52.getTree()); + state._fsp--; + if (state.failed) return retval; + if ( state.backtracking==0 ) stream_ftsFieldGroupTest.add(ftsFieldGroupTest58.getTree()); // AST REWRITE @@ -2190,29 +2288,37 @@ public class FTSParser extends Parser { // token list labels: // rule list labels: // wildcard labels: + if ( state.backtracking==0 ) { retval.tree = root_0; RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); root_0 = (Object)adaptor.nil(); - // 222:4: -> FIELD_NEGATION ftsFieldGroupTest + // 243:3: -> ^( FIELD_NEGATION ftsFieldGroupTest ) { - adaptor.addChild(root_0, (Object)adaptor.create(FIELD_NEGATION, "FIELD_NEGATION")); - adaptor.addChild(root_0, stream_ftsFieldGroupTest.nextTree()); + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:243:6: ^( FIELD_NEGATION ftsFieldGroupTest ) + { + Object root_1 = (Object)adaptor.nil(); + root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FIELD_NEGATION, "FIELD_NEGATION"), root_1); + + adaptor.addChild(root_1, stream_ftsFieldGroupTest.nextTree()); + + adaptor.addChild(root_0, root_1); + } } - retval.tree = root_0; + retval.tree = root_0;} } break; case 2 : - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:223:5: ftsFieldGroupTest + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:244:7: ftsFieldGroupTest { - pushFollow(FOLLOW_ftsFieldGroupTest_in_ftsFieldGroupNot750); - ftsFieldGroupTest53=ftsFieldGroupTest(); + pushFollow(FOLLOW_ftsFieldGroupTest_in_ftsFieldGroupPrefixed954); + ftsFieldGroupTest59=ftsFieldGroupTest(); state._fsp--; - - stream_ftsFieldGroupTest.add(ftsFieldGroupTest53.getTree()); + if (state.failed) return retval; + if ( state.backtracking==0 ) stream_ftsFieldGroupTest.add(ftsFieldGroupTest59.getTree()); // AST REWRITE @@ -2222,26 +2328,166 @@ public class FTSParser extends Parser { // token list labels: // rule list labels: // wildcard labels: + if ( state.backtracking==0 ) { retval.tree = root_0; RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); root_0 = (Object)adaptor.nil(); - // 224:4: -> ftsFieldGroupTest + // 245:3: -> ^( FIELD_DEFAULT ftsFieldGroupTest ) { - adaptor.addChild(root_0, stream_ftsFieldGroupTest.nextTree()); + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:245:6: ^( FIELD_DEFAULT ftsFieldGroupTest ) + { + Object root_1 = (Object)adaptor.nil(); + root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FIELD_DEFAULT, "FIELD_DEFAULT"), root_1); + + adaptor.addChild(root_1, stream_ftsFieldGroupTest.nextTree()); + + adaptor.addChild(root_0, root_1); + } } + retval.tree = root_0;} + } + break; + case 3 : + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:246:9: PLUS ftsFieldGroupTest + { + PLUS60=(Token)match(input,PLUS,FOLLOW_PLUS_in_ftsFieldGroupPrefixed974); if (state.failed) return retval; + if ( state.backtracking==0 ) stream_PLUS.add(PLUS60); + + pushFollow(FOLLOW_ftsFieldGroupTest_in_ftsFieldGroupPrefixed976); + ftsFieldGroupTest61=ftsFieldGroupTest(); + + state._fsp--; + if (state.failed) return retval; + if ( state.backtracking==0 ) stream_ftsFieldGroupTest.add(ftsFieldGroupTest61.getTree()); + + + // AST REWRITE + // elements: ftsFieldGroupTest + // token labels: + // rule labels: retval + // token list labels: + // rule list labels: + // wildcard labels: + if ( state.backtracking==0 ) { retval.tree = root_0; + RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); + + root_0 = (Object)adaptor.nil(); + // 247:17: -> ^( FIELD_MANDATORY ftsFieldGroupTest ) + { + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:247:20: ^( FIELD_MANDATORY ftsFieldGroupTest ) + { + Object root_1 = (Object)adaptor.nil(); + root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FIELD_MANDATORY, "FIELD_MANDATORY"), root_1); + + adaptor.addChild(root_1, stream_ftsFieldGroupTest.nextTree()); + + adaptor.addChild(root_0, root_1); + } + + } + + retval.tree = root_0;} + } + break; + case 4 : + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:248:9: BAR ftsFieldGroupTest + { + BAR62=(Token)match(input,BAR,FOLLOW_BAR_in_ftsFieldGroupPrefixed1010); if (state.failed) return retval; + if ( state.backtracking==0 ) stream_BAR.add(BAR62); + + pushFollow(FOLLOW_ftsFieldGroupTest_in_ftsFieldGroupPrefixed1012); + ftsFieldGroupTest63=ftsFieldGroupTest(); + + state._fsp--; + if (state.failed) return retval; + if ( state.backtracking==0 ) stream_ftsFieldGroupTest.add(ftsFieldGroupTest63.getTree()); + + + // AST REWRITE + // elements: ftsFieldGroupTest + // token labels: + // rule labels: retval + // token list labels: + // rule list labels: + // wildcard labels: + if ( state.backtracking==0 ) { + retval.tree = root_0; + RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); + + root_0 = (Object)adaptor.nil(); + // 249:17: -> ^( FIELD_OPTIONAL ftsFieldGroupTest ) + { + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:249:20: ^( FIELD_OPTIONAL ftsFieldGroupTest ) + { + Object root_1 = (Object)adaptor.nil(); + root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FIELD_OPTIONAL, "FIELD_OPTIONAL"), root_1); + + adaptor.addChild(root_1, stream_ftsFieldGroupTest.nextTree()); + + adaptor.addChild(root_0, root_1); + } + + } + + retval.tree = root_0;} + } + break; + case 5 : + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:250:9: MINUS ftsFieldGroupTest + { + MINUS64=(Token)match(input,MINUS,FOLLOW_MINUS_in_ftsFieldGroupPrefixed1046); if (state.failed) return retval; + if ( state.backtracking==0 ) stream_MINUS.add(MINUS64); + + pushFollow(FOLLOW_ftsFieldGroupTest_in_ftsFieldGroupPrefixed1048); + ftsFieldGroupTest65=ftsFieldGroupTest(); + + state._fsp--; + if (state.failed) return retval; + if ( state.backtracking==0 ) stream_ftsFieldGroupTest.add(ftsFieldGroupTest65.getTree()); + + + // AST REWRITE + // elements: ftsFieldGroupTest + // token labels: + // rule labels: retval + // token list labels: + // rule list labels: + // wildcard labels: + if ( state.backtracking==0 ) { + retval.tree = root_0; + RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); + + root_0 = (Object)adaptor.nil(); + // 251:17: -> ^( FIELD_EXCLUDE ftsFieldGroupTest ) + { + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:251:20: ^( FIELD_EXCLUDE ftsFieldGroupTest ) + { + Object root_1 = (Object)adaptor.nil(); + root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FIELD_EXCLUDE, "FIELD_EXCLUDE"), root_1); + + adaptor.addChild(root_1, stream_ftsFieldGroupTest.nextTree()); + + adaptor.addChild(root_0, root_1); + } + + } + + retval.tree = root_0;} } break; } retval.stop = input.LT(-1); + if ( state.backtracking==0 ) { + retval.tree = (Object)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); - + } } catch(RecognitionException e) @@ -2252,7 +2498,7 @@ public class FTSParser extends Parser { } return retval; } - // $ANTLR end "ftsFieldGroupNot" + // $ANTLR end "ftsFieldGroupPrefixed" public static class ftsFieldGroupTest_return extends ParserRuleReturnScope { Object tree; @@ -2260,32 +2506,32 @@ public class FTSParser extends Parser { }; // $ANTLR start "ftsFieldGroupTest" - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:228:1: ftsFieldGroupTest : ( ftsFieldGroupTerm -> ^( FG_TERM ftsFieldGroupTerm ) | ftsFieldGroupExactTerm -> ^( FG_EXACT_TERM ftsFieldGroupExactTerm ) | ftsFieldGroupPhrase -> ^( FG_PHRASE ftsFieldGroupPhrase ) | ftsFieldGroupSynonym -> ^( FG_SYNONYM ftsFieldGroupSynonym ) | ftsFieldGroupProximity -> ^( FG_PROXIMITY ftsFieldGroupProximity ) | ftsFieldGroupRange -> ^( FG_RANGE ftsFieldGroupRange ) | LPAREN ftsFieldGroupImplicitConjunctionOrDisjunction RPAREN -> ftsFieldGroupImplicitConjunctionOrDisjunction ); + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:255:1: ftsFieldGroupTest : ( ftsFieldGroupTerm -> ^( FG_TERM ftsFieldGroupTerm ) | ftsFieldGroupExactTerm -> ^( FG_EXACT_TERM ftsFieldGroupExactTerm ) | ftsFieldGroupPhrase -> ^( FG_PHRASE ftsFieldGroupPhrase ) | ftsFieldGroupSynonym -> ^( FG_SYNONYM ftsFieldGroupSynonym ) | ftsFieldGroupProximity -> ^( FG_PROXIMITY ftsFieldGroupProximity ) | ftsFieldGroupRange -> ^( FG_RANGE ftsFieldGroupRange ) | LPAREN ftsFieldGroupImplicitConjunctionOrDisjunction RPAREN -> ftsFieldGroupImplicitConjunctionOrDisjunction ); public final FTSParser.ftsFieldGroupTest_return ftsFieldGroupTest() throws RecognitionException { FTSParser.ftsFieldGroupTest_return retval = new FTSParser.ftsFieldGroupTest_return(); retval.start = input.LT(1); Object root_0 = null; - Token LPAREN60=null; - Token RPAREN62=null; - FTSParser.ftsFieldGroupTerm_return ftsFieldGroupTerm54 = null; + Token LPAREN72=null; + Token RPAREN74=null; + FTSParser.ftsFieldGroupTerm_return ftsFieldGroupTerm66 = null; - FTSParser.ftsFieldGroupExactTerm_return ftsFieldGroupExactTerm55 = null; + FTSParser.ftsFieldGroupExactTerm_return ftsFieldGroupExactTerm67 = null; - FTSParser.ftsFieldGroupPhrase_return ftsFieldGroupPhrase56 = null; + FTSParser.ftsFieldGroupPhrase_return ftsFieldGroupPhrase68 = null; - FTSParser.ftsFieldGroupSynonym_return ftsFieldGroupSynonym57 = null; + FTSParser.ftsFieldGroupSynonym_return ftsFieldGroupSynonym69 = null; - FTSParser.ftsFieldGroupProximity_return ftsFieldGroupProximity58 = null; + FTSParser.ftsFieldGroupProximity_return ftsFieldGroupProximity70 = null; - FTSParser.ftsFieldGroupRange_return ftsFieldGroupRange59 = null; + FTSParser.ftsFieldGroupRange_return ftsFieldGroupRange71 = null; - FTSParser.ftsFieldGroupImplicitConjunctionOrDisjunction_return ftsFieldGroupImplicitConjunctionOrDisjunction61 = null; + FTSParser.ftsFieldGroupImplicitConjunctionOrDisjunction_return ftsFieldGroupImplicitConjunctionOrDisjunction73 = null; - Object LPAREN60_tree=null; - Object RPAREN62_tree=null; + Object LPAREN72_tree=null; + Object RPAREN74_tree=null; RewriteRuleTokenStream stream_RPAREN=new RewriteRuleTokenStream(adaptor,"token RPAREN"); RewriteRuleTokenStream stream_LPAREN=new RewriteRuleTokenStream(adaptor,"token LPAREN"); RewriteRuleSubtreeStream stream_ftsFieldGroupRange=new RewriteRuleSubtreeStream(adaptor,"rule ftsFieldGroupRange"); @@ -2296,83 +2542,19 @@ public class FTSParser extends Parser { RewriteRuleSubtreeStream stream_ftsFieldGroupExactTerm=new RewriteRuleSubtreeStream(adaptor,"rule ftsFieldGroupExactTerm"); RewriteRuleSubtreeStream stream_ftsFieldGroupProximity=new RewriteRuleSubtreeStream(adaptor,"rule ftsFieldGroupProximity"); try { - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:229:2: ( ftsFieldGroupTerm -> ^( FG_TERM ftsFieldGroupTerm ) | ftsFieldGroupExactTerm -> ^( FG_EXACT_TERM ftsFieldGroupExactTerm ) | ftsFieldGroupPhrase -> ^( FG_PHRASE ftsFieldGroupPhrase ) | ftsFieldGroupSynonym -> ^( FG_SYNONYM ftsFieldGroupSynonym ) | ftsFieldGroupProximity -> ^( FG_PROXIMITY ftsFieldGroupProximity ) | ftsFieldGroupRange -> ^( FG_RANGE ftsFieldGroupRange ) | LPAREN ftsFieldGroupImplicitConjunctionOrDisjunction RPAREN -> ftsFieldGroupImplicitConjunctionOrDisjunction ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:256:2: ( ftsFieldGroupTerm -> ^( FG_TERM ftsFieldGroupTerm ) | ftsFieldGroupExactTerm -> ^( FG_EXACT_TERM ftsFieldGroupExactTerm ) | ftsFieldGroupPhrase -> ^( FG_PHRASE ftsFieldGroupPhrase ) | ftsFieldGroupSynonym -> ^( FG_SYNONYM ftsFieldGroupSynonym ) | ftsFieldGroupProximity -> ^( FG_PROXIMITY ftsFieldGroupProximity ) | ftsFieldGroupRange -> ^( FG_RANGE ftsFieldGroupRange ) | LPAREN ftsFieldGroupImplicitConjunctionOrDisjunction RPAREN -> ftsFieldGroupImplicitConjunctionOrDisjunction ) int alt16=7; - switch ( input.LA(1) ) { - case ID: - case FTSWORD: - { - switch ( input.LA(2) ) { - case DOTDOT: - { - alt16=6; - } - break; - case STAR: - { - alt16=5; - } - break; - case OR: - case AND: - case MINUS: - case LPAREN: - case RPAREN: - case PLUS: - case FTSPHRASE: - case TILDA: - case ID: - case FTSWORD: - { - alt16=1; - } - break; - default: - NoViableAltException nvae = - new NoViableAltException("", 16, 1, input); - - throw nvae; - } - - } - break; - case PLUS: - { - alt16=2; - } - break; - case FTSPHRASE: - { - alt16=3; - } - break; - case TILDA: - { - alt16=4; - } - break; - case LPAREN: - { - alt16=7; - } - break; - default: - NoViableAltException nvae = - new NoViableAltException("", 16, 0, input); - - throw nvae; - } - + alt16 = dfa16.predict(input); switch (alt16) { case 1 : - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:229:4: ftsFieldGroupTerm + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:256:4: ftsFieldGroupTerm { - pushFollow(FOLLOW_ftsFieldGroupTerm_in_ftsFieldGroupTest769); - ftsFieldGroupTerm54=ftsFieldGroupTerm(); + pushFollow(FOLLOW_ftsFieldGroupTerm_in_ftsFieldGroupTest1087); + ftsFieldGroupTerm66=ftsFieldGroupTerm(); state._fsp--; - - stream_ftsFieldGroupTerm.add(ftsFieldGroupTerm54.getTree()); + if (state.failed) return retval; + if ( state.backtracking==0 ) stream_ftsFieldGroupTerm.add(ftsFieldGroupTerm66.getTree()); // AST REWRITE @@ -2382,13 +2564,14 @@ public class FTSParser extends Parser { // token list labels: // rule list labels: // wildcard labels: + if ( state.backtracking==0 ) { retval.tree = root_0; RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); root_0 = (Object)adaptor.nil(); - // 230:3: -> ^( FG_TERM ftsFieldGroupTerm ) + // 257:3: -> ^( FG_TERM ftsFieldGroupTerm ) { - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:230:6: ^( FG_TERM ftsFieldGroupTerm ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:257:6: ^( FG_TERM ftsFieldGroupTerm ) { Object root_1 = (Object)adaptor.nil(); root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FG_TERM, "FG_TERM"), root_1); @@ -2400,18 +2583,18 @@ public class FTSParser extends Parser { } - retval.tree = root_0; + retval.tree = root_0;} } break; case 2 : - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:231:4: ftsFieldGroupExactTerm + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:258:4: ftsFieldGroupExactTerm { - pushFollow(FOLLOW_ftsFieldGroupExactTerm_in_ftsFieldGroupTest784); - ftsFieldGroupExactTerm55=ftsFieldGroupExactTerm(); + pushFollow(FOLLOW_ftsFieldGroupExactTerm_in_ftsFieldGroupTest1102); + ftsFieldGroupExactTerm67=ftsFieldGroupExactTerm(); state._fsp--; - - stream_ftsFieldGroupExactTerm.add(ftsFieldGroupExactTerm55.getTree()); + if (state.failed) return retval; + if ( state.backtracking==0 ) stream_ftsFieldGroupExactTerm.add(ftsFieldGroupExactTerm67.getTree()); // AST REWRITE @@ -2421,13 +2604,14 @@ public class FTSParser extends Parser { // token list labels: // rule list labels: // wildcard labels: + if ( state.backtracking==0 ) { retval.tree = root_0; RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); root_0 = (Object)adaptor.nil(); - // 232:3: -> ^( FG_EXACT_TERM ftsFieldGroupExactTerm ) + // 259:3: -> ^( FG_EXACT_TERM ftsFieldGroupExactTerm ) { - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:232:6: ^( FG_EXACT_TERM ftsFieldGroupExactTerm ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:259:6: ^( FG_EXACT_TERM ftsFieldGroupExactTerm ) { Object root_1 = (Object)adaptor.nil(); root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FG_EXACT_TERM, "FG_EXACT_TERM"), root_1); @@ -2439,18 +2623,18 @@ public class FTSParser extends Parser { } - retval.tree = root_0; + retval.tree = root_0;} } break; case 3 : - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:233:4: ftsFieldGroupPhrase + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:260:4: ftsFieldGroupPhrase { - pushFollow(FOLLOW_ftsFieldGroupPhrase_in_ftsFieldGroupTest800); - ftsFieldGroupPhrase56=ftsFieldGroupPhrase(); + pushFollow(FOLLOW_ftsFieldGroupPhrase_in_ftsFieldGroupTest1118); + ftsFieldGroupPhrase68=ftsFieldGroupPhrase(); state._fsp--; - - stream_ftsFieldGroupPhrase.add(ftsFieldGroupPhrase56.getTree()); + if (state.failed) return retval; + if ( state.backtracking==0 ) stream_ftsFieldGroupPhrase.add(ftsFieldGroupPhrase68.getTree()); // AST REWRITE @@ -2460,13 +2644,14 @@ public class FTSParser extends Parser { // token list labels: // rule list labels: // wildcard labels: + if ( state.backtracking==0 ) { retval.tree = root_0; RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); root_0 = (Object)adaptor.nil(); - // 234:3: -> ^( FG_PHRASE ftsFieldGroupPhrase ) + // 261:3: -> ^( FG_PHRASE ftsFieldGroupPhrase ) { - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:234:6: ^( FG_PHRASE ftsFieldGroupPhrase ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:261:6: ^( FG_PHRASE ftsFieldGroupPhrase ) { Object root_1 = (Object)adaptor.nil(); root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FG_PHRASE, "FG_PHRASE"), root_1); @@ -2478,18 +2663,18 @@ public class FTSParser extends Parser { } - retval.tree = root_0; + retval.tree = root_0;} } break; case 4 : - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:235:4: ftsFieldGroupSynonym + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:262:4: ftsFieldGroupSynonym { - pushFollow(FOLLOW_ftsFieldGroupSynonym_in_ftsFieldGroupTest815); - ftsFieldGroupSynonym57=ftsFieldGroupSynonym(); + pushFollow(FOLLOW_ftsFieldGroupSynonym_in_ftsFieldGroupTest1133); + ftsFieldGroupSynonym69=ftsFieldGroupSynonym(); state._fsp--; - - stream_ftsFieldGroupSynonym.add(ftsFieldGroupSynonym57.getTree()); + if (state.failed) return retval; + if ( state.backtracking==0 ) stream_ftsFieldGroupSynonym.add(ftsFieldGroupSynonym69.getTree()); // AST REWRITE @@ -2499,13 +2684,14 @@ public class FTSParser extends Parser { // token list labels: // rule list labels: // wildcard labels: + if ( state.backtracking==0 ) { retval.tree = root_0; RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); root_0 = (Object)adaptor.nil(); - // 236:3: -> ^( FG_SYNONYM ftsFieldGroupSynonym ) + // 263:3: -> ^( FG_SYNONYM ftsFieldGroupSynonym ) { - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:236:6: ^( FG_SYNONYM ftsFieldGroupSynonym ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:263:6: ^( FG_SYNONYM ftsFieldGroupSynonym ) { Object root_1 = (Object)adaptor.nil(); root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FG_SYNONYM, "FG_SYNONYM"), root_1); @@ -2517,18 +2703,18 @@ public class FTSParser extends Parser { } - retval.tree = root_0; + retval.tree = root_0;} } break; case 5 : - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:237:6: ftsFieldGroupProximity + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:264:6: ftsFieldGroupProximity { - pushFollow(FOLLOW_ftsFieldGroupProximity_in_ftsFieldGroupTest832); - ftsFieldGroupProximity58=ftsFieldGroupProximity(); + pushFollow(FOLLOW_ftsFieldGroupProximity_in_ftsFieldGroupTest1150); + ftsFieldGroupProximity70=ftsFieldGroupProximity(); state._fsp--; - - stream_ftsFieldGroupProximity.add(ftsFieldGroupProximity58.getTree()); + if (state.failed) return retval; + if ( state.backtracking==0 ) stream_ftsFieldGroupProximity.add(ftsFieldGroupProximity70.getTree()); // AST REWRITE @@ -2538,13 +2724,14 @@ public class FTSParser extends Parser { // token list labels: // rule list labels: // wildcard labels: + if ( state.backtracking==0 ) { retval.tree = root_0; RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); root_0 = (Object)adaptor.nil(); - // 238:3: -> ^( FG_PROXIMITY ftsFieldGroupProximity ) + // 265:3: -> ^( FG_PROXIMITY ftsFieldGroupProximity ) { - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:238:6: ^( FG_PROXIMITY ftsFieldGroupProximity ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:265:6: ^( FG_PROXIMITY ftsFieldGroupProximity ) { Object root_1 = (Object)adaptor.nil(); root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FG_PROXIMITY, "FG_PROXIMITY"), root_1); @@ -2556,18 +2743,18 @@ public class FTSParser extends Parser { } - retval.tree = root_0; + retval.tree = root_0;} } break; case 6 : - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:239:8: ftsFieldGroupRange + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:266:8: ftsFieldGroupRange { - pushFollow(FOLLOW_ftsFieldGroupRange_in_ftsFieldGroupTest853); - ftsFieldGroupRange59=ftsFieldGroupRange(); + pushFollow(FOLLOW_ftsFieldGroupRange_in_ftsFieldGroupTest1171); + ftsFieldGroupRange71=ftsFieldGroupRange(); state._fsp--; - - stream_ftsFieldGroupRange.add(ftsFieldGroupRange59.getTree()); + if (state.failed) return retval; + if ( state.backtracking==0 ) stream_ftsFieldGroupRange.add(ftsFieldGroupRange71.getTree()); // AST REWRITE @@ -2577,13 +2764,14 @@ public class FTSParser extends Parser { // token list labels: // rule list labels: // wildcard labels: + if ( state.backtracking==0 ) { retval.tree = root_0; RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); root_0 = (Object)adaptor.nil(); - // 240:9: -> ^( FG_RANGE ftsFieldGroupRange ) + // 267:9: -> ^( FG_RANGE ftsFieldGroupRange ) { - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:240:12: ^( FG_RANGE ftsFieldGroupRange ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:267:12: ^( FG_RANGE ftsFieldGroupRange ) { Object root_1 = (Object)adaptor.nil(); root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FG_RANGE, "FG_RANGE"), root_1); @@ -2595,23 +2783,23 @@ public class FTSParser extends Parser { } - retval.tree = root_0; + retval.tree = root_0;} } break; case 7 : - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:241:4: LPAREN ftsFieldGroupImplicitConjunctionOrDisjunction RPAREN + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:268:4: LPAREN ftsFieldGroupImplicitConjunctionOrDisjunction RPAREN { - LPAREN60=(Token)match(input,LPAREN,FOLLOW_LPAREN_in_ftsFieldGroupTest874); - stream_LPAREN.add(LPAREN60); + LPAREN72=(Token)match(input,LPAREN,FOLLOW_LPAREN_in_ftsFieldGroupTest1192); if (state.failed) return retval; + if ( state.backtracking==0 ) stream_LPAREN.add(LPAREN72); - pushFollow(FOLLOW_ftsFieldGroupImplicitConjunctionOrDisjunction_in_ftsFieldGroupTest876); - ftsFieldGroupImplicitConjunctionOrDisjunction61=ftsFieldGroupImplicitConjunctionOrDisjunction(); + pushFollow(FOLLOW_ftsFieldGroupImplicitConjunctionOrDisjunction_in_ftsFieldGroupTest1194); + ftsFieldGroupImplicitConjunctionOrDisjunction73=ftsFieldGroupImplicitConjunctionOrDisjunction(); state._fsp--; - - stream_ftsFieldGroupImplicitConjunctionOrDisjunction.add(ftsFieldGroupImplicitConjunctionOrDisjunction61.getTree()); - RPAREN62=(Token)match(input,RPAREN,FOLLOW_RPAREN_in_ftsFieldGroupTest878); - stream_RPAREN.add(RPAREN62); + if (state.failed) return retval; + if ( state.backtracking==0 ) stream_ftsFieldGroupImplicitConjunctionOrDisjunction.add(ftsFieldGroupImplicitConjunctionOrDisjunction73.getTree()); + RPAREN74=(Token)match(input,RPAREN,FOLLOW_RPAREN_in_ftsFieldGroupTest1196); if (state.failed) return retval; + if ( state.backtracking==0 ) stream_RPAREN.add(RPAREN74); @@ -2622,26 +2810,29 @@ public class FTSParser extends Parser { // token list labels: // rule list labels: // wildcard labels: + if ( state.backtracking==0 ) { retval.tree = root_0; RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); root_0 = (Object)adaptor.nil(); - // 242:3: -> ftsFieldGroupImplicitConjunctionOrDisjunction + // 269:3: -> ftsFieldGroupImplicitConjunctionOrDisjunction { adaptor.addChild(root_0, stream_ftsFieldGroupImplicitConjunctionOrDisjunction.nextTree()); } - retval.tree = root_0; + retval.tree = root_0;} } break; } retval.stop = input.LT(-1); + if ( state.backtracking==0 ) { + retval.tree = (Object)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); - + } } catch(RecognitionException e) @@ -2660,37 +2851,39 @@ public class FTSParser extends Parser { }; // $ANTLR start "ftsFieldGroupTerm" - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:245:1: ftsFieldGroupTerm : ftsWord ; + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:272:1: ftsFieldGroupTerm : ftsWord ; public final FTSParser.ftsFieldGroupTerm_return ftsFieldGroupTerm() throws RecognitionException { FTSParser.ftsFieldGroupTerm_return retval = new FTSParser.ftsFieldGroupTerm_return(); retval.start = input.LT(1); Object root_0 = null; - FTSParser.ftsWord_return ftsWord63 = null; + FTSParser.ftsWord_return ftsWord75 = null; try { - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:246:2: ( ftsWord ) - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:246:4: ftsWord + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:273:2: ( ftsWord ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:273:4: ftsWord { root_0 = (Object)adaptor.nil(); - pushFollow(FOLLOW_ftsWord_in_ftsFieldGroupTerm896); - ftsWord63=ftsWord(); + pushFollow(FOLLOW_ftsWord_in_ftsFieldGroupTerm1214); + ftsWord75=ftsWord(); state._fsp--; - - adaptor.addChild(root_0, ftsWord63.getTree()); + if (state.failed) return retval; + if ( state.backtracking==0 ) adaptor.addChild(root_0, ftsWord75.getTree()); } retval.stop = input.LT(-1); + if ( state.backtracking==0 ) { + retval.tree = (Object)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); - + } } catch(RecognitionException e) @@ -2709,33 +2902,33 @@ public class FTSParser extends Parser { }; // $ANTLR start "ftsFieldGroupExactTerm" - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:249:1: ftsFieldGroupExactTerm : PLUS ftsFieldGroupTerm -> ftsFieldGroupTerm ; + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:276:1: ftsFieldGroupExactTerm : EQUALS ftsFieldGroupTerm -> ftsFieldGroupTerm ; public final FTSParser.ftsFieldGroupExactTerm_return ftsFieldGroupExactTerm() throws RecognitionException { FTSParser.ftsFieldGroupExactTerm_return retval = new FTSParser.ftsFieldGroupExactTerm_return(); retval.start = input.LT(1); Object root_0 = null; - Token PLUS64=null; - FTSParser.ftsFieldGroupTerm_return ftsFieldGroupTerm65 = null; + Token EQUALS76=null; + FTSParser.ftsFieldGroupTerm_return ftsFieldGroupTerm77 = null; - Object PLUS64_tree=null; - RewriteRuleTokenStream stream_PLUS=new RewriteRuleTokenStream(adaptor,"token PLUS"); + Object EQUALS76_tree=null; + RewriteRuleTokenStream stream_EQUALS=new RewriteRuleTokenStream(adaptor,"token EQUALS"); RewriteRuleSubtreeStream stream_ftsFieldGroupTerm=new RewriteRuleSubtreeStream(adaptor,"rule ftsFieldGroupTerm"); try { - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:250:2: ( PLUS ftsFieldGroupTerm -> ftsFieldGroupTerm ) - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:250:4: PLUS ftsFieldGroupTerm + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:277:2: ( EQUALS ftsFieldGroupTerm -> ftsFieldGroupTerm ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:277:4: EQUALS ftsFieldGroupTerm { - PLUS64=(Token)match(input,PLUS,FOLLOW_PLUS_in_ftsFieldGroupExactTerm908); - stream_PLUS.add(PLUS64); + EQUALS76=(Token)match(input,EQUALS,FOLLOW_EQUALS_in_ftsFieldGroupExactTerm1226); if (state.failed) return retval; + if ( state.backtracking==0 ) stream_EQUALS.add(EQUALS76); - pushFollow(FOLLOW_ftsFieldGroupTerm_in_ftsFieldGroupExactTerm910); - ftsFieldGroupTerm65=ftsFieldGroupTerm(); + pushFollow(FOLLOW_ftsFieldGroupTerm_in_ftsFieldGroupExactTerm1228); + ftsFieldGroupTerm77=ftsFieldGroupTerm(); state._fsp--; - - stream_ftsFieldGroupTerm.add(ftsFieldGroupTerm65.getTree()); + if (state.failed) return retval; + if ( state.backtracking==0 ) stream_ftsFieldGroupTerm.add(ftsFieldGroupTerm77.getTree()); // AST REWRITE @@ -2745,24 +2938,27 @@ public class FTSParser extends Parser { // token list labels: // rule list labels: // wildcard labels: + if ( state.backtracking==0 ) { retval.tree = root_0; RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); root_0 = (Object)adaptor.nil(); - // 251:3: -> ftsFieldGroupTerm + // 278:3: -> ftsFieldGroupTerm { adaptor.addChild(root_0, stream_ftsFieldGroupTerm.nextTree()); } - retval.tree = root_0; + retval.tree = root_0;} } retval.stop = input.LT(-1); + if ( state.backtracking==0 ) { + retval.tree = (Object)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); - + } } catch(RecognitionException e) @@ -2781,35 +2977,38 @@ public class FTSParser extends Parser { }; // $ANTLR start "ftsFieldGroupPhrase" - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:254:1: ftsFieldGroupPhrase : FTSPHRASE ; + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:281:1: ftsFieldGroupPhrase : FTSPHRASE ; public final FTSParser.ftsFieldGroupPhrase_return ftsFieldGroupPhrase() throws RecognitionException { FTSParser.ftsFieldGroupPhrase_return retval = new FTSParser.ftsFieldGroupPhrase_return(); retval.start = input.LT(1); Object root_0 = null; - Token FTSPHRASE66=null; + Token FTSPHRASE78=null; - Object FTSPHRASE66_tree=null; + Object FTSPHRASE78_tree=null; try { - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:255:2: ( FTSPHRASE ) - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:255:6: FTSPHRASE + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:282:2: ( FTSPHRASE ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:282:6: FTSPHRASE { root_0 = (Object)adaptor.nil(); - FTSPHRASE66=(Token)match(input,FTSPHRASE,FOLLOW_FTSPHRASE_in_ftsFieldGroupPhrase930); - FTSPHRASE66_tree = (Object)adaptor.create(FTSPHRASE66); - adaptor.addChild(root_0, FTSPHRASE66_tree); - + FTSPHRASE78=(Token)match(input,FTSPHRASE,FOLLOW_FTSPHRASE_in_ftsFieldGroupPhrase1248); if (state.failed) return retval; + if ( state.backtracking==0 ) { + FTSPHRASE78_tree = (Object)adaptor.create(FTSPHRASE78); + adaptor.addChild(root_0, FTSPHRASE78_tree); + } } retval.stop = input.LT(-1); + if ( state.backtracking==0 ) { + retval.tree = (Object)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); - + } } catch(RecognitionException e) @@ -2828,33 +3027,33 @@ public class FTSParser extends Parser { }; // $ANTLR start "ftsFieldGroupSynonym" - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:258:1: ftsFieldGroupSynonym : TILDA ftsFieldGroupTerm -> ftsFieldGroupTerm ; + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:285:1: ftsFieldGroupSynonym : TILDA ftsFieldGroupTerm -> ftsFieldGroupTerm ; public final FTSParser.ftsFieldGroupSynonym_return ftsFieldGroupSynonym() throws RecognitionException { FTSParser.ftsFieldGroupSynonym_return retval = new FTSParser.ftsFieldGroupSynonym_return(); retval.start = input.LT(1); Object root_0 = null; - Token TILDA67=null; - FTSParser.ftsFieldGroupTerm_return ftsFieldGroupTerm68 = null; + Token TILDA79=null; + FTSParser.ftsFieldGroupTerm_return ftsFieldGroupTerm80 = null; - Object TILDA67_tree=null; + Object TILDA79_tree=null; RewriteRuleTokenStream stream_TILDA=new RewriteRuleTokenStream(adaptor,"token TILDA"); RewriteRuleSubtreeStream stream_ftsFieldGroupTerm=new RewriteRuleSubtreeStream(adaptor,"rule ftsFieldGroupTerm"); try { - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:259:2: ( TILDA ftsFieldGroupTerm -> ftsFieldGroupTerm ) - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:259:4: TILDA ftsFieldGroupTerm + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:286:2: ( TILDA ftsFieldGroupTerm -> ftsFieldGroupTerm ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:286:4: TILDA ftsFieldGroupTerm { - TILDA67=(Token)match(input,TILDA,FOLLOW_TILDA_in_ftsFieldGroupSynonym942); - stream_TILDA.add(TILDA67); + TILDA79=(Token)match(input,TILDA,FOLLOW_TILDA_in_ftsFieldGroupSynonym1260); if (state.failed) return retval; + if ( state.backtracking==0 ) stream_TILDA.add(TILDA79); - pushFollow(FOLLOW_ftsFieldGroupTerm_in_ftsFieldGroupSynonym944); - ftsFieldGroupTerm68=ftsFieldGroupTerm(); + pushFollow(FOLLOW_ftsFieldGroupTerm_in_ftsFieldGroupSynonym1262); + ftsFieldGroupTerm80=ftsFieldGroupTerm(); state._fsp--; - - stream_ftsFieldGroupTerm.add(ftsFieldGroupTerm68.getTree()); + if (state.failed) return retval; + if ( state.backtracking==0 ) stream_ftsFieldGroupTerm.add(ftsFieldGroupTerm80.getTree()); // AST REWRITE @@ -2864,24 +3063,27 @@ public class FTSParser extends Parser { // token list labels: // rule list labels: // wildcard labels: + if ( state.backtracking==0 ) { retval.tree = root_0; RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); root_0 = (Object)adaptor.nil(); - // 260:3: -> ftsFieldGroupTerm + // 287:3: -> ftsFieldGroupTerm { adaptor.addChild(root_0, stream_ftsFieldGroupTerm.nextTree()); } - retval.tree = root_0; + retval.tree = root_0;} } retval.stop = input.LT(-1); + if ( state.backtracking==0 ) { + retval.tree = (Object)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); - + } } catch(RecognitionException e) @@ -2900,41 +3102,41 @@ public class FTSParser extends Parser { }; // $ANTLR start "ftsFieldGroupProximity" - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:263:1: ftsFieldGroupProximity : ftsFieldGroupTerm STAR ftsFieldGroupTerm -> ftsFieldGroupTerm ftsFieldGroupTerm ; + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:290:1: ftsFieldGroupProximity : ftsFieldGroupTerm STAR ftsFieldGroupTerm -> ftsFieldGroupTerm ftsFieldGroupTerm ; public final FTSParser.ftsFieldGroupProximity_return ftsFieldGroupProximity() throws RecognitionException { FTSParser.ftsFieldGroupProximity_return retval = new FTSParser.ftsFieldGroupProximity_return(); retval.start = input.LT(1); Object root_0 = null; - Token STAR70=null; - FTSParser.ftsFieldGroupTerm_return ftsFieldGroupTerm69 = null; + Token STAR82=null; + FTSParser.ftsFieldGroupTerm_return ftsFieldGroupTerm81 = null; - FTSParser.ftsFieldGroupTerm_return ftsFieldGroupTerm71 = null; + FTSParser.ftsFieldGroupTerm_return ftsFieldGroupTerm83 = null; - Object STAR70_tree=null; + Object STAR82_tree=null; RewriteRuleTokenStream stream_STAR=new RewriteRuleTokenStream(adaptor,"token STAR"); RewriteRuleSubtreeStream stream_ftsFieldGroupTerm=new RewriteRuleSubtreeStream(adaptor,"rule ftsFieldGroupTerm"); try { - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:264:2: ( ftsFieldGroupTerm STAR ftsFieldGroupTerm -> ftsFieldGroupTerm ftsFieldGroupTerm ) - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:264:4: ftsFieldGroupTerm STAR ftsFieldGroupTerm + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:291:2: ( ftsFieldGroupTerm STAR ftsFieldGroupTerm -> ftsFieldGroupTerm ftsFieldGroupTerm ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:291:4: ftsFieldGroupTerm STAR ftsFieldGroupTerm { - pushFollow(FOLLOW_ftsFieldGroupTerm_in_ftsFieldGroupProximity962); - ftsFieldGroupTerm69=ftsFieldGroupTerm(); + pushFollow(FOLLOW_ftsFieldGroupTerm_in_ftsFieldGroupProximity1280); + ftsFieldGroupTerm81=ftsFieldGroupTerm(); state._fsp--; + if (state.failed) return retval; + if ( state.backtracking==0 ) stream_ftsFieldGroupTerm.add(ftsFieldGroupTerm81.getTree()); + STAR82=(Token)match(input,STAR,FOLLOW_STAR_in_ftsFieldGroupProximity1282); if (state.failed) return retval; + if ( state.backtracking==0 ) stream_STAR.add(STAR82); - stream_ftsFieldGroupTerm.add(ftsFieldGroupTerm69.getTree()); - STAR70=(Token)match(input,STAR,FOLLOW_STAR_in_ftsFieldGroupProximity964); - stream_STAR.add(STAR70); - - pushFollow(FOLLOW_ftsFieldGroupTerm_in_ftsFieldGroupProximity966); - ftsFieldGroupTerm71=ftsFieldGroupTerm(); + pushFollow(FOLLOW_ftsFieldGroupTerm_in_ftsFieldGroupProximity1284); + ftsFieldGroupTerm83=ftsFieldGroupTerm(); state._fsp--; - - stream_ftsFieldGroupTerm.add(ftsFieldGroupTerm71.getTree()); + if (state.failed) return retval; + if ( state.backtracking==0 ) stream_ftsFieldGroupTerm.add(ftsFieldGroupTerm83.getTree()); // AST REWRITE @@ -2944,25 +3146,28 @@ public class FTSParser extends Parser { // token list labels: // rule list labels: // wildcard labels: + if ( state.backtracking==0 ) { retval.tree = root_0; RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); root_0 = (Object)adaptor.nil(); - // 265:3: -> ftsFieldGroupTerm ftsFieldGroupTerm + // 292:3: -> ftsFieldGroupTerm ftsFieldGroupTerm { adaptor.addChild(root_0, stream_ftsFieldGroupTerm.nextTree()); adaptor.addChild(root_0, stream_ftsFieldGroupTerm.nextTree()); } - retval.tree = root_0; + retval.tree = root_0;} } retval.stop = input.LT(-1); + if ( state.backtracking==0 ) { + retval.tree = (Object)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); - + } } catch(RecognitionException e) @@ -2981,69 +3186,163 @@ public class FTSParser extends Parser { }; // $ANTLR start "ftsFieldGroupRange" - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:268:1: ftsFieldGroupRange : ftsFieldGroupTerm DOTDOT ftsFieldGroupTerm -> ftsFieldGroupTerm ftsFieldGroupTerm ; + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:295:1: ftsFieldGroupRange : ( ftsRangeWord DOTDOT ftsRangeWord -> INCLUSIVE ftsRangeWord ftsRangeWord INCLUSIVE | range_left ftsRangeWord TO ftsRangeWord range_right -> range_left ftsRangeWord ftsRangeWord range_right ); public final FTSParser.ftsFieldGroupRange_return ftsFieldGroupRange() throws RecognitionException { FTSParser.ftsFieldGroupRange_return retval = new FTSParser.ftsFieldGroupRange_return(); retval.start = input.LT(1); Object root_0 = null; - Token DOTDOT73=null; - FTSParser.ftsFieldGroupTerm_return ftsFieldGroupTerm72 = null; + Token DOTDOT85=null; + Token TO89=null; + FTSParser.ftsRangeWord_return ftsRangeWord84 = null; - FTSParser.ftsFieldGroupTerm_return ftsFieldGroupTerm74 = null; + FTSParser.ftsRangeWord_return ftsRangeWord86 = null; + + FTSParser.range_left_return range_left87 = null; + + FTSParser.ftsRangeWord_return ftsRangeWord88 = null; + + FTSParser.ftsRangeWord_return ftsRangeWord90 = null; + + FTSParser.range_right_return range_right91 = null; - Object DOTDOT73_tree=null; + Object DOTDOT85_tree=null; + Object TO89_tree=null; RewriteRuleTokenStream stream_DOTDOT=new RewriteRuleTokenStream(adaptor,"token DOTDOT"); - RewriteRuleSubtreeStream stream_ftsFieldGroupTerm=new RewriteRuleSubtreeStream(adaptor,"rule ftsFieldGroupTerm"); + RewriteRuleTokenStream stream_TO=new RewriteRuleTokenStream(adaptor,"token TO"); + RewriteRuleSubtreeStream stream_range_left=new RewriteRuleSubtreeStream(adaptor,"rule range_left"); + RewriteRuleSubtreeStream stream_range_right=new RewriteRuleSubtreeStream(adaptor,"rule range_right"); + RewriteRuleSubtreeStream stream_ftsRangeWord=new RewriteRuleSubtreeStream(adaptor,"rule ftsRangeWord"); try { - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:268:19: ( ftsFieldGroupTerm DOTDOT ftsFieldGroupTerm -> ftsFieldGroupTerm ftsFieldGroupTerm ) - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:268:21: ftsFieldGroupTerm DOTDOT ftsFieldGroupTerm - { - pushFollow(FOLLOW_ftsFieldGroupTerm_in_ftsFieldGroupRange984); - ftsFieldGroupTerm72=ftsFieldGroupTerm(); + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:296:9: ( ftsRangeWord DOTDOT ftsRangeWord -> INCLUSIVE ftsRangeWord ftsRangeWord INCLUSIVE | range_left ftsRangeWord TO ftsRangeWord range_right -> range_left ftsRangeWord ftsRangeWord range_right ) + int alt17=2; + int LA17_0 = input.LA(1); - state._fsp--; + if ( (LA17_0==FTSPHRASE||(LA17_0>=ID && LA17_0<=FTSWORD)) ) { + alt17=1; + } + else if ( (LA17_0==LPAREN||LA17_0==LCURL) ) { + alt17=2; + } + else { + if (state.backtracking>0) {state.failed=true; return retval;} + NoViableAltException nvae = + new NoViableAltException("", 17, 0, input); - stream_ftsFieldGroupTerm.add(ftsFieldGroupTerm72.getTree()); - DOTDOT73=(Token)match(input,DOTDOT,FOLLOW_DOTDOT_in_ftsFieldGroupRange986); - stream_DOTDOT.add(DOTDOT73); + throw nvae; + } + switch (alt17) { + case 1 : + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:296:11: ftsRangeWord DOTDOT ftsRangeWord + { + pushFollow(FOLLOW_ftsRangeWord_in_ftsFieldGroupRange1311); + ftsRangeWord84=ftsRangeWord(); - pushFollow(FOLLOW_ftsFieldGroupTerm_in_ftsFieldGroupRange988); - ftsFieldGroupTerm74=ftsFieldGroupTerm(); + state._fsp--; + if (state.failed) return retval; + if ( state.backtracking==0 ) stream_ftsRangeWord.add(ftsRangeWord84.getTree()); + DOTDOT85=(Token)match(input,DOTDOT,FOLLOW_DOTDOT_in_ftsFieldGroupRange1313); if (state.failed) return retval; + if ( state.backtracking==0 ) stream_DOTDOT.add(DOTDOT85); - state._fsp--; + pushFollow(FOLLOW_ftsRangeWord_in_ftsFieldGroupRange1315); + ftsRangeWord86=ftsRangeWord(); - stream_ftsFieldGroupTerm.add(ftsFieldGroupTerm74.getTree()); + state._fsp--; + if (state.failed) return retval; + if ( state.backtracking==0 ) stream_ftsRangeWord.add(ftsRangeWord86.getTree()); - // AST REWRITE - // elements: ftsFieldGroupTerm, ftsFieldGroupTerm - // token labels: - // rule labels: retval - // token list labels: - // rule list labels: - // wildcard labels: - retval.tree = root_0; - RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); + // AST REWRITE + // elements: ftsRangeWord, ftsRangeWord + // token labels: + // rule labels: retval + // token list labels: + // rule list labels: + // wildcard labels: + if ( state.backtracking==0 ) { + retval.tree = root_0; + RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); - root_0 = (Object)adaptor.nil(); - // 269:3: -> ftsFieldGroupTerm ftsFieldGroupTerm - { - adaptor.addChild(root_0, stream_ftsFieldGroupTerm.nextTree()); - adaptor.addChild(root_0, stream_ftsFieldGroupTerm.nextTree()); + root_0 = (Object)adaptor.nil(); + // 297:3: -> INCLUSIVE ftsRangeWord ftsRangeWord INCLUSIVE + { + adaptor.addChild(root_0, (Object)adaptor.create(INCLUSIVE, "INCLUSIVE")); + adaptor.addChild(root_0, stream_ftsRangeWord.nextTree()); + adaptor.addChild(root_0, stream_ftsRangeWord.nextTree()); + adaptor.addChild(root_0, (Object)adaptor.create(INCLUSIVE, "INCLUSIVE")); + + } + + retval.tree = root_0;} + } + break; + case 2 : + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:298:4: range_left ftsRangeWord TO ftsRangeWord range_right + { + pushFollow(FOLLOW_range_left_in_ftsFieldGroupRange1332); + range_left87=range_left(); + + state._fsp--; + if (state.failed) return retval; + if ( state.backtracking==0 ) stream_range_left.add(range_left87.getTree()); + pushFollow(FOLLOW_ftsRangeWord_in_ftsFieldGroupRange1334); + ftsRangeWord88=ftsRangeWord(); + + state._fsp--; + if (state.failed) return retval; + if ( state.backtracking==0 ) stream_ftsRangeWord.add(ftsRangeWord88.getTree()); + TO89=(Token)match(input,TO,FOLLOW_TO_in_ftsFieldGroupRange1336); if (state.failed) return retval; + if ( state.backtracking==0 ) stream_TO.add(TO89); + + pushFollow(FOLLOW_ftsRangeWord_in_ftsFieldGroupRange1338); + ftsRangeWord90=ftsRangeWord(); + + state._fsp--; + if (state.failed) return retval; + if ( state.backtracking==0 ) stream_ftsRangeWord.add(ftsRangeWord90.getTree()); + pushFollow(FOLLOW_range_right_in_ftsFieldGroupRange1340); + range_right91=range_right(); + + state._fsp--; + if (state.failed) return retval; + if ( state.backtracking==0 ) stream_range_right.add(range_right91.getTree()); + + + // AST REWRITE + // elements: range_left, ftsRangeWord, ftsRangeWord, range_right + // token labels: + // rule labels: retval + // token list labels: + // rule list labels: + // wildcard labels: + if ( state.backtracking==0 ) { + retval.tree = root_0; + RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); + + root_0 = (Object)adaptor.nil(); + // 299:3: -> range_left ftsRangeWord ftsRangeWord range_right + { + adaptor.addChild(root_0, stream_range_left.nextTree()); + adaptor.addChild(root_0, stream_ftsRangeWord.nextTree()); + adaptor.addChild(root_0, stream_ftsRangeWord.nextTree()); + adaptor.addChild(root_0, stream_range_right.nextTree()); + + } + + retval.tree = root_0;} + } + break; } - - retval.tree = root_0; - } - retval.stop = input.LT(-1); + if ( state.backtracking==0 ) { + retval.tree = (Object)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); - + } } catch(RecognitionException e) @@ -3056,55 +3355,293 @@ public class FTSParser extends Parser { } // $ANTLR end "ftsFieldGroupRange" + public static class range_left_return extends ParserRuleReturnScope { + Object tree; + public Object getTree() { return tree; } + }; + + // $ANTLR start "range_left" + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:302:1: range_left : ( LPAREN -> INCLUSIVE | LCURL -> EXCLUSIVE ); + public final FTSParser.range_left_return range_left() throws RecognitionException { + FTSParser.range_left_return retval = new FTSParser.range_left_return(); + retval.start = input.LT(1); + + Object root_0 = null; + + Token LPAREN92=null; + Token LCURL93=null; + + Object LPAREN92_tree=null; + Object LCURL93_tree=null; + RewriteRuleTokenStream stream_LCURL=new RewriteRuleTokenStream(adaptor,"token LCURL"); + RewriteRuleTokenStream stream_LPAREN=new RewriteRuleTokenStream(adaptor,"token LPAREN"); + + try { + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:303:2: ( LPAREN -> INCLUSIVE | LCURL -> EXCLUSIVE ) + int alt18=2; + int LA18_0 = input.LA(1); + + if ( (LA18_0==LPAREN) ) { + alt18=1; + } + else if ( (LA18_0==LCURL) ) { + alt18=2; + } + else { + if (state.backtracking>0) {state.failed=true; return retval;} + NoViableAltException nvae = + new NoViableAltException("", 18, 0, input); + + throw nvae; + } + switch (alt18) { + case 1 : + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:303:10: LPAREN + { + LPAREN92=(Token)match(input,LPAREN,FOLLOW_LPAREN_in_range_left1370); if (state.failed) return retval; + if ( state.backtracking==0 ) stream_LPAREN.add(LPAREN92); + + + + // AST REWRITE + // elements: + // token labels: + // rule labels: retval + // token list labels: + // rule list labels: + // wildcard labels: + if ( state.backtracking==0 ) { + retval.tree = root_0; + RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); + + root_0 = (Object)adaptor.nil(); + // 304:3: -> INCLUSIVE + { + adaptor.addChild(root_0, (Object)adaptor.create(INCLUSIVE, "INCLUSIVE")); + + } + + retval.tree = root_0;} + } + break; + case 2 : + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:305:4: LCURL + { + LCURL93=(Token)match(input,LCURL,FOLLOW_LCURL_in_range_left1381); if (state.failed) return retval; + if ( state.backtracking==0 ) stream_LCURL.add(LCURL93); + + + + // AST REWRITE + // elements: + // token labels: + // rule labels: retval + // token list labels: + // rule list labels: + // wildcard labels: + if ( state.backtracking==0 ) { + retval.tree = root_0; + RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); + + root_0 = (Object)adaptor.nil(); + // 306:3: -> EXCLUSIVE + { + adaptor.addChild(root_0, (Object)adaptor.create(EXCLUSIVE, "EXCLUSIVE")); + + } + + retval.tree = root_0;} + } + break; + + } + retval.stop = input.LT(-1); + + if ( state.backtracking==0 ) { + + retval.tree = (Object)adaptor.rulePostProcessing(root_0); + adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); + } + } + + catch(RecognitionException e) + { + throw e; + } + finally { + } + return retval; + } + // $ANTLR end "range_left" + + public static class range_right_return extends ParserRuleReturnScope { + Object tree; + public Object getTree() { return tree; } + }; + + // $ANTLR start "range_right" + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:309:1: range_right : ( RPAREN -> INCLUSIVE | RCURL -> EXCLUSIVE ); + public final FTSParser.range_right_return range_right() throws RecognitionException { + FTSParser.range_right_return retval = new FTSParser.range_right_return(); + retval.start = input.LT(1); + + Object root_0 = null; + + Token RPAREN94=null; + Token RCURL95=null; + + Object RPAREN94_tree=null; + Object RCURL95_tree=null; + RewriteRuleTokenStream stream_RPAREN=new RewriteRuleTokenStream(adaptor,"token RPAREN"); + RewriteRuleTokenStream stream_RCURL=new RewriteRuleTokenStream(adaptor,"token RCURL"); + + try { + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:310:2: ( RPAREN -> INCLUSIVE | RCURL -> EXCLUSIVE ) + int alt19=2; + int LA19_0 = input.LA(1); + + if ( (LA19_0==RPAREN) ) { + alt19=1; + } + else if ( (LA19_0==RCURL) ) { + alt19=2; + } + else { + if (state.backtracking>0) {state.failed=true; return retval;} + NoViableAltException nvae = + new NoViableAltException("", 19, 0, input); + + throw nvae; + } + switch (alt19) { + case 1 : + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:310:10: RPAREN + { + RPAREN94=(Token)match(input,RPAREN,FOLLOW_RPAREN_in_range_right1405); if (state.failed) return retval; + if ( state.backtracking==0 ) stream_RPAREN.add(RPAREN94); + + + + // AST REWRITE + // elements: + // token labels: + // rule labels: retval + // token list labels: + // rule list labels: + // wildcard labels: + if ( state.backtracking==0 ) { + retval.tree = root_0; + RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); + + root_0 = (Object)adaptor.nil(); + // 311:3: -> INCLUSIVE + { + adaptor.addChild(root_0, (Object)adaptor.create(INCLUSIVE, "INCLUSIVE")); + + } + + retval.tree = root_0;} + } + break; + case 2 : + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:312:4: RCURL + { + RCURL95=(Token)match(input,RCURL,FOLLOW_RCURL_in_range_right1416); if (state.failed) return retval; + if ( state.backtracking==0 ) stream_RCURL.add(RCURL95); + + + + // AST REWRITE + // elements: + // token labels: + // rule labels: retval + // token list labels: + // rule list labels: + // wildcard labels: + if ( state.backtracking==0 ) { + retval.tree = root_0; + RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); + + root_0 = (Object)adaptor.nil(); + // 313:3: -> EXCLUSIVE + { + adaptor.addChild(root_0, (Object)adaptor.create(EXCLUSIVE, "EXCLUSIVE")); + + } + + retval.tree = root_0;} + } + break; + + } + retval.stop = input.LT(-1); + + if ( state.backtracking==0 ) { + + retval.tree = (Object)adaptor.rulePostProcessing(root_0); + adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); + } + } + + catch(RecognitionException e) + { + throw e; + } + finally { + } + return retval; + } + // $ANTLR end "range_right" + public static class columnReference_return extends ParserRuleReturnScope { Object tree; public Object getTree() { return tree; } }; // $ANTLR start "columnReference" - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:272:1: columnReference : (qualifier= identifier DOT )? name= identifier -> ^( COLUMN_REF $name ( $qualifier)? ) ; + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:317:1: columnReference : (qualifier= identifier DOT )? name= identifier -> ^( COLUMN_REF $name ( $qualifier)? ) ; public final FTSParser.columnReference_return columnReference() throws RecognitionException { FTSParser.columnReference_return retval = new FTSParser.columnReference_return(); retval.start = input.LT(1); Object root_0 = null; - Token DOT75=null; + Token DOT96=null; FTSParser.identifier_return qualifier = null; FTSParser.identifier_return name = null; - Object DOT75_tree=null; + Object DOT96_tree=null; RewriteRuleTokenStream stream_DOT=new RewriteRuleTokenStream(adaptor,"token DOT"); RewriteRuleSubtreeStream stream_identifier=new RewriteRuleSubtreeStream(adaptor,"rule identifier"); try { - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:273:2: ( (qualifier= identifier DOT )? name= identifier -> ^( COLUMN_REF $name ( $qualifier)? ) ) - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:273:4: (qualifier= identifier DOT )? name= identifier + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:318:2: ( (qualifier= identifier DOT )? name= identifier -> ^( COLUMN_REF $name ( $qualifier)? ) ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:318:4: (qualifier= identifier DOT )? name= identifier { - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:273:4: (qualifier= identifier DOT )? - int alt17=2; - int LA17_0 = input.LA(1); + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:318:4: (qualifier= identifier DOT )? + int alt20=2; + int LA20_0 = input.LA(1); - if ( (LA17_0==ID) ) { - int LA17_1 = input.LA(2); + if ( (LA20_0==ID) ) { + int LA20_1 = input.LA(2); - if ( (LA17_1==DOT) ) { - alt17=1; + if ( (LA20_1==DOT) ) { + alt20=1; } } - switch (alt17) { + switch (alt20) { case 1 : - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:273:6: qualifier= identifier DOT + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:318:6: qualifier= identifier DOT { - pushFollow(FOLLOW_identifier_in_columnReference1012); + pushFollow(FOLLOW_identifier_in_columnReference1441); qualifier=identifier(); state._fsp--; - - stream_identifier.add(qualifier.getTree()); - DOT75=(Token)match(input,DOT,FOLLOW_DOT_in_columnReference1014); - stream_DOT.add(DOT75); + if (state.failed) return retval; + if ( state.backtracking==0 ) stream_identifier.add(qualifier.getTree()); + DOT96=(Token)match(input,DOT,FOLLOW_DOT_in_columnReference1443); if (state.failed) return retval; + if ( state.backtracking==0 ) stream_DOT.add(DOT96); } @@ -3112,12 +3649,12 @@ public class FTSParser extends Parser { } - pushFollow(FOLLOW_identifier_in_columnReference1021); + pushFollow(FOLLOW_identifier_in_columnReference1450); name=identifier(); state._fsp--; - - stream_identifier.add(name.getTree()); + if (state.failed) return retval; + if ( state.backtracking==0 ) stream_identifier.add(name.getTree()); // AST REWRITE @@ -3127,21 +3664,22 @@ public class FTSParser extends Parser { // token list labels: // rule list labels: // wildcard labels: + if ( state.backtracking==0 ) { retval.tree = root_0; RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); RewriteRuleSubtreeStream stream_name=new RewriteRuleSubtreeStream(adaptor,"rule name",name!=null?name.tree:null); RewriteRuleSubtreeStream stream_qualifier=new RewriteRuleSubtreeStream(adaptor,"rule qualifier",qualifier!=null?qualifier.tree:null); root_0 = (Object)adaptor.nil(); - // 274:3: -> ^( COLUMN_REF $name ( $qualifier)? ) + // 319:3: -> ^( COLUMN_REF $name ( $qualifier)? ) { - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:274:6: ^( COLUMN_REF $name ( $qualifier)? ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:319:6: ^( COLUMN_REF $name ( $qualifier)? ) { Object root_1 = (Object)adaptor.nil(); root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(COLUMN_REF, "COLUMN_REF"), root_1); adaptor.addChild(root_1, stream_name.nextTree()); - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:274:25: ( $qualifier)? + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:319:25: ( $qualifier)? if ( stream_qualifier.hasNext() ) { adaptor.addChild(root_1, stream_qualifier.nextTree()); @@ -3153,14 +3691,16 @@ public class FTSParser extends Parser { } - retval.tree = root_0; + retval.tree = root_0;} } retval.stop = input.LT(-1); + if ( state.backtracking==0 ) { + retval.tree = (Object)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); - + } } catch(RecognitionException e) @@ -3179,35 +3719,38 @@ public class FTSParser extends Parser { }; // $ANTLR start "identifier" - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:277:1: identifier : ID ; + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:322:1: identifier : ID ; public final FTSParser.identifier_return identifier() throws RecognitionException { FTSParser.identifier_return retval = new FTSParser.identifier_return(); retval.start = input.LT(1); Object root_0 = null; - Token ID76=null; + Token ID97=null; - Object ID76_tree=null; + Object ID97_tree=null; try { - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:278:2: ( ID ) - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:278:4: ID + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:323:2: ( ID ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:323:4: ID { root_0 = (Object)adaptor.nil(); - ID76=(Token)match(input,ID,FOLLOW_ID_in_identifier1049); - ID76_tree = (Object)adaptor.create(ID76); - adaptor.addChild(root_0, ID76_tree); - + ID97=(Token)match(input,ID,FOLLOW_ID_in_identifier1478); if (state.failed) return retval; + if ( state.backtracking==0 ) { + ID97_tree = (Object)adaptor.create(ID97); + adaptor.addChild(root_0, ID97_tree); + } } retval.stop = input.LT(-1); + if ( state.backtracking==0 ) { + retval.tree = (Object)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); - + } } catch(RecognitionException e) @@ -3226,30 +3769,31 @@ public class FTSParser extends Parser { }; // $ANTLR start "ftsWord" - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:281:1: ftsWord : ( ID | FTSWORD ); + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:326:1: ftsWord : ( ID | FTSWORD | OR | AND | NOT | TO ); public final FTSParser.ftsWord_return ftsWord() throws RecognitionException { FTSParser.ftsWord_return retval = new FTSParser.ftsWord_return(); retval.start = input.LT(1); Object root_0 = null; - Token set77=null; + Token set98=null; - Object set77_tree=null; + Object set98_tree=null; try { - // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:282:5: ( ID | FTSWORD ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:327:5: ( ID | FTSWORD | OR | AND | NOT | TO ) // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g: { root_0 = (Object)adaptor.nil(); - set77=(Token)input.LT(1); - if ( (input.LA(1)>=ID && input.LA(1)<=FTSWORD) ) { + set98=(Token)input.LT(1); + if ( input.LA(1)==TO||(input.LA(1)>=ID && input.LA(1)<=NOT) ) { input.consume(); - adaptor.addChild(root_0, (Object)adaptor.create(set77)); - state.errorRecovery=false; + if ( state.backtracking==0 ) adaptor.addChild(root_0, (Object)adaptor.create(set98)); + state.errorRecovery=false;state.failed=false; } else { + if (state.backtracking>0) {state.failed=true; return retval;} MismatchedSetException mse = new MismatchedSetException(null,input); throw mse; } @@ -3259,9 +3803,11 @@ public class FTSParser extends Parser { retval.stop = input.LT(-1); + if ( state.backtracking==0 ) { + retval.tree = (Object)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); - + } } catch(RecognitionException e) @@ -3274,25 +3820,514 @@ public class FTSParser extends Parser { } // $ANTLR end "ftsWord" + public static class ftsRangeWord_return extends ParserRuleReturnScope { + Object tree; + public Object getTree() { return tree; } + }; + + // $ANTLR start "ftsRangeWord" + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:335:1: ftsRangeWord : ( ID | FTSWORD | FTSPHRASE ); + public final FTSParser.ftsRangeWord_return ftsRangeWord() throws RecognitionException { + FTSParser.ftsRangeWord_return retval = new FTSParser.ftsRangeWord_return(); + retval.start = input.LT(1); + + Object root_0 = null; + + Token set99=null; + + Object set99_tree=null; + + try { + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:336:5: ( ID | FTSWORD | FTSPHRASE ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g: + { + root_0 = (Object)adaptor.nil(); + + set99=(Token)input.LT(1); + if ( input.LA(1)==FTSPHRASE||(input.LA(1)>=ID && input.LA(1)<=FTSWORD) ) { + input.consume(); + if ( state.backtracking==0 ) adaptor.addChild(root_0, (Object)adaptor.create(set99)); + state.errorRecovery=false;state.failed=false; + } + else { + if (state.backtracking>0) {state.failed=true; return retval;} + MismatchedSetException mse = new MismatchedSetException(null,input); + throw mse; + } + + + } + + retval.stop = input.LT(-1); + + if ( state.backtracking==0 ) { + + retval.tree = (Object)adaptor.rulePostProcessing(root_0); + adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); + } + } + + catch(RecognitionException e) + { + throw e; + } + finally { + } + return retval; + } + // $ANTLR end "ftsRangeWord" + + public static class or_return extends ParserRuleReturnScope { + Object tree; + public Object getTree() { return tree; } + }; + + // $ANTLR start "or" + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:341:1: or : ( OR | BAR BAR ); + public final FTSParser.or_return or() throws RecognitionException { + FTSParser.or_return retval = new FTSParser.or_return(); + retval.start = input.LT(1); + + Object root_0 = null; + + Token OR100=null; + Token BAR101=null; + Token BAR102=null; + + Object OR100_tree=null; + Object BAR101_tree=null; + Object BAR102_tree=null; + + try { + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:342:5: ( OR | BAR BAR ) + int alt21=2; + int LA21_0 = input.LA(1); + + if ( (LA21_0==OR) ) { + alt21=1; + } + else if ( (LA21_0==BAR) ) { + alt21=2; + } + else { + if (state.backtracking>0) {state.failed=true; return retval;} + NoViableAltException nvae = + new NoViableAltException("", 21, 0, input); + + throw nvae; + } + switch (alt21) { + case 1 : + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:342:9: OR + { + root_0 = (Object)adaptor.nil(); + + OR100=(Token)match(input,OR,FOLLOW_OR_in_or1608); if (state.failed) return retval; + if ( state.backtracking==0 ) { + OR100_tree = (Object)adaptor.create(OR100); + adaptor.addChild(root_0, OR100_tree); + } + + } + break; + case 2 : + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:343:7: BAR BAR + { + root_0 = (Object)adaptor.nil(); + + BAR101=(Token)match(input,BAR,FOLLOW_BAR_in_or1616); if (state.failed) return retval; + if ( state.backtracking==0 ) { + BAR101_tree = (Object)adaptor.create(BAR101); + adaptor.addChild(root_0, BAR101_tree); + } + BAR102=(Token)match(input,BAR,FOLLOW_BAR_in_or1618); if (state.failed) return retval; + if ( state.backtracking==0 ) { + BAR102_tree = (Object)adaptor.create(BAR102); + adaptor.addChild(root_0, BAR102_tree); + } + + } + break; + + } + retval.stop = input.LT(-1); + + if ( state.backtracking==0 ) { + + retval.tree = (Object)adaptor.rulePostProcessing(root_0); + adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); + } + } + + catch(RecognitionException e) + { + throw e; + } + finally { + } + return retval; + } + // $ANTLR end "or" + + public static class and_return extends ParserRuleReturnScope { + Object tree; + public Object getTree() { return tree; } + }; + + // $ANTLR start "and" + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:346:1: and : ( AND | AMP AMP ); + public final FTSParser.and_return and() throws RecognitionException { + FTSParser.and_return retval = new FTSParser.and_return(); + retval.start = input.LT(1); + + Object root_0 = null; + + Token AND103=null; + Token AMP104=null; + Token AMP105=null; + + Object AND103_tree=null; + Object AMP104_tree=null; + Object AMP105_tree=null; + + try { + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:347:5: ( AND | AMP AMP ) + int alt22=2; + int LA22_0 = input.LA(1); + + if ( (LA22_0==AND) ) { + alt22=1; + } + else if ( (LA22_0==AMP) ) { + alt22=2; + } + else { + if (state.backtracking>0) {state.failed=true; return retval;} + NoViableAltException nvae = + new NoViableAltException("", 22, 0, input); + + throw nvae; + } + switch (alt22) { + case 1 : + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:347:7: AND + { + root_0 = (Object)adaptor.nil(); + + AND103=(Token)match(input,AND,FOLLOW_AND_in_and1640); if (state.failed) return retval; + if ( state.backtracking==0 ) { + AND103_tree = (Object)adaptor.create(AND103); + adaptor.addChild(root_0, AND103_tree); + } + + } + break; + case 2 : + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:348:7: AMP AMP + { + root_0 = (Object)adaptor.nil(); + + AMP104=(Token)match(input,AMP,FOLLOW_AMP_in_and1648); if (state.failed) return retval; + if ( state.backtracking==0 ) { + AMP104_tree = (Object)adaptor.create(AMP104); + adaptor.addChild(root_0, AMP104_tree); + } + AMP105=(Token)match(input,AMP,FOLLOW_AMP_in_and1650); if (state.failed) return retval; + if ( state.backtracking==0 ) { + AMP105_tree = (Object)adaptor.create(AMP105); + adaptor.addChild(root_0, AMP105_tree); + } + + } + break; + + } + retval.stop = input.LT(-1); + + if ( state.backtracking==0 ) { + + retval.tree = (Object)adaptor.rulePostProcessing(root_0); + adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); + } + } + + catch(RecognitionException e) + { + throw e; + } + finally { + } + return retval; + } + // $ANTLR end "and" + + public static class not_return extends ParserRuleReturnScope { + Object tree; + public Object getTree() { return tree; } + }; + + // $ANTLR start "not" + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:351:1: not : ( NOT | EXCLAMATION ); + public final FTSParser.not_return not() throws RecognitionException { + FTSParser.not_return retval = new FTSParser.not_return(); + retval.start = input.LT(1); + + Object root_0 = null; + + Token set106=null; + + Object set106_tree=null; + + try { + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:352:5: ( NOT | EXCLAMATION ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g: + { + root_0 = (Object)adaptor.nil(); + + set106=(Token)input.LT(1); + if ( input.LA(1)==NOT||input.LA(1)==EXCLAMATION ) { + input.consume(); + if ( state.backtracking==0 ) adaptor.addChild(root_0, (Object)adaptor.create(set106)); + state.errorRecovery=false;state.failed=false; + } + else { + if (state.backtracking>0) {state.failed=true; return retval;} + MismatchedSetException mse = new MismatchedSetException(null,input); + throw mse; + } + + + } + + retval.stop = input.LT(-1); + + if ( state.backtracking==0 ) { + + retval.tree = (Object)adaptor.rulePostProcessing(root_0); + adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); + } + } + + catch(RecognitionException e) + { + throw e; + } + finally { + } + return retval; + } + // $ANTLR end "not" + + // $ANTLR start synpred1_FTS + public final void synpred1_FTS_fragment() throws RecognitionException { + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:156:27: ( or ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:156:28: or + { + pushFollow(FOLLOW_or_in_synpred1_FTS268); + or(); + + state._fsp--; + if (state.failed) return ; + + } + } + // $ANTLR end synpred1_FTS + + // $ANTLR start synpred2_FTS + public final void synpred2_FTS_fragment() throws RecognitionException { + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:161:17: ( and ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:161:18: and + { + pushFollow(FOLLOW_and_in_synpred2_FTS304); + and(); + + state._fsp--; + if (state.failed) return ; + + } + } + // $ANTLR end synpred2_FTS + + // $ANTLR start synpred3_FTS + public final void synpred3_FTS_fragment() throws RecognitionException { + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:167:7: ( not ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:167:8: not + { + pushFollow(FOLLOW_not_in_synpred3_FTS344); + not(); + + state._fsp--; + if (state.failed) return ; + + } + } + // $ANTLR end synpred3_FTS + + // $ANTLR start synpred4_FTS + public final void synpred4_FTS_fragment() throws RecognitionException { + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:231:37: ( or ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:231:38: or + { + pushFollow(FOLLOW_or_in_synpred4_FTS857); + or(); + + state._fsp--; + if (state.failed) return ; + + } + } + // $ANTLR end synpred4_FTS + + // $ANTLR start synpred5_FTS + public final void synpred5_FTS_fragment() throws RecognitionException { + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:236:27: ( and ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:236:28: and + { + pushFollow(FOLLOW_and_in_synpred5_FTS893); + and(); + + state._fsp--; + if (state.failed) return ; + + } + } + // $ANTLR end synpred5_FTS + + // $ANTLR start synpred6_FTS + public final void synpred6_FTS_fragment() throws RecognitionException { + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:242:3: ( not ) + // W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g:242:4: not + { + pushFollow(FOLLOW_not_in_synpred6_FTS929); + not(); + + state._fsp--; + if (state.failed) return ; + + } + } + // $ANTLR end synpred6_FTS + // Delegated rules + public final boolean synpred6_FTS() { + state.backtracking++; + int start = input.mark(); + try { + synpred6_FTS_fragment(); // can never throw exception + } catch (RecognitionException re) { + System.err.println("impossible: "+re); + } + boolean success = !state.failed; + input.rewind(start); + state.backtracking--; + state.failed=false; + return success; + } + public final boolean synpred4_FTS() { + state.backtracking++; + int start = input.mark(); + try { + synpred4_FTS_fragment(); // can never throw exception + } catch (RecognitionException re) { + System.err.println("impossible: "+re); + } + boolean success = !state.failed; + input.rewind(start); + state.backtracking--; + state.failed=false; + return success; + } + public final boolean synpred5_FTS() { + state.backtracking++; + int start = input.mark(); + try { + synpred5_FTS_fragment(); // can never throw exception + } catch (RecognitionException re) { + System.err.println("impossible: "+re); + } + boolean success = !state.failed; + input.rewind(start); + state.backtracking--; + state.failed=false; + return success; + } + public final boolean synpred1_FTS() { + state.backtracking++; + int start = input.mark(); + try { + synpred1_FTS_fragment(); // can never throw exception + } catch (RecognitionException re) { + System.err.println("impossible: "+re); + } + boolean success = !state.failed; + input.rewind(start); + state.backtracking--; + state.failed=false; + return success; + } + public final boolean synpred2_FTS() { + state.backtracking++; + int start = input.mark(); + try { + synpred2_FTS_fragment(); // can never throw exception + } catch (RecognitionException re) { + System.err.println("impossible: "+re); + } + boolean success = !state.failed; + input.rewind(start); + state.backtracking--; + state.failed=false; + return success; + } + public final boolean synpred3_FTS() { + state.backtracking++; + int start = input.mark(); + try { + synpred3_FTS_fragment(); // can never throw exception + } catch (RecognitionException re) { + System.err.println("impossible: "+re); + } + boolean success = !state.failed; + input.rewind(start); + state.backtracking--; + state.failed=false; + return success; + } + protected DFA3 dfa3 = new DFA3(this); + protected DFA4 dfa4 = new DFA4(this); + protected DFA5 dfa5 = new DFA5(this); + protected DFA6 dfa6 = new DFA6(this); protected DFA7 dfa7 = new DFA7(this); + protected DFA12 dfa12 = new DFA12(this); + protected DFA13 dfa13 = new DFA13(this); + protected DFA14 dfa14 = new DFA14(this); + protected DFA15 dfa15 = new DFA15(this); + protected DFA16 dfa16 = new DFA16(this); static final String DFA3_eotS = - "\12\uffff"; + "\20\uffff"; static final String DFA3_eofS = - "\12\uffff"; + "\20\uffff"; static final String DFA3_minS = - "\1\31\7\0\2\uffff"; + "\1\41\15\0\2\uffff"; static final String DFA3_maxS = - "\1\44\7\0\2\uffff"; + "\1\66\15\0\2\uffff"; static final String DFA3_acceptS = - "\10\uffff\1\1\1\2"; + "\16\uffff\1\1\1\2"; static final String DFA3_specialS = - "\1\uffff\1\0\1\1\1\2\1\3\1\4\1\5\1\6\2\uffff}>"; + "\1\uffff\1\0\1\1\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\11\1\12\1\13\1"+ + "\14\2\uffff}>"; static final String[] DFA3_transitionS = { - "\1\1\1\7\2\uffff\1\4\1\5\1\6\3\uffff\1\2\1\3", + "\1\13\1\14\1\15\1\11\2\uffff\1\5\1\6\1\7\2\uffff\1\10\1\12"+ + "\2\uffff\1\2\1\4\2\10\1\1\1\uffff\1\3", + "\1\uffff", + "\1\uffff", + "\1\uffff", + "\1\uffff", + "\1\uffff", + "\1\uffff", "\1\uffff", "\1\uffff", "\1\uffff", @@ -3334,7 +4369,7 @@ public class FTSParser extends Parser { this.transition = DFA3_transition; } public String getDescription() { - return "135:1: ftsImplicitConjunctionOrDisjunction : ({...}? ftsExplicitDisjunction ( ftsExplicitDisjunction )* -> ^( CONJUNCTION ( ftsExplicitDisjunction )+ ) | ftsExplicitDisjunction ( ftsExplicitDisjunction )* -> ^( DISJUNCTION ( ftsExplicitDisjunction )+ ) );"; + return "148:1: ftsImplicitConjunctionOrDisjunction : ({...}? ftsExplicitDisjunction ( ftsExplicitDisjunction )* -> ^( CONJUNCTION ( ftsExplicitDisjunction )+ ) | ftsExplicitDisjunction ( ftsExplicitDisjunction )* -> ^( DISJUNCTION ( ftsExplicitDisjunction )+ ) );"; } public int specialStateTransition(int s, IntStream _input) throws NoViableAltException { TokenStream input = (TokenStream)_input; @@ -3347,9 +4382,9 @@ public class FTSParser extends Parser { int index3_1 = input.index(); input.rewind(); s = -1; - if ( ((defaultConjunction())) ) {s = 8;} + if ( ((defaultConjunction())) ) {s = 14;} - else if ( (true) ) {s = 9;} + else if ( (true) ) {s = 15;} input.seek(index3_1); @@ -3362,9 +4397,9 @@ public class FTSParser extends Parser { int index3_2 = input.index(); input.rewind(); s = -1; - if ( ((defaultConjunction())) ) {s = 8;} + if ( ((defaultConjunction())) ) {s = 14;} - else if ( (true) ) {s = 9;} + else if ( (true) ) {s = 15;} input.seek(index3_2); @@ -3377,9 +4412,9 @@ public class FTSParser extends Parser { int index3_3 = input.index(); input.rewind(); s = -1; - if ( ((defaultConjunction())) ) {s = 8;} + if ( ((defaultConjunction())) ) {s = 14;} - else if ( (true) ) {s = 9;} + else if ( (true) ) {s = 15;} input.seek(index3_3); @@ -3392,9 +4427,9 @@ public class FTSParser extends Parser { int index3_4 = input.index(); input.rewind(); s = -1; - if ( ((defaultConjunction())) ) {s = 8;} + if ( ((defaultConjunction())) ) {s = 14;} - else if ( (true) ) {s = 9;} + else if ( (true) ) {s = 15;} input.seek(index3_4); @@ -3407,9 +4442,9 @@ public class FTSParser extends Parser { int index3_5 = input.index(); input.rewind(); s = -1; - if ( ((defaultConjunction())) ) {s = 8;} + if ( ((defaultConjunction())) ) {s = 14;} - else if ( (true) ) {s = 9;} + else if ( (true) ) {s = 15;} input.seek(index3_5); @@ -3422,9 +4457,9 @@ public class FTSParser extends Parser { int index3_6 = input.index(); input.rewind(); s = -1; - if ( ((defaultConjunction())) ) {s = 8;} + if ( ((defaultConjunction())) ) {s = 14;} - else if ( (true) ) {s = 9;} + else if ( (true) ) {s = 15;} input.seek(index3_6); @@ -3437,48 +4472,486 @@ public class FTSParser extends Parser { int index3_7 = input.index(); input.rewind(); s = -1; - if ( ((defaultConjunction())) ) {s = 8;} + if ( ((defaultConjunction())) ) {s = 14;} - else if ( (true) ) {s = 9;} + else if ( (true) ) {s = 15;} input.seek(index3_7); if ( s>=0 ) return s; break; + case 7 : + int LA3_8 = input.LA(1); + + + int index3_8 = input.index(); + input.rewind(); + s = -1; + if ( ((defaultConjunction())) ) {s = 14;} + + else if ( (true) ) {s = 15;} + + + input.seek(index3_8); + if ( s>=0 ) return s; + break; + case 8 : + int LA3_9 = input.LA(1); + + + int index3_9 = input.index(); + input.rewind(); + s = -1; + if ( ((defaultConjunction())) ) {s = 14;} + + else if ( (true) ) {s = 15;} + + + input.seek(index3_9); + if ( s>=0 ) return s; + break; + case 9 : + int LA3_10 = input.LA(1); + + + int index3_10 = input.index(); + input.rewind(); + s = -1; + if ( ((defaultConjunction())) ) {s = 14;} + + else if ( (true) ) {s = 15;} + + + input.seek(index3_10); + if ( s>=0 ) return s; + break; + case 10 : + int LA3_11 = input.LA(1); + + + int index3_11 = input.index(); + input.rewind(); + s = -1; + if ( ((defaultConjunction())) ) {s = 14;} + + else if ( (true) ) {s = 15;} + + + input.seek(index3_11); + if ( s>=0 ) return s; + break; + case 11 : + int LA3_12 = input.LA(1); + + + int index3_12 = input.index(); + input.rewind(); + s = -1; + if ( ((defaultConjunction())) ) {s = 14;} + + else if ( (true) ) {s = 15;} + + + input.seek(index3_12); + if ( s>=0 ) return s; + break; + case 12 : + int LA3_13 = input.LA(1); + + + int index3_13 = input.index(); + input.rewind(); + s = -1; + if ( ((defaultConjunction())) ) {s = 14;} + + else if ( (true) ) {s = 15;} + + + input.seek(index3_13); + if ( s>=0 ) return s; + break; } + if (state.backtracking>0) {state.failed=true; return -1;} NoViableAltException nvae = new NoViableAltException(getDescription(), 3, _s, input); error(nvae); throw nvae; } } - static final String DFA7_eotS = + static final String DFA4_eotS = + "\22\uffff"; + static final String DFA4_eofS = + "\1\1\21\uffff"; + static final String DFA4_minS = + "\1\41\7\uffff\1\0\3\uffff\1\0\5\uffff"; + static final String DFA4_maxS = + "\1\66\7\uffff\1\0\3\uffff\1\0\5\uffff"; + static final String DFA4_acceptS = + "\1\uffff\1\2\17\uffff\1\1"; + static final String DFA4_specialS = + "\10\uffff\1\0\3\uffff\1\1\5\uffff}>"; + static final String[] DFA4_transitionS = { + "\1\1\1\14\3\1\1\uffff\3\1\2\uffff\2\1\2\uffff\2\1\1\10\2\1"+ + "\1\uffff\1\1", + "", + "", + "", + "", + "", + "", + "", + "\1\uffff", + "", + "", + "", + "\1\uffff", + "", + "", + "", + "", + "" + }; + + static final short[] DFA4_eot = DFA.unpackEncodedString(DFA4_eotS); + static final short[] DFA4_eof = DFA.unpackEncodedString(DFA4_eofS); + static final char[] DFA4_min = DFA.unpackEncodedStringToUnsignedChars(DFA4_minS); + static final char[] DFA4_max = DFA.unpackEncodedStringToUnsignedChars(DFA4_maxS); + static final short[] DFA4_accept = DFA.unpackEncodedString(DFA4_acceptS); + static final short[] DFA4_special = DFA.unpackEncodedString(DFA4_specialS); + static final short[][] DFA4_transition; + + static { + int numStates = DFA4_transitionS.length; + DFA4_transition = new short[numStates][]; + for (int i=0; i or ftsExplictConjunction )*"; + } + public int specialStateTransition(int s, IntStream _input) throws NoViableAltException { + TokenStream input = (TokenStream)_input; + int _s = s; + switch ( s ) { + case 0 : + int LA4_8 = input.LA(1); + + + int index4_8 = input.index(); + input.rewind(); + s = -1; + if ( (synpred1_FTS()) ) {s = 17;} + + else if ( (true) ) {s = 1;} + + + input.seek(index4_8); + if ( s>=0 ) return s; + break; + case 1 : + int LA4_12 = input.LA(1); + + + int index4_12 = input.index(); + input.rewind(); + s = -1; + if ( (synpred1_FTS()) ) {s = 17;} + + else if ( (true) ) {s = 1;} + + + input.seek(index4_12); + if ( s>=0 ) return s; + break; + } + if (state.backtracking>0) {state.failed=true; return -1;} + NoViableAltException nvae = + new NoViableAltException(getDescription(), 4, _s, input); + error(nvae); + throw nvae; + } + } + static final String DFA5_eotS = + "\23\uffff"; + static final String DFA5_eofS = + "\1\1\22\uffff"; + static final String DFA5_minS = + "\1\41\11\uffff\1\0\10\uffff"; + static final String DFA5_maxS = + "\1\66\11\uffff\1\0\10\uffff"; + static final String DFA5_acceptS = + "\1\uffff\1\2\20\uffff\1\1"; + static final String DFA5_specialS = + "\1\0\11\uffff\1\1\10\uffff}>"; + static final String[] DFA5_transitionS = { + "\5\1\1\uffff\3\1\2\uffff\2\1\2\uffff\3\1\1\12\1\1\1\22\1\1", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "\1\uffff", + "", + "", + "", + "", + "", + "", + "", + "" + }; + + static final short[] DFA5_eot = DFA.unpackEncodedString(DFA5_eotS); + static final short[] DFA5_eof = DFA.unpackEncodedString(DFA5_eofS); + static final char[] DFA5_min = DFA.unpackEncodedStringToUnsignedChars(DFA5_minS); + static final char[] DFA5_max = DFA.unpackEncodedStringToUnsignedChars(DFA5_maxS); + static final short[] DFA5_accept = DFA.unpackEncodedString(DFA5_acceptS); + static final short[] DFA5_special = DFA.unpackEncodedString(DFA5_specialS); + static final short[][] DFA5_transition; + + static { + int numStates = DFA5_transitionS.length; + DFA5_transition = new short[numStates][]; + for (int i=0; i and ftsPrefixed )*"; + } + public int specialStateTransition(int s, IntStream _input) throws NoViableAltException { + TokenStream input = (TokenStream)_input; + int _s = s; + switch ( s ) { + case 0 : + int LA5_0 = input.LA(1); + + + int index5_0 = input.index(); + input.rewind(); + s = -1; + if ( (LA5_0==EOF||(LA5_0>=PLUS && LA5_0<=RPAREN)||(LA5_0>=EQUALS && LA5_0<=TILDA)||(LA5_0>=TO && LA5_0<=LCURL)||(LA5_0>=ID && LA5_0<=OR)||LA5_0==NOT||LA5_0==EXCLAMATION) ) {s = 1;} + + else if ( (LA5_0==AND) ) {s = 10;} + + else if ( (LA5_0==AMP) && (synpred2_FTS())) {s = 18;} + + + input.seek(index5_0); + if ( s>=0 ) return s; + break; + case 1 : + int LA5_10 = input.LA(1); + + + int index5_10 = input.index(); + input.rewind(); + s = -1; + if ( (synpred2_FTS()) ) {s = 18;} + + else if ( (true) ) {s = 1;} + + + input.seek(index5_10); + if ( s>=0 ) return s; + break; + } + if (state.backtracking>0) {state.failed=true; return -1;} + NoViableAltException nvae = + new NoViableAltException(getDescription(), 5, _s, input); + error(nvae); + throw nvae; + } + } + static final String DFA6_eotS = "\16\uffff"; + static final String DFA6_eofS = + "\16\uffff"; + static final String DFA6_minS = + "\1\41\1\0\14\uffff"; + static final String DFA6_maxS = + "\1\66\1\0\14\uffff"; + static final String DFA6_acceptS = + "\2\uffff\1\2\1\1\7\uffff\1\3\1\4\1\5"; + static final String DFA6_specialS = + "\1\0\1\1\14\uffff}>"; + static final String[] DFA6_transitionS = { + "\1\13\1\14\1\15\1\2\2\uffff\3\2\2\uffff\2\2\2\uffff\4\2\1\1"+ + "\1\uffff\1\3", + "\1\uffff", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + }; + + static final short[] DFA6_eot = DFA.unpackEncodedString(DFA6_eotS); + static final short[] DFA6_eof = DFA.unpackEncodedString(DFA6_eofS); + static final char[] DFA6_min = DFA.unpackEncodedStringToUnsignedChars(DFA6_minS); + static final char[] DFA6_max = DFA.unpackEncodedStringToUnsignedChars(DFA6_maxS); + static final short[] DFA6_accept = DFA.unpackEncodedString(DFA6_acceptS); + static final short[] DFA6_special = DFA.unpackEncodedString(DFA6_specialS); + static final short[][] DFA6_transition; + + static { + int numStates = DFA6_transitionS.length; + DFA6_transition = new short[numStates][]; + for (int i=0; i not ftsTest -> ^( NEGATION ftsTest ) | ftsTest -> ^( DEFAULT ftsTest ) | PLUS ftsTest -> ^( MANDATORY ftsTest ) | BAR ftsTest -> ^( OPTIONAL ftsTest ) | MINUS ftsTest -> ^( EXCLUDE ftsTest ) );"; + } + public int specialStateTransition(int s, IntStream _input) throws NoViableAltException { + TokenStream input = (TokenStream)_input; + int _s = s; + switch ( s ) { + case 0 : + int LA6_0 = input.LA(1); + + + int index6_0 = input.index(); + input.rewind(); + s = -1; + if ( (LA6_0==NOT) ) {s = 1;} + + else if ( (LA6_0==LPAREN||(LA6_0>=EQUALS && LA6_0<=TILDA)||(LA6_0>=TO && LA6_0<=LCURL)||(LA6_0>=ID && LA6_0<=AND)) ) {s = 2;} + + else if ( (LA6_0==EXCLAMATION) && (synpred3_FTS())) {s = 3;} + + else if ( (LA6_0==PLUS) ) {s = 11;} + + else if ( (LA6_0==BAR) ) {s = 12;} + + else if ( (LA6_0==MINUS) ) {s = 13;} + + + input.seek(index6_0); + if ( s>=0 ) return s; + break; + case 1 : + int LA6_1 = input.LA(1); + + + int index6_1 = input.index(); + input.rewind(); + s = -1; + if ( (synpred3_FTS()) ) {s = 3;} + + else if ( (true) ) {s = 2;} + + + input.seek(index6_1); + if ( s>=0 ) return s; + break; + } + if (state.backtracking>0) {state.failed=true; return -1;} + NoViableAltException nvae = + new NoViableAltException(getDescription(), 6, _s, input); + error(nvae); + throw nvae; + } + } + static final String DFA7_eotS = + "\31\uffff"; static final String DFA7_eofS = - "\1\uffff\2\13\13\uffff"; + "\1\uffff\2\13\1\uffff\1\15\1\uffff\1\13\22\uffff"; static final String DFA7_minS = - "\1\32\2\27\6\uffff\1\32\1\43\2\uffff\1\34"; + "\1\44\2\41\1\uffff\1\41\1\uffff\2\41\1\uffff\1\44\2\uffff\1\60"+ + "\2\uffff\3\41\1\uffff\1\46\4\41\1\uffff"; static final String DFA7_maxS = - "\3\44\6\uffff\1\44\1\43\2\uffff\1\34"; + "\1\64\2\66\1\uffff\1\66\1\uffff\2\66\1\uffff\1\64\2\uffff\1\60"+ + "\2\uffff\3\66\1\uffff\1\46\4\66\1\uffff"; static final String DFA7_acceptS = - "\3\uffff\1\2\1\3\1\4\1\10\1\6\1\5\2\uffff\1\1\1\7\1\uffff"; + "\3\uffff\1\2\1\uffff\1\4\2\uffff\1\6\1\uffff\1\5\1\1\1\uffff\1"+ + "\3\1\10\3\uffff\1\7\5\uffff\1\6"; static final String DFA7_specialS = - "\16\uffff}>"; + "\31\uffff}>"; static final String[] DFA7_transitionS = { - "\1\6\2\uffff\1\3\1\4\1\5\3\uffff\1\1\1\2", - "\5\13\1\11\3\13\1\10\1\7\1\12\2\13", - "\5\13\1\uffff\3\13\1\10\1\7\1\uffff\2\13", + "\1\7\2\uffff\1\3\1\4\1\5\2\uffff\1\6\1\10\2\uffff\1\1\1\2\3"+ + "\6", + "\5\13\1\11\3\13\1\12\1\10\2\13\1\uffff\1\14\7\13", + "\5\13\1\uffff\3\13\1\12\1\10\2\13\2\uffff\7\13", + "", + "\5\15\1\uffff\3\15\1\uffff\1\10\2\15\2\uffff\7\15", + "", + "\5\13\1\uffff\3\13\1\12\1\uffff\2\13\2\uffff\7\13", + "\4\16\2\uffff\1\16\1\21\1\16\2\uffff\2\16\2\uffff\1\17\1\20"+ + "\3\16\1\uffff\1\16", + "", + "\1\22\3\uffff\1\15\3\uffff\1\13\3\uffff\5\13", "", "", + "\1\23", "", "", + "\13\16\1\24\1\16\1\uffff\10\16", + "\5\16\1\uffff\5\16\1\24\1\16\2\uffff\7\16", + "\5\16\1\uffff\3\16\1\uffff\1\16\1\24\1\16\2\uffff\7\16", "", - "", - "\1\14\3\uffff\1\4\4\uffff\2\13", - "\1\15", - "", - "", - "\1\11" + "\1\11", + "\5\16\1\uffff\1\16\1\27\2\16\1\uffff\2\16\2\uffff\1\25\1\26"+ + "\5\16", + "\4\16\1\30\10\16\1\30\10\16", + "\4\16\1\30\1\uffff\7\16\1\30\1\uffff\7\16", + "\4\16\1\30\1\uffff\3\16\1\uffff\3\16\1\30\1\uffff\7\16", + "" }; static final short[] DFA7_eot = DFA.unpackEncodedString(DFA7_eotS); @@ -3511,89 +4984,773 @@ public class FTSParser extends Parser { this.transition = DFA7_transition; } public String getDescription() { - return "159:1: ftsTest : ( ftsTerm -> ^( TERM ftsTerm ) | ftsExactTerm -> ^( EXACT_TERM ftsExactTerm ) | ftsPhrase -> ^( PHRASE ftsPhrase ) | ftsSynonym -> ^( SYNONYM ftsSynonym ) | ftsFieldGroupProximity -> ^( FG_PROXIMITY ftsFieldGroupProximity ) | ftsFieldGroupRange -> ^( FG_RANGE ftsFieldGroupRange ) | ftsFieldGroup | LPAREN ftsImplicitConjunctionOrDisjunction RPAREN -> ftsImplicitConjunctionOrDisjunction );"; + return "179:1: ftsTest : ( ftsTerm -> ^( TERM ftsTerm ) | ftsExactTerm -> ^( EXACT_TERM ftsExactTerm ) | ftsPhrase -> ^( PHRASE ftsPhrase ) | ftsSynonym -> ^( SYNONYM ftsSynonym ) | ftsFieldGroupProximity -> ^( FG_PROXIMITY ftsFieldGroupProximity ) | ftsFieldGroupRange -> ^( FG_RANGE ftsFieldGroupRange ) | ftsFieldGroup | LPAREN ftsImplicitConjunctionOrDisjunction RPAREN -> ftsImplicitConjunctionOrDisjunction );"; + } + } + static final String DFA12_eotS = + "\17\uffff"; + static final String DFA12_eofS = + "\17\uffff"; + static final String DFA12_minS = + "\1\41\14\0\2\uffff"; + static final String DFA12_maxS = + "\1\66\14\0\2\uffff"; + static final String DFA12_acceptS = + "\15\uffff\1\1\1\2"; + static final String DFA12_specialS = + "\1\uffff\1\0\1\1\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\11\1\12\1\13\2"+ + "\uffff}>"; + static final String[] DFA12_transitionS = { + "\1\12\1\13\1\14\1\10\2\uffff\1\4\1\5\1\6\2\uffff\1\7\1\11\2"+ + "\uffff\2\3\2\7\1\1\1\uffff\1\2", + "\1\uffff", + "\1\uffff", + "\1\uffff", + "\1\uffff", + "\1\uffff", + "\1\uffff", + "\1\uffff", + "\1\uffff", + "\1\uffff", + "\1\uffff", + "\1\uffff", + "\1\uffff", + "", + "" + }; + + static final short[] DFA12_eot = DFA.unpackEncodedString(DFA12_eotS); + static final short[] DFA12_eof = DFA.unpackEncodedString(DFA12_eofS); + static final char[] DFA12_min = DFA.unpackEncodedStringToUnsignedChars(DFA12_minS); + static final char[] DFA12_max = DFA.unpackEncodedStringToUnsignedChars(DFA12_maxS); + static final short[] DFA12_accept = DFA.unpackEncodedString(DFA12_acceptS); + static final short[] DFA12_special = DFA.unpackEncodedString(DFA12_specialS); + static final short[][] DFA12_transition; + + static { + int numStates = DFA12_transitionS.length; + DFA12_transition = new short[numStates][]; + for (int i=0; i ^( FIELD_CONJUNCTION ( ftsFieldGroupExplicitDisjunction )+ ) | ftsFieldGroupExplicitDisjunction ( ftsFieldGroupExplicitDisjunction )* -> ^( FIELD_DISJUNCTION ( ftsFieldGroupExplicitDisjunction )+ ) );"; + } + public int specialStateTransition(int s, IntStream _input) throws NoViableAltException { + TokenStream input = (TokenStream)_input; + int _s = s; + switch ( s ) { + case 0 : + int LA12_1 = input.LA(1); + + + int index12_1 = input.index(); + input.rewind(); + s = -1; + if ( ((defaultFieldConjunction())) ) {s = 13;} + + else if ( (true) ) {s = 14;} + + + input.seek(index12_1); + if ( s>=0 ) return s; + break; + case 1 : + int LA12_2 = input.LA(1); + + + int index12_2 = input.index(); + input.rewind(); + s = -1; + if ( ((defaultFieldConjunction())) ) {s = 13;} + + else if ( (true) ) {s = 14;} + + + input.seek(index12_2); + if ( s>=0 ) return s; + break; + case 2 : + int LA12_3 = input.LA(1); + + + int index12_3 = input.index(); + input.rewind(); + s = -1; + if ( ((defaultFieldConjunction())) ) {s = 13;} + + else if ( (true) ) {s = 14;} + + + input.seek(index12_3); + if ( s>=0 ) return s; + break; + case 3 : + int LA12_4 = input.LA(1); + + + int index12_4 = input.index(); + input.rewind(); + s = -1; + if ( ((defaultFieldConjunction())) ) {s = 13;} + + else if ( (true) ) {s = 14;} + + + input.seek(index12_4); + if ( s>=0 ) return s; + break; + case 4 : + int LA12_5 = input.LA(1); + + + int index12_5 = input.index(); + input.rewind(); + s = -1; + if ( ((defaultFieldConjunction())) ) {s = 13;} + + else if ( (true) ) {s = 14;} + + + input.seek(index12_5); + if ( s>=0 ) return s; + break; + case 5 : + int LA12_6 = input.LA(1); + + + int index12_6 = input.index(); + input.rewind(); + s = -1; + if ( ((defaultFieldConjunction())) ) {s = 13;} + + else if ( (true) ) {s = 14;} + + + input.seek(index12_6); + if ( s>=0 ) return s; + break; + case 6 : + int LA12_7 = input.LA(1); + + + int index12_7 = input.index(); + input.rewind(); + s = -1; + if ( ((defaultFieldConjunction())) ) {s = 13;} + + else if ( (true) ) {s = 14;} + + + input.seek(index12_7); + if ( s>=0 ) return s; + break; + case 7 : + int LA12_8 = input.LA(1); + + + int index12_8 = input.index(); + input.rewind(); + s = -1; + if ( ((defaultFieldConjunction())) ) {s = 13;} + + else if ( (true) ) {s = 14;} + + + input.seek(index12_8); + if ( s>=0 ) return s; + break; + case 8 : + int LA12_9 = input.LA(1); + + + int index12_9 = input.index(); + input.rewind(); + s = -1; + if ( ((defaultFieldConjunction())) ) {s = 13;} + + else if ( (true) ) {s = 14;} + + + input.seek(index12_9); + if ( s>=0 ) return s; + break; + case 9 : + int LA12_10 = input.LA(1); + + + int index12_10 = input.index(); + input.rewind(); + s = -1; + if ( ((defaultFieldConjunction())) ) {s = 13;} + + else if ( (true) ) {s = 14;} + + + input.seek(index12_10); + if ( s>=0 ) return s; + break; + case 10 : + int LA12_11 = input.LA(1); + + + int index12_11 = input.index(); + input.rewind(); + s = -1; + if ( ((defaultFieldConjunction())) ) {s = 13;} + + else if ( (true) ) {s = 14;} + + + input.seek(index12_11); + if ( s>=0 ) return s; + break; + case 11 : + int LA12_12 = input.LA(1); + + + int index12_12 = input.index(); + input.rewind(); + s = -1; + if ( ((defaultFieldConjunction())) ) {s = 13;} + + else if ( (true) ) {s = 14;} + + + input.seek(index12_12); + if ( s>=0 ) return s; + break; + } + if (state.backtracking>0) {state.failed=true; return -1;} + NoViableAltException nvae = + new NoViableAltException(getDescription(), 12, _s, input); + error(nvae); + throw nvae; + } + } + static final String DFA13_eotS = + "\20\uffff"; + static final String DFA13_eofS = + "\20\uffff"; + static final String DFA13_minS = + "\1\41\6\uffff\1\0\3\uffff\1\0\4\uffff"; + static final String DFA13_maxS = + "\1\66\6\uffff\1\0\3\uffff\1\0\4\uffff"; + static final String DFA13_acceptS = + "\1\uffff\1\2\15\uffff\1\1"; + static final String DFA13_specialS = + "\7\uffff\1\0\3\uffff\1\1\4\uffff}>"; + static final String[] DFA13_transitionS = { + "\1\1\1\13\3\1\1\uffff\3\1\2\uffff\2\1\2\uffff\2\1\1\7\2\1\1"+ + "\uffff\1\1", + "", + "", + "", + "", + "", + "", + "\1\uffff", + "", + "", + "", + "\1\uffff", + "", + "", + "", + "" + }; + + static final short[] DFA13_eot = DFA.unpackEncodedString(DFA13_eotS); + static final short[] DFA13_eof = DFA.unpackEncodedString(DFA13_eofS); + static final char[] DFA13_min = DFA.unpackEncodedStringToUnsignedChars(DFA13_minS); + static final char[] DFA13_max = DFA.unpackEncodedStringToUnsignedChars(DFA13_maxS); + static final short[] DFA13_accept = DFA.unpackEncodedString(DFA13_acceptS); + static final short[] DFA13_special = DFA.unpackEncodedString(DFA13_specialS); + static final short[][] DFA13_transition; + + static { + int numStates = DFA13_transitionS.length; + DFA13_transition = new short[numStates][]; + for (int i=0; i or ftsFieldGroupExplictConjunction )*"; + } + public int specialStateTransition(int s, IntStream _input) throws NoViableAltException { + TokenStream input = (TokenStream)_input; + int _s = s; + switch ( s ) { + case 0 : + int LA13_7 = input.LA(1); + + + int index13_7 = input.index(); + input.rewind(); + s = -1; + if ( (synpred4_FTS()) ) {s = 15;} + + else if ( (true) ) {s = 1;} + + + input.seek(index13_7); + if ( s>=0 ) return s; + break; + case 1 : + int LA13_11 = input.LA(1); + + + int index13_11 = input.index(); + input.rewind(); + s = -1; + if ( (synpred4_FTS()) ) {s = 15;} + + else if ( (true) ) {s = 1;} + + + input.seek(index13_11); + if ( s>=0 ) return s; + break; + } + if (state.backtracking>0) {state.failed=true; return -1;} + NoViableAltException nvae = + new NoViableAltException(getDescription(), 13, _s, input); + error(nvae); + throw nvae; + } + } + static final String DFA14_eotS = + "\21\uffff"; + static final String DFA14_eofS = + "\21\uffff"; + static final String DFA14_minS = + "\1\41\10\uffff\1\0\7\uffff"; + static final String DFA14_maxS = + "\1\66\10\uffff\1\0\7\uffff"; + static final String DFA14_acceptS = + "\1\uffff\1\2\16\uffff\1\1"; + static final String DFA14_specialS = + "\1\0\10\uffff\1\1\7\uffff}>"; + static final String[] DFA14_transitionS = { + "\5\1\1\uffff\3\1\2\uffff\2\1\2\uffff\3\1\1\11\1\1\1\20\1\1", + "", + "", + "", + "", + "", + "", + "", + "", + "\1\uffff", + "", + "", + "", + "", + "", + "", + "" + }; + + static final short[] DFA14_eot = DFA.unpackEncodedString(DFA14_eotS); + static final short[] DFA14_eof = DFA.unpackEncodedString(DFA14_eofS); + static final char[] DFA14_min = DFA.unpackEncodedStringToUnsignedChars(DFA14_minS); + static final char[] DFA14_max = DFA.unpackEncodedStringToUnsignedChars(DFA14_maxS); + static final short[] DFA14_accept = DFA.unpackEncodedString(DFA14_acceptS); + static final short[] DFA14_special = DFA.unpackEncodedString(DFA14_specialS); + static final short[][] DFA14_transition; + + static { + int numStates = DFA14_transitionS.length; + DFA14_transition = new short[numStates][]; + for (int i=0; i and ftsFieldGroupPrefixed )*"; + } + public int specialStateTransition(int s, IntStream _input) throws NoViableAltException { + TokenStream input = (TokenStream)_input; + int _s = s; + switch ( s ) { + case 0 : + int LA14_0 = input.LA(1); + + + int index14_0 = input.index(); + input.rewind(); + s = -1; + if ( ((LA14_0>=PLUS && LA14_0<=RPAREN)||(LA14_0>=EQUALS && LA14_0<=TILDA)||(LA14_0>=TO && LA14_0<=LCURL)||(LA14_0>=ID && LA14_0<=OR)||LA14_0==NOT||LA14_0==EXCLAMATION) ) {s = 1;} + + else if ( (LA14_0==AND) ) {s = 9;} + + else if ( (LA14_0==AMP) && (synpred5_FTS())) {s = 16;} + + + input.seek(index14_0); + if ( s>=0 ) return s; + break; + case 1 : + int LA14_9 = input.LA(1); + + + int index14_9 = input.index(); + input.rewind(); + s = -1; + if ( (synpred5_FTS()) ) {s = 16;} + + else if ( (true) ) {s = 1;} + + + input.seek(index14_9); + if ( s>=0 ) return s; + break; + } + if (state.backtracking>0) {state.failed=true; return -1;} + NoViableAltException nvae = + new NoViableAltException(getDescription(), 14, _s, input); + error(nvae); + throw nvae; + } + } + static final String DFA15_eotS = + "\15\uffff"; + static final String DFA15_eofS = + "\15\uffff"; + static final String DFA15_minS = + "\1\41\1\0\13\uffff"; + static final String DFA15_maxS = + "\1\66\1\0\13\uffff"; + static final String DFA15_acceptS = + "\2\uffff\1\1\1\2\6\uffff\1\3\1\4\1\5"; + static final String DFA15_specialS = + "\1\0\1\1\13\uffff}>"; + static final String[] DFA15_transitionS = { + "\1\12\1\13\1\14\1\3\2\uffff\3\3\2\uffff\2\3\2\uffff\4\3\1\1"+ + "\1\uffff\1\2", + "\1\uffff", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + }; + + static final short[] DFA15_eot = DFA.unpackEncodedString(DFA15_eotS); + static final short[] DFA15_eof = DFA.unpackEncodedString(DFA15_eofS); + static final char[] DFA15_min = DFA.unpackEncodedStringToUnsignedChars(DFA15_minS); + static final char[] DFA15_max = DFA.unpackEncodedStringToUnsignedChars(DFA15_maxS); + static final short[] DFA15_accept = DFA.unpackEncodedString(DFA15_acceptS); + static final short[] DFA15_special = DFA.unpackEncodedString(DFA15_specialS); + static final short[][] DFA15_transition; + + static { + int numStates = DFA15_transitionS.length; + DFA15_transition = new short[numStates][]; + for (int i=0; i not ftsFieldGroupTest -> ^( FIELD_NEGATION ftsFieldGroupTest ) | ftsFieldGroupTest -> ^( FIELD_DEFAULT ftsFieldGroupTest ) | PLUS ftsFieldGroupTest -> ^( FIELD_MANDATORY ftsFieldGroupTest ) | BAR ftsFieldGroupTest -> ^( FIELD_OPTIONAL ftsFieldGroupTest ) | MINUS ftsFieldGroupTest -> ^( FIELD_EXCLUDE ftsFieldGroupTest ) );"; + } + public int specialStateTransition(int s, IntStream _input) throws NoViableAltException { + TokenStream input = (TokenStream)_input; + int _s = s; + switch ( s ) { + case 0 : + int LA15_0 = input.LA(1); + + + int index15_0 = input.index(); + input.rewind(); + s = -1; + if ( (LA15_0==NOT) ) {s = 1;} + + else if ( (LA15_0==EXCLAMATION) && (synpred6_FTS())) {s = 2;} + + else if ( (LA15_0==LPAREN||(LA15_0>=EQUALS && LA15_0<=TILDA)||(LA15_0>=TO && LA15_0<=LCURL)||(LA15_0>=ID && LA15_0<=AND)) ) {s = 3;} + + else if ( (LA15_0==PLUS) ) {s = 10;} + + else if ( (LA15_0==BAR) ) {s = 11;} + + else if ( (LA15_0==MINUS) ) {s = 12;} + + + input.seek(index15_0); + if ( s>=0 ) return s; + break; + case 1 : + int LA15_1 = input.LA(1); + + + int index15_1 = input.index(); + input.rewind(); + s = -1; + if ( (synpred6_FTS()) ) {s = 2;} + + else if ( (true) ) {s = 3;} + + + input.seek(index15_1); + if ( s>=0 ) return s; + break; + } + if (state.backtracking>0) {state.failed=true; return -1;} + NoViableAltException nvae = + new NoViableAltException(getDescription(), 15, _s, input); + error(nvae); + throw nvae; + } + } + static final String DFA16_eotS = + "\22\uffff"; + static final String DFA16_eofS = + "\22\uffff"; + static final String DFA16_minS = + "\1\44\1\41\1\uffff\1\41\1\uffff\2\41\5\uffff\5\41\1\uffff"; + static final String DFA16_maxS = + "\1\64\1\66\1\uffff\1\66\1\uffff\2\66\5\uffff\5\66\1\uffff"; + static final String DFA16_acceptS = + "\2\uffff\1\2\1\uffff\1\4\2\uffff\1\6\1\1\1\5\1\3\1\7\5\uffff\1"+ + "\6"; + static final String DFA16_specialS = + "\22\uffff}>"; + static final String[] DFA16_transitionS = { + "\1\6\2\uffff\1\2\1\3\1\4\2\uffff\1\5\1\7\2\uffff\2\1\3\5", + "\5\10\1\uffff\3\10\1\11\1\7\2\10\2\uffff\7\10", + "", + "\5\12\1\uffff\3\12\1\uffff\1\7\2\12\2\uffff\7\12", + "", + "\5\10\1\uffff\3\10\1\11\1\uffff\2\10\2\uffff\7\10", + "\4\13\2\uffff\1\13\1\15\1\13\2\uffff\2\13\2\uffff\2\14\3\13"+ + "\1\uffff\1\13", + "", + "", + "", + "", + "", + "\5\13\1\uffff\5\13\1\16\1\13\2\uffff\7\13", + "\5\13\1\uffff\3\13\1\uffff\1\13\1\16\1\13\2\uffff\7\13", + "\5\13\1\uffff\1\13\1\20\2\13\1\uffff\2\13\2\uffff\2\17\5\13", + "\4\13\1\21\1\uffff\7\13\1\21\1\uffff\7\13", + "\4\13\1\21\1\uffff\3\13\1\uffff\3\13\1\21\1\uffff\7\13", + "" + }; + + static final short[] DFA16_eot = DFA.unpackEncodedString(DFA16_eotS); + static final short[] DFA16_eof = DFA.unpackEncodedString(DFA16_eofS); + static final char[] DFA16_min = DFA.unpackEncodedStringToUnsignedChars(DFA16_minS); + static final char[] DFA16_max = DFA.unpackEncodedStringToUnsignedChars(DFA16_maxS); + static final short[] DFA16_accept = DFA.unpackEncodedString(DFA16_acceptS); + static final short[] DFA16_special = DFA.unpackEncodedString(DFA16_specialS); + static final short[][] DFA16_transition; + + static { + int numStates = DFA16_transitionS.length; + DFA16_transition = new short[numStates][]; + for (int i=0; i ^( FG_TERM ftsFieldGroupTerm ) | ftsFieldGroupExactTerm -> ^( FG_EXACT_TERM ftsFieldGroupExactTerm ) | ftsFieldGroupPhrase -> ^( FG_PHRASE ftsFieldGroupPhrase ) | ftsFieldGroupSynonym -> ^( FG_SYNONYM ftsFieldGroupSynonym ) | ftsFieldGroupProximity -> ^( FG_PROXIMITY ftsFieldGroupProximity ) | ftsFieldGroupRange -> ^( FG_RANGE ftsFieldGroupRange ) | LPAREN ftsFieldGroupImplicitConjunctionOrDisjunction RPAREN -> ftsFieldGroupImplicitConjunctionOrDisjunction );"; } } - public static final BitSet FOLLOW_ftsImplicitConjunctionOrDisjunction_in_fts146 = new BitSet(new long[]{0x0000000000000000L}); - public static final BitSet FOLLOW_EOF_in_fts148 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_ftsExplicitDisjunction_in_ftsImplicitConjunctionOrDisjunction170 = new BitSet(new long[]{0x00000018E6000002L}); - public static final BitSet FOLLOW_ftsExplicitDisjunction_in_ftsImplicitConjunctionOrDisjunction173 = new BitSet(new long[]{0x00000018E6000002L}); - public static final BitSet FOLLOW_ftsExplicitDisjunction_in_ftsImplicitConjunctionOrDisjunction192 = new BitSet(new long[]{0x00000018E6000002L}); - public static final BitSet FOLLOW_ftsExplicitDisjunction_in_ftsImplicitConjunctionOrDisjunction195 = new BitSet(new long[]{0x00000018E6000002L}); - public static final BitSet FOLLOW_ftsExplictConjunction_in_ftsExplicitDisjunction220 = new BitSet(new long[]{0x0000000000800002L}); - public static final BitSet FOLLOW_OR_in_ftsExplicitDisjunction223 = new BitSet(new long[]{0x00000018E6000000L}); - public static final BitSet FOLLOW_ftsExplictConjunction_in_ftsExplicitDisjunction225 = new BitSet(new long[]{0x0000000000800002L}); - public static final BitSet FOLLOW_ftsNot_in_ftsExplictConjunction250 = new BitSet(new long[]{0x0000000001000002L}); - public static final BitSet FOLLOW_AND_in_ftsExplictConjunction253 = new BitSet(new long[]{0x00000018E6000000L}); - public static final BitSet FOLLOW_ftsNot_in_ftsExplictConjunction255 = new BitSet(new long[]{0x0000000001000002L}); - public static final BitSet FOLLOW_MINUS_in_ftsNot285 = new BitSet(new long[]{0x00000018E6000000L}); - public static final BitSet FOLLOW_ftsTest_in_ftsNot287 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_ftsTest_in_ftsNot302 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_ftsTerm_in_ftsTest323 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_ftsExactTerm_in_ftsTest338 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_ftsPhrase_in_ftsTest358 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_ftsSynonym_in_ftsTest384 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_ftsFieldGroupProximity_in_ftsTest408 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_ftsFieldGroupRange_in_ftsTest435 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_ftsFieldGroup_in_ftsTest459 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_LPAREN_in_ftsTest468 = new BitSet(new long[]{0x00000018E6000000L}); - public static final BitSet FOLLOW_ftsImplicitConjunctionOrDisjunction_in_ftsTest470 = new BitSet(new long[]{0x0000000008000000L}); - public static final BitSet FOLLOW_RPAREN_in_ftsTest472 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_columnReference_in_ftsTerm490 = new BitSet(new long[]{0x0000000010000000L}); - public static final BitSet FOLLOW_COLON_in_ftsTerm492 = new BitSet(new long[]{0x0000001800000000L}); - public static final BitSet FOLLOW_ftsWord_in_ftsTerm496 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_PLUS_in_ftsExactTerm517 = new BitSet(new long[]{0x0000001800000000L}); - public static final BitSet FOLLOW_ftsTerm_in_ftsExactTerm519 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_columnReference_in_ftsPhrase540 = new BitSet(new long[]{0x0000000010000000L}); - public static final BitSet FOLLOW_COLON_in_ftsPhrase542 = new BitSet(new long[]{0x0000000040000000L}); - public static final BitSet FOLLOW_FTSPHRASE_in_ftsPhrase546 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_TILDA_in_ftsSynonym567 = new BitSet(new long[]{0x0000001800000000L}); - public static final BitSet FOLLOW_ftsTerm_in_ftsSynonym569 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_columnReference_in_ftsFieldGroup588 = new BitSet(new long[]{0x0000000010000000L}); - public static final BitSet FOLLOW_COLON_in_ftsFieldGroup590 = new BitSet(new long[]{0x0000000004000000L}); - public static final BitSet FOLLOW_LPAREN_in_ftsFieldGroup592 = new BitSet(new long[]{0x00000018E6000000L}); - public static final BitSet FOLLOW_ftsFieldGroupImplicitConjunctionOrDisjunction_in_ftsFieldGroup594 = new BitSet(new long[]{0x0000000008000000L}); - public static final BitSet FOLLOW_RPAREN_in_ftsFieldGroup596 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_ftsFieldGroupExplicitDisjunction_in_ftsFieldGroupImplicitConjunctionOrDisjunction622 = new BitSet(new long[]{0x00000018E6000002L}); - public static final BitSet FOLLOW_ftsFieldGroupExplicitDisjunction_in_ftsFieldGroupImplicitConjunctionOrDisjunction625 = new BitSet(new long[]{0x00000018E6000002L}); - public static final BitSet FOLLOW_ftsFieldGroupExplicitDisjunction_in_ftsFieldGroupImplicitConjunctionOrDisjunction643 = new BitSet(new long[]{0x00000018E6000002L}); - public static final BitSet FOLLOW_ftsFieldGroupExplicitDisjunction_in_ftsFieldGroupImplicitConjunctionOrDisjunction646 = new BitSet(new long[]{0x00000018E6000002L}); - public static final BitSet FOLLOW_ftsFieldGroupExplictConjunction_in_ftsFieldGroupExplicitDisjunction671 = new BitSet(new long[]{0x0000000000800002L}); - public static final BitSet FOLLOW_OR_in_ftsFieldGroupExplicitDisjunction674 = new BitSet(new long[]{0x00000018E6000000L}); - public static final BitSet FOLLOW_ftsFieldGroupExplictConjunction_in_ftsFieldGroupExplicitDisjunction676 = new BitSet(new long[]{0x0000000000800002L}); - public static final BitSet FOLLOW_ftsFieldGroupNot_in_ftsFieldGroupExplictConjunction701 = new BitSet(new long[]{0x0000000001000002L}); - public static final BitSet FOLLOW_AND_in_ftsFieldGroupExplictConjunction704 = new BitSet(new long[]{0x00000018E6000000L}); - public static final BitSet FOLLOW_ftsFieldGroupNot_in_ftsFieldGroupExplictConjunction706 = new BitSet(new long[]{0x0000000001000002L}); - public static final BitSet FOLLOW_MINUS_in_ftsFieldGroupNot733 = new BitSet(new long[]{0x00000018E6000000L}); - public static final BitSet FOLLOW_ftsFieldGroupTest_in_ftsFieldGroupNot735 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_ftsFieldGroupTest_in_ftsFieldGroupNot750 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_ftsFieldGroupTerm_in_ftsFieldGroupTest769 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_ftsFieldGroupExactTerm_in_ftsFieldGroupTest784 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_ftsFieldGroupPhrase_in_ftsFieldGroupTest800 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_ftsFieldGroupSynonym_in_ftsFieldGroupTest815 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_ftsFieldGroupProximity_in_ftsFieldGroupTest832 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_ftsFieldGroupRange_in_ftsFieldGroupTest853 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_LPAREN_in_ftsFieldGroupTest874 = new BitSet(new long[]{0x00000018E6000000L}); - public static final BitSet FOLLOW_ftsFieldGroupImplicitConjunctionOrDisjunction_in_ftsFieldGroupTest876 = new BitSet(new long[]{0x0000000008000000L}); - public static final BitSet FOLLOW_RPAREN_in_ftsFieldGroupTest878 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_ftsWord_in_ftsFieldGroupTerm896 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_PLUS_in_ftsFieldGroupExactTerm908 = new BitSet(new long[]{0x0000001800000000L}); - public static final BitSet FOLLOW_ftsFieldGroupTerm_in_ftsFieldGroupExactTerm910 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_FTSPHRASE_in_ftsFieldGroupPhrase930 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_TILDA_in_ftsFieldGroupSynonym942 = new BitSet(new long[]{0x0000001800000000L}); - public static final BitSet FOLLOW_ftsFieldGroupTerm_in_ftsFieldGroupSynonym944 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_ftsFieldGroupTerm_in_ftsFieldGroupProximity962 = new BitSet(new long[]{0x0000000100000000L}); - public static final BitSet FOLLOW_STAR_in_ftsFieldGroupProximity964 = new BitSet(new long[]{0x0000001800000000L}); - public static final BitSet FOLLOW_ftsFieldGroupTerm_in_ftsFieldGroupProximity966 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_ftsFieldGroupTerm_in_ftsFieldGroupRange984 = new BitSet(new long[]{0x0000000200000000L}); - public static final BitSet FOLLOW_DOTDOT_in_ftsFieldGroupRange986 = new BitSet(new long[]{0x0000001800000000L}); - public static final BitSet FOLLOW_ftsFieldGroupTerm_in_ftsFieldGroupRange988 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_identifier_in_columnReference1012 = new BitSet(new long[]{0x0000000400000000L}); - public static final BitSet FOLLOW_DOT_in_columnReference1014 = new BitSet(new long[]{0x0000000800000000L}); - public static final BitSet FOLLOW_identifier_in_columnReference1021 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_ID_in_identifier1049 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_ftsImplicitConjunctionOrDisjunction_in_ftsQuery190 = new BitSet(new long[]{0x0000000000000000L}); + public static final BitSet FOLLOW_EOF_in_ftsQuery192 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_ftsExplicitDisjunction_in_ftsImplicitConjunctionOrDisjunction214 = new BitSet(new long[]{0x005F339E00000002L}); + public static final BitSet FOLLOW_ftsExplicitDisjunction_in_ftsImplicitConjunctionOrDisjunction217 = new BitSet(new long[]{0x005F339E00000002L}); + public static final BitSet FOLLOW_ftsExplicitDisjunction_in_ftsImplicitConjunctionOrDisjunction236 = new BitSet(new long[]{0x005F339E00000002L}); + public static final BitSet FOLLOW_ftsExplicitDisjunction_in_ftsImplicitConjunctionOrDisjunction239 = new BitSet(new long[]{0x005F339E00000002L}); + public static final BitSet FOLLOW_ftsExplictConjunction_in_ftsExplicitDisjunction264 = new BitSet(new long[]{0x0004000400000002L}); + public static final BitSet FOLLOW_or_in_ftsExplicitDisjunction273 = new BitSet(new long[]{0x005F339E00000000L}); + public static final BitSet FOLLOW_ftsExplictConjunction_in_ftsExplicitDisjunction275 = new BitSet(new long[]{0x0004000400000002L}); + public static final BitSet FOLLOW_ftsPrefixed_in_ftsExplictConjunction300 = new BitSet(new long[]{0x0028000000000002L}); + public static final BitSet FOLLOW_and_in_ftsExplictConjunction309 = new BitSet(new long[]{0x005F339E00000000L}); + public static final BitSet FOLLOW_ftsPrefixed_in_ftsExplictConjunction311 = new BitSet(new long[]{0x0028000000000002L}); + public static final BitSet FOLLOW_not_in_ftsPrefixed349 = new BitSet(new long[]{0x001F339000000000L}); + public static final BitSet FOLLOW_ftsTest_in_ftsPrefixed351 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_ftsTest_in_ftsPrefixed369 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_PLUS_in_ftsPrefixed389 = new BitSet(new long[]{0x001F339000000000L}); + public static final BitSet FOLLOW_ftsTest_in_ftsPrefixed391 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_BAR_in_ftsPrefixed425 = new BitSet(new long[]{0x001F339000000000L}); + public static final BitSet FOLLOW_ftsTest_in_ftsPrefixed427 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_MINUS_in_ftsPrefixed461 = new BitSet(new long[]{0x001F339000000000L}); + public static final BitSet FOLLOW_ftsTest_in_ftsPrefixed463 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_ftsTerm_in_ftsTest505 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_ftsExactTerm_in_ftsTest520 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_ftsPhrase_in_ftsTest540 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_ftsSynonym_in_ftsTest566 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_ftsFieldGroupProximity_in_ftsTest590 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_ftsFieldGroupRange_in_ftsTest617 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_ftsFieldGroup_in_ftsTest641 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_LPAREN_in_ftsTest650 = new BitSet(new long[]{0x005F339E00000000L}); + public static final BitSet FOLLOW_ftsImplicitConjunctionOrDisjunction_in_ftsTest652 = new BitSet(new long[]{0x0000002000000000L}); + public static final BitSet FOLLOW_RPAREN_in_ftsTest654 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_columnReference_in_ftsTerm672 = new BitSet(new long[]{0x0000004000000000L}); + public static final BitSet FOLLOW_COLON_in_ftsTerm674 = new BitSet(new long[]{0x001F100000000000L}); + public static final BitSet FOLLOW_ftsWord_in_ftsTerm678 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_EQUALS_in_ftsExactTerm699 = new BitSet(new long[]{0x001F100000000000L}); + public static final BitSet FOLLOW_ftsTerm_in_ftsExactTerm701 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_columnReference_in_ftsPhrase722 = new BitSet(new long[]{0x0000004000000000L}); + public static final BitSet FOLLOW_COLON_in_ftsPhrase724 = new BitSet(new long[]{0x0000010000000000L}); + public static final BitSet FOLLOW_FTSPHRASE_in_ftsPhrase728 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_TILDA_in_ftsSynonym749 = new BitSet(new long[]{0x001F100000000000L}); + public static final BitSet FOLLOW_ftsTerm_in_ftsSynonym751 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_columnReference_in_ftsFieldGroup770 = new BitSet(new long[]{0x0000004000000000L}); + public static final BitSet FOLLOW_COLON_in_ftsFieldGroup772 = new BitSet(new long[]{0x0000001000000000L}); + public static final BitSet FOLLOW_LPAREN_in_ftsFieldGroup774 = new BitSet(new long[]{0x005F339E00000000L}); + public static final BitSet FOLLOW_ftsFieldGroupImplicitConjunctionOrDisjunction_in_ftsFieldGroup776 = new BitSet(new long[]{0x0000002000000000L}); + public static final BitSet FOLLOW_RPAREN_in_ftsFieldGroup778 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_ftsFieldGroupExplicitDisjunction_in_ftsFieldGroupImplicitConjunctionOrDisjunction804 = new BitSet(new long[]{0x005F339E00000002L}); + public static final BitSet FOLLOW_ftsFieldGroupExplicitDisjunction_in_ftsFieldGroupImplicitConjunctionOrDisjunction807 = new BitSet(new long[]{0x005F339E00000002L}); + public static final BitSet FOLLOW_ftsFieldGroupExplicitDisjunction_in_ftsFieldGroupImplicitConjunctionOrDisjunction825 = new BitSet(new long[]{0x005F339E00000002L}); + public static final BitSet FOLLOW_ftsFieldGroupExplicitDisjunction_in_ftsFieldGroupImplicitConjunctionOrDisjunction828 = new BitSet(new long[]{0x005F339E00000002L}); + public static final BitSet FOLLOW_ftsFieldGroupExplictConjunction_in_ftsFieldGroupExplicitDisjunction853 = new BitSet(new long[]{0x0004000400000002L}); + public static final BitSet FOLLOW_or_in_ftsFieldGroupExplicitDisjunction862 = new BitSet(new long[]{0x005F339E00000000L}); + public static final BitSet FOLLOW_ftsFieldGroupExplictConjunction_in_ftsFieldGroupExplicitDisjunction864 = new BitSet(new long[]{0x0004000400000002L}); + public static final BitSet FOLLOW_ftsFieldGroupPrefixed_in_ftsFieldGroupExplictConjunction889 = new BitSet(new long[]{0x0028000000000002L}); + public static final BitSet FOLLOW_and_in_ftsFieldGroupExplictConjunction898 = new BitSet(new long[]{0x005F339E00000000L}); + public static final BitSet FOLLOW_ftsFieldGroupPrefixed_in_ftsFieldGroupExplictConjunction900 = new BitSet(new long[]{0x0028000000000002L}); + public static final BitSet FOLLOW_not_in_ftsFieldGroupPrefixed934 = new BitSet(new long[]{0x001F339000000000L}); + public static final BitSet FOLLOW_ftsFieldGroupTest_in_ftsFieldGroupPrefixed936 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_ftsFieldGroupTest_in_ftsFieldGroupPrefixed954 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_PLUS_in_ftsFieldGroupPrefixed974 = new BitSet(new long[]{0x001F339000000000L}); + public static final BitSet FOLLOW_ftsFieldGroupTest_in_ftsFieldGroupPrefixed976 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_BAR_in_ftsFieldGroupPrefixed1010 = new BitSet(new long[]{0x001F339000000000L}); + public static final BitSet FOLLOW_ftsFieldGroupTest_in_ftsFieldGroupPrefixed1012 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_MINUS_in_ftsFieldGroupPrefixed1046 = new BitSet(new long[]{0x001F339000000000L}); + public static final BitSet FOLLOW_ftsFieldGroupTest_in_ftsFieldGroupPrefixed1048 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_ftsFieldGroupTerm_in_ftsFieldGroupTest1087 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_ftsFieldGroupExactTerm_in_ftsFieldGroupTest1102 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_ftsFieldGroupPhrase_in_ftsFieldGroupTest1118 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_ftsFieldGroupSynonym_in_ftsFieldGroupTest1133 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_ftsFieldGroupProximity_in_ftsFieldGroupTest1150 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_ftsFieldGroupRange_in_ftsFieldGroupTest1171 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_LPAREN_in_ftsFieldGroupTest1192 = new BitSet(new long[]{0x005F339E00000000L}); + public static final BitSet FOLLOW_ftsFieldGroupImplicitConjunctionOrDisjunction_in_ftsFieldGroupTest1194 = new BitSet(new long[]{0x0000002000000000L}); + public static final BitSet FOLLOW_RPAREN_in_ftsFieldGroupTest1196 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_ftsWord_in_ftsFieldGroupTerm1214 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_EQUALS_in_ftsFieldGroupExactTerm1226 = new BitSet(new long[]{0x001F100000000000L}); + public static final BitSet FOLLOW_ftsFieldGroupTerm_in_ftsFieldGroupExactTerm1228 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_FTSPHRASE_in_ftsFieldGroupPhrase1248 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_TILDA_in_ftsFieldGroupSynonym1260 = new BitSet(new long[]{0x001F100000000000L}); + public static final BitSet FOLLOW_ftsFieldGroupTerm_in_ftsFieldGroupSynonym1262 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_ftsFieldGroupTerm_in_ftsFieldGroupProximity1280 = new BitSet(new long[]{0x0000040000000000L}); + public static final BitSet FOLLOW_STAR_in_ftsFieldGroupProximity1282 = new BitSet(new long[]{0x001F100000000000L}); + public static final BitSet FOLLOW_ftsFieldGroupTerm_in_ftsFieldGroupProximity1284 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_ftsRangeWord_in_ftsFieldGroupRange1311 = new BitSet(new long[]{0x0000080000000000L}); + public static final BitSet FOLLOW_DOTDOT_in_ftsFieldGroupRange1313 = new BitSet(new long[]{0x0003010000000000L}); + public static final BitSet FOLLOW_ftsRangeWord_in_ftsFieldGroupRange1315 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_range_left_in_ftsFieldGroupRange1332 = new BitSet(new long[]{0x0003010000000000L}); + public static final BitSet FOLLOW_ftsRangeWord_in_ftsFieldGroupRange1334 = new BitSet(new long[]{0x0000100000000000L}); + public static final BitSet FOLLOW_TO_in_ftsFieldGroupRange1336 = new BitSet(new long[]{0x0003010000000000L}); + public static final BitSet FOLLOW_ftsRangeWord_in_ftsFieldGroupRange1338 = new BitSet(new long[]{0x0000402000000000L}); + public static final BitSet FOLLOW_range_right_in_ftsFieldGroupRange1340 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_LPAREN_in_range_left1370 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_LCURL_in_range_left1381 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_RPAREN_in_range_right1405 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_RCURL_in_range_right1416 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_identifier_in_columnReference1441 = new BitSet(new long[]{0x0000800000000000L}); + public static final BitSet FOLLOW_DOT_in_columnReference1443 = new BitSet(new long[]{0x0001000000000000L}); + public static final BitSet FOLLOW_identifier_in_columnReference1450 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_ID_in_identifier1478 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_set_in_ftsWord0 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_set_in_ftsRangeWord0 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_OR_in_or1608 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_BAR_in_or1616 = new BitSet(new long[]{0x0000000400000000L}); + public static final BitSet FOLLOW_BAR_in_or1618 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_AND_in_and1640 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_AMP_in_and1648 = new BitSet(new long[]{0x0020000000000000L}); + public static final BitSet FOLLOW_AMP_in_and1650 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_set_in_not0 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_or_in_synpred1_FTS268 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_and_in_synpred2_FTS304 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_not_in_synpred3_FTS344 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_or_in_synpred4_FTS857 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_and_in_synpred5_FTS893 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_not_in_synpred6_FTS929 = new BitSet(new long[]{0x0000000000000002L}); } \ No newline at end of file diff --git a/source/java/org/alfresco/repo/search/impl/parsers/FTSQueryException.java b/source/java/org/alfresco/repo/search/impl/parsers/FTSQueryException.java new file mode 100644 index 0000000000..c22721ca93 --- /dev/null +++ b/source/java/org/alfresco/repo/search/impl/parsers/FTSQueryException.java @@ -0,0 +1,56 @@ +/* + * Copyright (C) 2005-2007 Alfresco Software Limited. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + + * As a special exception to the terms and conditions of version 2.0 of + * the GPL, you may redistribute this Program in connection with Free/Libre + * and Open Source Software ("FLOSS") applications as described in Alfresco's + * FLOSS exception. You should have recieved a copy of the text describing + * the FLOSS exception, and it is also available here: + * http://www.alfresco.com/legal/licensing" + */ +package org.alfresco.repo.search.impl.parsers; + +import org.alfresco.error.AlfrescoRuntimeException; + +public class FTSQueryException extends AlfrescoRuntimeException +{ + + public FTSQueryException(String msgId, Object[] msgParams, Throwable cause) + { + super(msgId, msgParams, cause); + // TODO Auto-generated constructor stub + } + + public FTSQueryException(String msgId, Object[] msgParams) + { + super(msgId, msgParams); + // TODO Auto-generated constructor stub + } + + public FTSQueryException(String msgId, Throwable cause) + { + super(msgId, cause); + // TODO Auto-generated constructor stub + } + + public FTSQueryException(String msgId) + { + super(msgId); + // TODO Auto-generated constructor stub + } + +} diff --git a/source/java/org/alfresco/repo/search/impl/parsers/FTSQueryParser.java b/source/java/org/alfresco/repo/search/impl/parsers/FTSQueryParser.java new file mode 100644 index 0000000000..4da7db8768 --- /dev/null +++ b/source/java/org/alfresco/repo/search/impl/parsers/FTSQueryParser.java @@ -0,0 +1,286 @@ +/* + * Copyright (C) 2005-2007 Alfresco Software Limited. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + + * As a special exception to the terms and conditions of version 2.0 of + * the GPL, you may redistribute this Program in connection with Free/Libre + * and Open Source Software ("FLOSS") applications as described in Alfresco's + * FLOSS exception. You should have recieved a copy of the text describing + * the FLOSS exception, and it is also available here: + * http://www.alfresco.com/legal/licensing" + */ +package org.alfresco.repo.search.impl.parsers; + +import java.util.ArrayList; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +import org.alfresco.cmis.CMISDictionaryService; +import org.alfresco.cmis.CMISPropertyDefinition; +import org.alfresco.repo.search.impl.querymodel.Argument; +import org.alfresco.repo.search.impl.querymodel.Column; +import org.alfresco.repo.search.impl.querymodel.Constraint; +import org.alfresco.repo.search.impl.querymodel.Function; +import org.alfresco.repo.search.impl.querymodel.LiteralArgument; +import org.alfresco.repo.search.impl.querymodel.PropertyArgument; +import org.alfresco.repo.search.impl.querymodel.QueryModelFactory; +import org.alfresco.repo.search.impl.querymodel.Selector; +import org.alfresco.repo.search.impl.querymodel.impl.functions.FTSExactTerm; +import org.alfresco.repo.search.impl.querymodel.impl.functions.FTSPhrase; +import org.alfresco.repo.search.impl.querymodel.impl.functions.FTSTerm; +import org.alfresco.service.cmr.dictionary.DataTypeDefinition; +import org.antlr.runtime.ANTLRStringStream; +import org.antlr.runtime.CharStream; +import org.antlr.runtime.CommonTokenStream; +import org.antlr.runtime.RecognitionException; +import org.antlr.runtime.tree.CommonTree; + +public class FTSQueryParser +{ + private CMISDictionaryService cmisDictionaryService; + + public FTSQueryParser(CMISDictionaryService cmisDictionaryService) + { + this.cmisDictionaryService = cmisDictionaryService; + } + + public Constraint buildFTS(String ftsExpression, QueryModelFactory factory, Map selectors, ArrayList columns) + { + // TODO: transform '' to ' to reverse encoding + FTSParser parser = null; + try + { + CharStream cs = new ANTLRStringStream(ftsExpression); + FTSLexer lexer = new FTSLexer(cs); + CommonTokenStream tokens = new CommonTokenStream(lexer); + parser = new FTSParser(tokens); + CommonTree ftsNode = (CommonTree) parser.ftsQuery().getTree(); + if (ftsNode.getType() == FTSParser.CONJUNCTION) + { + return buildFTSConjunction(ftsNode, factory, selectors, columns); + } + else + { + return buildFTSDisjunction(ftsNode, factory, selectors, columns); + } + } + catch (RecognitionException e) + { + if (parser != null) + { + String[] tokenNames = parser.getTokenNames(); + String hdr = parser.getErrorHeader(e); + String msg = parser.getErrorMessage(e, tokenNames); + throw new FTSQueryException(hdr + "\n" + msg, e); + } + return null; + } + + } + + private Constraint buildFTSDisjunction(CommonTree orNode, QueryModelFactory factory, Map selectors, ArrayList columns) + { + if (orNode.getType() != FTSParser.DISJUNCTION) + { + throw new FTSQueryException("Not disjunction " + orNode.getText()); + } + List constraints = new ArrayList(orNode.getChildCount()); + for (int i = 0; i < orNode.getChildCount(); i++) + { + CommonTree subNode = (CommonTree) orNode.getChild(i); + Constraint constraint; + switch (subNode.getType()) + { + case FTSParser.DISJUNCTION: + constraint = buildFTSDisjunction(subNode, factory, selectors, columns); + break; + case FTSParser.CONJUNCTION: + constraint = buildFTSConjunction(subNode, factory, selectors, columns); + break; + case FTSParser.NEGATION: + constraint = buildFTSTest(subNode, factory, selectors, columns); + constraint = factory.createNegation(constraint); + break; + case FTSParser.DEFAULT: + CommonTree testNode = (CommonTree) subNode.getChild(0); + constraint = buildFTSTest(testNode, factory, selectors, columns); + break; + default: + throw new FTSQueryException("Unsupported FTS option " + subNode.getText()); + } + constraints.add(constraint); + } + if (constraints.size() == 1) + { + return constraints.get(0); + } + else + { + return factory.createDisjunction(constraints); + } + } + + private Constraint buildFTSConjunction(CommonTree andNode, QueryModelFactory factory, Map selectors, ArrayList columns) + { + if (andNode.getType() != FTSParser.CONJUNCTION) + { + throw new FTSQueryException("Not conjunction ..." + andNode.getText()); + } + List constraints = new ArrayList(andNode.getChildCount()); + for (int i = 0; i < andNode.getChildCount(); i++) + { + CommonTree subNode = (CommonTree) andNode.getChild(i); + Constraint constraint; + switch (subNode.getType()) + { + case FTSParser.DISJUNCTION: + constraint = buildFTSDisjunction(subNode, factory, selectors, columns); + break; + case FTSParser.CONJUNCTION: + constraint = buildFTSConjunction(subNode, factory, selectors, columns); + break; + case FTSParser.NEGATION: + constraint = buildFTSTest(subNode, factory, selectors, columns); + constraint = factory.createNegation(constraint); + break; + case FTSParser.DEFAULT: + CommonTree testNode = (CommonTree) subNode.getChild(0); + constraint = buildFTSTest(testNode, factory, selectors, columns); + break; + default: + throw new FTSQueryException("Unsupported FTS option " + subNode.getText()); + } + constraints.add(constraint); + } + if (constraints.size() == 1) + { + return constraints.get(0); + } + else + { + return factory.createConjunction(constraints); + } + } + + private Constraint buildFTSNegation(CommonTree notNode, QueryModelFactory factory, Map selectors, ArrayList columns) + { + switch (notNode.getType()) + { + case FTSParser.NEGATION: + Constraint constraint = buildFTSTest(notNode, factory, selectors, columns); + return factory.createNegation(constraint); + case FTSParser.DEFAULT: + CommonTree testNode = (CommonTree) notNode.getChild(0); + return buildFTSTest(testNode, factory, selectors, columns); + default: + throw new FTSQueryException("Unsupported FTS option " + notNode.getText()); + } + + } + + private Constraint buildFTSTest(CommonTree testNode, QueryModelFactory factory, Map selectors, ArrayList columns) + { + String functionName; + Function function; + Map functionArguments; + LiteralArgument larg; + PropertyArgument parg; + switch (testNode.getType()) + { + case FTSParser.DISJUNCTION: + return buildFTSDisjunction(testNode, factory, selectors, columns); + case FTSParser.CONJUNCTION: + return buildFTSConjunction(testNode, factory, selectors, columns); + case FTSParser.TERM: + functionName = FTSTerm.NAME; + function = factory.getFunction(functionName); + functionArguments = new LinkedHashMap(); + larg = factory.createLiteralArgument(FTSTerm.ARG_TERM, DataTypeDefinition.TEXT, testNode.getChild(0).getText()); + functionArguments.put(larg.getName(), larg); + if (testNode.getChildCount() > 1) + { + parg = buildColumnReference(FTSTerm.ARG_PROPERTY, (CommonTree) testNode.getChild(1), factory); + if (!selectors.containsKey(parg.getSelector())) + { + throw new FTSQueryException("No table with alias " + parg.getSelector()); + } + functionArguments.put(parg.getName(), parg); + } + return factory.createFunctionalConstraint(function, functionArguments); + case FTSParser.EXACT_TERM: + functionName = FTSExactTerm.NAME; + function = factory.getFunction(functionName); + functionArguments = new LinkedHashMap(); + larg = factory.createLiteralArgument(FTSExactTerm.ARG_TERM, DataTypeDefinition.TEXT, testNode.getChild(0).getText()); + functionArguments.put(larg.getName(), larg); + if (testNode.getChildCount() > 1) + { + parg = buildColumnReference(FTSExactTerm.ARG_PROPERTY, (CommonTree) testNode.getChild(1), factory); + if (!selectors.containsKey(parg.getSelector())) + { + throw new FTSQueryException("No table with alias " + parg.getSelector()); + } + functionArguments.put(parg.getName(), parg); + } + return factory.createFunctionalConstraint(function, functionArguments); + case FTSParser.PHRASE: + // TODO: transform "" to " to reverse escaping + functionName = FTSPhrase.NAME; + function = factory.getFunction(functionName); + functionArguments = new LinkedHashMap(); + larg = factory.createLiteralArgument(FTSPhrase.ARG_PHRASE, DataTypeDefinition.TEXT, testNode.getChild(0).getText()); + functionArguments.put(larg.getName(), larg); + if (testNode.getChildCount() > 1) + { + parg = buildColumnReference(FTSPhrase.ARG_PROPERTY, (CommonTree) testNode.getChild(1), factory); + if (!selectors.containsKey(parg.getSelector())) + { + throw new FTSQueryException("No table with alias " + parg.getSelector()); + } + functionArguments.put(parg.getName(), parg); + } + return factory.createFunctionalConstraint(function, functionArguments); + case FTSParser.SYNONYM: + case FTSParser.FG_PROXIMITY: + case FTSParser.FG_RANGE: + case FTSParser.FIELD_GROUP: + case FTSParser.FIELD_CONJUNCTION: + case FTSParser.FIELD_DISJUNCTION: + default: + throw new FTSQueryException("Unsupported FTS option " + testNode.getText()); + } + } + + private Constraint buildFTSDefault(CommonTree testNode, QueryModelFactory factory, Map selectors, ArrayList columns) + { + // TODO Auto-generated method stub + return null; + } + + public PropertyArgument buildColumnReference(String argumentName, CommonTree columnReferenceNode, QueryModelFactory factory) + { + String cmisPropertyName = columnReferenceNode.getChild(0).getText(); + String qualifer = ""; + if (columnReferenceNode.getChildCount() > 1) + { + qualifer = columnReferenceNode.getChild(1).getText(); + } + CMISPropertyDefinition propDef = cmisDictionaryService.findProperty(cmisPropertyName, null); + return factory.createPropertyArgument(argumentName, propDef.isQueryable(), propDef.isOrderable(), qualifer, propDef.getPropertyId().getQName()); + } + +} diff --git a/source/java/org/alfresco/repo/search/impl/parsers/fts_test.gunit b/source/java/org/alfresco/repo/search/impl/parsers/fts_test.gunit index d466641068..e27964ccb4 100644 --- a/source/java/org/alfresco/repo/search/impl/parsers/fts_test.gunit +++ b/source/java/org/alfresco/repo/search/impl/parsers/fts_test.gunit @@ -6,11 +6,229 @@ gunit FTS; /** Parser */ +ftsQuery: +"\"zebra\"" OK + +ftsTest: +"zebra" -> (TERM zebra) +"\"zebra\"" -> (PHRASE "zebra") +"or" -> (TERM or) +"\\+" -> (TERM \+) +"+" FAIL + +ftsPhrase: +"\"zebra\"" -> "\"zebra\"" + +columnReference: + + identifier: "banana" OK +ftsWord: +"OR" -> "OR" +"and" -> "and" +"nOT" -> "nOT" +"TO" -> "TO" +"banana" -> "banana" +"1234" -> "1234" + +ftsRangeWord: +"banana" -> "banana" +"1234" -> "1234" +"\"phrase\"" -> "\"phrase\"" + +or: +"OR" OK +"or" OK +"||" OK +"|" FAIL + +and: +"AND" OK +"and" OK +"&&" OK +"&" FAIL + + +not: +"NOT" OK +"not" OK +"!" OK + /** Lexer */ +FTSPHRASE: +"nope" FAIL +"\"\"" OK +"\"\\\"" FAIL +"\"\"\"" FAIL +"\"\\u\"" OK +"\"\phrase\"" OK + +OR: +"OR" OK +"Or" OK +"oR" OK +"or" OK + +AND: +"AND" OK +"ANd" OK +"AnD" OK +"And" OK +"aND" OK +"aNd" OK +"anD" OK +"and" OK + +NOT: +"NOT" OK +"NOt" OK +"NoT" OK +"Not" OK +"nOT" OK +"nOt" OK +"noT" OK +"not" OK + + +TILDA: +"~" OK + +LPAREN: +"(" OK + +RPAREN: +")" OK + +PLUS: +"+" OK + +MINUS: +"-" OK + +COLON: +":" OK + +STAR: +"*" OK + +DOTDOT: +".." OK + +DOT: +"." OK + +AMP: +"&" OK + +EXCLAMATION: +"!" OK + +BAR: +"|" OK + +EQUALS: +"=" OK + +QUESTION_MARK: +"?" OK + +LCURL: +"{" OK + +RCURL: +"}" OK + +LSQUARE: +"[" OK + +RSQUARE: +"]" OK + +TO: +"TO" OK +"To" OK +"tO" OK +"to" OK + + +COMMA: +"," OK + +CARAT: +"^" OK + +DOLLAR: +"$" OK + ID : "banana" OK +"" FAIL +"a" OK +"_" OK +"$" FAIL +"_$" OK +"#" FAIL +"_#" OK +"1" FAIL +"A1" OK +"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" OK + + +FTSWORD: +"word" OK +"\\u0" FAIL +"\\u00" FAIL +"\\u000" FAIL +"\\u0000" OK +"\\u1234" OK +"\\u5678" OK +"\\u90AB" OK +"\\uCDEF" OK +"\\u90ab" OK +"\\ucdef" OK +"\\u000h" FAIL +"\\u000H" FAIL +"\\u" OK +"\\~" OK +"\\(" OK +"\\)" OK +"\\+" OK +"\\-" OK +"\\:" OK +"\\*" OK +"\\." OK +"\\&" OK +"\\!" OK +"\\|" OK +"\\=" OK +"\\?" OK +"\\{" OK +"\\}" OK +"\\[" OK +"\\]" OK +"\\," OK +"\\^" OK +"\\$" OK +"\\\\" OK +"@" FAIL // 40 invalid +"A" OK +"Z" OK +"[" FAIL +"`" FAIL +"a" OK +"z" OK +"{" FAIL +"×" FAIL +"Ø" OK +"÷" FAIL +"ə" FAIL + + + + + +