// $ANTLR 3.3 Nov 30, 2010 12:45:30 src\\main\\antlr\\XPathEnhancer.g 2011-06-19 16:21:01
/*
Based on the XPath 1.0 (http://www.w3.org/TR/1999/REC-xpath-19991116) grammar by Jan-Willem van den Broek,
version 1.0, downloaded on 2011-06-18 from http://blog.jwbroek.com/2010/07/antlr-grammar-for-parsing-xpath-10.html
*/
package org.docx4j.model.datastorage;
import java.util.HashMap;
import org.antlr.runtime.ANTLRStringStream;
import org.antlr.runtime.BitSet;
import org.antlr.runtime.MismatchedSetException;
import org.antlr.runtime.NoViableAltException;
import org.antlr.runtime.Parser;
import org.antlr.runtime.ParserRuleReturnScope;
import org.antlr.runtime.RecognitionException;
import org.antlr.runtime.RecognizerSharedState;
import org.antlr.runtime.Token;
import org.antlr.runtime.TokenRewriteStream;
import org.antlr.runtime.TokenStream;
import org.antlr.stringtemplate.StringTemplate;
import org.antlr.stringtemplate.StringTemplateGroup;
import org.antlr.stringtemplate.language.AngleBracketTemplateLexer;
public class XPathEnhancerParser extends Parser {
public static final String[] tokenNames = new String[] {
"<invalid>", "<EOR>", "<DOWN>", "<UP>", "PATHSEP", "ABRPATH", "LPAR", "RPAR", "LBRAC", "RBRAC", "MINUS", "PLUS", "DOT", "MUL", "DOTDOT", "AT", "COMMA", "PIPE", "LESS", "MORE", "LE", "GE", "COLON", "CC", "APOS", "QUOT", "AxisName", "NodeType", "Literal", "Number", "NCName", "Digits", "Whitespace", "NCNameStartChar", "NCNameChar", "PermittedHighSurrogateChar", "LowSurrogateChar", "'processing-instruction'", "'or'", "'and'", "'='", "'!='", "'div'", "'mod'", "'$'"
};
public static final int EOF=-1;
public static final int T__37=37;
public static final int T__38=38;
public static final int T__39=39;
public static final int T__40=40;
public static final int T__41=41;
public static final int T__42=42;
public static final int T__43=43;
public static final int T__44=44;
public static final int PATHSEP=4;
public static final int ABRPATH=5;
public static final int LPAR=6;
public static final int RPAR=7;
public static final int LBRAC=8;
public static final int RBRAC=9;
public static final int MINUS=10;
public static final int PLUS=11;
public static final int DOT=12;
public static final int MUL=13;
public static final int DOTDOT=14;
public static final int AT=15;
public static final int COMMA=16;
public static final int PIPE=17;
public static final int LESS=18;
public static final int MORE=19;
public static final int LE=20;
public static final int GE=21;
public static final int COLON=22;
public static final int CC=23;
public static final int APOS=24;
public static final int QUOT=25;
public static final int AxisName=26;
public static final int NodeType=27;
public static final int Literal=28;
public static final int Number=29;
public static final int NCName=30;
public static final int Digits=31;
public static final int Whitespace=32;
public static final int NCNameStartChar=33;
public static final int NCNameChar=34;
public static final int PermittedHighSurrogateChar=35;
public static final int LowSurrogateChar=36;
// delegates
// delegators
public XPathEnhancerParser(TokenStream input) {
this(input, new RecognizerSharedState());
}
public XPathEnhancerParser(TokenStream input, RecognizerSharedState state) {
super(input, state);
}
protected StringTemplateGroup templateLib =
new StringTemplateGroup("XPathEnhancerParserTemplates", AngleBracketTemplateLexer.class);
public void setTemplateLib(StringTemplateGroup templateLib) {
this.templateLib = templateLib;
}
public StringTemplateGroup getTemplateLib() {
return templateLib;
}
/** allows convenient multi-value initialization:
* "new STAttrMap().put(...).put(...)"
*/
@SuppressWarnings("unchecked")
public static class STAttrMap extends HashMap {
public STAttrMap put(String attrName, Object value) {
super.put(attrName, value);
return this;
}
public STAttrMap put(String attrName, int value) {
super.put(attrName, new Integer(value));
return this;
}
}
public String[] getTokenNames() { return XPathEnhancerParser.tokenNames; }
public String getGrammarFileName() { return "src\\main\\antlr\\XPathEnhancer.g"; }
private String index;
private String prefix;
private int prefixLength;
public static String enhanceXPath(final String prefix, final int index, final String xpath) {
final ANTLRStringStream stringStream = new ANTLRStringStream(xpath);
final XPathEnhancerLexer xl = new XPathEnhancerLexer(stringStream);
final TokenRewriteStream trs = new TokenRewriteStream(xl);
final XPathEnhancerParser xp = new XPathEnhancerParser(trs, index, prefix);
try {
xp.main();
} catch (RecognitionException e) {
throw new IllegalArgumentException(xpath + " is no valid XPath expression", e);
}
final String enhanced = trs.toString();
return enhanced;
}
public XPathEnhancerParser(TokenStream input, final int index, final String prefix) {
this(input);
this.index = "" + index;
this.prefix = prefix;
this.prefixLength = prefix.length();
}
private boolean sharesPrefix(final String path) {
return path != null && path.startsWith(prefix);
}
private String remainingSuffix(final String path) {
if (path == null || path.length() < prefixLength) {
return null;
} else {
return path.substring(prefixLength);
}
}
public static class main_return extends ParserRuleReturnScope {
public StringTemplate st;
public Object getTemplate() { return st; }
public String toString() { return st==null?null:st.toString(); }
};
// $ANTLR start "main"
// src\\main\\antlr\\XPathEnhancer.g:87:1: main : expr ;
public final XPathEnhancerParser.main_return main() throws RecognitionException {
XPathEnhancerParser.main_return retval = new XPathEnhancerParser.main_return();
retval.start = input.LT(1);
try {
// src\\main\\antlr\\XPathEnhancer.g:88:3: ( expr )
// src\\main\\antlr\\XPathEnhancer.g:89:3: expr
{
pushFollow(FOLLOW_expr_in_main331);
expr();
state._fsp--;
}
retval.stop = input.LT(-1);
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
}
finally {
}
return retval;
}
// $ANTLR end "main"
public static class locationPath_return extends ParserRuleReturnScope {
public StringTemplate st;
public Object getTemplate() { return st; }
public String toString() { return st==null?null:st.toString(); }
};
// $ANTLR start "locationPath"
// src\\main\\antlr\\XPathEnhancer.g:92:1: locationPath : ( relativeLocationPath | absoluteLocationPathNoroot );
public final XPathEnhancerParser.locationPath_return locationPath() throws RecognitionException {
XPathEnhancerParser.locationPath_return retval = new XPathEnhancerParser.locationPath_return();
retval.start = input.LT(1);
try {
// src\\main\\antlr\\XPathEnhancer.g:93:3: ( relativeLocationPath | absoluteLocationPathNoroot )
int alt1=2;
int LA1_0 = input.LA(1);
if ( ((LA1_0>=DOT && LA1_0<=AT)||(LA1_0>=AxisName && LA1_0<=NodeType)||LA1_0==NCName||LA1_0==37) ) {
alt1=1;
}
else if ( ((LA1_0>=PATHSEP && LA1_0<=ABRPATH)) ) {
alt1=2;
}
else {
NoViableAltException nvae =
new NoViableAltException("", 1, 0, input);
throw nvae;
}
switch (alt1) {
case 1 :
// src\\main\\antlr\\XPathEnhancer.g:94:3: relativeLocationPath
{
pushFollow(FOLLOW_relativeLocationPath_in_locationPath346);
relativeLocationPath();
state._fsp--;
}
break;
case 2 :
// src\\main\\antlr\\XPathEnhancer.g:95:6: absoluteLocationPathNoroot
{
pushFollow(FOLLOW_absoluteLocationPathNoroot_in_locationPath353);
absoluteLocationPathNoroot();
state._fsp--;
}
break;
}
retval.stop = input.LT(-1);
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
}
finally {
}
return retval;
}
// $ANTLR end "locationPath"
public static class absoluteLocationPathNoroot_return extends ParserRuleReturnScope {
public StringTemplate st;
public Object getTemplate() { return st; }
public String toString() { return st==null?null:st.toString(); }
};
// $ANTLR start "absoluteLocationPathNoroot"
// src\\main\\antlr\\XPathEnhancer.g:98:1: absoluteLocationPathNoroot : originalAbsoluteLocationPathNoroot -> template(sharesPrefix= sharesPrefix($text) commonPrefix= prefix index= index remainingSuffix= remainingSuffix($text) originalPath= $text ) \"<if(sharesPrefix)><commonPrefix>[<index>]<remainingSuffix><else><originalPath><endif>\";
public final XPathEnhancerParser.absoluteLocationPathNoroot_return absoluteLocationPathNoroot() throws RecognitionException {
XPathEnhancerParser.absoluteLocationPathNoroot_return retval = new XPathEnhancerParser.absoluteLocationPathNoroot_return();
retval.start = input.LT(1);
try {
// src\\main\\antlr\\XPathEnhancer.g:99:3: ( originalAbsoluteLocationPathNoroot -> template(sharesPrefix= sharesPrefix($text) commonPrefix= prefix index= index remainingSuffix= remainingSuffix($text) originalPath= $text ) \"<if(sharesPrefix)><commonPrefix>[<index>]<remainingSuffix><else><originalPath><endif>\")
// src\\main\\antlr\\XPathEnhancer.g:100:3: originalAbsoluteLocationPathNoroot
{
pushFollow(FOLLOW_originalAbsoluteLocationPathNoroot_in_absoluteLocationPathNoroot368);
originalAbsoluteLocationPathNoroot();
state._fsp--;
// TEMPLATE REWRITE
// 101:3: -> template(sharesPrefix= sharesPrefix($text) commonPrefix= prefix index= index remainingSuffix= remainingSuffix($text) originalPath= $text ) \"<if(sharesPrefix)><commonPrefix>[<index>]<remainingSuffix><else><originalPath><endif>\"
{
retval.st = new StringTemplate(templateLib, "<if(sharesPrefix)><commonPrefix>[<index>]<remainingSuffix><else><originalPath><endif>",
new STAttrMap().put("sharesPrefix", sharesPrefix(input.toString(retval.start,input.LT(-1))) ).put("commonPrefix", prefix ).put("index", index ).put("remainingSuffix", remainingSuffix(input.toString(retval.start,input.LT(-1))) ).put("originalPath", input.toString(retval.start,input.LT(-1)) ));
}
((TokenRewriteStream)input).replace(
((Token)retval.start).getTokenIndex(),
input.LT(-1).getTokenIndex(),
retval.st);
}
retval.stop = input.LT(-1);
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
}
finally {
}
return retval;
}
// $ANTLR end "absoluteLocationPathNoroot"
public static class originalAbsoluteLocationPathNoroot_return extends ParserRuleReturnScope {
public StringTemplate st;
public Object getTemplate() { return st; }
public String toString() { return st==null?null:st.toString(); }
};
// $ANTLR start "originalAbsoluteLocationPathNoroot"
// src\\main\\antlr\\XPathEnhancer.g:111:1: originalAbsoluteLocationPathNoroot : ( '/' relativeLocationPath | '//' relativeLocationPath );
public final XPathEnhancerParser.originalAbsoluteLocationPathNoroot_return originalAbsoluteLocationPathNoroot() throws RecognitionException {
XPathEnhancerParser.originalAbsoluteLocationPathNoroot_return retval = new XPathEnhancerParser.originalAbsoluteLocationPathNoroot_return();
retval.start = input.LT(1);
try {
// src\\main\\antlr\\XPathEnhancer.g:112:3: ( '/' relativeLocationPath | '//' relativeLocationPath )
int alt2=2;
int LA2_0 = input.LA(1);
if ( (LA2_0==PATHSEP) ) {
alt2=1;
}
else if ( (LA2_0==ABRPATH) ) {
alt2=2;
}
else {
NoViableAltException nvae =
new NoViableAltException("", 2, 0, input);
throw nvae;
}
switch (alt2) {
case 1 :
// src\\main\\antlr\\XPathEnhancer.g:113:3: '/' relativeLocationPath
{
match(input,PATHSEP,FOLLOW_PATHSEP_in_originalAbsoluteLocationPathNoroot532);
pushFollow(FOLLOW_relativeLocationPath_in_originalAbsoluteLocationPathNoroot534);
relativeLocationPath();
state._fsp--;
}
break;
case 2 :
// src\\main\\antlr\\XPathEnhancer.g:114:5: '//' relativeLocationPath
{
match(input,ABRPATH,FOLLOW_ABRPATH_in_originalAbsoluteLocationPathNoroot540);
pushFollow(FOLLOW_relativeLocationPath_in_originalAbsoluteLocationPathNoroot542);
relativeLocationPath();
state._fsp--;
}
break;
}
retval.stop = input.LT(-1);
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
}
finally {
}
return retval;
}
// $ANTLR end "originalAbsoluteLocationPathNoroot"
public static class relativeLocationPath_return extends ParserRuleReturnScope {
public StringTemplate st;
public Object getTemplate() { return st; }
public String toString() { return st==null?null:st.toString(); }
};
// $ANTLR start "relativeLocationPath"
// src\\main\\antlr\\XPathEnhancer.g:117:1: relativeLocationPath : step ( ( '/' | '//' ) step )* ;
public final XPathEnhancerParser.relativeLocationPath_return relativeLocationPath() throws RecognitionException {
XPathEnhancerParser.relativeLocationPath_return retval = new XPathEnhancerParser.relativeLocationPath_return();
retval.start = input.LT(1);
try {
// src\\main\\antlr\\XPathEnhancer.g:118:3: ( step ( ( '/' | '//' ) step )* )
// src\\main\\antlr\\XPathEnhancer.g:119:3: step ( ( '/' | '//' ) step )*
{
pushFollow(FOLLOW_step_in_relativeLocationPath557);
step();
state._fsp--;
// src\\main\\antlr\\XPathEnhancer.g:120:3: ( ( '/' | '//' ) step )*
loop3:
do {
int alt3=2;
int LA3_0 = input.LA(1);
if ( ((LA3_0>=PATHSEP && LA3_0<=ABRPATH)) ) {
alt3=1;
}
switch (alt3) {
case 1 :
// src\\main\\antlr\\XPathEnhancer.g:121:5: ( '/' | '//' ) step
{
if ( (input.LA(1)>=PATHSEP && input.LA(1)<=ABRPATH) ) {
input.consume();
state.errorRecovery=false;
}
else {
MismatchedSetException mse = new MismatchedSetException(null,input);
throw mse;
}
pushFollow(FOLLOW_step_in_relativeLocationPath597);
step();
state._fsp--;
}
break;
default :
break loop3;
}
} while (true);
}
retval.stop = input.LT(-1);
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
}
finally {
}
return retval;
}
// $ANTLR end "relativeLocationPath"
public static class step_return extends ParserRuleReturnScope {
public StringTemplate st;
public Object getTemplate() { return st; }
public String toString() { return st==null?null:st.toString(); }
};
// $ANTLR start "step"
// src\\main\\antlr\\XPathEnhancer.g:129:1: step : ( axisSpecifier nodeTest ( predicate )* | abbreviatedStep );
public final XPathEnhancerParser.step_return step() throws RecognitionException {
XPathEnhancerParser.step_return retval = new XPathEnhancerParser.step_return();
retval.start = input.LT(1);
try {
// src\\main\\antlr\\XPathEnhancer.g:130:3: ( axisSpecifier nodeTest ( predicate )* | abbreviatedStep )
int alt5=2;
int LA5_0 = input.LA(1);
if ( (LA5_0==MUL||LA5_0==AT||(LA5_0>=AxisName && LA5_0<=NodeType)||LA5_0==NCName||LA5_0==37) ) {
alt5=1;
}
else if ( (LA5_0==DOT||LA5_0==DOTDOT) ) {
alt5=2;
}
else {
NoViableAltException nvae =
new NoViableAltException("", 5, 0, input);
throw nvae;
}
switch (alt5) {
case 1 :
// src\\main\\antlr\\XPathEnhancer.g:131:3: axisSpecifier nodeTest ( predicate )*
{
pushFollow(FOLLOW_axisSpecifier_in_step617);
axisSpecifier();
state._fsp--;
pushFollow(FOLLOW_nodeTest_in_step619);
nodeTest();
state._fsp--;
// src\\main\\antlr\\XPathEnhancer.g:131:26: ( predicate )*
loop4:
do {
int alt4=2;
int LA4_0 = input.LA(1);
if ( (LA4_0==LBRAC) ) {
alt4=1;
}
switch (alt4) {
case 1 :
// src\\main\\antlr\\XPathEnhancer.g:131:26: predicate
{
pushFollow(FOLLOW_predicate_in_step621);
predicate();
state._fsp--;
}
break;
default :
break loop4;
}
} while (true);
}
break;
case 2 :
// src\\main\\antlr\\XPathEnhancer.g:132:5: abbreviatedStep
{
pushFollow(FOLLOW_abbreviatedStep_in_step628);
abbreviatedStep();
state._fsp--;
}
break;
}
retval.stop = input.LT(-1);
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
}
finally {
}
return retval;
}
// $ANTLR end "step"
public static class axisSpecifier_return extends ParserRuleReturnScope {
public StringTemplate st;
public Object getTemplate() { return st; }
public String toString() { return st==null?null:st.toString(); }
};
// $ANTLR start "axisSpecifier"
// src\\main\\antlr\\XPathEnhancer.g:135:1: axisSpecifier : ( AxisName '::' | ( '@' )? );
public final XPathEnhancerParser.axisSpecifier_return axisSpecifier() throws RecognitionException {
XPathEnhancerParser.axisSpecifier_return retval = new XPathEnhancerParser.axisSpecifier_return();
retval.start = input.LT(1);
try {
// src\\main\\antlr\\XPathEnhancer.g:136:3: ( AxisName '::' | ( '@' )? )
int alt7=2;
int LA7_0 = input.LA(1);
if ( (LA7_0==AxisName) ) {
int LA7_1 = input.LA(2);
if ( (LA7_1==CC) ) {
alt7=1;
}
else if ( (LA7_1==EOF||(LA7_1>=PATHSEP && LA7_1<=ABRPATH)||(LA7_1>=RPAR && LA7_1<=PLUS)||LA7_1==MUL||(LA7_1>=COMMA && LA7_1<=COLON)||(LA7_1>=38 && LA7_1<=43)) ) {
alt7=2;
}
else {
NoViableAltException nvae =
new NoViableAltException("", 7, 1, input);
throw nvae;
}
}
else if ( (LA7_0==MUL||LA7_0==AT||LA7_0==NodeType||LA7_0==NCName||LA7_0==37) ) {
alt7=2;
}
else {
NoViableAltException nvae =
new NoViableAltException("", 7, 0, input);
throw nvae;
}
switch (alt7) {
case 1 :
// src\\main\\antlr\\XPathEnhancer.g:137:3: AxisName '::'
{
match(input,AxisName,FOLLOW_AxisName_in_axisSpecifier643);
match(input,CC,FOLLOW_CC_in_axisSpecifier645);
}
break;
case 2 :
// src\\main\\antlr\\XPathEnhancer.g:138:5: ( '@' )?
{
// src\\main\\antlr\\XPathEnhancer.g:138:5: ( '@' )?
int alt6=2;
int LA6_0 = input.LA(1);
if ( (LA6_0==AT) ) {
alt6=1;
}
switch (alt6) {
case 1 :
// src\\main\\antlr\\XPathEnhancer.g:138:5: '@'
{
match(input,AT,FOLLOW_AT_in_axisSpecifier651);
}
break;
}
}
break;
}
retval.stop = input.LT(-1);
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
}
finally {
}
return retval;
}
// $ANTLR end "axisSpecifier"
public static class nodeTest_return extends ParserRuleReturnScope {
public StringTemplate st;
public Object getTemplate() { return st; }
public String toString() { return st==null?null:st.toString(); }
};
// $ANTLR start "nodeTest"
// src\\main\\antlr\\XPathEnhancer.g:141:1: nodeTest : ( nameTest | NodeType '(' ')' | 'processing-instruction' '(' Literal ')' );
public final XPathEnhancerParser.nodeTest_return nodeTest() throws RecognitionException {
XPathEnhancerParser.nodeTest_return retval = new XPathEnhancerParser.nodeTest_return();
retval.start = input.LT(1);
try {
// src\\main\\antlr\\XPathEnhancer.g:142:3: ( nameTest | NodeType '(' ')' | 'processing-instruction' '(' Literal ')' )
int alt8=3;
switch ( input.LA(1) ) {
case MUL:
case AxisName:
case NCName:
{
alt8=1;
}
break;
case NodeType:
{
alt8=2;
}
break;
case 37:
{
alt8=3;
}
break;
default:
NoViableAltException nvae =
new NoViableAltException("", 8, 0, input);
throw nvae;
}
switch (alt8) {
case 1 :
// src\\main\\antlr\\XPathEnhancer.g:143:3: nameTest
{
pushFollow(FOLLOW_nameTest_in_nodeTest667);
nameTest();
state._fsp--;
}
break;
case 2 :
// src\\main\\antlr\\XPathEnhancer.g:144:5: NodeType '(' ')'
{
match(input,NodeType,FOLLOW_NodeType_in_nodeTest673);
match(input,LPAR,FOLLOW_LPAR_in_nodeTest675);
match(input,RPAR,FOLLOW_RPAR_in_nodeTest677);
}
break;
case 3 :
// src\\main\\antlr\\XPathEnhancer.g:145:5: 'processing-instruction' '(' Literal ')'
{
match(input,37,FOLLOW_37_in_nodeTest683);
match(input,LPAR,FOLLOW_LPAR_in_nodeTest685);
match(input,Literal,FOLLOW_Literal_in_nodeTest687);
match(input,RPAR,FOLLOW_RPAR_in_nodeTest689);
}
break;
}
retval.stop = input.LT(-1);
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
}
finally {
}
return retval;
}
// $ANTLR end "nodeTest"
public static class predicate_return extends ParserRuleReturnScope {
public StringTemplate st;
public Object getTemplate() { return st; }
public String toString() { return st==null?null:st.toString(); }
};
// $ANTLR start "predicate"
// src\\main\\antlr\\XPathEnhancer.g:148:1: predicate : '[' expr ']' ;
public final XPathEnhancerParser.predicate_return predicate() throws RecognitionException {
XPathEnhancerParser.predicate_return retval = new XPathEnhancerParser.predicate_return();
retval.start = input.LT(1);
try {
// src\\main\\antlr\\XPathEnhancer.g:149:3: ( '[' expr ']' )
// src\\main\\antlr\\XPathEnhancer.g:150:3: '[' expr ']'
{
match(input,LBRAC,FOLLOW_LBRAC_in_predicate704);
pushFollow(FOLLOW_expr_in_predicate706);
expr();
state._fsp--;
match(input,RBRAC,FOLLOW_RBRAC_in_predicate708);
}
retval.stop = input.LT(-1);
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
}
finally {
}
return retval;
}
// $ANTLR end "predicate"
public static class abbreviatedStep_return extends ParserRuleReturnScope {
public StringTemplate st;
public Object getTemplate() { return st; }
public String toString() { return st==null?null:st.toString(); }
};
// $ANTLR start "abbreviatedStep"
// src\\main\\antlr\\XPathEnhancer.g:153:1: abbreviatedStep : ( '.' | '..' );
public final XPathEnhancerParser.abbreviatedStep_return abbreviatedStep() throws RecognitionException {
XPathEnhancerParser.abbreviatedStep_return retval = new XPathEnhancerParser.abbreviatedStep_return();
retval.start = input.LT(1);
try {
// src\\main\\antlr\\XPathEnhancer.g:154:3: ( '.' | '..' )
// src\\main\\antlr\\XPathEnhancer.g:
{
if ( input.LA(1)==DOT||input.LA(1)==DOTDOT ) {
input.consume();
state.errorRecovery=false;
}
else {
MismatchedSetException mse = new MismatchedSetException(null,input);
throw mse;
}
}
retval.stop = input.LT(-1);
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
}
finally {
}
return retval;
}
// $ANTLR end "abbreviatedStep"
public static class expr_return extends ParserRuleReturnScope {
public StringTemplate st;
public Object getTemplate() { return st; }
public String toString() { return st==null?null:st.toString(); }
};
// $ANTLR start "expr"
// src\\main\\antlr\\XPathEnhancer.g:159:1: expr : orExpr ;
public final XPathEnhancerParser.expr_return expr() throws RecognitionException {
XPathEnhancerParser.expr_return retval = new XPathEnhancerParser.expr_return();
retval.start = input.LT(1);
try {
// src\\main\\antlr\\XPathEnhancer.g:160:3: ( orExpr )
// src\\main\\antlr\\XPathEnhancer.g:161:3: orExpr
{
pushFollow(FOLLOW_orExpr_in_expr744);
orExpr();
state._fsp--;
}
retval.stop = input.LT(-1);
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
}
finally {
}
return retval;
}
// $ANTLR end "expr"
public static class primaryExpr_return extends ParserRuleReturnScope {
public StringTemplate st;
public Object getTemplate() { return st; }
public String toString() { return st==null?null:st.toString(); }
};
// $ANTLR start "primaryExpr"
// src\\main\\antlr\\XPathEnhancer.g:164:1: primaryExpr : ( variableReference | '(' expr ')' | Literal | Number | functionCall );
public final XPathEnhancerParser.primaryExpr_return primaryExpr() throws RecognitionException {
XPathEnhancerParser.primaryExpr_return retval = new XPathEnhancerParser.primaryExpr_return();
retval.start = input.LT(1);
try {
// src\\main\\antlr\\XPathEnhancer.g:165:3: ( variableReference | '(' expr ')' | Literal | Number | functionCall )
int alt9=5;
switch ( input.LA(1) ) {
case 44:
{
alt9=1;
}
break;
case LPAR:
{
alt9=2;
}
break;
case Literal:
{
alt9=3;
}
break;
case Number:
{
alt9=4;
}
break;
case AxisName:
case NCName:
{
alt9=5;
}
break;
default:
NoViableAltException nvae =
new NoViableAltException("", 9, 0, input);
throw nvae;
}
switch (alt9) {
case 1 :
// src\\main\\antlr\\XPathEnhancer.g:166:3: variableReference
{
pushFollow(FOLLOW_variableReference_in_primaryExpr759);
variableReference();
state._fsp--;
}
break;
case 2 :
// src\\main\\antlr\\XPathEnhancer.g:167:5: '(' expr ')'
{
match(input,LPAR,FOLLOW_LPAR_in_primaryExpr765);
pushFollow(FOLLOW_expr_in_primaryExpr767);
expr();
state._fsp--;
match(input,RPAR,FOLLOW_RPAR_in_primaryExpr769);
}
break;
case 3 :
// src\\main\\antlr\\XPathEnhancer.g:168:5: Literal
{
match(input,Literal,FOLLOW_Literal_in_primaryExpr775);
}
break;
case 4 :
// src\\main\\antlr\\XPathEnhancer.g:169:5: Number
{
match(input,Number,FOLLOW_Number_in_primaryExpr781);
}
break;
case 5 :
// src\\main\\antlr\\XPathEnhancer.g:170:5: functionCall
{
pushFollow(FOLLOW_functionCall_in_primaryExpr787);
functionCall();
state._fsp--;
}
break;
}
retval.stop = input.LT(-1);
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
}
finally {
}
return retval;
}
// $ANTLR end "primaryExpr"
public static class functionCall_return extends ParserRuleReturnScope {
public StringTemplate st;
public Object getTemplate() { return st; }
public String toString() { return st==null?null:st.toString(); }
};
// $ANTLR start "functionCall"
// src\\main\\antlr\\XPathEnhancer.g:173:1: functionCall : functionName '(' ( expr ( ',' expr )* )? ')' ;
public final XPathEnhancerParser.functionCall_return functionCall() throws RecognitionException {
XPathEnhancerParser.functionCall_return retval = new XPathEnhancerParser.functionCall_return();
retval.start = input.LT(1);
try {
// src\\main\\antlr\\XPathEnhancer.g:174:3: ( functionName '(' ( expr ( ',' expr )* )? ')' )
// src\\main\\antlr\\XPathEnhancer.g:175:3: functionName '(' ( expr ( ',' expr )* )? ')'
{
pushFollow(FOLLOW_functionName_in_functionCall802);
functionName();
state._fsp--;
match(input,LPAR,FOLLOW_LPAR_in_functionCall804);
// src\\main\\antlr\\XPathEnhancer.g:175:20: ( expr ( ',' expr )* )?
int alt11=2;
int LA11_0 = input.LA(1);
if ( ((LA11_0>=PATHSEP && LA11_0<=LPAR)||LA11_0==MINUS||(LA11_0>=DOT && LA11_0<=AT)||(LA11_0>=AxisName && LA11_0<=NCName)||LA11_0==37||LA11_0==44) ) {
alt11=1;
}
switch (alt11) {
case 1 :
// src\\main\\antlr\\XPathEnhancer.g:175:21: expr ( ',' expr )*
{
pushFollow(FOLLOW_expr_in_functionCall807);
expr();
state._fsp--;
// src\\main\\antlr\\XPathEnhancer.g:175:26: ( ',' expr )*
loop10:
do {
int alt10=2;
int LA10_0 = input.LA(1);
if ( (LA10_0==COMMA) ) {
alt10=1;
}
switch (alt10) {
case 1 :
// src\\main\\antlr\\XPathEnhancer.g:175:27: ',' expr
{
match(input,COMMA,FOLLOW_COMMA_in_functionCall810);
pushFollow(FOLLOW_expr_in_functionCall812);
expr();
state._fsp--;
}
break;
default :
break loop10;
}
} while (true);
}
break;
}
match(input,RPAR,FOLLOW_RPAR_in_functionCall818);
}
retval.stop = input.LT(-1);
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
}
finally {
}
return retval;
}
// $ANTLR end "functionCall"
public static class unionExprNoRoot_return extends ParserRuleReturnScope {
public StringTemplate st;
public Object getTemplate() { return st; }
public String toString() { return st==null?null:st.toString(); }
};
// $ANTLR start "unionExprNoRoot"
// src\\main\\antlr\\XPathEnhancer.g:178:1: unionExprNoRoot : ( pathExprNoRoot ( '|' unionExprNoRoot )? | '/' '|' unionExprNoRoot );
public final XPathEnhancerParser.unionExprNoRoot_return unionExprNoRoot() throws RecognitionException {
XPathEnhancerParser.unionExprNoRoot_return retval = new XPathEnhancerParser.unionExprNoRoot_return();
retval.start = input.LT(1);
try {
// src\\main\\antlr\\XPathEnhancer.g:179:3: ( pathExprNoRoot ( '|' unionExprNoRoot )? | '/' '|' unionExprNoRoot )
int alt13=2;
int LA13_0 = input.LA(1);
if ( ((LA13_0>=ABRPATH && LA13_0<=LPAR)||(LA13_0>=DOT && LA13_0<=AT)||(LA13_0>=AxisName && LA13_0<=NCName)||LA13_0==37||LA13_0==44) ) {
alt13=1;
}
else if ( (LA13_0==PATHSEP) ) {
int LA13_2 = input.LA(2);
if ( (LA13_2==PIPE) ) {
alt13=2;
}
else if ( ((LA13_2>=DOT && LA13_2<=AT)||(LA13_2>=AxisName && LA13_2<=NodeType)||LA13_2==NCName||LA13_2==37) ) {
alt13=1;
}
else {
NoViableAltException nvae =
new NoViableAltException("", 13, 2, input);
throw nvae;
}
}
else {
NoViableAltException nvae =
new NoViableAltException("", 13, 0, input);
throw nvae;
}
switch (alt13) {
case 1 :
// src\\main\\antlr\\XPathEnhancer.g:180:3: pathExprNoRoot ( '|' unionExprNoRoot )?
{
pushFollow(FOLLOW_pathExprNoRoot_in_unionExprNoRoot833);
pathExprNoRoot();
state._fsp--;
// src\\main\\antlr\\XPathEnhancer.g:180:18: ( '|' unionExprNoRoot )?
int alt12=2;
int LA12_0 = input.LA(1);
if ( (LA12_0==PIPE) ) {
alt12=1;
}
switch (alt12) {
case 1 :
// src\\main\\antlr\\XPathEnhancer.g:180:19: '|' unionExprNoRoot
{
match(input,PIPE,FOLLOW_PIPE_in_unionExprNoRoot836);
pushFollow(FOLLOW_unionExprNoRoot_in_unionExprNoRoot838);
unionExprNoRoot();
state._fsp--;
}
break;
}
}
break;
case 2 :
// src\\main\\antlr\\XPathEnhancer.g:181:5: '/' '|' unionExprNoRoot
{
match(input,PATHSEP,FOLLOW_PATHSEP_in_unionExprNoRoot846);
match(input,PIPE,FOLLOW_PIPE_in_unionExprNoRoot848);
pushFollow(FOLLOW_unionExprNoRoot_in_unionExprNoRoot850);
unionExprNoRoot();
state._fsp--;
}
break;
}
retval.stop = input.LT(-1);
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
}
finally {
}
return retval;
}
// $ANTLR end "unionExprNoRoot"
public static class pathExprNoRoot_return extends ParserRuleReturnScope {
public StringTemplate st;
public Object getTemplate() { return st; }
public String toString() { return st==null?null:st.toString(); }
};
// $ANTLR start "pathExprNoRoot"
// src\\main\\antlr\\XPathEnhancer.g:184:1: pathExprNoRoot : ( locationPath | filterExpr ( absoluteLocationPathNoroot )? );
public final XPathEnhancerParser.pathExprNoRoot_return pathExprNoRoot() throws RecognitionException {
XPathEnhancerParser.pathExprNoRoot_return retval = new XPathEnhancerParser.pathExprNoRoot_return();
retval.start = input.LT(1);
try {
// src\\main\\antlr\\XPathEnhancer.g:185:3: ( locationPath | filterExpr ( absoluteLocationPathNoroot )? )
int alt15=2;
switch ( input.LA(1) ) {
case AxisName:
{
switch ( input.LA(2) ) {
case EOF:
case PATHSEP:
case ABRPATH:
case RPAR:
case LBRAC:
case RBRAC:
case MINUS:
case PLUS:
case MUL:
case COMMA:
case PIPE:
case LESS:
case MORE:
case LE:
case GE:
case CC:
case 38:
case 39:
case 40:
case 41:
case 42:
case 43:
{
alt15=1;
}
break;
case COLON:
{
int LA15_5 = input.LA(3);
if ( (LA15_5==MUL) ) {
alt15=1;
}
else if ( (LA15_5==AxisName||LA15_5==NCName) ) {
int LA15_6 = input.LA(4);
if ( (LA15_6==EOF||(LA15_6>=PATHSEP && LA15_6<=ABRPATH)||(LA15_6>=RPAR && LA15_6<=PLUS)||LA15_6==MUL||(LA15_6>=COMMA && LA15_6<=GE)||(LA15_6>=38 && LA15_6<=43)) ) {
alt15=1;
}
else if ( (LA15_6==LPAR) ) {
alt15=2;
}
else {
NoViableAltException nvae =
new NoViableAltException("", 15, 6, input);
throw nvae;
}
}
else {
NoViableAltException nvae =
new NoViableAltException("", 15, 5, input);
throw nvae;
}
}
break;
case LPAR:
{
alt15=2;
}
break;
default:
NoViableAltException nvae =
new NoViableAltException("", 15, 1, input);
throw nvae;
}
}
break;
case PATHSEP:
case ABRPATH:
case DOT:
case MUL:
case DOTDOT:
case AT:
case NodeType:
case 37:
{
alt15=1;
}
break;
case NCName:
{
switch ( input.LA(2) ) {
case COLON:
{
int LA15_5 = input.LA(3);
if ( (LA15_5==MUL) ) {
alt15=1;
}
else if ( (LA15_5==AxisName||LA15_5==NCName) ) {
int LA15_6 = input.LA(4);
if ( (LA15_6==EOF||(LA15_6>=PATHSEP && LA15_6<=ABRPATH)||(LA15_6>=RPAR && LA15_6<=PLUS)||LA15_6==MUL||(LA15_6>=COMMA && LA15_6<=GE)||(LA15_6>=38 && LA15_6<=43)) ) {
alt15=1;
}
else if ( (LA15_6==LPAR) ) {
alt15=2;
}
else {
NoViableAltException nvae =
new NoViableAltException("", 15, 6, input);
throw nvae;
}
}
else {
NoViableAltException nvae =
new NoViableAltException("", 15, 5, input);
throw nvae;
}
}
break;
case EOF:
case PATHSEP:
case ABRPATH:
case RPAR:
case LBRAC:
case RBRAC:
case MINUS:
case PLUS:
case MUL:
case COMMA:
case PIPE:
case LESS:
case MORE:
case LE:
case GE:
case 38:
case 39:
case 40:
case 41:
case 42:
case 43:
{
alt15=1;
}
break;
case LPAR:
{
alt15=2;
}
break;
default:
NoViableAltException nvae =
new NoViableAltException("", 15, 3, input);
throw nvae;
}
}
break;
case LPAR:
case Literal:
case Number:
case 44:
{
alt15=2;
}
break;
default:
NoViableAltException nvae =
new NoViableAltException("", 15, 0, input);
throw nvae;
}
switch (alt15) {
case 1 :
// src\\main\\antlr\\XPathEnhancer.g:186:3: locationPath
{
pushFollow(FOLLOW_locationPath_in_pathExprNoRoot865);
locationPath();
state._fsp--;
}
break;
case 2 :
// src\\main\\antlr\\XPathEnhancer.g:187:5: filterExpr ( absoluteLocationPathNoroot )?
{
pushFollow(FOLLOW_filterExpr_in_pathExprNoRoot871);
filterExpr();
state._fsp--;
// src\\main\\antlr\\XPathEnhancer.g:187:16: ( absoluteLocationPathNoroot )?
int alt14=2;
int LA14_0 = input.LA(1);
if ( ((LA14_0>=PATHSEP && LA14_0<=ABRPATH)) ) {
alt14=1;
}
switch (alt14) {
case 1 :
// src\\main\\antlr\\XPathEnhancer.g:187:16: absoluteLocationPathNoroot
{
pushFollow(FOLLOW_absoluteLocationPathNoroot_in_pathExprNoRoot873);
absoluteLocationPathNoroot();
state._fsp--;
}
break;
}
}
break;
}
retval.stop = input.LT(-1);
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
}
finally {
}
return retval;
}
// $ANTLR end "pathExprNoRoot"
public static class filterExpr_return extends ParserRuleReturnScope {
public StringTemplate st;
public Object getTemplate() { return st; }
public String toString() { return st==null?null:st.toString(); }
};
// $ANTLR start "filterExpr"
// src\\main\\antlr\\XPathEnhancer.g:190:1: filterExpr : primaryExpr ( predicate )* ;
public final XPathEnhancerParser.filterExpr_return filterExpr() throws RecognitionException {
XPathEnhancerParser.filterExpr_return retval = new XPathEnhancerParser.filterExpr_return();
retval.start = input.LT(1);
try {
// src\\main\\antlr\\XPathEnhancer.g:191:3: ( primaryExpr ( predicate )* )
// src\\main\\antlr\\XPathEnhancer.g:192:3: primaryExpr ( predicate )*
{
pushFollow(FOLLOW_primaryExpr_in_filterExpr890);
primaryExpr();
state._fsp--;
// src\\main\\antlr\\XPathEnhancer.g:192:15: ( predicate )*
loop16:
do {
int alt16=2;
int LA16_0 = input.LA(1);
if ( (LA16_0==LBRAC) ) {
alt16=1;
}
switch (alt16) {
case 1 :
// src\\main\\antlr\\XPathEnhancer.g:192:15: predicate
{
pushFollow(FOLLOW_predicate_in_filterExpr892);
predicate();
state._fsp--;
}
break;
default :
break loop16;
}
} while (true);
}
retval.stop = input.LT(-1);
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
}
finally {
}
return retval;
}
// $ANTLR end "filterExpr"
public static class orExpr_return extends ParserRuleReturnScope {
public StringTemplate st;
public Object getTemplate() { return st; }
public String toString() { return st==null?null:st.toString(); }
};
// $ANTLR start "orExpr"
// src\\main\\antlr\\XPathEnhancer.g:195:1: orExpr : andExpr ( 'or' andExpr )* ;
public final XPathEnhancerParser.orExpr_return orExpr() throws RecognitionException {
XPathEnhancerParser.orExpr_return retval = new XPathEnhancerParser.orExpr_return();
retval.start = input.LT(1);
try {
// src\\main\\antlr\\XPathEnhancer.g:196:3: ( andExpr ( 'or' andExpr )* )
// src\\main\\antlr\\XPathEnhancer.g:197:3: andExpr ( 'or' andExpr )*
{
pushFollow(FOLLOW_andExpr_in_orExpr908);
andExpr();
state._fsp--;
// src\\main\\antlr\\XPathEnhancer.g:197:11: ( 'or' andExpr )*
loop17:
do {
int alt17=2;
int LA17_0 = input.LA(1);
if ( (LA17_0==38) ) {
alt17=1;
}
switch (alt17) {
case 1 :
// src\\main\\antlr\\XPathEnhancer.g:197:12: 'or' andExpr
{
match(input,38,FOLLOW_38_in_orExpr911);
pushFollow(FOLLOW_andExpr_in_orExpr913);
andExpr();
state._fsp--;
}
break;
default :
break loop17;
}
} while (true);
}
retval.stop = input.LT(-1);
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
}
finally {
}
return retval;
}
// $ANTLR end "orExpr"
public static class andExpr_return extends ParserRuleReturnScope {
public StringTemplate st;
public Object getTemplate() { return st; }
public String toString() { return st==null?null:st.toString(); }
};
// $ANTLR start "andExpr"
// src\\main\\antlr\\XPathEnhancer.g:200:1: andExpr : equalityExpr ( 'and' equalityExpr )* ;
public final XPathEnhancerParser.andExpr_return andExpr() throws RecognitionException {
XPathEnhancerParser.andExpr_return retval = new XPathEnhancerParser.andExpr_return();
retval.start = input.LT(1);
try {
// src\\main\\antlr\\XPathEnhancer.g:201:3: ( equalityExpr ( 'and' equalityExpr )* )
// src\\main\\antlr\\XPathEnhancer.g:202:3: equalityExpr ( 'and' equalityExpr )*
{
pushFollow(FOLLOW_equalityExpr_in_andExpr930);
equalityExpr();
state._fsp--;
// src\\main\\antlr\\XPathEnhancer.g:202:16: ( 'and' equalityExpr )*
loop18:
do {
int alt18=2;
int LA18_0 = input.LA(1);
if ( (LA18_0==39) ) {
alt18=1;
}
switch (alt18) {
case 1 :
// src\\main\\antlr\\XPathEnhancer.g:202:17: 'and' equalityExpr
{
match(input,39,FOLLOW_39_in_andExpr933);
pushFollow(FOLLOW_equalityExpr_in_andExpr935);
equalityExpr();
state._fsp--;
}
break;
default :
break loop18;
}
} while (true);
}
retval.stop = input.LT(-1);
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
}
finally {
}
return retval;
}
// $ANTLR end "andExpr"
public static class equalityExpr_return extends ParserRuleReturnScope {
public StringTemplate st;
public Object getTemplate() { return st; }
public String toString() { return st==null?null:st.toString(); }
};
// $ANTLR start "equalityExpr"
// src\\main\\antlr\\XPathEnhancer.g:205:1: equalityExpr : relationalExpr ( ( '=' | '!=' ) relationalExpr )* ;
public final XPathEnhancerParser.equalityExpr_return equalityExpr() throws RecognitionException {
XPathEnhancerParser.equalityExpr_return retval = new XPathEnhancerParser.equalityExpr_return();
retval.start = input.LT(1);
try {
// src\\main\\antlr\\XPathEnhancer.g:206:3: ( relationalExpr ( ( '=' | '!=' ) relationalExpr )* )
// src\\main\\antlr\\XPathEnhancer.g:207:3: relationalExpr ( ( '=' | '!=' ) relationalExpr )*
{
pushFollow(FOLLOW_relationalExpr_in_equalityExpr952);
relationalExpr();
state._fsp--;
// src\\main\\antlr\\XPathEnhancer.g:208:3: ( ( '=' | '!=' ) relationalExpr )*
loop19:
do {
int alt19=2;
int LA19_0 = input.LA(1);
if ( ((LA19_0>=40 && LA19_0<=41)) ) {
alt19=1;
}
switch (alt19) {
case 1 :
// src\\main\\antlr\\XPathEnhancer.g:209:5: ( '=' | '!=' ) relationalExpr
{
if ( (input.LA(1)>=40 && input.LA(1)<=41) ) {
input.consume();
state.errorRecovery=false;
}
else {
MismatchedSetException mse = new MismatchedSetException(null,input);
throw mse;
}
pushFollow(FOLLOW_relationalExpr_in_equalityExpr992);
relationalExpr();
state._fsp--;
}
break;
default :
break loop19;
}
} while (true);
}
retval.stop = input.LT(-1);
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
}
finally {
}
return retval;
}
// $ANTLR end "equalityExpr"
public static class relationalExpr_return extends ParserRuleReturnScope {
public StringTemplate st;
public Object getTemplate() { return st; }
public String toString() { return st==null?null:st.toString(); }
};
// $ANTLR start "relationalExpr"
// src\\main\\antlr\\XPathEnhancer.g:217:1: relationalExpr : additiveExpr ( ( '<' | '>' | '<=' | '>=' ) additiveExpr )* ;
public final XPathEnhancerParser.relationalExpr_return relationalExpr() throws RecognitionException {
XPathEnhancerParser.relationalExpr_return retval = new XPathEnhancerParser.relationalExpr_return();
retval.start = input.LT(1);
try {
// src\\main\\antlr\\XPathEnhancer.g:218:3: ( additiveExpr ( ( '<' | '>' | '<=' | '>=' ) additiveExpr )* )
// src\\main\\antlr\\XPathEnhancer.g:219:3: additiveExpr ( ( '<' | '>' | '<=' | '>=' ) additiveExpr )*
{
pushFollow(FOLLOW_additiveExpr_in_relationalExpr1012);
additiveExpr();
state._fsp--;
// src\\main\\antlr\\XPathEnhancer.g:220:3: ( ( '<' | '>' | '<=' | '>=' ) additiveExpr )*
loop20:
do {
int alt20=2;
int LA20_0 = input.LA(1);
if ( ((LA20_0>=LESS && LA20_0<=GE)) ) {
alt20=1;
}
switch (alt20) {
case 1 :
// src\\main\\antlr\\XPathEnhancer.g:221:5: ( '<' | '>' | '<=' | '>=' ) additiveExpr
{
if ( (input.LA(1)>=LESS && input.LA(1)<=GE) ) {
input.consume();
state.errorRecovery=false;
}
else {
MismatchedSetException mse = new MismatchedSetException(null,input);
throw mse;
}
pushFollow(FOLLOW_additiveExpr_in_relationalExpr1072);
additiveExpr();
state._fsp--;
}
break;
default :
break loop20;
}
} while (true);
}
retval.stop = input.LT(-1);
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
}
finally {
}
return retval;
}
// $ANTLR end "relationalExpr"
public static class additiveExpr_return extends ParserRuleReturnScope {
public StringTemplate st;
public Object getTemplate() { return st; }
public String toString() { return st==null?null:st.toString(); }
};
// $ANTLR start "additiveExpr"
// src\\main\\antlr\\XPathEnhancer.g:231:1: additiveExpr : multiplicativeExpr ( ( '+' | '-' ) multiplicativeExpr )* ;
public final XPathEnhancerParser.additiveExpr_return additiveExpr() throws RecognitionException {
XPathEnhancerParser.additiveExpr_return retval = new XPathEnhancerParser.additiveExpr_return();
retval.start = input.LT(1);
try {
// src\\main\\antlr\\XPathEnhancer.g:232:3: ( multiplicativeExpr ( ( '+' | '-' ) multiplicativeExpr )* )
// src\\main\\antlr\\XPathEnhancer.g:233:3: multiplicativeExpr ( ( '+' | '-' ) multiplicativeExpr )*
{
pushFollow(FOLLOW_multiplicativeExpr_in_additiveExpr1092);
multiplicativeExpr();
state._fsp--;
// src\\main\\antlr\\XPathEnhancer.g:234:3: ( ( '+' | '-' ) multiplicativeExpr )*
loop21:
do {
int alt21=2;
int LA21_0 = input.LA(1);
if ( ((LA21_0>=MINUS && LA21_0<=PLUS)) ) {
alt21=1;
}
switch (alt21) {
case 1 :
// src\\main\\antlr\\XPathEnhancer.g:235:5: ( '+' | '-' ) multiplicativeExpr
{
if ( (input.LA(1)>=MINUS && input.LA(1)<=PLUS) ) {
input.consume();
state.errorRecovery=false;
}
else {
MismatchedSetException mse = new MismatchedSetException(null,input);
throw mse;
}
pushFollow(FOLLOW_multiplicativeExpr_in_additiveExpr1132);
multiplicativeExpr();
state._fsp--;
}
break;
default :
break loop21;
}
} while (true);
}
retval.stop = input.LT(-1);
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
}
finally {
}
return retval;
}
// $ANTLR end "additiveExpr"
public static class multiplicativeExpr_return extends ParserRuleReturnScope {
public StringTemplate st;
public Object getTemplate() { return st; }
public String toString() { return st==null?null:st.toString(); }
};
// $ANTLR start "multiplicativeExpr"
// src\\main\\antlr\\XPathEnhancer.g:243:1: multiplicativeExpr : ( unaryExprNoRoot ( ( '*' | 'div' | 'mod' ) multiplicativeExpr )? | '/' ( ( 'div' | 'mod' ) multiplicativeExpr )? );
public final XPathEnhancerParser.multiplicativeExpr_return multiplicativeExpr() throws RecognitionException {
XPathEnhancerParser.multiplicativeExpr_return retval = new XPathEnhancerParser.multiplicativeExpr_return();
retval.start = input.LT(1);
try {
// src\\main\\antlr\\XPathEnhancer.g:244:3: ( unaryExprNoRoot ( ( '*' | 'div' | 'mod' ) multiplicativeExpr )? | '/' ( ( 'div' | 'mod' ) multiplicativeExpr )? )
int alt24=2;
int LA24_0 = input.LA(1);
if ( ((LA24_0>=ABRPATH && LA24_0<=LPAR)||LA24_0==MINUS||(LA24_0>=DOT && LA24_0<=AT)||(LA24_0>=AxisName && LA24_0<=NCName)||LA24_0==37||LA24_0==44) ) {
alt24=1;
}
else if ( (LA24_0==PATHSEP) ) {
int LA24_2 = input.LA(2);
if ( ((LA24_2>=DOT && LA24_2<=AT)||LA24_2==PIPE||(LA24_2>=AxisName && LA24_2<=NodeType)||LA24_2==NCName||LA24_2==37) ) {
alt24=1;
}
else if ( (LA24_2==EOF||LA24_2==RPAR||(LA24_2>=RBRAC && LA24_2<=PLUS)||LA24_2==COMMA||(LA24_2>=LESS && LA24_2<=GE)||(LA24_2>=38 && LA24_2<=43)) ) {
alt24=2;
}
else {
NoViableAltException nvae =
new NoViableAltException("", 24, 2, input);
throw nvae;
}
}
else {
NoViableAltException nvae =
new NoViableAltException("", 24, 0, input);
throw nvae;
}
switch (alt24) {
case 1 :
// src\\main\\antlr\\XPathEnhancer.g:245:3: unaryExprNoRoot ( ( '*' | 'div' | 'mod' ) multiplicativeExpr )?
{
pushFollow(FOLLOW_unaryExprNoRoot_in_multiplicativeExpr1152);
unaryExprNoRoot();
state._fsp--;
// src\\main\\antlr\\XPathEnhancer.g:246:3: ( ( '*' | 'div' | 'mod' ) multiplicativeExpr )?
int alt22=2;
int LA22_0 = input.LA(1);
if ( (LA22_0==MUL||(LA22_0>=42 && LA22_0<=43)) ) {
alt22=1;
}
switch (alt22) {
case 1 :
// src\\main\\antlr\\XPathEnhancer.g:247:5: ( '*' | 'div' | 'mod' ) multiplicativeExpr
{
if ( input.LA(1)==MUL||(input.LA(1)>=42 && input.LA(1)<=43) ) {
input.consume();
state.errorRecovery=false;
}
else {
MismatchedSetException mse = new MismatchedSetException(null,input);
throw mse;
}
pushFollow(FOLLOW_multiplicativeExpr_in_multiplicativeExpr1202);
multiplicativeExpr();
state._fsp--;
}
break;
}
}
break;
case 2 :
// src\\main\\antlr\\XPathEnhancer.g:254:5: '/' ( ( 'div' | 'mod' ) multiplicativeExpr )?
{
match(input,PATHSEP,FOLLOW_PATHSEP_in_multiplicativeExpr1213);
// src\\main\\antlr\\XPathEnhancer.g:255:3: ( ( 'div' | 'mod' ) multiplicativeExpr )?
int alt23=2;
int LA23_0 = input.LA(1);
if ( ((LA23_0>=42 && LA23_0<=43)) ) {
alt23=1;
}
switch (alt23) {
case 1 :
// src\\main\\antlr\\XPathEnhancer.g:256:5: ( 'div' | 'mod' ) multiplicativeExpr
{
if ( (input.LA(1)>=42 && input.LA(1)<=43) ) {
input.consume();
state.errorRecovery=false;
}
else {
MismatchedSetException mse = new MismatchedSetException(null,input);
throw mse;
}
pushFollow(FOLLOW_multiplicativeExpr_in_multiplicativeExpr1253);
multiplicativeExpr();
state._fsp--;
}
break;
}
}
break;
}
retval.stop = input.LT(-1);
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
}
finally {
}
return retval;
}
// $ANTLR end "multiplicativeExpr"
public static class unaryExprNoRoot_return extends ParserRuleReturnScope {
public StringTemplate st;
public Object getTemplate() { return st; }
public String toString() { return st==null?null:st.toString(); }
};
// $ANTLR start "unaryExprNoRoot"
// src\\main\\antlr\\XPathEnhancer.g:264:1: unaryExprNoRoot : ( '-' )* unionExprNoRoot ;
public final XPathEnhancerParser.unaryExprNoRoot_return unaryExprNoRoot() throws RecognitionException {
XPathEnhancerParser.unaryExprNoRoot_return retval = new XPathEnhancerParser.unaryExprNoRoot_return();
retval.start = input.LT(1);
try {
// src\\main\\antlr\\XPathEnhancer.g:265:3: ( ( '-' )* unionExprNoRoot )
// src\\main\\antlr\\XPathEnhancer.g:266:3: ( '-' )* unionExprNoRoot
{
// src\\main\\antlr\\XPathEnhancer.g:266:3: ( '-' )*
loop25:
do {
int alt25=2;
int LA25_0 = input.LA(1);
if ( (LA25_0==MINUS) ) {
alt25=1;
}
switch (alt25) {
case 1 :
// src\\main\\antlr\\XPathEnhancer.g:266:3: '-'
{
match(input,MINUS,FOLLOW_MINUS_in_unaryExprNoRoot1273);
}
break;
default :
break loop25;
}
} while (true);
pushFollow(FOLLOW_unionExprNoRoot_in_unaryExprNoRoot1276);
unionExprNoRoot();
state._fsp--;
}
retval.stop = input.LT(-1);
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
}
finally {
}
return retval;
}
// $ANTLR end "unaryExprNoRoot"
public static class qName_return extends ParserRuleReturnScope {
public StringTemplate st;
public Object getTemplate() { return st; }
public String toString() { return st==null?null:st.toString(); }
};
// $ANTLR start "qName"
// src\\main\\antlr\\XPathEnhancer.g:269:1: qName : nCName ( ':' nCName )? ;
public final XPathEnhancerParser.qName_return qName() throws RecognitionException {
XPathEnhancerParser.qName_return retval = new XPathEnhancerParser.qName_return();
retval.start = input.LT(1);
try {
// src\\main\\antlr\\XPathEnhancer.g:270:3: ( nCName ( ':' nCName )? )
// src\\main\\antlr\\XPathEnhancer.g:271:3: nCName ( ':' nCName )?
{
pushFollow(FOLLOW_nCName_in_qName1291);
nCName();
state._fsp--;
// src\\main\\antlr\\XPathEnhancer.g:271:10: ( ':' nCName )?
int alt26=2;
int LA26_0 = input.LA(1);
if ( (LA26_0==COLON) ) {
alt26=1;
}
switch (alt26) {
case 1 :
// src\\main\\antlr\\XPathEnhancer.g:271:11: ':' nCName
{
match(input,COLON,FOLLOW_COLON_in_qName1294);
pushFollow(FOLLOW_nCName_in_qName1296);
nCName();
state._fsp--;
}
break;
}
}
retval.stop = input.LT(-1);
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
}
finally {
}
return retval;
}
// $ANTLR end "qName"
public static class functionName_return extends ParserRuleReturnScope {
public StringTemplate st;
public Object getTemplate() { return st; }
public String toString() { return st==null?null:st.toString(); }
};
// $ANTLR start "functionName"
// src\\main\\antlr\\XPathEnhancer.g:274:1: functionName : qName ;
public final XPathEnhancerParser.functionName_return functionName() throws RecognitionException {
XPathEnhancerParser.functionName_return retval = new XPathEnhancerParser.functionName_return();
retval.start = input.LT(1);
try {
// src\\main\\antlr\\XPathEnhancer.g:275:3: ( qName )
// src\\main\\antlr\\XPathEnhancer.g:276:3: qName
{
pushFollow(FOLLOW_qName_in_functionName1313);
qName();
state._fsp--;
}
retval.stop = input.LT(-1);
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
}
finally {
}
return retval;
}
// $ANTLR end "functionName"
public static class variableReference_return extends ParserRuleReturnScope {
public StringTemplate st;
public Object getTemplate() { return st; }
public String toString() { return st==null?null:st.toString(); }
};
// $ANTLR start "variableReference"
// src\\main\\antlr\\XPathEnhancer.g:279:1: variableReference : '$' qName ;
public final XPathEnhancerParser.variableReference_return variableReference() throws RecognitionException {
XPathEnhancerParser.variableReference_return retval = new XPathEnhancerParser.variableReference_return();
retval.start = input.LT(1);
try {
// src\\main\\antlr\\XPathEnhancer.g:280:3: ( '$' qName )
// src\\main\\antlr\\XPathEnhancer.g:281:3: '$' qName
{
match(input,44,FOLLOW_44_in_variableReference1329);
pushFollow(FOLLOW_qName_in_variableReference1331);
qName();
state._fsp--;
}
retval.stop = input.LT(-1);
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
}
finally {
}
return retval;
}
// $ANTLR end "variableReference"
public static class nameTest_return extends ParserRuleReturnScope {
public StringTemplate st;
public Object getTemplate() { return st; }
public String toString() { return st==null?null:st.toString(); }
};
// $ANTLR start "nameTest"
// src\\main\\antlr\\XPathEnhancer.g:284:1: nameTest : ( '*' | nCName ':' '*' | qName );
public final XPathEnhancerParser.nameTest_return nameTest() throws RecognitionException {
XPathEnhancerParser.nameTest_return retval = new XPathEnhancerParser.nameTest_return();
retval.start = input.LT(1);
try {
// src\\main\\antlr\\XPathEnhancer.g:285:3: ( '*' | nCName ':' '*' | qName )
int alt27=3;
int LA27_0 = input.LA(1);
if ( (LA27_0==MUL) ) {
alt27=1;
}
else if ( (LA27_0==AxisName||LA27_0==NCName) ) {
int LA27_2 = input.LA(2);
if ( (LA27_2==COLON) ) {
int LA27_3 = input.LA(3);
if ( (LA27_3==MUL) ) {
alt27=2;
}
else if ( (LA27_3==AxisName||LA27_3==NCName) ) {
alt27=3;
}
else {
NoViableAltException nvae =
new NoViableAltException("", 27, 3, input);
throw nvae;
}
}
else if ( (LA27_2==EOF||(LA27_2>=PATHSEP && LA27_2<=ABRPATH)||(LA27_2>=RPAR && LA27_2<=PLUS)||LA27_2==MUL||(LA27_2>=COMMA && LA27_2<=GE)||(LA27_2>=38 && LA27_2<=43)) ) {
alt27=3;
}
else {
NoViableAltException nvae =
new NoViableAltException("", 27, 2, input);
throw nvae;
}
}
else {
NoViableAltException nvae =
new NoViableAltException("", 27, 0, input);
throw nvae;
}
switch (alt27) {
case 1 :
// src\\main\\antlr\\XPathEnhancer.g:286:3: '*'
{
match(input,MUL,FOLLOW_MUL_in_nameTest1346);
}
break;
case 2 :
// src\\main\\antlr\\XPathEnhancer.g:287:5: nCName ':' '*'
{
pushFollow(FOLLOW_nCName_in_nameTest1352);
nCName();
state._fsp--;
match(input,COLON,FOLLOW_COLON_in_nameTest1354);
match(input,MUL,FOLLOW_MUL_in_nameTest1356);
}
break;
case 3 :
// src\\main\\antlr\\XPathEnhancer.g:288:5: qName
{
pushFollow(FOLLOW_qName_in_nameTest1362);
qName();
state._fsp--;
}
break;
}
retval.stop = input.LT(-1);
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
}
finally {
}
return retval;
}
// $ANTLR end "nameTest"
public static class nCName_return extends ParserRuleReturnScope {
public StringTemplate st;
public Object getTemplate() { return st; }
public String toString() { return st==null?null:st.toString(); }
};
// $ANTLR start "nCName"
// src\\main\\antlr\\XPathEnhancer.g:291:1: nCName : ( NCName | AxisName );
public final XPathEnhancerParser.nCName_return nCName() throws RecognitionException {
XPathEnhancerParser.nCName_return retval = new XPathEnhancerParser.nCName_return();
retval.start = input.LT(1);
try {
// src\\main\\antlr\\XPathEnhancer.g:292:3: ( NCName | AxisName )
// src\\main\\antlr\\XPathEnhancer.g:
{
if ( input.LA(1)==AxisName||input.LA(1)==NCName ) {
input.consume();
state.errorRecovery=false;
}
else {
MismatchedSetException mse = new MismatchedSetException(null,input);
throw mse;
}
}
retval.stop = input.LT(-1);
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
}
finally {
}
return retval;
}
// $ANTLR end "nCName"
// Delegated rules
public static final BitSet FOLLOW_expr_in_main331 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_relativeLocationPath_in_locationPath346 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_absoluteLocationPathNoroot_in_locationPath353 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_originalAbsoluteLocationPathNoroot_in_absoluteLocationPathNoroot368 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_PATHSEP_in_originalAbsoluteLocationPathNoroot532 = new BitSet(new long[]{0x000000204C00F000L});
public static final BitSet FOLLOW_relativeLocationPath_in_originalAbsoluteLocationPathNoroot534 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_ABRPATH_in_originalAbsoluteLocationPathNoroot540 = new BitSet(new long[]{0x000000204C00F000L});
public static final BitSet FOLLOW_relativeLocationPath_in_originalAbsoluteLocationPathNoroot542 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_step_in_relativeLocationPath557 = new BitSet(new long[]{0x0000000000000032L});
public static final BitSet FOLLOW_set_in_relativeLocationPath567 = new BitSet(new long[]{0x000000204C00F000L});
public static final BitSet FOLLOW_step_in_relativeLocationPath597 = new BitSet(new long[]{0x0000000000000032L});
public static final BitSet FOLLOW_axisSpecifier_in_step617 = new BitSet(new long[]{0x000000204C00A000L});
public static final BitSet FOLLOW_nodeTest_in_step619 = new BitSet(new long[]{0x0000000000000102L});
public static final BitSet FOLLOW_predicate_in_step621 = new BitSet(new long[]{0x0000000000000102L});
public static final BitSet FOLLOW_abbreviatedStep_in_step628 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_AxisName_in_axisSpecifier643 = new BitSet(new long[]{0x0000000000800000L});
public static final BitSet FOLLOW_CC_in_axisSpecifier645 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_AT_in_axisSpecifier651 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_nameTest_in_nodeTest667 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_NodeType_in_nodeTest673 = new BitSet(new long[]{0x0000000000000040L});
public static final BitSet FOLLOW_LPAR_in_nodeTest675 = new BitSet(new long[]{0x0000000000000080L});
public static final BitSet FOLLOW_RPAR_in_nodeTest677 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_37_in_nodeTest683 = new BitSet(new long[]{0x0000000000000040L});
public static final BitSet FOLLOW_LPAR_in_nodeTest685 = new BitSet(new long[]{0x0000000010000000L});
public static final BitSet FOLLOW_Literal_in_nodeTest687 = new BitSet(new long[]{0x0000000000000080L});
public static final BitSet FOLLOW_RPAR_in_nodeTest689 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_LBRAC_in_predicate704 = new BitSet(new long[]{0x000010207C00F470L});
public static final BitSet FOLLOW_expr_in_predicate706 = new BitSet(new long[]{0x0000000000000200L});
public static final BitSet FOLLOW_RBRAC_in_predicate708 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_set_in_abbreviatedStep0 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_orExpr_in_expr744 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_variableReference_in_primaryExpr759 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_LPAR_in_primaryExpr765 = new BitSet(new long[]{0x000010207C00F470L});
public static final BitSet FOLLOW_expr_in_primaryExpr767 = new BitSet(new long[]{0x0000000000000080L});
public static final BitSet FOLLOW_RPAR_in_primaryExpr769 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_Literal_in_primaryExpr775 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_Number_in_primaryExpr781 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_functionCall_in_primaryExpr787 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_functionName_in_functionCall802 = new BitSet(new long[]{0x0000000000000040L});
public static final BitSet FOLLOW_LPAR_in_functionCall804 = new BitSet(new long[]{0x000010207C00F4F0L});
public static final BitSet FOLLOW_expr_in_functionCall807 = new BitSet(new long[]{0x0000000000010080L});
public static final BitSet FOLLOW_COMMA_in_functionCall810 = new BitSet(new long[]{0x000010207C00F470L});
public static final BitSet FOLLOW_expr_in_functionCall812 = new BitSet(new long[]{0x0000000000010080L});
public static final BitSet FOLLOW_RPAR_in_functionCall818 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_pathExprNoRoot_in_unionExprNoRoot833 = new BitSet(new long[]{0x0000000000020002L});
public static final BitSet FOLLOW_PIPE_in_unionExprNoRoot836 = new BitSet(new long[]{0x000010207C00F470L});
public static final BitSet FOLLOW_unionExprNoRoot_in_unionExprNoRoot838 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_PATHSEP_in_unionExprNoRoot846 = new BitSet(new long[]{0x0000000000020000L});
public static final BitSet FOLLOW_PIPE_in_unionExprNoRoot848 = new BitSet(new long[]{0x000010207C00F470L});
public static final BitSet FOLLOW_unionExprNoRoot_in_unionExprNoRoot850 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_locationPath_in_pathExprNoRoot865 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_filterExpr_in_pathExprNoRoot871 = new BitSet(new long[]{0x000000204C00F032L});
public static final BitSet FOLLOW_absoluteLocationPathNoroot_in_pathExprNoRoot873 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_primaryExpr_in_filterExpr890 = new BitSet(new long[]{0x0000000000000102L});
public static final BitSet FOLLOW_predicate_in_filterExpr892 = new BitSet(new long[]{0x0000000000000102L});
public static final BitSet FOLLOW_andExpr_in_orExpr908 = new BitSet(new long[]{0x0000004000000002L});
public static final BitSet FOLLOW_38_in_orExpr911 = new BitSet(new long[]{0x000010207C00F470L});
public static final BitSet FOLLOW_andExpr_in_orExpr913 = new BitSet(new long[]{0x0000004000000002L});
public static final BitSet FOLLOW_equalityExpr_in_andExpr930 = new BitSet(new long[]{0x0000008000000002L});
public static final BitSet FOLLOW_39_in_andExpr933 = new BitSet(new long[]{0x000010207C00F470L});
public static final BitSet FOLLOW_equalityExpr_in_andExpr935 = new BitSet(new long[]{0x0000008000000002L});
public static final BitSet FOLLOW_relationalExpr_in_equalityExpr952 = new BitSet(new long[]{0x0000030000000002L});
public static final BitSet FOLLOW_set_in_equalityExpr962 = new BitSet(new long[]{0x000010207C00F470L});
public static final BitSet FOLLOW_relationalExpr_in_equalityExpr992 = new BitSet(new long[]{0x0000030000000002L});
public static final BitSet FOLLOW_additiveExpr_in_relationalExpr1012 = new BitSet(new long[]{0x00000000003C0002L});
public static final BitSet FOLLOW_set_in_relationalExpr1022 = new BitSet(new long[]{0x000010207C00F470L});
public static final BitSet FOLLOW_additiveExpr_in_relationalExpr1072 = new BitSet(new long[]{0x00000000003C0002L});
public static final BitSet FOLLOW_multiplicativeExpr_in_additiveExpr1092 = new BitSet(new long[]{0x0000000000000C02L});
public static final BitSet FOLLOW_set_in_additiveExpr1102 = new BitSet(new long[]{0x000010207C00F470L});
public static final BitSet FOLLOW_multiplicativeExpr_in_additiveExpr1132 = new BitSet(new long[]{0x0000000000000C02L});
public static final BitSet FOLLOW_unaryExprNoRoot_in_multiplicativeExpr1152 = new BitSet(new long[]{0x00000C0000002002L});
public static final BitSet FOLLOW_set_in_multiplicativeExpr1162 = new BitSet(new long[]{0x000010207C00F470L});
public static final BitSet FOLLOW_multiplicativeExpr_in_multiplicativeExpr1202 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_PATHSEP_in_multiplicativeExpr1213 = new BitSet(new long[]{0x00000C0000000002L});
public static final BitSet FOLLOW_set_in_multiplicativeExpr1223 = new BitSet(new long[]{0x000010207C00F470L});
public static final BitSet FOLLOW_multiplicativeExpr_in_multiplicativeExpr1253 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_MINUS_in_unaryExprNoRoot1273 = new BitSet(new long[]{0x000010207C00F470L});
public static final BitSet FOLLOW_unionExprNoRoot_in_unaryExprNoRoot1276 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_nCName_in_qName1291 = new BitSet(new long[]{0x0000000000400002L});
public static final BitSet FOLLOW_COLON_in_qName1294 = new BitSet(new long[]{0x0000000044000000L});
public static final BitSet FOLLOW_nCName_in_qName1296 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_qName_in_functionName1313 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_44_in_variableReference1329 = new BitSet(new long[]{0x0000000044002000L});
public static final BitSet FOLLOW_qName_in_variableReference1331 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_MUL_in_nameTest1346 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_nCName_in_nameTest1352 = new BitSet(new long[]{0x0000000000400000L});
public static final BitSet FOLLOW_COLON_in_nameTest1354 = new BitSet(new long[]{0x0000000000002000L});
public static final BitSet FOLLOW_MUL_in_nameTest1356 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_qName_in_nameTest1362 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_set_in_nCName0 = new BitSet(new long[]{0x0000000000000002L});
}