blob: 9f7a866bedde0ec0deb149664253e35f9e7f3353 [file] [log] [blame]
/*
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*/
// ANTLR GENERATED CODE: DO NOT EDIT (LUCENENET: Not really auto generated in the port)
using Antlr.Runtime;
using Antlr.Runtime.Tree;
using Lucene.Net.Support;
using System;
using System.Diagnostics.CodeAnalysis;
namespace Lucene.Net.Expressions.JS
{
internal class JavascriptParser : Parser
{
public static readonly string[] tokenNames =
{
"<invalid>", "<EOR>", "<DOWN>", "<UP>", "AT_ADD", "AT_BIT_AND", "AT_BIT_NOT",
"AT_BIT_OR", "AT_BIT_SHL", "AT_BIT_SHR", "AT_BIT_SHU", "AT_BIT_XOR", "AT_BOOL_AND",
"AT_BOOL_NOT", "AT_BOOL_OR", "AT_CALL", "AT_COLON", "AT_COMMA", "AT_COMP_EQ",
"AT_COMP_GT", "AT_COMP_GTE", "AT_COMP_LT", "AT_COMP_LTE", "AT_COMP_NEQ",
"AT_COND_QUE", "AT_DIVIDE", "AT_DOT", "AT_LPAREN", "AT_MODULO", "AT_MULTIPLY",
"AT_NEGATE", "AT_RPAREN", "AT_SUBTRACT", "DECIMAL", "DECIMALDIGIT", "DECIMALINTEGER",
"EXPONENT", "HEX", "HEXDIGIT", "ID", "NAMESPACE_ID", "OCTAL", "OCTALDIGIT",
"WS"
};
public const int EOF = -1;
public const int AT_ADD = 4;
public const int AT_BIT_AND = 5;
public const int AT_BIT_NOT = 6;
public const int AT_BIT_OR = 7;
public const int AT_BIT_SHL = 8;
public const int AT_BIT_SHR = 9;
public const int AT_BIT_SHU = 10;
public const int AT_BIT_XOR = 11;
public const int AT_BOOL_AND = 12;
public const int AT_BOOL_NOT = 13;
public const int AT_BOOL_OR = 14;
public const int AT_CALL = 15;
public const int AT_COLON = 16;
public const int AT_COMMA = 17;
public const int AT_COMP_EQ = 18;
public const int AT_COMP_GT = 19;
public const int AT_COMP_GTE = 20;
public const int AT_COMP_LT = 21;
public const int AT_COMP_LTE = 22;
public const int AT_COMP_NEQ = 23;
public const int AT_COND_QUE = 24;
public const int AT_DIVIDE = 25;
public const int AT_DOT = 26;
public const int AT_LPAREN = 27;
public const int AT_MODULO = 28;
public const int AT_MULTIPLY = 29;
public const int AT_NEGATE = 30;
public const int AT_RPAREN = 31;
public const int AT_SUBTRACT = 32;
public const int DECIMAL = 33;
public const int DECIMALDIGIT = 34;
public const int DECIMALINTEGER = 35;
public const int EXPONENT = 36;
public const int HEX = 37;
public const int HEXDIGIT = 38;
public const int ID = 39;
public const int NAMESPACE_ID = 40;
public const int OCTAL = 41;
public const int OCTALDIGIT = 42;
public const int WS = 43;
// delegates
public virtual Parser[] GetDelegates()
{
return new Parser[] { };
}
public JavascriptParser(CommonTokenStream input)
: this(input, new RecognizerSharedState())
{
}
public JavascriptParser(CommonTokenStream input, RecognizerSharedState state)
: base(input, state)
{
}
protected ITreeAdaptor m_adaptor = new CommonTreeAdaptor();
public virtual ITreeAdaptor TreeAdaptor
{
get => m_adaptor;
set => m_adaptor = value;
}
// delegators
[WritableArray]
[SuppressMessage("Microsoft.Performance", "CA1819", Justification = "Lucene's design requires some writable array properties")]
public override string[] TokenNames => tokenNames;
public override string GrammarFileName
=> "src/java/org/apache/lucene/expressions/js/Javascript.g";
public override void DisplayRecognitionError(string[] tokenNames, RecognitionException re)
{
string message;
if (re.Token == null)
{
message = " unknown error (missing token).";
}
else
{
if (re is UnwantedTokenException)
{
message = " extraneous " + GetReadableTokenString(re.Token) + " at position (" + re.CharPositionInLine + ").";
}
else
{
if (re is MissingTokenException)
{
message = " missing " + GetReadableTokenString(re.Token) + " at position (" + re.CharPositionInLine + ").";
}
else
{
if (re is NoViableAltException)
{
switch (re.Token.Type)
{
case EOF:
{
message = " unexpected end of expression.";
break;
}
default:
{
message = " invalid sequence of tokens near " + GetReadableTokenString(re.Token)
+ " at position (" + re.CharPositionInLine + ").";
break;
}
}
}
else
{
message = " unexpected token " + GetReadableTokenString(re.Token) + " at position ("
+ re.CharPositionInLine + ").";
}
}
}
}
//ParseException parseException = new ParseException(message, re.CharPositionInLine);
throw new InvalidOperationException(message);
}
public static string GetReadableTokenString(IToken token)
{
if (token == null)
{
return "unknown token";
}
switch (token.Type)
{
case AT_LPAREN:
{
return "open parenthesis '('";
}
case AT_RPAREN:
{
return "close parenthesis ')'";
}
case AT_COMP_LT:
{
return "less than '<'";
}
case AT_COMP_LTE:
{
return "less than or equal '<='";
}
case AT_COMP_GT:
{
return "greater than '>'";
}
case AT_COMP_GTE:
{
return "greater than or equal '>='";
}
case AT_COMP_EQ:
{
return "equal '=='";
}
case AT_NEGATE:
{
return "negate '!='";
}
case AT_BOOL_NOT:
{
return "boolean not '!'";
}
case AT_BOOL_AND:
{
return "boolean and '&&'";
}
case AT_BOOL_OR:
{
return "boolean or '||'";
}
case AT_COND_QUE:
{
return "conditional '?'";
}
case AT_ADD:
{
return "addition '+'";
}
case AT_SUBTRACT:
{
return "subtraction '-'";
}
case AT_MULTIPLY:
{
return "multiplication '*'";
}
case AT_DIVIDE:
{
return "division '/'";
}
case AT_MODULO:
{
return "modulo '%'";
}
case AT_BIT_SHL:
{
return "bit shift left '<<'";
}
case AT_BIT_SHR:
{
return "bit shift right '>>'";
}
case AT_BIT_SHU:
{
return "unsigned bit shift right '>>>'";
}
case AT_BIT_AND:
{
return "bitwise and '&'";
}
case AT_BIT_OR:
{
return "bitwise or '|'";
}
case AT_BIT_XOR:
{
return "bitwise xor '^'";
}
case AT_BIT_NOT:
{
return "bitwise not '~'";
}
case ID:
{
return "identifier '" + token.Text + "'";
}
case DECIMAL:
{
return "decimal '" + token.Text + "'";
}
case OCTAL:
{
return "octal '" + token.Text + "'";
}
case HEX:
{
return "hex '" + token.Text + "'";
}
case EOF:
{
return "end of expression";
}
default:
{
return "'" + token.Text + "'";
}
}
}
public class ExpressionReturn<TToken> : ParserRuleReturnScope<TToken>
{
}
// $ANTLR start "expression"
// src/java/org/apache/lucene/expressions/js/Javascript.g:250:1: expression : conditional EOF !;
public AstParserRuleReturnScope<ITree, IToken> Expression()
{
var retval = new AstParserRuleReturnScope<ITree, IToken> { Start = input.LT(1) };
CommonTree root = null;
IToken EOF2 = null;
AstParserRuleReturnScope<ITree, IToken> conditional1;
//CommonTree EOF2_tree = null; // LUCENENET NOTE: Not used
try
{
{
// src/java/org/apache/lucene/expressions/js/Javascript.g:251:5: ( conditional EOF !)
// src/java/org/apache/lucene/expressions/js/Javascript.g:251:7: conditional EOF !
root = (CommonTree)m_adaptor.Nil();
PushFollow(FOLLOW_conditional_in_expression737);
conditional1 = Conditional();
state._fsp--;
m_adaptor.AddChild(root, conditional1.Tree);
EOF2 = (IToken)Match(input, EOF, FOLLOW_EOF_in_expression739);
}
retval.Stop = input.LT(-1);
retval.Tree = (CommonTree)m_adaptor.RulePostProcessing(root);
m_adaptor.SetTokenBoundaries(retval.Tree, retval.Start, retval.Stop);
}
catch (RecognitionException re)
{
ReportError(re);
Recover(input, re);
retval.Tree = (CommonTree)m_adaptor.ErrorNode(input, retval.Start, input.LT(-1), re);
}
// do for sure before leaving
return retval;
}
// $ANTLR start "conditional"
// src/java/org/apache/lucene/expressions/js/Javascript.g:254:1: conditional : logical_or ( AT_COND_QUE ^ conditional AT_COLON ! conditional )? ;
/// <exception cref="Antlr.Runtime.RecognitionException"></exception>
public AstParserRuleReturnScope<ITree, IToken> Conditional()
{
var retval = new AstParserRuleReturnScope<ITree, IToken> { Start = input.LT(1) };
CommonTree root_0;
IToken AT_COND_QUE4;
IToken AT_COLON6 = null;
AstParserRuleReturnScope<ITree, IToken> logical_or3;
AstParserRuleReturnScope<ITree, IToken> conditional5;
AstParserRuleReturnScope<ITree, IToken> conditional7;
CommonTree AT_COND_QUE4_tree;
//CommonTree AT_COLON6_tree = null; // LUCENENET NOTE: Not used
try
{
{
// src/java/org/apache/lucene/expressions/js/Javascript.g:255:5: ( logical_or ( AT_COND_QUE ^ conditional AT_COLON ! conditional )? )
// src/java/org/apache/lucene/expressions/js/Javascript.g:255:7: logical_or ( AT_COND_QUE ^ conditional AT_COLON ! conditional )?
root_0 = (CommonTree)m_adaptor.Nil();
PushFollow(FOLLOW_logical_or_in_conditional757);
logical_or3 = Logical_Or();
state._fsp--;
m_adaptor.AddChild(root_0, logical_or3.Tree);
// src/java/org/apache/lucene/expressions/js/Javascript.g:255:18: ( AT_COND_QUE ^ conditional AT_COLON ! conditional )?
int alt1 = 2;
int LA1_0 = input.LA(1);
if ((LA1_0 == AT_COND_QUE))
{
alt1 = 1;
}
switch (alt1)
{
case 1:
{
// src/java/org/apache/lucene/expressions/js/Javascript.g:255:19: AT_COND_QUE ^ conditional AT_COLON ! conditional
AT_COND_QUE4 = (IToken)Match(input, AT_COND_QUE, FOLLOW_AT_COND_QUE_in_conditional760);
AT_COND_QUE4_tree = (CommonTree)m_adaptor.Create(AT_COND_QUE4);
root_0 = (CommonTree)m_adaptor.BecomeRoot(AT_COND_QUE4_tree, root_0);
PushFollow(FOLLOW_conditional_in_conditional763);
conditional5 = Conditional();
state._fsp--;
m_adaptor.AddChild(root_0, conditional5.Tree);
AT_COLON6 = (IToken)Match(input, AT_COLON, FOLLOW_AT_COLON_in_conditional765);
PushFollow(FOLLOW_conditional_in_conditional768);
conditional7 = Conditional();
state._fsp--;
m_adaptor.AddChild(root_0, conditional7.Tree);
break;
}
}
}
retval.Stop = input.LT(-1);
retval.Tree = (CommonTree)m_adaptor.RulePostProcessing(root_0);
m_adaptor.SetTokenBoundaries(retval.Tree, retval.Start, retval.Stop);
}
catch (RecognitionException re)
{
ReportError(re);
Recover(input, re);
retval.Tree = (CommonTree)m_adaptor.ErrorNode(input, retval.Start, input.LT(-1), re);
}
// do for sure before leaving
return retval;
}
// $ANTLR start "logical_or"
// src/java/org/apache/lucene/expressions/js/Javascript.g:258:1: logical_or : logical_and ( AT_BOOL_OR ^ logical_and )* ;
public AstParserRuleReturnScope<ITree, IToken> Logical_Or()
{
var retval = new AstParserRuleReturnScope<ITree, IToken> { Start = input.LT(1) };
CommonTree root_0;
IToken AT_BOOL_OR9;
AstParserRuleReturnScope<ITree, IToken> logical_and8;
AstParserRuleReturnScope<ITree, IToken> logical_and10;
CommonTree AT_BOOL_OR9_tree;
try
{
{
// src/java/org/apache/lucene/expressions/js/Javascript.g:259:5: ( logical_and ( AT_BOOL_OR ^ logical_and )* )
// src/java/org/apache/lucene/expressions/js/Javascript.g:259:7: logical_and ( AT_BOOL_OR ^ logical_and )*
root_0 = (CommonTree)m_adaptor.Nil();
PushFollow(FOLLOW_logical_and_in_logical_or787);
logical_and8 = Logical_And();
state._fsp--;
m_adaptor.AddChild(root_0, logical_and8.Tree);
// src/java/org/apache/lucene/expressions/js/Javascript.g:259:19: ( AT_BOOL_OR ^ logical_and )*
while (true)
{
int alt2 = 2;
int LA2_0 = input.LA(1);
if ((LA2_0 == AT_BOOL_OR))
{
alt2 = 1;
}
switch (alt2)
{
case 1:
{
// src/java/org/apache/lucene/expressions/js/Javascript.g:259:20: AT_BOOL_OR ^ logical_and
AT_BOOL_OR9 = (IToken)Match(input, AT_BOOL_OR, FOLLOW_AT_BOOL_OR_in_logical_or790);
AT_BOOL_OR9_tree = (CommonTree)m_adaptor.Create(AT_BOOL_OR9);
root_0 = (CommonTree)m_adaptor.BecomeRoot(AT_BOOL_OR9_tree, root_0);
PushFollow(FOLLOW_logical_and_in_logical_or793);
logical_and10 = Logical_And();
state._fsp--;
m_adaptor.AddChild(root_0, logical_and10.Tree);
break;
}
default:
{
goto loop2_break;
}
}
//loop2_continue: ; // LUCENENET NOTE: Not used
}
loop2_break: ;
}
retval.Stop = input.LT(-1);
retval.Tree = (CommonTree)m_adaptor.RulePostProcessing(root_0);
m_adaptor.SetTokenBoundaries(retval.Tree, retval.Start, retval.Stop);
}
catch (RecognitionException re)
{
ReportError(re);
Recover(input, re);
retval.Tree = (CommonTree)m_adaptor.ErrorNode(input, retval.Start, input.LT(-1), re);
}
// do for sure before leaving
return retval;
}
// $ANTLR start "logical_and"
// src/java/org/apache/lucene/expressions/js/Javascript.g:262:1: logical_and : bitwise_or ( AT_BOOL_AND ^ bitwise_or )* ;
public AstParserRuleReturnScope<ITree, IToken> Logical_And()
{
var retval = new AstParserRuleReturnScope<ITree, IToken> { Start = input.LT(1) };
CommonTree root;
IToken AT_BOOL_AND12;
AstParserRuleReturnScope<ITree, IToken> bitwise_or11;
AstParserRuleReturnScope<ITree, IToken> bitwise_or13;
CommonTree AT_BOOL_AND12_tree = null;
try
{
{
// src/java/org/apache/lucene/expressions/js/Javascript.g:263:5: ( bitwise_or ( AT_BOOL_AND ^ bitwise_or )* )
// src/java/org/apache/lucene/expressions/js/Javascript.g:263:7: bitwise_or ( AT_BOOL_AND ^ bitwise_or )*
root = (CommonTree)m_adaptor.Nil();
PushFollow(FOLLOW_bitwise_or_in_logical_and812);
bitwise_or11 = Bitwise_Or();
state._fsp--;
m_adaptor.AddChild(root, bitwise_or11.Tree);
// src/java/org/apache/lucene/expressions/js/Javascript.g:263:18: ( AT_BOOL_AND ^ bitwise_or )*
while (true)
{
int alt3 = 2;
int LA3_0 = input.LA(1);
if ((LA3_0 == AT_BOOL_AND))
{
alt3 = 1;
}
switch (alt3)
{
case 1:
{
// src/java/org/apache/lucene/expressions/js/Javascript.g:263:19: AT_BOOL_AND ^ bitwise_or
AT_BOOL_AND12 = (IToken)Match(input, AT_BOOL_AND, FOLLOW_AT_BOOL_AND_in_logical_and815);
AT_BOOL_AND12_tree = (CommonTree)m_adaptor.Create(AT_BOOL_AND12);
root = (CommonTree)m_adaptor.BecomeRoot(AT_BOOL_AND12_tree, root);
PushFollow(FOLLOW_bitwise_or_in_logical_and818);
bitwise_or13 = Bitwise_Or();
state._fsp--;
m_adaptor.AddChild(root, bitwise_or13.Tree);
break;
}
default:
{
goto loop3_break;
}
}
//loop3_continue: ; // LUCENENET NOTE: Not used
}
loop3_break: ;
}
retval.Stop = input.LT(-1);
retval.Tree = (CommonTree)m_adaptor.RulePostProcessing(root);
m_adaptor.SetTokenBoundaries(retval.Tree, retval.Start, retval.Stop);
}
catch (RecognitionException re)
{
ReportError(re);
Recover(input, re);
retval.Tree = (CommonTree)m_adaptor.ErrorNode(input, retval.Start, input.LT(-1), re
);
}
// do for sure before leaving
return retval;
}
// $ANTLR start "bitwise_or"
// src/java/org/apache/lucene/expressions/js/Javascript.g:266:1: bitwise_or : bitwise_xor ( AT_BIT_OR ^ bitwise_xor )* ;
public AstParserRuleReturnScope<ITree, IToken> Bitwise_Or()
{
var retval = new AstParserRuleReturnScope<ITree, IToken> { Start = input.LT(1) };
try
{
CommonTree root = null;
{
// src/java/org/apache/lucene/expressions/js/Javascript.g:267:5: ( bitwise_xor ( AT_BIT_OR ^ bitwise_xor )* )
// src/java/org/apache/lucene/expressions/js/Javascript.g:267:7: bitwise_xor ( AT_BIT_OR ^ bitwise_xor )*
root = (CommonTree)m_adaptor.Nil();
PushFollow(FOLLOW_bitwise_xor_in_bitwise_or837);
AstParserRuleReturnScope<ITree, IToken> bitwise_xor14 = Bitwise_XOr();
state._fsp--;
m_adaptor.AddChild(root, bitwise_xor14.Tree);
// src/java/org/apache/lucene/expressions/js/Javascript.g:267:19: ( AT_BIT_OR ^ bitwise_xor )*
while (true)
{
int alt4 = 2;
int LA4_0 = input.LA(1);
if ((LA4_0 == AT_BIT_OR))
{
alt4 = 1;
}
switch (alt4)
{
case 1:
{
// src/java/org/apache/lucene/expressions/js/Javascript.g:267:20: AT_BIT_OR ^ bitwise_xor
IToken AT_BIT_OR15 = (IToken)Match(input, AT_BIT_OR, FOLLOW_AT_BIT_OR_in_bitwise_or840);
CommonTree AT_BIT_OR15_tree = (CommonTree)m_adaptor.Create(AT_BIT_OR15);
root = (CommonTree)m_adaptor.BecomeRoot(AT_BIT_OR15_tree, root);
PushFollow(FOLLOW_bitwise_xor_in_bitwise_or843);
AstParserRuleReturnScope<ITree, IToken> bitwise_xor16 = Bitwise_XOr();
state._fsp--;
m_adaptor.AddChild(root, bitwise_xor16.Tree);
break;
}
default:
{
goto loop4_break;
}
}
//loop4_continue: ; // LUCENENET NOTE: Not used
}
loop4_break: ;
}
retval.Stop = input.LT(-1);
retval.Tree = (CommonTree)m_adaptor.RulePostProcessing(root);
m_adaptor.SetTokenBoundaries(retval.Tree, retval.Start, retval.Stop);
}
catch (RecognitionException re)
{
ReportError(re);
Recover(input, re);
retval.Tree = (CommonTree)m_adaptor.ErrorNode(input, retval.Start, input.LT(-1), re);
}
// do for sure before leaving
return retval;
}
// $ANTLR start "bitwise_xor"
// src/java/org/apache/lucene/expressions/js/Javascript.g:270:1: bitwise_xor : bitwise_and ( AT_BIT_XOR ^ bitwise_and )* ;
public AstParserRuleReturnScope<ITree, IToken> Bitwise_XOr()
{
var retval = new AstParserRuleReturnScope<ITree, IToken> { Start = input.LT(1) };
try
{
CommonTree root = null;
{
// src/java/org/apache/lucene/expressions/js/Javascript.g:271:5: ( bitwise_and ( AT_BIT_XOR ^ bitwise_and )* )
// src/java/org/apache/lucene/expressions/js/Javascript.g:271:7: bitwise_and ( AT_BIT_XOR ^ bitwise_and )*
root = (CommonTree)m_adaptor.Nil();
PushFollow(FOLLOW_bitwise_and_in_bitwise_xor862);
AstParserRuleReturnScope<ITree, IToken> bitwise_and17 = Bitwise_And();
state._fsp--;
m_adaptor.AddChild(root, bitwise_and17.Tree);
// src/java/org/apache/lucene/expressions/js/Javascript.g:271:19: ( AT_BIT_XOR ^ bitwise_and )*
while (true)
{
int alt5 = 2;
int LA5_0 = input.LA(1);
if ((LA5_0 == AT_BIT_XOR))
{
alt5 = 1;
}
switch (alt5)
{
case 1:
{
// src/java/org/apache/lucene/expressions/js/Javascript.g:271:20: AT_BIT_XOR ^ bitwise_and
IToken AT_BIT_XOR18 = (IToken)Match(input, AT_BIT_XOR, FOLLOW_AT_BIT_XOR_in_bitwise_xor865
);
CommonTree AT_BIT_XOR18_tree = (CommonTree)m_adaptor.Create(AT_BIT_XOR18);
root = (CommonTree)m_adaptor.BecomeRoot(AT_BIT_XOR18_tree, root);
PushFollow(FOLLOW_bitwise_and_in_bitwise_xor868);
AstParserRuleReturnScope<ITree, IToken> bitwise_and19 = Bitwise_And();
state._fsp--;
m_adaptor.AddChild(root, bitwise_and19.Tree);
break;
}
default:
{
goto loop5_break;
}
}
//loop5_continue: ; // LUCENENET NOTE: Not used
}
loop5_break: ;
}
retval.Stop = input.LT(-1);
retval.Tree = (CommonTree)m_adaptor.RulePostProcessing(root);
m_adaptor.SetTokenBoundaries(retval.Tree, retval.Start, retval.Stop);
}
catch (RecognitionException re)
{
ReportError(re);
Recover(input, re);
retval.Tree = (CommonTree)m_adaptor.ErrorNode(input, retval.Start, input.LT(-1), re
);
}
// do for sure before leaving
return retval;
}
// $ANTLR start "bitwise_and"
// src/java/org/apache/lucene/expressions/js/Javascript.g:274:1: bitwise_and : equality ( AT_BIT_AND ^ equality )* ;
public AstParserRuleReturnScope<ITree, IToken> Bitwise_And()
{
var retval = new AstParserRuleReturnScope<ITree, IToken> { Start = input.LT(1) };
try
{
CommonTree root = null;
{
// src/java/org/apache/lucene/expressions/js/Javascript.g:275:5: ( equality ( AT_BIT_AND ^ equality )* )
// src/java/org/apache/lucene/expressions/js/Javascript.g:275:8: equality ( AT_BIT_AND ^ equality )*
root = (CommonTree)m_adaptor.Nil();
PushFollow(FOLLOW_equality_in_bitwise_and888);
AstParserRuleReturnScope<ITree, IToken> equality20 = Equality();
state._fsp--;
m_adaptor.AddChild(root, equality20.Tree);
// src/java/org/apache/lucene/expressions/js/Javascript.g:275:17: ( AT_BIT_AND ^ equality )*
while (true)
{
int alt6 = 2;
int LA6_0 = input.LA(1);
if ((LA6_0 == AT_BIT_AND))
{
alt6 = 1;
}
switch (alt6)
{
case 1:
{
// src/java/org/apache/lucene/expressions/js/Javascript.g:275:18: AT_BIT_AND ^ equality
IToken AT_BIT_AND21 = (IToken)Match(input, AT_BIT_AND, FOLLOW_AT_BIT_AND_in_bitwise_and891
);
CommonTree AT_BIT_AND21_tree = (CommonTree)m_adaptor.Create(AT_BIT_AND21);
root = (CommonTree)m_adaptor.BecomeRoot(AT_BIT_AND21_tree, root);
PushFollow(FOLLOW_equality_in_bitwise_and894);
AstParserRuleReturnScope<ITree, IToken> equality22 = Equality();
state._fsp--;
m_adaptor.AddChild(root, equality22.Tree);
break;
}
default:
{
goto loop6_break;
}
}
//loop6_continue: ; // LUCENENET NOTE: Not used
}
loop6_break: ;
}
retval.Stop = input.LT(-1);
retval.Tree = (CommonTree)m_adaptor.RulePostProcessing(root);
m_adaptor.SetTokenBoundaries(retval.Tree, retval.Start, retval.Stop);
}
catch (RecognitionException re)
{
ReportError(re);
Recover(input, re);
retval.Tree = (CommonTree)m_adaptor.ErrorNode(input, retval.Start, input.LT(-1), re);
}
// do for sure before leaving
return retval;
}
// $ANTLR start "equality"
// src/java/org/apache/lucene/expressions/js/Javascript.g:278:1: equality : relational ( ( AT_COMP_EQ | AT_COMP_NEQ ) ^ relational )* ;
public AstParserRuleReturnScope<ITree, IToken> Equality()
{
var retval = new AstParserRuleReturnScope<ITree, IToken> { Start = input.LT(1) };
//CommonTree set24_tree = null; // LUCENENET NOTE: Not used
try
{
CommonTree root = null;
{
// src/java/org/apache/lucene/expressions/js/Javascript.g:279:5: ( relational ( ( AT_COMP_EQ | AT_COMP_NEQ ) ^ relational )* )
// src/java/org/apache/lucene/expressions/js/Javascript.g:279:7: relational ( ( AT_COMP_EQ | AT_COMP_NEQ ) ^ relational )*
root = (CommonTree)m_adaptor.Nil();
PushFollow(FOLLOW_relational_in_equality913);
AstParserRuleReturnScope<ITree, IToken> relational23 = Relational();
state._fsp--;
m_adaptor.AddChild(root, relational23.Tree);
// src/java/org/apache/lucene/expressions/js/Javascript.g:279:18: ( ( AT_COMP_EQ | AT_COMP_NEQ ) ^ relational )*
while (true)
{
int alt7 = 2;
int LA7_0 = input.LA(1);
if ((LA7_0 == AT_COMP_EQ || LA7_0 == AT_COMP_NEQ))
{
alt7 = 1;
}
switch (alt7)
{
case 1:
{
// src/java/org/apache/lucene/expressions/js/Javascript.g:279:19: ( AT_COMP_EQ | AT_COMP_NEQ ) ^ relational
IToken set24 = input.LT(1);
set24 = input.LT(1);
if (input.LA(1) == AT_COMP_EQ || input.LA(1) == AT_COMP_NEQ)
{
input.Consume();
root = (CommonTree)m_adaptor.BecomeRoot((CommonTree)m_adaptor.Create(set24), root
);
state.errorRecovery = false;
}
else
{
MismatchedSetException mse = new MismatchedSetException(null, input);
throw mse;
}
PushFollow(FOLLOW_relational_in_equality925);
AstParserRuleReturnScope<ITree, IToken> relational25 = Relational();
state._fsp--;
m_adaptor.AddChild(root, relational25.Tree);
break;
}
default:
{
goto loop7_break;
}
}
//loop7_continue: ; // LUCENENET NOTE: Not used
}
loop7_break: ;
}
retval.Stop = input.LT(-1);
retval.Tree = (CommonTree)m_adaptor.RulePostProcessing(root);
m_adaptor.SetTokenBoundaries(retval.Tree, retval.Start, retval.Stop);
}
catch (RecognitionException re)
{
ReportError(re);
Recover(input, re);
retval.Tree = (CommonTree)m_adaptor.ErrorNode(input, retval.Start, input.LT(-1), re
);
}
// do for sure before leaving
return retval;
}
// $ANTLR start "relational"
// src/java/org/apache/lucene/expressions/js/Javascript.g:282:1: relational : shift ( ( AT_COMP_LT | AT_COMP_GT | AT_COMP_LTE | AT_COMP_GTE ) ^ shift )* ;
public AstParserRuleReturnScope<ITree, IToken> Relational()
{
var retval = new AstParserRuleReturnScope<ITree, IToken> { Start = input.LT(1) };
//CommonTree set27_tree = null; // LUCENENET NOTE: Not used
try
{
CommonTree root = null;
{
// src/java/org/apache/lucene/expressions/js/Javascript.g:283:5: ( shift ( ( AT_COMP_LT | AT_COMP_GT | AT_COMP_LTE | AT_COMP_GTE ) ^ shift )* )
// src/java/org/apache/lucene/expressions/js/Javascript.g:283:7: shift ( ( AT_COMP_LT | AT_COMP_GT | AT_COMP_LTE | AT_COMP_GTE ) ^ shift )*
root = (CommonTree)m_adaptor.Nil();
PushFollow(FOLLOW_shift_in_relational944);
AstParserRuleReturnScope<ITree, IToken> shift26 = Shift();
state._fsp--;
m_adaptor.AddChild(root, shift26.Tree);
// src/java/org/apache/lucene/expressions/js/Javascript.g:283:13: ( ( AT_COMP_LT | AT_COMP_GT | AT_COMP_LTE | AT_COMP_GTE ) ^ shift )*
while (true)
{
int alt8 = 2;
int LA8_0 = input.LA(1);
if (((LA8_0 >= AT_COMP_GT && LA8_0 <= AT_COMP_LTE)))
{
alt8 = 1;
}
switch (alt8)
{
case 1:
{
// src/java/org/apache/lucene/expressions/js/Javascript.g:283:14: ( AT_COMP_LT | AT_COMP_GT | AT_COMP_LTE | AT_COMP_GTE ) ^ shift
IToken set27 = input.LT(1);
set27 = input.LT(1);
if ((input.LA(1) >= AT_COMP_GT && input.LA(1) <= AT_COMP_LTE))
{
input.Consume();
root = (CommonTree)m_adaptor.BecomeRoot((CommonTree)m_adaptor.Create(set27), root
);
state.errorRecovery = false;
}
else
{
MismatchedSetException mse = new MismatchedSetException(null, input);
throw mse;
}
PushFollow(FOLLOW_shift_in_relational964);
AstParserRuleReturnScope<ITree, IToken> shift28 = Shift();
state._fsp--;
m_adaptor.AddChild(root, shift28.Tree);
break;
}
default:
{
goto loop8_break;
}
}
//loop8_continue: ; // LUCENENET NOTE: Not used
}
loop8_break: ;
}
retval.Stop = input.LT(-1);
retval.Tree = (CommonTree)m_adaptor.RulePostProcessing(root);
m_adaptor.SetTokenBoundaries(retval.Tree, retval.Start, retval.Stop);
}
catch (RecognitionException re)
{
ReportError(re);
Recover(input, re);
retval.Tree = (CommonTree)m_adaptor.ErrorNode(input, retval.Start, input.LT(-1), re
);
}
// do for sure before leaving
return retval;
}
// $ANTLR start "shift"
// src/java/org/apache/lucene/expressions/js/Javascript.g:286:1: shift : additive ( ( AT_BIT_SHL | AT_BIT_SHR | AT_BIT_SHU ) ^ additive )* ;
public AstParserRuleReturnScope<ITree, IToken> Shift()
{
var retval = new AstParserRuleReturnScope<ITree, IToken> { Start = input.LT(1) };
//CommonTree set30_tree = null; // LUCENENET NOTE: Not used
try
{
CommonTree root = null;
{
// src/java/org/apache/lucene/expressions/js/Javascript.g:287:5: ( additive ( ( AT_BIT_SHL | AT_BIT_SHR | AT_BIT_SHU ) ^ additive )* )
// src/java/org/apache/lucene/expressions/js/Javascript.g:287:7: additive ( ( AT_BIT_SHL | AT_BIT_SHR | AT_BIT_SHU ) ^ additive )*
root = (CommonTree)m_adaptor.Nil();
PushFollow(FOLLOW_additive_in_shift983);
AstParserRuleReturnScope<ITree, IToken> additive29 = Additive();
state._fsp--;
m_adaptor.AddChild(root, additive29.Tree);
// src/java/org/apache/lucene/expressions/js/Javascript.g:287:16: ( ( AT_BIT_SHL | AT_BIT_SHR | AT_BIT_SHU ) ^ additive )*
while (true)
{
int alt9 = 2;
int LA9_0 = input.LA(1);
if (((LA9_0 >= AT_BIT_SHL && LA9_0 <= AT_BIT_SHU)))
{
alt9 = 1;
}
switch (alt9)
{
case 1:
{
// src/java/org/apache/lucene/expressions/js/Javascript.g:287:17: ( AT_BIT_SHL | AT_BIT_SHR | AT_BIT_SHU ) ^ additive
IToken set30 = input.LT(1);
set30 = input.LT(1);
if ((input.LA(1) >= AT_BIT_SHL && input.LA(1) <= AT_BIT_SHU))
{
input.Consume();
root = (CommonTree)m_adaptor.BecomeRoot((CommonTree)m_adaptor.Create(set30), root
);
state.errorRecovery = false;
}
else
{
MismatchedSetException mse = new MismatchedSetException(null, input);
throw mse;
}
PushFollow(FOLLOW_additive_in_shift999);
AstParserRuleReturnScope<ITree, IToken> additive31 = Additive();
state._fsp--;
m_adaptor.AddChild(root, additive31.Tree);
break;
}
default:
{
goto loop9_break;
}
}
//loop9_continue: ; // LUCENENET NOTE: Not used
}
loop9_break: ;
}
retval.Stop = input.LT(-1);
retval.Tree = (CommonTree)m_adaptor.RulePostProcessing(root);
m_adaptor.SetTokenBoundaries(retval.Tree, retval.Start, retval.Stop);
}
catch (RecognitionException re)
{
ReportError(re);
Recover(input, re);
retval.Tree = (CommonTree)m_adaptor.ErrorNode(input, retval.Start, input.LT(-1), re
);
}
// do for sure before leaving
return retval;
}
// $ANTLR start "additive"
// src/java/org/apache/lucene/expressions/js/Javascript.g:290:1: additive : multiplicative ( ( AT_ADD | AT_SUBTRACT ) ^ multiplicative )* ;
public AstParserRuleReturnScope<ITree, IToken> Additive()
{
var retval = new AstParserRuleReturnScope<ITree, IToken> { Start = input.LT(1) };
//CommonTree set33_tree = null; // LUCENENET NOTE: Not used
try
{
CommonTree root = null;
{
// src/java/org/apache/lucene/expressions/js/Javascript.g:291:5: ( multiplicative ( ( AT_ADD | AT_SUBTRACT ) ^ multiplicative )* )
// src/java/org/apache/lucene/expressions/js/Javascript.g:291:7: multiplicative ( ( AT_ADD | AT_SUBTRACT ) ^ multiplicative )*
root = (CommonTree)m_adaptor.Nil();
PushFollow(FOLLOW_multiplicative_in_additive1018);
AstParserRuleReturnScope<ITree, IToken> multiplicative32 = Multiplicative();
state._fsp--;
m_adaptor.AddChild(root, multiplicative32.Tree);
// src/java/org/apache/lucene/expressions/js/Javascript.g:291:22: ( ( AT_ADD | AT_SUBTRACT ) ^ multiplicative )*
while (true)
{
int alt10 = 2;
int LA10_0 = input.LA(1);
if ((LA10_0 == AT_ADD || LA10_0 == AT_SUBTRACT))
{
alt10 = 1;
}
switch (alt10)
{
case 1:
{
// src/java/org/apache/lucene/expressions/js/Javascript.g:291:23: ( AT_ADD | AT_SUBTRACT ) ^ multiplicative
IToken set33 = input.LT(1);
set33 = input.LT(1);
if (input.LA(1) == AT_ADD || input.LA(1) == AT_SUBTRACT)
{
input.Consume();
root = (CommonTree)m_adaptor.BecomeRoot((CommonTree)m_adaptor.Create(set33), root
);
state.errorRecovery = false;
}
else
{
MismatchedSetException mse = new MismatchedSetException(null, input);
throw mse;
}
PushFollow(FOLLOW_multiplicative_in_additive1030);
AstParserRuleReturnScope<ITree, IToken> multiplicative34 = Multiplicative();
state._fsp--;
m_adaptor.AddChild(root, multiplicative34.Tree);
break;
}
default:
{
goto loop10_break;
}
}
//loop10_continue: ; // LUCENENET NOTE: Not used
}
loop10_break: ;
}
retval.Stop = input.LT(-1);
retval.Tree = (CommonTree)m_adaptor.RulePostProcessing(root);
m_adaptor.SetTokenBoundaries(retval.Tree, retval.Start, retval.Stop);
}
catch (RecognitionException re)
{
ReportError(re);
Recover(input, re);
retval.Tree = (CommonTree)m_adaptor.ErrorNode(input, retval.Start, input.LT(-1), re
);
}
// do for sure before leaving
return retval;
}
// $ANTLR start "multiplicative"
// src/java/org/apache/lucene/expressions/js/Javascript.g:294:1: multiplicative : unary ( ( AT_MULTIPLY | AT_DIVIDE | AT_MODULO ) ^ unary )* ;
public AstParserRuleReturnScope<ITree, IToken> Multiplicative()
{
var retval = new AstParserRuleReturnScope<ITree, IToken> { Start = input.LT(1) };
//CommonTree set36_tree = null; // LUCENENET NOTE: Not used
try
{
CommonTree root = null;
{
// src/java/org/apache/lucene/expressions/js/Javascript.g:295:5: ( unary ( ( AT_MULTIPLY | AT_DIVIDE | AT_MODULO ) ^ unary )* )
// src/java/org/apache/lucene/expressions/js/Javascript.g:295:7: unary ( ( AT_MULTIPLY | AT_DIVIDE | AT_MODULO ) ^ unary )*
root = (CommonTree)m_adaptor.Nil();
PushFollow(FOLLOW_unary_in_multiplicative1049);
AstParserRuleReturnScope<ITree, IToken> unary35 = Unary();
state._fsp--;
m_adaptor.AddChild(root, unary35.Tree);
// src/java/org/apache/lucene/expressions/js/Javascript.g:295:13: ( ( AT_MULTIPLY | AT_DIVIDE | AT_MODULO ) ^ unary )*
while (true)
{
int alt11 = 2;
int LA11_0 = input.LA(1);
if ((LA11_0 == AT_DIVIDE || (LA11_0 >= AT_MODULO && LA11_0 <= AT_MULTIPLY)))
{
alt11 = 1;
}
switch (alt11)
{
case 1:
{
// src/java/org/apache/lucene/expressions/js/Javascript.g:295:14: ( AT_MULTIPLY | AT_DIVIDE | AT_MODULO ) ^ unary
IToken set36 = input.LT(1);
set36 = input.LT(1);
if (input.LA(1) == AT_DIVIDE || (input.LA(1) >= AT_MODULO && input.LA(1) <= AT_MULTIPLY
))
{
input.Consume();
root = (CommonTree)m_adaptor.BecomeRoot((CommonTree)m_adaptor.Create(set36), root
);
state.errorRecovery = false;
}
else
{
MismatchedSetException mse = new MismatchedSetException(null, input);
throw mse;
}
PushFollow(FOLLOW_unary_in_multiplicative1065);
AstParserRuleReturnScope<ITree, IToken> unary37 = Unary();
state._fsp--;
m_adaptor.AddChild(root, unary37.Tree);
break;
}
default:
{
goto loop11_break;
}
}
//loop11_continue: ; // LUCENENET NOTE: Not used
}
loop11_break: ;
}
retval.Stop = input.LT(-1);
retval.Tree = (CommonTree)m_adaptor.RulePostProcessing(root);
m_adaptor.SetTokenBoundaries(retval.Tree, retval.Start, retval.Stop);
}
catch (RecognitionException re)
{
ReportError(re);
Recover(input, re);
retval.Tree = (CommonTree)m_adaptor.ErrorNode(input, retval.Start, input.LT(-1), re
);
}
// do for sure before leaving
return retval;
}
// $ANTLR start "unary"
// src/java/org/apache/lucene/expressions/js/Javascript.g:298:1: unary : ( postfix | AT_ADD ! unary | unary_operator ^ unary );
public AstParserRuleReturnScope<ITree, IToken> Unary()
{
var retval = new AstParserRuleReturnScope<ITree, IToken> { Start = input.LT(1) };
CommonTree root = null;
//CommonTree AT_ADD39_tree = null; // LUCENENET NOTE: Not used
try
{
// src/java/org/apache/lucene/expressions/js/Javascript.g:299:5: ( postfix | AT_ADD ! unary | unary_operator ^ unary )
int alt12 = 3;
switch (input.LA(1))
{
case AT_LPAREN:
case DECIMAL:
case HEX:
case NAMESPACE_ID:
case OCTAL:
{
alt12 = 1;
break;
}
case AT_ADD:
{
alt12 = 2;
break;
}
case AT_BIT_NOT:
case AT_BOOL_NOT:
case AT_SUBTRACT:
{
alt12 = 3;
break;
}
default:
{
NoViableAltException nvae = new NoViableAltException(string.Empty, 12, 0, input);
throw nvae;
}
}
switch (alt12)
{
case 1:
{
// src/java/org/apache/lucene/expressions/js/Javascript.g:299:7: postfix
root = (CommonTree)m_adaptor.Nil();
PushFollow(FOLLOW_postfix_in_unary1084);
AstParserRuleReturnScope<ITree, IToken> postfix38 = Postfix();
state._fsp--;
m_adaptor.AddChild(root, postfix38.Tree);
break;
}
case 2:
{
// src/java/org/apache/lucene/expressions/js/Javascript.g:300:7: AT_ADD ! unary
root = (CommonTree)m_adaptor.Nil();
IToken AT_ADD39 = (IToken)Match(input, AT_ADD, FOLLOW_AT_ADD_in_unary1092);
PushFollow(FOLLOW_unary_in_unary1095);
AstParserRuleReturnScope<ITree, IToken> unary40 = Unary();
state._fsp--;
m_adaptor.AddChild(root, unary40.Tree);
break;
}
case 3:
{
// src/java/org/apache/lucene/expressions/js/Javascript.g:301:7: unary_operator ^ unary
root = (CommonTree)m_adaptor.Nil();
PushFollow(FOLLOW_unary_operator_in_unary1103);
AstParserRuleReturnScope<ITree, IToken> unary_operator41 = Unary_Operator();
state._fsp--;
root = (CommonTree)m_adaptor.BecomeRoot(unary_operator41.Tree, root);
PushFollow(FOLLOW_unary_in_unary1106);
AstParserRuleReturnScope<ITree, IToken> unary42 = Unary();
state._fsp--;
m_adaptor.AddChild(root, unary42.Tree);
break;
}
}
retval.Stop = input.LT(-1);
retval.Tree = (CommonTree)m_adaptor.RulePostProcessing(root);
m_adaptor.SetTokenBoundaries(retval.Tree, retval.Start, retval.Stop);
}
catch (RecognitionException re)
{
ReportError(re);
Recover(input, re);
retval.Tree = (CommonTree)m_adaptor.ErrorNode(input, retval.Start, input.LT(-1), re
);
}
// do for sure before leaving
return retval;
}
// $ANTLR start "unary_operator"
// src/java/org/apache/lucene/expressions/js/Javascript.g:304:1: unary_operator : ( AT_SUBTRACT -> AT_NEGATE | AT_BIT_NOT | AT_BOOL_NOT );
public AstParserRuleReturnScope<ITree, IToken> Unary_Operator()
{
var retval = new AstParserRuleReturnScope<ITree, IToken> { Start = input.LT(1) };
CommonTree root = null;
//CommonTree AT_SUBTRACT43_tree = null; // LUCENENET NOTE: Not used
RewriteRuleTokenStream stream_AT_SUBTRACT = new RewriteRuleTokenStream(m_adaptor, "token AT_SUBTRACT"
);
try
{
// src/java/org/apache/lucene/expressions/js/Javascript.g:305:5: ( AT_SUBTRACT -> AT_NEGATE | AT_BIT_NOT | AT_BOOL_NOT )
int alt13 = 3;
switch (input.LA(1))
{
case AT_SUBTRACT:
{
alt13 = 1;
break;
}
case AT_BIT_NOT:
{
alt13 = 2;
break;
}
case AT_BOOL_NOT:
{
alt13 = 3;
break;
}
default:
{
NoViableAltException nvae = new NoViableAltException(string.Empty, 13, 0, input);
throw nvae;
}
}
switch (alt13)
{
case 1:
{
// src/java/org/apache/lucene/expressions/js/Javascript.g:305:7: AT_SUBTRACT
IToken AT_SUBTRACT43 = (IToken)Match(input, AT_SUBTRACT, FOLLOW_AT_SUBTRACT_in_unary_operator1123
);
stream_AT_SUBTRACT.Add(AT_SUBTRACT43);
// AST REWRITE
// elements:
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// wildcard labels:
retval.Tree = root;
RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream(m_adaptor, "rule retval"
, retval != null ? ((CommonTree)retval.Tree) : null);
root = (CommonTree)m_adaptor.Nil();
{
// 305:19: -> AT_NEGATE
m_adaptor.AddChild(root, (CommonTree)m_adaptor.Create(AT_NEGATE, "AT_NEGATE"));
}
retval.Tree = root;
break;
}
case 2:
{
// src/java/org/apache/lucene/expressions/js/Javascript.g:306:7: AT_BIT_NOT
root = (CommonTree)m_adaptor.Nil();
IToken AT_BIT_NOT44 = (IToken)Match(input, AT_BIT_NOT, FOLLOW_AT_BIT_NOT_in_unary_operator1135
);
CommonTree AT_BIT_NOT44_tree = (CommonTree)m_adaptor.Create(AT_BIT_NOT44);
m_adaptor.AddChild(root, AT_BIT_NOT44_tree);
break;
}
case 3:
{
// src/java/org/apache/lucene/expressions/js/Javascript.g:307:7: AT_BOOL_NOT
root = (CommonTree)m_adaptor.Nil();
IToken AT_BOOL_NOT45 = (IToken)Match(input, AT_BOOL_NOT, FOLLOW_AT_BOOL_NOT_in_unary_operator1143
);
CommonTree AT_BOOL_NOT45_tree = (CommonTree)m_adaptor.Create(AT_BOOL_NOT45);
m_adaptor.AddChild(root, AT_BOOL_NOT45_tree);
break;
}
}
retval.Stop = input.LT(-1);
retval.Tree = (CommonTree)m_adaptor.RulePostProcessing(root);
m_adaptor.SetTokenBoundaries(retval.Tree, retval.Start, retval.Stop);
}
catch (RecognitionException re)
{
ReportError(re);
Recover(input, re);
retval.Tree = (CommonTree)m_adaptor.ErrorNode(input, retval.Start, input.LT(-1), re
);
}
// do for sure before leaving
return retval;
}
// $ANTLR start "postfix"
// src/java/org/apache/lucene/expressions/js/Javascript.g:310:1: postfix : ( primary | NAMESPACE_ID arguments -> ^( AT_CALL NAMESPACE_ID ( arguments )? ) );
public AstParserRuleReturnScope<ITree, IToken> Postfix()
{
var retval = new AstParserRuleReturnScope<ITree, IToken> { Start = input.LT(1) };
CommonTree root = null;
//CommonTree NAMESPACE_ID47_tree = null; // LUCENENET NOTE: Not used
var streamNamespaceId = new RewriteRuleTokenStream(m_adaptor, "token NAMESPACE_ID");
var streamArguments = new RewriteRuleSubtreeStream(m_adaptor, "rule arguments");
try
{
// src/java/org/apache/lucene/expressions/js/Javascript.g:311:5: ( primary | NAMESPACE_ID arguments -> ^( AT_CALL NAMESPACE_ID ( arguments )? ) )
int alt14 = 2;
int LA14_0 = input.LA(1);
if ((LA14_0 == NAMESPACE_ID))
{
int LA14_1 = input.LA(2);
if ((LA14_1 == EOF || (LA14_1 >= AT_ADD && LA14_1 <= AT_BIT_AND) || (LA14_1 >= AT_BIT_OR
&& LA14_1 <= AT_BOOL_AND) || LA14_1 == AT_BOOL_OR || (LA14_1 >= AT_COLON && LA14_1
<= AT_DIVIDE) || (LA14_1 >= AT_MODULO && LA14_1 <= AT_MULTIPLY) || (LA14_1 >= AT_RPAREN
&& LA14_1 <= AT_SUBTRACT)))
{
alt14 = 1;
}
else
{
if ((LA14_1 == AT_LPAREN))
{
alt14 = 2;
}
else
{
int nvaeMark = input.Mark();
try
{
input.Consume();
NoViableAltException nvae = new NoViableAltException(string.Empty, 14, 1, input);
throw nvae;
}
finally
{
input.Rewind(nvaeMark);
}
}
}
}
else
{
if ((LA14_0 == AT_LPAREN || LA14_0 == DECIMAL || LA14_0 == HEX || LA14_0 == OCTAL
))
{
alt14 = 1;
}
else
{
NoViableAltException nvae = new NoViableAltException(string.Empty, 14, 0, input);
throw nvae;
}
}
switch (alt14)
{
case 1:
{
// src/java/org/apache/lucene/expressions/js/Javascript.g:311:7: primary
root = (CommonTree)m_adaptor.Nil();
PushFollow(FOLLOW_primary_in_postfix1160);
AstParserRuleReturnScope<ITree, IToken> primary46 = Primary();
state._fsp--;
m_adaptor.AddChild(root, primary46.Tree);
break;
}
case 2:
{
// src/java/org/apache/lucene/expressions/js/Javascript.g:312:7: NAMESPACE_ID arguments
IToken NAMESPACE_ID47 = (IToken)Match(input, NAMESPACE_ID, FOLLOW_NAMESPACE_ID_in_postfix1168
);
streamNamespaceId.Add(NAMESPACE_ID47);
PushFollow(FOLLOW_arguments_in_postfix1170);
AstParserRuleReturnScope<ITree, IToken> arguments48 = Arguments();
state._fsp--;
streamArguments.Add(arguments48.Tree);
// AST REWRITE
// elements: NAMESPACE_ID, arguments
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// wildcard labels:
retval.Tree = root;
RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream(m_adaptor, "rule retval"
, retval != null ? ((CommonTree)retval.Tree) : null);
root = (CommonTree)m_adaptor.Nil();
{
{
// 312:30: -> ^( AT_CALL NAMESPACE_ID ( arguments )? )
// src/java/org/apache/lucene/expressions/js/Javascript.g:312:33: ^( AT_CALL NAMESPACE_ID ( arguments )? )
CommonTree root_1 = (CommonTree)m_adaptor.Nil();
root_1 = (CommonTree)m_adaptor.BecomeRoot((CommonTree)m_adaptor.Create(AT_CALL, "AT_CALL"
), root_1);
m_adaptor.AddChild(root_1, streamNamespaceId.NextNode());
// src/java/org/apache/lucene/expressions/js/Javascript.g:312:56: ( arguments )?
if (streamArguments.HasNext)
{
m_adaptor.AddChild(root_1, streamArguments.NextTree());
}
streamArguments.Reset();
m_adaptor.AddChild(root, root_1);
}
}
retval.Tree = root;
break;
}
}
retval.Stop = input.LT(-1);
retval.Tree = (CommonTree)m_adaptor.RulePostProcessing(root);
m_adaptor.SetTokenBoundaries(retval.Tree, retval.Start, retval.Stop);
}
catch (RecognitionException re)
{
ReportError(re);
Recover(input, re);
retval.Tree = (CommonTree)m_adaptor.ErrorNode(input, retval.Start, input.LT(-1), re
);
}
// do for sure before leaving
return retval;
}
// $ANTLR start "primary"
// src/java/org/apache/lucene/expressions/js/Javascript.g:315:1: primary : ( NAMESPACE_ID | numeric | AT_LPAREN ! conditional AT_RPAREN !);
public AstParserRuleReturnScope<ITree, IToken> Primary()
{
var retval = new AstParserRuleReturnScope<ITree, IToken> { Start = input.LT(1) };
CommonTree root = null;
IToken AT_LPAREN51 = null;
IToken AT_RPAREN53 = null;
CommonTree NAMESPACE_ID49_tree = null;
//CommonTree AT_LPAREN51_tree = null; // LUCENENET NOTE: Not used
//CommonTree AT_RPAREN53_tree = null; // LUCENENET NOTE: Not used
try
{
// src/java/org/apache/lucene/expressions/js/Javascript.g:316:5: ( NAMESPACE_ID | numeric | AT_LPAREN ! conditional AT_RPAREN !)
int alt15 = 3;
switch (input.LA(1))
{
case NAMESPACE_ID:
{
alt15 = 1;
break;
}
case DECIMAL:
case HEX:
case OCTAL:
{
alt15 = 2;
break;
}
case AT_LPAREN:
{
alt15 = 3;
break;
}
default:
{
NoViableAltException nvae = new NoViableAltException(string.Empty, 15, 0, input);
throw nvae;
}
}
switch (alt15)
{
case 1:
{
// src/java/org/apache/lucene/expressions/js/Javascript.g:316:7: NAMESPACE_ID
root = (CommonTree)m_adaptor.Nil();
IToken NAMESPACE_ID49 = (IToken)Match(input, NAMESPACE_ID, FOLLOW_NAMESPACE_ID_in_primary1198
);
NAMESPACE_ID49_tree = (CommonTree)m_adaptor.Create(NAMESPACE_ID49);
m_adaptor.AddChild(root, NAMESPACE_ID49_tree);
break;
}
case 2:
{
// src/java/org/apache/lucene/expressions/js/Javascript.g:317:7: numeric
root = (CommonTree)m_adaptor.Nil();
PushFollow(FOLLOW_numeric_in_primary1206);
AstParserRuleReturnScope<ITree, IToken> numeric50 = Numeric();
state._fsp--;
m_adaptor.AddChild(root, numeric50.Tree);
break;
}
case 3:
{
// src/java/org/apache/lucene/expressions/js/Javascript.g:318:7: AT_LPAREN ! conditional AT_RPAREN !
root = (CommonTree)m_adaptor.Nil();
AT_LPAREN51 = (IToken)Match(input, AT_LPAREN, FOLLOW_AT_LPAREN_in_primary1214);
PushFollow(FOLLOW_conditional_in_primary1217);
AstParserRuleReturnScope<ITree, IToken> conditional52 = Conditional();
state._fsp--;
m_adaptor.AddChild(root, conditional52.Tree);
AT_RPAREN53 = (IToken)Match(input, AT_RPAREN, FOLLOW_AT_RPAREN_in_primary1219);
break;
}
}
retval.Stop = input.LT(-1);
retval.Tree = (CommonTree)m_adaptor.RulePostProcessing(root);
m_adaptor.SetTokenBoundaries(retval.Tree, retval.Start, retval.Stop);
}
catch (RecognitionException re)
{
ReportError(re);
Recover(input, re);
retval.Tree = (CommonTree)m_adaptor.ErrorNode(input, retval.Start, input.LT(-1), re
);
}
// do for sure before leaving
return retval;
}
// $ANTLR start "arguments"
// src/java/org/apache/lucene/expressions/js/Javascript.g:321:1: arguments : AT_LPAREN ! ( conditional ( AT_COMMA ! conditional )* )? AT_RPAREN !;
public AstParserRuleReturnScope<ITree, IToken> Arguments()
{
var retval = new AstParserRuleReturnScope<ITree, IToken> { Start = input.LT(1) };
CommonTree root = null;
IToken AT_LPAREN54 = null;
IToken AT_COMMA56 = null;
IToken AT_RPAREN58 = null;
//CommonTree AT_LPAREN54_tree = null; // LUCENENET NOTE: Not used
//CommonTree AT_COMMA56_tree = null; // LUCENENET NOTE: Not used
//CommonTree AT_RPAREN58_tree = null; // LUCENENET NOTE: Not used
try
{
{
// src/java/org/apache/lucene/expressions/js/Javascript.g:322:5: ( AT_LPAREN ! ( conditional ( AT_COMMA ! conditional )* )? AT_RPAREN !)
// src/java/org/apache/lucene/expressions/js/Javascript.g:322:7: AT_LPAREN ! ( conditional ( AT_COMMA ! conditional )* )? AT_RPAREN !
root = (CommonTree)m_adaptor.Nil();
AT_LPAREN54 = (IToken)Match(input, AT_LPAREN, FOLLOW_AT_LPAREN_in_arguments1237);
// src/java/org/apache/lucene/expressions/js/Javascript.g:322:18: ( conditional ( AT_COMMA ! conditional )* )?
int alt17 = 2;
int LA17_0 = input.LA(1);
if ((LA17_0 == AT_ADD || LA17_0 == AT_BIT_NOT || LA17_0 == AT_BOOL_NOT || LA17_0
== AT_LPAREN || (LA17_0 >= AT_SUBTRACT && LA17_0 <= DECIMAL) || LA17_0 == HEX ||
(LA17_0 >= NAMESPACE_ID && LA17_0 <= OCTAL)))
{
alt17 = 1;
}
switch (alt17)
{
case 1:
{
// src/java/org/apache/lucene/expressions/js/Javascript.g:322:19: conditional ( AT_COMMA ! conditional )*
PushFollow(FOLLOW_conditional_in_arguments1241);
AstParserRuleReturnScope<ITree, IToken> conditional55 = Conditional();
state._fsp--;
m_adaptor.AddChild(root, conditional55.Tree);
// src/java/org/apache/lucene/expressions/js/Javascript.g:322:31: ( AT_COMMA ! conditional )*
while (true)
{
int alt16 = 2;
int LA16_0 = input.LA(1);
if ((LA16_0 == AT_COMMA))
{
alt16 = 1;
}
switch (alt16)
{
case 1:
{
// src/java/org/apache/lucene/expressions/js/Javascript.g:322:32: AT_COMMA ! conditional
AT_COMMA56 = (IToken)Match(input, AT_COMMA, FOLLOW_AT_COMMA_in_arguments1244);
PushFollow(FOLLOW_conditional_in_arguments1247);
AstParserRuleReturnScope<ITree, IToken> conditional57 = Conditional();
state._fsp--;
m_adaptor.AddChild(root, conditional57.Tree);
break;
}
default:
{
goto loop16_break;
}
}
//loop16_continue: ; // LUCENENET NOTE: Not used
}
loop16_break: ;
break;
}
}
AT_RPAREN58 = (IToken)Match(input, AT_RPAREN, FOLLOW_AT_RPAREN_in_arguments1253);
}
retval.Stop = input.LT(-1);
retval.Tree = (CommonTree)m_adaptor.RulePostProcessing(root);
m_adaptor.SetTokenBoundaries(retval.Tree, retval.Start, retval.Stop);
}
catch (RecognitionException re)
{
ReportError(re);
Recover(input, re);
retval.Tree = (CommonTree)m_adaptor.ErrorNode(input, retval.Start, input.LT(-1), re
);
}
// do for sure before leaving
return retval;
}
// $ANTLR start "numeric"
// src/java/org/apache/lucene/expressions/js/Javascript.g:325:1: numeric : ( HEX | OCTAL | DECIMAL );
public AstParserRuleReturnScope<ITree, IToken> Numeric()
{
var retval = new AstParserRuleReturnScope<ITree, IToken> { Start = input.LT(1) };
//CommonTree set59_tree = null; // LUCENENET NOTE: Not used
try
{
CommonTree root = null;
{
// src/java/org/apache/lucene/expressions/js/Javascript.g:326:5: ( HEX | OCTAL | DECIMAL )
// src/java/org/apache/lucene/expressions/js/Javascript.g:
root = (CommonTree)m_adaptor.Nil();
IToken set59 = input.LT(1);
if (input.LA(1) == DECIMAL || input.LA(1) == HEX || input.LA(1) == OCTAL)
{
input.Consume();
m_adaptor.AddChild(root, (CommonTree)m_adaptor.Create(set59));
state.errorRecovery = false;
}
else
{
MismatchedSetException mse = new MismatchedSetException(null, input);
throw mse;
}
}
retval.Stop = input.LT(-1);
retval.Tree = (CommonTree)m_adaptor.RulePostProcessing(root);
m_adaptor.SetTokenBoundaries(retval.Tree, retval.Start, retval.Stop);
}
catch (RecognitionException re)
{
ReportError(re);
Recover(input, re);
retval.Tree = (CommonTree)m_adaptor.ErrorNode(input, retval.Start, input.LT(-1), re
);
}
// do for sure before leaving
return retval;
}
public static readonly BitSet FOLLOW_conditional_in_expression737 = new BitSet(new[] { ((ulong)(0x0000000000000000L)) });
public static readonly BitSet FOLLOW_EOF_in_expression739 = new BitSet(new[] { ((ulong)(0x0000000000000002L)) });
public static readonly BitSet FOLLOW_logical_or_in_conditional757 = new BitSet(new[] { ((ulong)(0x0000000001000002L)) });
public static readonly BitSet FOLLOW_AT_COND_QUE_in_conditional760 = new BitSet(new[] { ((ulong)(0x0000032308002050L)) });
public static readonly BitSet FOLLOW_conditional_in_conditional763 = new BitSet(new[] { ((ulong)(0x0000000000010000L)) });
public static readonly BitSet FOLLOW_AT_COLON_in_conditional765 = new BitSet(new[] { ((ulong)(0x0000032308002050L)) });
public static readonly BitSet FOLLOW_conditional_in_conditional768 = new BitSet(new[] { ((ulong)(0x0000000000000002L)) });
public static readonly BitSet FOLLOW_logical_and_in_logical_or787 = new BitSet(new[] { ((ulong)(0x0000000000004002L)) });
public static readonly BitSet FOLLOW_AT_BOOL_OR_in_logical_or790 = new BitSet(new[] { ((ulong)(0x0000032308002050L)) });
public static readonly BitSet FOLLOW_logical_and_in_logical_or793 = new BitSet(new[] { ((ulong)(0x0000000000004002L)) });
public static readonly BitSet FOLLOW_bitwise_or_in_logical_and812 = new BitSet(new[] { ((ulong)(0x0000000000001002L)) });
public static readonly BitSet FOLLOW_AT_BOOL_AND_in_logical_and815 = new BitSet(new[] { ((ulong)(0x0000032308002050L)) });
public static readonly BitSet FOLLOW_bitwise_or_in_logical_and818 = new BitSet(new[] { ((ulong)(0x0000000000001002L)) });
public static readonly BitSet FOLLOW_bitwise_xor_in_bitwise_or837 = new BitSet(new[] { ((ulong)(0x0000000000000082L)) });
public static readonly BitSet FOLLOW_AT_BIT_OR_in_bitwise_or840 = new BitSet(new[] { ((ulong)(0x0000032308002050L)) });
public static readonly BitSet FOLLOW_bitwise_xor_in_bitwise_or843 = new BitSet(new[] { ((ulong)(0x0000000000000082L)) });
public static readonly BitSet FOLLOW_bitwise_and_in_bitwise_xor862 = new BitSet(new[] { ((ulong)(0x0000000000000802L)) });
public static readonly BitSet FOLLOW_AT_BIT_XOR_in_bitwise_xor865 = new BitSet(new[] { ((ulong)(0x0000032308002050L)) });
public static readonly BitSet FOLLOW_bitwise_and_in_bitwise_xor868 = new BitSet(new[] { ((ulong)(0x0000000000000802L)) });
public static readonly BitSet FOLLOW_equality_in_bitwise_and888 = new BitSet(new[] { ((ulong)(0x0000000000000022L)) });
public static readonly BitSet FOLLOW_AT_BIT_AND_in_bitwise_and891 = new BitSet(new[] { ((ulong)(0x0000032308002050L)) });
public static readonly BitSet FOLLOW_equality_in_bitwise_and894 = new BitSet(new[] { ((ulong)(0x0000000000000022L)) });
public static readonly BitSet FOLLOW_relational_in_equality913 = new BitSet(new[] { ((ulong)(0x0000000000840002L)) });
public static readonly BitSet FOLLOW_set_in_equality916 = new BitSet(new[] { ((ulong)(0x0000032308002050L)) });
public static readonly BitSet FOLLOW_relational_in_equality925 = new BitSet(new[] { ((ulong)(0x0000000000840002L)) });
public static readonly BitSet FOLLOW_shift_in_relational944 = new BitSet(new[] { ((ulong)(0x0000000000780002L)) });
public static readonly BitSet FOLLOW_set_in_relational947 = new BitSet(new[] { ((ulong)(0x0000032308002050L)) });
public static readonly BitSet FOLLOW_shift_in_relational964 = new BitSet(new[] { ((ulong)(0x0000000000780002L)) });
public static readonly BitSet FOLLOW_additive_in_shift983 = new BitSet(new[] { ((ulong)(0x0000000000000702L)) });
public static readonly BitSet FOLLOW_set_in_shift986 = new BitSet(new[] { ((ulong)(0x0000032308002050L)) });
public static readonly BitSet FOLLOW_additive_in_shift999 = new BitSet(new[] { ((ulong)(0x0000000000000702L)) });
public static readonly BitSet FOLLOW_multiplicative_in_additive1018 = new BitSet(new[] { ((ulong)(0x0000000100000012L)) });
public static readonly BitSet FOLLOW_set_in_additive1021 = new BitSet(new[] { ((ulong)(0x0000032308002050L)) });
public static readonly BitSet FOLLOW_multiplicative_in_additive1030 = new BitSet(new[] { ((ulong)(0x0000000100000012L)) });
public static readonly BitSet FOLLOW_unary_in_multiplicative1049 = new BitSet(new[] { ((ulong)(0x0000000032000002L)) });
public static readonly BitSet FOLLOW_set_in_multiplicative1052 = new BitSet(new[] { ((ulong)(0x0000032308002050L)) });
public static readonly BitSet FOLLOW_unary_in_multiplicative1065 = new BitSet(new[] { ((ulong)(0x0000000032000002L)) });
public static readonly BitSet FOLLOW_postfix_in_unary1084 = new BitSet(new[] { ((ulong)(0x0000000000000002L)) });
public static readonly BitSet FOLLOW_AT_ADD_in_unary1092 = new BitSet(new[] { ((ulong)(0x0000032308002050L)) });
public static readonly BitSet FOLLOW_unary_in_unary1095 = new BitSet(new[] { ((ulong)(0x0000000000000002L)) });
public static readonly BitSet FOLLOW_unary_operator_in_unary1103 = new BitSet(new[] { ((ulong)(0x0000032308002050L)) });
public static readonly BitSet FOLLOW_unary_in_unary1106 = new BitSet(new[] { ((ulong)(0x0000000000000002L)) });
public static readonly BitSet FOLLOW_AT_SUBTRACT_in_unary_operator1123 = new BitSet(new[] { ((ulong)(0x0000000000000002L)) });
public static readonly BitSet FOLLOW_AT_BIT_NOT_in_unary_operator1135 = new BitSet(new[] { ((ulong)(0x0000000000000002L)) });
public static readonly BitSet FOLLOW_AT_BOOL_NOT_in_unary_operator1143 = new BitSet(new[] { ((ulong)(0x0000000000000002L)) });
public static readonly BitSet FOLLOW_primary_in_postfix1160 = new BitSet(new[] { ((ulong)(0x0000000000000002L)) });
public static readonly BitSet FOLLOW_NAMESPACE_ID_in_postfix1168 = new BitSet(new[] { ((ulong)(0x0000000008000000L)) });
public static readonly BitSet FOLLOW_arguments_in_postfix1170 = new BitSet(new[] { ((ulong)(0x0000000000000002L)) });
public static readonly BitSet FOLLOW_NAMESPACE_ID_in_primary1198 = new BitSet(new[] { ((ulong)(0x0000000000000002L)) });
public static readonly BitSet FOLLOW_numeric_in_primary1206 = new BitSet(new[] { ((ulong)(0x0000000000000002L)) });
public static readonly BitSet FOLLOW_AT_LPAREN_in_primary1214 = new BitSet(new[] { ((ulong)(0x0000032308002050L)) });
public static readonly BitSet FOLLOW_conditional_in_primary1217 = new BitSet(new[] { ((ulong)(0x0000000080000000L)) });
public static readonly BitSet FOLLOW_AT_RPAREN_in_primary1219 = new BitSet(new[] { ((ulong)(0x0000000000000002L)) });
public static readonly BitSet FOLLOW_AT_LPAREN_in_arguments1237 = new BitSet(new[] { ((ulong)(0x0000032388002050L)) });
public static readonly BitSet FOLLOW_conditional_in_arguments1241 = new BitSet(new[] { ((ulong)(0x0000000080020000L)) });
public static readonly BitSet FOLLOW_AT_COMMA_in_arguments1244 = new BitSet(new[] { ((ulong)(0x0000032308002050L)) });
public static readonly BitSet FOLLOW_conditional_in_arguments1247 = new BitSet(new[] { ((ulong)(0x0000000080020000L)) });
public static readonly BitSet FOLLOW_AT_RPAREN_in_arguments1253 = new BitSet(new[] { ((ulong)(0x0000000000000002L)) });
// $ANTLR end "numeric"
// Delegated rules
}
}