// Generated from src/antlr/C/Function.g4 by ANTLR 4.2.1-SNAPSHOT
package antlr.C;
import java.util.List;
import java.util.Stack;
import org.antlr.v4.runtime.FailedPredicateException;
import org.antlr.v4.runtime.NoViableAltException;
import org.antlr.v4.runtime.Parser;
import org.antlr.v4.runtime.ParserRuleContext;
import org.antlr.v4.runtime.RecognitionException;
import org.antlr.v4.runtime.RuleContext;
import org.antlr.v4.runtime.RuleVersion;
import org.antlr.v4.runtime.TokenStream;
import org.antlr.v4.runtime.atn.ATN;
import org.antlr.v4.runtime.atn.ATNDeserializer;
import org.antlr.v4.runtime.atn.ParserATNSimulator;
import org.antlr.v4.runtime.tree.ParseTreeListener;
import org.antlr.v4.runtime.tree.TerminalNode;
public class FunctionParser extends Parser {
public static final int
T__54=1, T__53=2, T__52=3, T__51=4, T__50=5, T__49=6, T__48=7, T__47=8,
T__46=9, T__45=10, T__44=11, T__43=12, T__42=13, T__41=14, T__40=15, T__39=16,
T__38=17, T__37=18, T__36=19, T__35=20, T__34=21, T__33=22, T__32=23,
T__31=24, T__30=25, T__29=26, T__28=27, T__27=28, T__26=29, T__25=30,
T__24=31, T__23=32, T__22=33, T__21=34, T__20=35, T__19=36, T__18=37,
T__17=38, T__16=39, T__15=40, T__14=41, T__13=42, T__12=43, T__11=44,
T__10=45, T__9=46, T__8=47, T__7=48, T__6=49, T__5=50, T__4=51, T__3=52,
T__2=53, T__1=54, T__0=55, IF=56, ELSE=57, FOR=58, WHILE=59, BREAK=60,
CASE=61, CONTINUE=62, SWITCH=63, DO=64, GOTO=65, RETURN=66, TYPEDEF=67,
VOID=68, UNSIGNED=69, SIGNED=70, LONG=71, CV_QUALIFIER=72, VIRTUAL=73,
TRY=74, CATCH=75, THROW=76, USING=77, NAMESPACE=78, AUTO=79, REGISTER=80,
OPERATOR=81, TEMPLATE=82, NEW=83, CLASS_KEY=84, ALPHA_NUMERIC=85, OPENING_CURLY=86,
CLOSING_CURLY=87, PRE_IF=88, PRE_ELSE=89, PRE_ENDIF=90, HEX_LITERAL=91,
DECIMAL_LITERAL=92, OCTAL_LITERAL=93, FLOATING_POINT_LITERAL=94, CHAR=95,
STRING=96, COMMENT=97, WHITESPACE=98, CPPCOMMENT=99, OTHER=100;
public static final String[] tokenNames = {
"<INVALID>", "'&'", "'['", "'*'", "'<'", "'--'", "'!='", "'<='", "'<<'",
"'%'", "'->'", "'*='", "')'", "'inline'", "'explicit'", "'::'", "'='",
"'restrict'", "'|='", "'|'", "'!'", "'sizeof'", "'<<='", "']'", "'-='",
"'->*'", "'public'", "','", "'-'", "':'", "'('", "'&='", "'private'",
"'?'", "'>>='", "'+='", "'^='", "'friend'", "'static'", "'++'", "'>>'",
"'^'", "'delete'", "'.'", "'+'", "'protected'", "';'", "'&&'", "'||'",
"'>'", "'%='", "'/='", "'=='", "'/'", "'~'", "'>='", "'if'", "'else'",
"'for'", "'while'", "'break'", "'case'", "'continue'", "'switch'", "'do'",
"'goto'", "'return'", "'typedef'", "'void'", "'unsigned'", "'signed'",
"'long'", "CV_QUALIFIER", "'virtual'", "'try'", "'catch'", "'throw'",
"'using'", "'namespace'", "'auto'", "'register'", "'operator'", "'template'",
"'new'", "CLASS_KEY", "ALPHA_NUMERIC", "'{'", "'}'", "PRE_IF", "PRE_ELSE",
"PRE_ENDIF", "HEX_LITERAL", "DECIMAL_LITERAL", "OCTAL_LITERAL", "FLOATING_POINT_LITERAL",
"CHAR", "STRING", "COMMENT", "WHITESPACE", "CPPCOMMENT", "OTHER"
};
public static final int
RULE_statements = 0, RULE_statement = 1, RULE_pre_opener = 2, RULE_pre_else = 3,
RULE_pre_closer = 4, RULE_opening_curly = 5, RULE_closing_curly = 6, RULE_block_starter = 7,
RULE_selection_or_iteration = 8, RULE_do_statement1 = 9, RULE_for_init_statement = 10,
RULE_jump_statement = 11, RULE_label = 12, RULE_expr_statement = 13, RULE_condition = 14,
RULE_unary_operator = 15, RULE_relational_operator = 16, RULE_constant = 17,
RULE_function_decl_specifiers = 18, RULE_ptr_operator = 19, RULE_access_specifier = 20,
RULE_operator = 21, RULE_assignment_operator = 22, RULE_equality_operator = 23,
RULE_template_decl_start = 24, RULE_template_param_list = 25, RULE_no_brackets = 26,
RULE_no_brackets_curlies_or_squares = 27, RULE_no_brackets_or_semicolon = 28,
RULE_no_angle_brackets_or_brackets = 29, RULE_no_curlies = 30, RULE_no_squares = 31,
RULE_no_squares_or_semicolon = 32, RULE_no_comma_or_semicolon = 33, RULE_assign_water = 34,
RULE_assign_water_l2 = 35, RULE_water = 36, RULE_expr = 37, RULE_assign_expr = 38,
RULE_conditional_expression = 39, RULE_or_expression = 40, RULE_and_expression = 41,
RULE_inclusive_or_expression = 42, RULE_exclusive_or_expression = 43,
RULE_bit_and_expression = 44, RULE_equality_expression = 45, RULE_relational_expression = 46,
RULE_shift_expression = 47, RULE_additive_expression = 48, RULE_multiplicative_expression = 49,
RULE_cast_expression = 50, RULE_cast_target = 51, RULE_unary_expression = 52,
RULE_new_expression = 53, RULE_unary_op_and_cast_expr = 54, RULE_sizeof_expression = 55,
RULE_sizeof = 56, RULE_sizeof_operand = 57, RULE_sizeof_operand2 = 58,
RULE_inc_dec = 59, RULE_postfix_expression = 60, RULE_function_argument_list = 61,
RULE_function_argument = 62, RULE_primary_expression = 63, RULE_init_declarator = 64,
RULE_declarator = 65, RULE_type_suffix = 66, RULE_simple_decl = 67, RULE_var_decl = 68,
RULE_init_declarator_list = 69, RULE_initializer = 70, RULE_initializer_list = 71,
RULE_class_def = 72, RULE_class_name = 73, RULE_base_classes = 74, RULE_base_class = 75,
RULE_type_name = 76, RULE_base_type = 77, RULE_param_decl_specifiers = 78,
RULE_parameter_name = 79, RULE_param_type_list = 80, RULE_param_type = 81,
RULE_param_type_id = 82, RULE_identifier = 83, RULE_number = 84, RULE_ptrs = 85;
public static final String[] ruleNames = {
"statements", "statement", "pre_opener", "pre_else", "pre_closer", "opening_curly",
"closing_curly", "block_starter", "selection_or_iteration", "do_statement1",
"for_init_statement", "jump_statement", "label", "expr_statement", "condition",
"unary_operator", "relational_operator", "constant", "function_decl_specifiers",
"ptr_operator", "access_specifier", "operator", "assignment_operator",
"equality_operator", "template_decl_start", "template_param_list", "no_brackets",
"no_brackets_curlies_or_squares", "no_brackets_or_semicolon", "no_angle_brackets_or_brackets",
"no_curlies", "no_squares", "no_squares_or_semicolon", "no_comma_or_semicolon",
"assign_water", "assign_water_l2", "water", "expr", "assign_expr", "conditional_expression",
"or_expression", "and_expression", "inclusive_or_expression", "exclusive_or_expression",
"bit_and_expression", "equality_expression", "relational_expression",
"shift_expression", "additive_expression", "multiplicative_expression",
"cast_expression", "cast_target", "unary_expression", "new_expression",
"unary_op_and_cast_expr", "sizeof_expression", "sizeof", "sizeof_operand",
"sizeof_operand2", "inc_dec", "postfix_expression", "function_argument_list",
"function_argument", "primary_expression", "init_declarator", "declarator",
"type_suffix", "simple_decl", "var_decl", "init_declarator_list", "initializer",
"initializer_list", "class_def", "class_name", "base_classes", "base_class",
"type_name", "base_type", "param_decl_specifiers", "parameter_name", "param_type_list",
"param_type", "param_type_id", "identifier", "number", "ptrs"
};
@Override
public String getGrammarFileName() { return "Function.g4"; }
@Override
public String[] getTokenNames() { return tokenNames; }
@Override
public String[] getRuleNames() { return ruleNames; }
@Override
public String getSerializedATN() { return _serializedATN; }
public boolean skipToEndOfObject()
{
Stack<Object> CurlyStack = new Stack<Object>();
Object o = new Object();
int t = _input.LA(1);
while(t != EOF && !(CurlyStack.empty() && t == CLOSING_CURLY)){
if(t == PRE_ELSE){
Stack<Object> ifdefStack = new Stack<Object>();
consume();
t = _input.LA(1);
while(t != EOF && !(ifdefStack.empty() && (t == PRE_ENDIF))){
if(t == PRE_IF)
ifdefStack.push(o);
else if(t == PRE_ENDIF)
ifdefStack.pop();
consume();
t = _input.LA(1);
}
}
if(t == OPENING_CURLY)
CurlyStack.push(o);
else if(t == CLOSING_CURLY)
CurlyStack.pop();
consume();
t = _input.LA(1);
}
if(t != EOF)
consume();
return true;
}
// this should go into FunctionGrammar but ANTLR fails
// to join the parser::members-section on inclusion
public boolean preProcSkipToEnd()
{
Stack<Object> CurlyStack = new Stack<Object>();
Object o = new Object();
int t = _input.LA(1);
while(t != EOF && !(CurlyStack.empty() && t == PRE_ENDIF)){
if(t == PRE_IF)
CurlyStack.push(o);
else if(t == PRE_ENDIF)
CurlyStack.pop();
consume();
t = _input.LA(1);
}
if(t != EOF)
consume();
return true;
}
public FunctionParser(TokenStream input) {
super(input);
_interp = new ParserATNSimulator(this,_ATN);
}
public static class StatementsContext extends ParserRuleContext {
public List<? extends StatementContext> statement() {
return getRuleContexts(StatementContext.class);
}
public List<? extends Pre_closerContext> pre_closer() {
return getRuleContexts(Pre_closerContext.class);
}
public List<? extends Pre_openerContext> pre_opener() {
return getRuleContexts(Pre_openerContext.class);
}
public List<? extends Pre_elseContext> pre_else() {
return getRuleContexts(Pre_elseContext.class);
}
public Pre_closerContext pre_closer(int i) {
return getRuleContext(Pre_closerContext.class,i);
}
public Pre_openerContext pre_opener(int i) {
return getRuleContext(Pre_openerContext.class,i);
}
public StatementContext statement(int i) {
return getRuleContext(StatementContext.class,i);
}
public Pre_elseContext pre_else(int i) {
return getRuleContext(Pre_elseContext.class,i);
}
public StatementsContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_statements; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterStatements(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitStatements(this);
}
}
@RuleVersion(0)
public final StatementsContext statements() throws RecognitionException {
StatementsContext _localctx = new StatementsContext(_ctx, getState());
enterRule(_localctx, 0, RULE_statements);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(180);
_errHandler.sync(this);
_la = _input.LA(1);
while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << 1) | (1L << 2) | (1L << 3) | (1L << 4) | (1L << 5) | (1L << 6) | (1L << 7) | (1L << 8) | (1L << 9) | (1L << 10) | (1L << 11) | (1L << 12) | (1L << 13) | (1L << 14) | (1L << 15) | (1L << 16) | (1L << 17) | (1L << 18) | (1L << 19) | (1L << 20) | (1L << 21) | (1L << 22) | (1L << 23) | (1L << 24) | (1L << 25) | (1L << 26) | (1L << 27) | (1L << 28) | (1L << 29) | (1L << 30) | (1L << 31) | (1L << 32) | (1L << 33) | (1L << 34) | (1L << 35) | (1L << 36) | (1L << 37) | (1L << 38) | (1L << 39) | (1L << 40) | (1L << 41) | (1L << 42) | (1L << 43) | (1L << 44) | (1L << 45) | (1L << 46) | (1L << 47) | (1L << 48) | (1L << 49) | (1L << 50) | (1L << 51) | (1L << 52) | (1L << 53) | (1L << 54) | (1L << 55) | (1L << IF) | (1L << ELSE) | (1L << FOR) | (1L << WHILE) | (1L << BREAK) | (1L << CASE) | (1L << CONTINUE) | (1L << SWITCH))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (DO - 64)) | (1L << (GOTO - 64)) | (1L << (RETURN - 64)) | (1L << (TYPEDEF - 64)) | (1L << (VOID - 64)) | (1L << (UNSIGNED - 64)) | (1L << (SIGNED - 64)) | (1L << (LONG - 64)) | (1L << (CV_QUALIFIER - 64)) | (1L << (VIRTUAL - 64)) | (1L << (TRY - 64)) | (1L << (CATCH - 64)) | (1L << (THROW - 64)) | (1L << (USING - 64)) | (1L << (NAMESPACE - 64)) | (1L << (AUTO - 64)) | (1L << (REGISTER - 64)) | (1L << (OPERATOR - 64)) | (1L << (TEMPLATE - 64)) | (1L << (NEW - 64)) | (1L << (CLASS_KEY - 64)) | (1L << (ALPHA_NUMERIC - 64)) | (1L << (OPENING_CURLY - 64)) | (1L << (CLOSING_CURLY - 64)) | (1L << (PRE_IF - 64)) | (1L << (PRE_ELSE - 64)) | (1L << (PRE_ENDIF - 64)) | (1L << (HEX_LITERAL - 64)) | (1L << (DECIMAL_LITERAL - 64)) | (1L << (OCTAL_LITERAL - 64)) | (1L << (FLOATING_POINT_LITERAL - 64)) | (1L << (CHAR - 64)) | (1L << (STRING - 64)) | (1L << (COMMENT - 64)) | (1L << (WHITESPACE - 64)) | (1L << (CPPCOMMENT - 64)) | (1L << (OTHER - 64)))) != 0)) {
{
setState(178);
switch ( getInterpreter().adaptivePredict(_input,0,_ctx) ) {
case 1:
{
setState(172); pre_opener();
}
break;
case 2:
{
setState(173); pre_closer();
}
break;
case 3:
{
setState(174); pre_else();
preProcSkipToEnd();
}
break;
case 4:
{
setState(177); statement();
}
break;
}
}
setState(182);
_errHandler.sync(this);
_la = _input.LA(1);
}
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class StatementContext extends ParserRuleContext {
public WaterContext water() {
return getRuleContext(WaterContext.class,0);
}
public Simple_declContext simple_decl() {
return getRuleContext(Simple_declContext.class,0);
}
public Closing_curlyContext closing_curly() {
return getRuleContext(Closing_curlyContext.class,0);
}
public LabelContext label() {
return getRuleContext(LabelContext.class,0);
}
public Block_starterContext block_starter() {
return getRuleContext(Block_starterContext.class,0);
}
public Opening_curlyContext opening_curly() {
return getRuleContext(Opening_curlyContext.class,0);
}
public Expr_statementContext expr_statement() {
return getRuleContext(Expr_statementContext.class,0);
}
public Jump_statementContext jump_statement() {
return getRuleContext(Jump_statementContext.class,0);
}
public StatementContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_statement; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterStatement(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitStatement(this);
}
}
@RuleVersion(0)
public final StatementContext statement() throws RecognitionException {
StatementContext _localctx = new StatementContext(_ctx, getState());
enterRule(_localctx, 2, RULE_statement);
try {
setState(191);
switch ( getInterpreter().adaptivePredict(_input,2,_ctx) ) {
case 1:
enterOuterAlt(_localctx, 1);
{
setState(183); opening_curly();
}
break;
case 2:
enterOuterAlt(_localctx, 2);
{
setState(184); closing_curly();
}
break;
case 3:
enterOuterAlt(_localctx, 3);
{
setState(185); block_starter();
}
break;
case 4:
enterOuterAlt(_localctx, 4);
{
setState(186); jump_statement();
}
break;
case 5:
enterOuterAlt(_localctx, 5);
{
setState(187); label();
}
break;
case 6:
enterOuterAlt(_localctx, 6);
{
setState(188); simple_decl();
}
break;
case 7:
enterOuterAlt(_localctx, 7);
{
setState(189); expr_statement();
}
break;
case 8:
enterOuterAlt(_localctx, 8);
{
setState(190); water();
}
break;
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class Pre_openerContext extends ParserRuleContext {
public TerminalNode PRE_IF() { return getToken(FunctionParser.PRE_IF, 0); }
public Pre_openerContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_pre_opener; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterPre_opener(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitPre_opener(this);
}
}
@RuleVersion(0)
public final Pre_openerContext pre_opener() throws RecognitionException {
Pre_openerContext _localctx = new Pre_openerContext(_ctx, getState());
enterRule(_localctx, 4, RULE_pre_opener);
try {
enterOuterAlt(_localctx, 1);
{
setState(193); match(PRE_IF);
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class Pre_elseContext extends ParserRuleContext {
public TerminalNode PRE_ELSE() { return getToken(FunctionParser.PRE_ELSE, 0); }
public Pre_elseContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_pre_else; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterPre_else(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitPre_else(this);
}
}
@RuleVersion(0)
public final Pre_elseContext pre_else() throws RecognitionException {
Pre_elseContext _localctx = new Pre_elseContext(_ctx, getState());
enterRule(_localctx, 6, RULE_pre_else);
try {
enterOuterAlt(_localctx, 1);
{
setState(195); match(PRE_ELSE);
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class Pre_closerContext extends ParserRuleContext {
public TerminalNode PRE_ENDIF() { return getToken(FunctionParser.PRE_ENDIF, 0); }
public Pre_closerContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_pre_closer; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterPre_closer(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitPre_closer(this);
}
}
@RuleVersion(0)
public final Pre_closerContext pre_closer() throws RecognitionException {
Pre_closerContext _localctx = new Pre_closerContext(_ctx, getState());
enterRule(_localctx, 8, RULE_pre_closer);
try {
enterOuterAlt(_localctx, 1);
{
setState(197); match(PRE_ENDIF);
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class Opening_curlyContext extends ParserRuleContext {
public Opening_curlyContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_opening_curly; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterOpening_curly(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitOpening_curly(this);
}
}
@RuleVersion(0)
public final Opening_curlyContext opening_curly() throws RecognitionException {
Opening_curlyContext _localctx = new Opening_curlyContext(_ctx, getState());
enterRule(_localctx, 10, RULE_opening_curly);
try {
enterOuterAlt(_localctx, 1);
{
setState(199); match(OPENING_CURLY);
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class Closing_curlyContext extends ParserRuleContext {
public Closing_curlyContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_closing_curly; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterClosing_curly(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitClosing_curly(this);
}
}
@RuleVersion(0)
public final Closing_curlyContext closing_curly() throws RecognitionException {
Closing_curlyContext _localctx = new Closing_curlyContext(_ctx, getState());
enterRule(_localctx, 12, RULE_closing_curly);
try {
enterOuterAlt(_localctx, 1);
{
setState(201); match(CLOSING_CURLY);
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class Block_starterContext extends ParserRuleContext {
public Selection_or_iterationContext selection_or_iteration() {
return getRuleContext(Selection_or_iterationContext.class,0);
}
public Block_starterContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_block_starter; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterBlock_starter(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitBlock_starter(this);
}
}
@RuleVersion(0)
public final Block_starterContext block_starter() throws RecognitionException {
Block_starterContext _localctx = new Block_starterContext(_ctx, getState());
enterRule(_localctx, 14, RULE_block_starter);
try {
enterOuterAlt(_localctx, 1);
{
setState(203); selection_or_iteration();
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class Selection_or_iterationContext extends ParserRuleContext {
public Selection_or_iterationContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_selection_or_iteration; }
public Selection_or_iterationContext() { }
public void copyFrom(Selection_or_iterationContext ctx) {
super.copyFrom(ctx);
}
}
public static class Catch_statementContext extends Selection_or_iterationContext {
public Param_typeContext param_type() {
return getRuleContext(Param_typeContext.class,0);
}
public TerminalNode CATCH() { return getToken(FunctionParser.CATCH, 0); }
public Catch_statementContext(Selection_or_iterationContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterCatch_statement(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitCatch_statement(this);
}
}
public static class Else_statementContext extends Selection_or_iterationContext {
public TerminalNode ELSE() { return getToken(FunctionParser.ELSE, 0); }
public Else_statementContext(Selection_or_iterationContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterElse_statement(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitElse_statement(this);
}
}
public static class Switch_statementContext extends Selection_or_iterationContext {
public ConditionContext condition() {
return getRuleContext(ConditionContext.class,0);
}
public TerminalNode SWITCH() { return getToken(FunctionParser.SWITCH, 0); }
public Switch_statementContext(Selection_or_iterationContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterSwitch_statement(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitSwitch_statement(this);
}
}
public static class Do_statementContext extends Selection_or_iterationContext {
public TerminalNode DO() { return getToken(FunctionParser.DO, 0); }
public Do_statementContext(Selection_or_iterationContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterDo_statement(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitDo_statement(this);
}
}
public static class If_statementContext extends Selection_or_iterationContext {
public TerminalNode IF() { return getToken(FunctionParser.IF, 0); }
public ConditionContext condition() {
return getRuleContext(ConditionContext.class,0);
}
public If_statementContext(Selection_or_iterationContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterIf_statement(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitIf_statement(this);
}
}
public static class While_statementContext extends Selection_or_iterationContext {
public TerminalNode WHILE() { return getToken(FunctionParser.WHILE, 0); }
public ConditionContext condition() {
return getRuleContext(ConditionContext.class,0);
}
public While_statementContext(Selection_or_iterationContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterWhile_statement(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitWhile_statement(this);
}
}
public static class For_statementContext extends Selection_or_iterationContext {
public ConditionContext condition() {
return getRuleContext(ConditionContext.class,0);
}
public ExprContext expr() {
return getRuleContext(ExprContext.class,0);
}
public TerminalNode FOR() { return getToken(FunctionParser.FOR, 0); }
public For_init_statementContext for_init_statement() {
return getRuleContext(For_init_statementContext.class,0);
}
public For_statementContext(Selection_or_iterationContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterFor_statement(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitFor_statement(this);
}
}
public static class Try_statementContext extends Selection_or_iterationContext {
public TerminalNode TRY() { return getToken(FunctionParser.TRY, 0); }
public Try_statementContext(Selection_or_iterationContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterTry_statement(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitTry_statement(this);
}
}
@RuleVersion(0)
public final Selection_or_iterationContext selection_or_iteration() throws RecognitionException {
Selection_or_iterationContext _localctx = new Selection_or_iterationContext(_ctx, getState());
enterRule(_localctx, 16, RULE_selection_or_iteration);
int _la;
try {
setState(242);
switch (_input.LA(1)) {
case TRY:
_localctx = new Try_statementContext(_localctx);
enterOuterAlt(_localctx, 1);
{
setState(205); match(TRY);
}
break;
case CATCH:
_localctx = new Catch_statementContext(_localctx);
enterOuterAlt(_localctx, 2);
{
setState(206); match(CATCH);
setState(207); match(30);
setState(208); param_type();
setState(209); match(12);
}
break;
case IF:
_localctx = new If_statementContext(_localctx);
enterOuterAlt(_localctx, 3);
{
setState(211); match(IF);
setState(212); match(30);
setState(213); condition();
setState(214); match(12);
}
break;
case ELSE:
_localctx = new Else_statementContext(_localctx);
enterOuterAlt(_localctx, 4);
{
setState(216); match(ELSE);
}
break;
case SWITCH:
_localctx = new Switch_statementContext(_localctx);
enterOuterAlt(_localctx, 5);
{
setState(217); match(SWITCH);
setState(218); match(30);
setState(219); condition();
setState(220); match(12);
}
break;
case FOR:
_localctx = new For_statementContext(_localctx);
enterOuterAlt(_localctx, 6);
{
setState(222); match(FOR);
setState(223); match(30);
setState(226);
switch (_input.LA(1)) {
case 1:
case 3:
case 5:
case 15:
case 20:
case 21:
case 26:
case 28:
case 30:
case 32:
case 39:
case 44:
case 45:
case 54:
case TYPEDEF:
case VOID:
case UNSIGNED:
case SIGNED:
case LONG:
case CV_QUALIFIER:
case TEMPLATE:
case NEW:
case CLASS_KEY:
case ALPHA_NUMERIC:
case HEX_LITERAL:
case DECIMAL_LITERAL:
case OCTAL_LITERAL:
case FLOATING_POINT_LITERAL:
case CHAR:
case STRING:
{
setState(224); for_init_statement();
}
break;
case 46:
{
setState(225); match(46);
}
break;
default:
throw new NoViableAltException(this);
}
setState(229);
_la = _input.LA(1);
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << 1) | (1L << 3) | (1L << 5) | (1L << 15) | (1L << 20) | (1L << 21) | (1L << 26) | (1L << 28) | (1L << 30) | (1L << 32) | (1L << 39) | (1L << 44) | (1L << 45) | (1L << 54))) != 0) || ((((_la - 68)) & ~0x3f) == 0 && ((1L << (_la - 68)) & ((1L << (VOID - 68)) | (1L << (UNSIGNED - 68)) | (1L << (SIGNED - 68)) | (1L << (LONG - 68)) | (1L << (CV_QUALIFIER - 68)) | (1L << (NEW - 68)) | (1L << (CLASS_KEY - 68)) | (1L << (ALPHA_NUMERIC - 68)) | (1L << (HEX_LITERAL - 68)) | (1L << (DECIMAL_LITERAL - 68)) | (1L << (OCTAL_LITERAL - 68)) | (1L << (FLOATING_POINT_LITERAL - 68)) | (1L << (CHAR - 68)) | (1L << (STRING - 68)))) != 0)) {
{
setState(228); condition();
}
}
setState(231); match(46);
setState(233);
_la = _input.LA(1);
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << 1) | (1L << 3) | (1L << 5) | (1L << 15) | (1L << 20) | (1L << 21) | (1L << 26) | (1L << 28) | (1L << 30) | (1L << 32) | (1L << 39) | (1L << 44) | (1L << 45) | (1L << 54))) != 0) || ((((_la - 83)) & ~0x3f) == 0 && ((1L << (_la - 83)) & ((1L << (NEW - 83)) | (1L << (ALPHA_NUMERIC - 83)) | (1L << (HEX_LITERAL - 83)) | (1L << (DECIMAL_LITERAL - 83)) | (1L << (OCTAL_LITERAL - 83)) | (1L << (FLOATING_POINT_LITERAL - 83)) | (1L << (CHAR - 83)) | (1L << (STRING - 83)))) != 0)) {
{
setState(232); expr();
}
}
setState(235); match(12);
}
break;
case DO:
_localctx = new Do_statementContext(_localctx);
enterOuterAlt(_localctx, 7);
{
setState(236); match(DO);
}
break;
case WHILE:
_localctx = new While_statementContext(_localctx);
enterOuterAlt(_localctx, 8);
{
setState(237); match(WHILE);
setState(238); match(30);
setState(239); condition();
setState(240); match(12);
}
break;
default:
throw new NoViableAltException(this);
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class Do_statement1Context extends ParserRuleContext {
public TerminalNode WHILE() { return getToken(FunctionParser.WHILE, 0); }
public StatementContext statement() {
return getRuleContext(StatementContext.class,0);
}
public TerminalNode DO() { return getToken(FunctionParser.DO, 0); }
public ExprContext expr() {
return getRuleContext(ExprContext.class,0);
}
public Do_statement1Context(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_do_statement1; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterDo_statement1(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitDo_statement1(this);
}
}
@RuleVersion(0)
public final Do_statement1Context do_statement1() throws RecognitionException {
Do_statement1Context _localctx = new Do_statement1Context(_ctx, getState());
enterRule(_localctx, 18, RULE_do_statement1);
try {
enterOuterAlt(_localctx, 1);
{
setState(244); match(DO);
setState(245); statement();
setState(246); match(WHILE);
setState(247); match(30);
setState(248); expr();
setState(249); match(12);
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class For_init_statementContext extends ParserRuleContext {
public Simple_declContext simple_decl() {
return getRuleContext(Simple_declContext.class,0);
}
public ExprContext expr() {
return getRuleContext(ExprContext.class,0);
}
public For_init_statementContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_for_init_statement; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterFor_init_statement(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitFor_init_statement(this);
}
}
@RuleVersion(0)
public final For_init_statementContext for_init_statement() throws RecognitionException {
For_init_statementContext _localctx = new For_init_statementContext(_ctx, getState());
enterRule(_localctx, 20, RULE_for_init_statement);
try {
setState(255);
switch ( getInterpreter().adaptivePredict(_input,7,_ctx) ) {
case 1:
enterOuterAlt(_localctx, 1);
{
setState(251); simple_decl();
}
break;
case 2:
enterOuterAlt(_localctx, 2);
{
setState(252); expr();
setState(253); match(46);
}
break;
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class Jump_statementContext extends ParserRuleContext {
public Jump_statementContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_jump_statement; }
public Jump_statementContext() { }
public void copyFrom(Jump_statementContext ctx) {
super.copyFrom(ctx);
}
}
public static class GotoStatementContext extends Jump_statementContext {
public TerminalNode GOTO() { return getToken(FunctionParser.GOTO, 0); }
public IdentifierContext identifier() {
return getRuleContext(IdentifierContext.class,0);
}
public GotoStatementContext(Jump_statementContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterGotoStatement(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitGotoStatement(this);
}
}
public static class ReturnStatementContext extends Jump_statementContext {
public ExprContext expr() {
return getRuleContext(ExprContext.class,0);
}
public TerminalNode RETURN() { return getToken(FunctionParser.RETURN, 0); }
public ReturnStatementContext(Jump_statementContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterReturnStatement(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitReturnStatement(this);
}
}
public static class BreakStatementContext extends Jump_statementContext {
public TerminalNode BREAK() { return getToken(FunctionParser.BREAK, 0); }
public BreakStatementContext(Jump_statementContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterBreakStatement(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitBreakStatement(this);
}
}
public static class ContinueStatementContext extends Jump_statementContext {
public TerminalNode CONTINUE() { return getToken(FunctionParser.CONTINUE, 0); }
public ContinueStatementContext(Jump_statementContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterContinueStatement(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitContinueStatement(this);
}
}
@RuleVersion(0)
public final Jump_statementContext jump_statement() throws RecognitionException {
Jump_statementContext _localctx = new Jump_statementContext(_ctx, getState());
enterRule(_localctx, 22, RULE_jump_statement);
int _la;
try {
setState(270);
switch (_input.LA(1)) {
case BREAK:
_localctx = new BreakStatementContext(_localctx);
enterOuterAlt(_localctx, 1);
{
setState(257); match(BREAK);
setState(258); match(46);
}
break;
case CONTINUE:
_localctx = new ContinueStatementContext(_localctx);
enterOuterAlt(_localctx, 2);
{
setState(259); match(CONTINUE);
setState(260); match(46);
}
break;
case GOTO:
_localctx = new GotoStatementContext(_localctx);
enterOuterAlt(_localctx, 3);
{
setState(261); match(GOTO);
setState(262); identifier();
setState(263); match(46);
}
break;
case RETURN:
_localctx = new ReturnStatementContext(_localctx);
enterOuterAlt(_localctx, 4);
{
setState(265); match(RETURN);
setState(267);
_la = _input.LA(1);
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << 1) | (1L << 3) | (1L << 5) | (1L << 15) | (1L << 20) | (1L << 21) | (1L << 26) | (1L << 28) | (1L << 30) | (1L << 32) | (1L << 39) | (1L << 44) | (1L << 45) | (1L << 54))) != 0) || ((((_la - 83)) & ~0x3f) == 0 && ((1L << (_la - 83)) & ((1L << (NEW - 83)) | (1L << (ALPHA_NUMERIC - 83)) | (1L << (HEX_LITERAL - 83)) | (1L << (DECIMAL_LITERAL - 83)) | (1L << (OCTAL_LITERAL - 83)) | (1L << (FLOATING_POINT_LITERAL - 83)) | (1L << (CHAR - 83)) | (1L << (STRING - 83)))) != 0)) {
{
setState(266); expr();
}
}
setState(269); match(46);
}
break;
default:
throw new NoViableAltException(this);
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class LabelContext extends ParserRuleContext {
public NumberContext number() {
return getRuleContext(NumberContext.class,0);
}
public TerminalNode CASE() { return getToken(FunctionParser.CASE, 0); }
public TerminalNode CHAR() { return getToken(FunctionParser.CHAR, 0); }
public IdentifierContext identifier() {
return getRuleContext(IdentifierContext.class,0);
}
public LabelContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_label; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterLabel(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitLabel(this);
}
}
@RuleVersion(0)
public final LabelContext label() throws RecognitionException {
LabelContext _localctx = new LabelContext(_ctx, getState());
enterRule(_localctx, 24, RULE_label);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(273);
_la = _input.LA(1);
if (_la==CASE) {
{
setState(272); match(CASE);
}
}
setState(278);
switch (_input.LA(1)) {
case 26:
case 32:
case 45:
case ALPHA_NUMERIC:
{
setState(275); identifier();
}
break;
case HEX_LITERAL:
case DECIMAL_LITERAL:
case OCTAL_LITERAL:
{
setState(276); number();
}
break;
case CHAR:
{
setState(277); match(CHAR);
}
break;
default:
throw new NoViableAltException(this);
}
setState(280); match(29);
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class Expr_statementContext extends ParserRuleContext {
public ExprContext expr() {
return getRuleContext(ExprContext.class,0);
}
public Expr_statementContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_expr_statement; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterExpr_statement(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitExpr_statement(this);
}
}
@RuleVersion(0)
public final Expr_statementContext expr_statement() throws RecognitionException {
Expr_statementContext _localctx = new Expr_statementContext(_ctx, getState());
enterRule(_localctx, 26, RULE_expr_statement);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(283);
_la = _input.LA(1);
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << 1) | (1L << 3) | (1L << 5) | (1L << 15) | (1L << 20) | (1L << 21) | (1L << 26) | (1L << 28) | (1L << 30) | (1L << 32) | (1L << 39) | (1L << 44) | (1L << 45) | (1L << 54))) != 0) || ((((_la - 83)) & ~0x3f) == 0 && ((1L << (_la - 83)) & ((1L << (NEW - 83)) | (1L << (ALPHA_NUMERIC - 83)) | (1L << (HEX_LITERAL - 83)) | (1L << (DECIMAL_LITERAL - 83)) | (1L << (OCTAL_LITERAL - 83)) | (1L << (FLOATING_POINT_LITERAL - 83)) | (1L << (CHAR - 83)) | (1L << (STRING - 83)))) != 0)) {
{
setState(282); expr();
}
}
setState(285); match(46);
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class ConditionContext extends ParserRuleContext {
public ExprContext expr() {
return getRuleContext(ExprContext.class,0);
}
public Type_nameContext type_name() {
return getRuleContext(Type_nameContext.class,0);
}
public Assign_exprContext assign_expr() {
return getRuleContext(Assign_exprContext.class,0);
}
public DeclaratorContext declarator() {
return getRuleContext(DeclaratorContext.class,0);
}
public ConditionContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_condition; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterCondition(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitCondition(this);
}
}
@RuleVersion(0)
public final ConditionContext condition() throws RecognitionException {
ConditionContext _localctx = new ConditionContext(_ctx, getState());
enterRule(_localctx, 28, RULE_condition);
try {
setState(293);
switch ( getInterpreter().adaptivePredict(_input,13,_ctx) ) {
case 1:
enterOuterAlt(_localctx, 1);
{
setState(287); expr();
}
break;
case 2:
enterOuterAlt(_localctx, 2);
{
setState(288); type_name();
setState(289); declarator();
setState(290); match(16);
setState(291); assign_expr();
}
break;
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class Unary_operatorContext extends ParserRuleContext {
public Unary_operatorContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_unary_operator; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterUnary_operator(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitUnary_operator(this);
}
}
@RuleVersion(0)
public final Unary_operatorContext unary_operator() throws RecognitionException {
Unary_operatorContext _localctx = new Unary_operatorContext(_ctx, getState());
enterRule(_localctx, 30, RULE_unary_operator);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(295);
_la = _input.LA(1);
if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << 1) | (1L << 3) | (1L << 20) | (1L << 28) | (1L << 44) | (1L << 54))) != 0)) ) {
_errHandler.recoverInline(this);
}
consume();
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class Relational_operatorContext extends ParserRuleContext {
public Relational_operatorContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_relational_operator; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterRelational_operator(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitRelational_operator(this);
}
}
@RuleVersion(0)
public final Relational_operatorContext relational_operator() throws RecognitionException {
Relational_operatorContext _localctx = new Relational_operatorContext(_ctx, getState());
enterRule(_localctx, 32, RULE_relational_operator);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(297);
_la = _input.LA(1);
if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << 4) | (1L << 7) | (1L << 49) | (1L << 55))) != 0)) ) {
_errHandler.recoverInline(this);
}
consume();
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class ConstantContext extends ParserRuleContext {
public TerminalNode OCTAL_LITERAL() { return getToken(FunctionParser.OCTAL_LITERAL, 0); }
public TerminalNode DECIMAL_LITERAL() { return getToken(FunctionParser.DECIMAL_LITERAL, 0); }
public TerminalNode FLOATING_POINT_LITERAL() { return getToken(FunctionParser.FLOATING_POINT_LITERAL, 0); }
public TerminalNode CHAR() { return getToken(FunctionParser.CHAR, 0); }
public TerminalNode STRING() { return getToken(FunctionParser.STRING, 0); }
public TerminalNode HEX_LITERAL() { return getToken(FunctionParser.HEX_LITERAL, 0); }
public ConstantContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_constant; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterConstant(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitConstant(this);
}
}
@RuleVersion(0)
public final ConstantContext constant() throws RecognitionException {
ConstantContext _localctx = new ConstantContext(_ctx, getState());
enterRule(_localctx, 34, RULE_constant);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(299);
_la = _input.LA(1);
if ( !(((((_la - 91)) & ~0x3f) == 0 && ((1L << (_la - 91)) & ((1L << (HEX_LITERAL - 91)) | (1L << (DECIMAL_LITERAL - 91)) | (1L << (OCTAL_LITERAL - 91)) | (1L << (FLOATING_POINT_LITERAL - 91)) | (1L << (CHAR - 91)) | (1L << (STRING - 91)))) != 0)) ) {
_errHandler.recoverInline(this);
}
consume();
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class Function_decl_specifiersContext extends ParserRuleContext {
public Function_decl_specifiersContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_function_decl_specifiers; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterFunction_decl_specifiers(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitFunction_decl_specifiers(this);
}
}
@RuleVersion(0)
public final Function_decl_specifiersContext function_decl_specifiers() throws RecognitionException {
Function_decl_specifiersContext _localctx = new Function_decl_specifiersContext(_ctx, getState());
enterRule(_localctx, 36, RULE_function_decl_specifiers);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(301);
_la = _input.LA(1);
if ( !(((((_la - 13)) & ~0x3f) == 0 && ((1L << (_la - 13)) & ((1L << (13 - 13)) | (1L << (14 - 13)) | (1L << (37 - 13)) | (1L << (38 - 13)) | (1L << (VIRTUAL - 13)))) != 0)) ) {
_errHandler.recoverInline(this);
}
consume();
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class Ptr_operatorContext extends ParserRuleContext {
public Ptr_operatorContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_ptr_operator; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterPtr_operator(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitPtr_operator(this);
}
}
@RuleVersion(0)
public final Ptr_operatorContext ptr_operator() throws RecognitionException {
Ptr_operatorContext _localctx = new Ptr_operatorContext(_ctx, getState());
enterRule(_localctx, 38, RULE_ptr_operator);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(303);
_la = _input.LA(1);
if ( !(_la==1 || _la==3) ) {
_errHandler.recoverInline(this);
}
consume();
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class Access_specifierContext extends ParserRuleContext {
public Access_specifierContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_access_specifier; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterAccess_specifier(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitAccess_specifier(this);
}
}
@RuleVersion(0)
public final Access_specifierContext access_specifier() throws RecognitionException {
Access_specifierContext _localctx = new Access_specifierContext(_ctx, getState());
enterRule(_localctx, 40, RULE_access_specifier);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(305);
_la = _input.LA(1);
if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << 26) | (1L << 32) | (1L << 45))) != 0)) ) {
_errHandler.recoverInline(this);
}
consume();
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class OperatorContext extends ParserRuleContext {
public OperatorContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_operator; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterOperator(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitOperator(this);
}
}
@RuleVersion(0)
public final OperatorContext operator() throws RecognitionException {
OperatorContext _localctx = new OperatorContext(_ctx, getState());
enterRule(_localctx, 42, RULE_operator);
int _la;
try {
setState(352);
switch (_input.LA(1)) {
case 42:
case NEW:
enterOuterAlt(_localctx, 1);
{
{
setState(307);
_la = _input.LA(1);
if ( !(_la==42 || _la==NEW) ) {
_errHandler.recoverInline(this);
}
consume();
setState(310);
_la = _input.LA(1);
if (_la==2) {
{
setState(308); match(2);
setState(309); match(23);
}
}
}
}
break;
case 44:
enterOuterAlt(_localctx, 2);
{
setState(312); match(44);
}
break;
case 28:
enterOuterAlt(_localctx, 3);
{
setState(313); match(28);
}
break;
case 3:
enterOuterAlt(_localctx, 4);
{
setState(314); match(3);
}
break;
case 53:
enterOuterAlt(_localctx, 5);
{
setState(315); match(53);
}
break;
case 9:
enterOuterAlt(_localctx, 6);
{
setState(316); match(9);
}
break;
case 41:
enterOuterAlt(_localctx, 7);
{
setState(317); match(41);
}
break;
case 1:
enterOuterAlt(_localctx, 8);
{
setState(318); match(1);
}
break;
case 19:
enterOuterAlt(_localctx, 9);
{
setState(319); match(19);
}
break;
case 54:
enterOuterAlt(_localctx, 10);
{
setState(320); match(54);
}
break;
case 20:
enterOuterAlt(_localctx, 11);
{
setState(321); match(20);
}
break;
case 16:
enterOuterAlt(_localctx, 12);
{
setState(322); match(16);
}
break;
case 4:
enterOuterAlt(_localctx, 13);
{
setState(323); match(4);
}
break;
case 49:
enterOuterAlt(_localctx, 14);
{
setState(324); match(49);
}
break;
case 35:
enterOuterAlt(_localctx, 15);
{
setState(325); match(35);
}
break;
case 24:
enterOuterAlt(_localctx, 16);
{
setState(326); match(24);
}
break;
case 11:
enterOuterAlt(_localctx, 17);
{
setState(327); match(11);
}
break;
case 51:
enterOuterAlt(_localctx, 18);
{
setState(328); match(51);
}
break;
case 50:
enterOuterAlt(_localctx, 19);
{
setState(329); match(50);
}
break;
case 36:
enterOuterAlt(_localctx, 20);
{
setState(330); match(36);
}
break;
case 31:
enterOuterAlt(_localctx, 21);
{
setState(331); match(31);
}
break;
case 18:
enterOuterAlt(_localctx, 22);
{
setState(332); match(18);
}
break;
case 40:
enterOuterAlt(_localctx, 23);
{
setState(333); match(40);
}
break;
case 8:
enterOuterAlt(_localctx, 24);
{
setState(334); match(8);
}
break;
case 34:
enterOuterAlt(_localctx, 25);
{
setState(335); match(34);
}
break;
case 22:
enterOuterAlt(_localctx, 26);
{
setState(336); match(22);
}
break;
case 52:
enterOuterAlt(_localctx, 27);
{
setState(337); match(52);
}
break;
case 6:
enterOuterAlt(_localctx, 28);
{
setState(338); match(6);
}
break;
case 7:
enterOuterAlt(_localctx, 29);
{
setState(339); match(7);
}
break;
case 55:
enterOuterAlt(_localctx, 30);
{
setState(340); match(55);
}
break;
case 47:
enterOuterAlt(_localctx, 31);
{
setState(341); match(47);
}
break;
case 48:
enterOuterAlt(_localctx, 32);
{
setState(342); match(48);
}
break;
case 39:
enterOuterAlt(_localctx, 33);
{
setState(343); match(39);
}
break;
case 5:
enterOuterAlt(_localctx, 34);
{
setState(344); match(5);
}
break;
case 27:
enterOuterAlt(_localctx, 35);
{
setState(345); match(27);
}
break;
case 25:
enterOuterAlt(_localctx, 36);
{
setState(346); match(25);
}
break;
case 10:
enterOuterAlt(_localctx, 37);
{
setState(347); match(10);
}
break;
case 30:
enterOuterAlt(_localctx, 38);
{
setState(348); match(30);
setState(349); match(12);
}
break;
case 2:
enterOuterAlt(_localctx, 39);
{
setState(350); match(2);
setState(351); match(23);
}
break;
default:
throw new NoViableAltException(this);
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class Assignment_operatorContext extends ParserRuleContext {
public Assignment_operatorContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_assignment_operator; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterAssignment_operator(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitAssignment_operator(this);
}
}
@RuleVersion(0)
public final Assignment_operatorContext assignment_operator() throws RecognitionException {
Assignment_operatorContext _localctx = new Assignment_operatorContext(_ctx, getState());
enterRule(_localctx, 44, RULE_assignment_operator);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(354);
_la = _input.LA(1);
if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << 11) | (1L << 16) | (1L << 18) | (1L << 22) | (1L << 24) | (1L << 31) | (1L << 34) | (1L << 35) | (1L << 36) | (1L << 50) | (1L << 51))) != 0)) ) {
_errHandler.recoverInline(this);
}
consume();
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class Equality_operatorContext extends ParserRuleContext {
public Equality_operatorContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_equality_operator; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterEquality_operator(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitEquality_operator(this);
}
}
@RuleVersion(0)
public final Equality_operatorContext equality_operator() throws RecognitionException {
Equality_operatorContext _localctx = new Equality_operatorContext(_ctx, getState());
enterRule(_localctx, 46, RULE_equality_operator);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(356);
_la = _input.LA(1);
if ( !(_la==6 || _la==52) ) {
_errHandler.recoverInline(this);
}
consume();
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class Template_decl_startContext extends ParserRuleContext {
public TerminalNode TEMPLATE() { return getToken(FunctionParser.TEMPLATE, 0); }
public Template_param_listContext template_param_list() {
return getRuleContext(Template_param_listContext.class,0);
}
public Template_decl_startContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_template_decl_start; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterTemplate_decl_start(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitTemplate_decl_start(this);
}
}
@RuleVersion(0)
public final Template_decl_startContext template_decl_start() throws RecognitionException {
Template_decl_startContext _localctx = new Template_decl_startContext(_ctx, getState());
enterRule(_localctx, 48, RULE_template_decl_start);
try {
enterOuterAlt(_localctx, 1);
{
setState(358); match(TEMPLATE);
setState(359); match(4);
setState(360); template_param_list();
setState(361); match(49);
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class Template_param_listContext extends ParserRuleContext {
public Template_param_listContext template_param_list(int i) {
return getRuleContext(Template_param_listContext.class,i);
}
public List<? extends No_angle_brackets_or_bracketsContext> no_angle_brackets_or_brackets() {
return getRuleContexts(No_angle_brackets_or_bracketsContext.class);
}
public No_angle_brackets_or_bracketsContext no_angle_brackets_or_brackets(int i) {
return getRuleContext(No_angle_brackets_or_bracketsContext.class,i);
}
public List<? extends Template_param_listContext> template_param_list() {
return getRuleContexts(Template_param_listContext.class);
}
public Template_param_listContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_template_param_list; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterTemplate_param_list(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitTemplate_param_list(this);
}
}
@RuleVersion(0)
public final Template_param_listContext template_param_list() throws RecognitionException {
Template_param_listContext _localctx = new Template_param_listContext(_ctx, getState());
enterRule(_localctx, 50, RULE_template_param_list);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(372);
_errHandler.sync(this);
_la = _input.LA(1);
do {
{
setState(372);
switch (_input.LA(1)) {
case 4:
{
{
setState(363); match(4);
setState(364); template_param_list();
setState(365); match(49);
}
}
break;
case 30:
{
{
setState(367); match(30);
setState(368); template_param_list();
setState(369); match(12);
}
}
break;
case 1:
case 2:
case 3:
case 5:
case 6:
case 7:
case 8:
case 9:
case 10:
case 11:
case 13:
case 14:
case 15:
case 16:
case 17:
case 18:
case 19:
case 20:
case 21:
case 22:
case 23:
case 24:
case 25:
case 26:
case 27:
case 28:
case 29:
case 31:
case 32:
case 33:
case 34:
case 35:
case 36:
case 37:
case 38:
case 39:
case 40:
case 41:
case 42:
case 43:
case 44:
case 45:
case 46:
case 47:
case 48:
case 50:
case 51:
case 52:
case 53:
case 54:
case 55:
case IF:
case ELSE:
case FOR:
case WHILE:
case BREAK:
case CASE:
case CONTINUE:
case SWITCH:
case DO:
case GOTO:
case RETURN:
case TYPEDEF:
case VOID:
case UNSIGNED:
case SIGNED:
case LONG:
case CV_QUALIFIER:
case VIRTUAL:
case TRY:
case CATCH:
case THROW:
case USING:
case NAMESPACE:
case AUTO:
case REGISTER:
case OPERATOR:
case TEMPLATE:
case NEW:
case CLASS_KEY:
case ALPHA_NUMERIC:
case OPENING_CURLY:
case CLOSING_CURLY:
case PRE_IF:
case PRE_ELSE:
case PRE_ENDIF:
case HEX_LITERAL:
case DECIMAL_LITERAL:
case OCTAL_LITERAL:
case FLOATING_POINT_LITERAL:
case CHAR:
case STRING:
case COMMENT:
case WHITESPACE:
case CPPCOMMENT:
case OTHER:
{
setState(371); no_angle_brackets_or_brackets();
}
break;
default:
throw new NoViableAltException(this);
}
}
setState(374);
_errHandler.sync(this);
_la = _input.LA(1);
} while ( (((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << 1) | (1L << 2) | (1L << 3) | (1L << 4) | (1L << 5) | (1L << 6) | (1L << 7) | (1L << 8) | (1L << 9) | (1L << 10) | (1L << 11) | (1L << 13) | (1L << 14) | (1L << 15) | (1L << 16) | (1L << 17) | (1L << 18) | (1L << 19) | (1L << 20) | (1L << 21) | (1L << 22) | (1L << 23) | (1L << 24) | (1L << 25) | (1L << 26) | (1L << 27) | (1L << 28) | (1L << 29) | (1L << 30) | (1L << 31) | (1L << 32) | (1L << 33) | (1L << 34) | (1L << 35) | (1L << 36) | (1L << 37) | (1L << 38) | (1L << 39) | (1L << 40) | (1L << 41) | (1L << 42) | (1L << 43) | (1L << 44) | (1L << 45) | (1L << 46) | (1L << 47) | (1L << 48) | (1L << 50) | (1L << 51) | (1L << 52) | (1L << 53) | (1L << 54) | (1L << 55) | (1L << IF) | (1L << ELSE) | (1L << FOR) | (1L << WHILE) | (1L << BREAK) | (1L << CASE) | (1L << CONTINUE) | (1L << SWITCH))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (DO - 64)) | (1L << (GOTO - 64)) | (1L << (RETURN - 64)) | (1L << (TYPEDEF - 64)) | (1L << (VOID - 64)) | (1L << (UNSIGNED - 64)) | (1L << (SIGNED - 64)) | (1L << (LONG - 64)) | (1L << (CV_QUALIFIER - 64)) | (1L << (VIRTUAL - 64)) | (1L << (TRY - 64)) | (1L << (CATCH - 64)) | (1L << (THROW - 64)) | (1L << (USING - 64)) | (1L << (NAMESPACE - 64)) | (1L << (AUTO - 64)) | (1L << (REGISTER - 64)) | (1L << (OPERATOR - 64)) | (1L << (TEMPLATE - 64)) | (1L << (NEW - 64)) | (1L << (CLASS_KEY - 64)) | (1L << (ALPHA_NUMERIC - 64)) | (1L << (OPENING_CURLY - 64)) | (1L << (CLOSING_CURLY - 64)) | (1L << (PRE_IF - 64)) | (1L << (PRE_ELSE - 64)) | (1L << (PRE_ENDIF - 64)) | (1L << (HEX_LITERAL - 64)) | (1L << (DECIMAL_LITERAL - 64)) | (1L << (OCTAL_LITERAL - 64)) | (1L << (FLOATING_POINT_LITERAL - 64)) | (1L << (CHAR - 64)) | (1L << (STRING - 64)) | (1L << (COMMENT - 64)) | (1L << (WHITESPACE - 64)) | (1L << (CPPCOMMENT - 64)) | (1L << (OTHER - 64)))) != 0) );
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class No_bracketsContext extends ParserRuleContext {
public No_bracketsContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_no_brackets; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterNo_brackets(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitNo_brackets(this);
}
}
@RuleVersion(0)
public final No_bracketsContext no_brackets() throws RecognitionException {
No_bracketsContext _localctx = new No_bracketsContext(_ctx, getState());
enterRule(_localctx, 52, RULE_no_brackets);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(376);
_la = _input.LA(1);
if ( _la <= 0 || (_la==12 || _la==30) ) {
_errHandler.recoverInline(this);
}
consume();
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class No_brackets_curlies_or_squaresContext extends ParserRuleContext {
public No_brackets_curlies_or_squaresContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_no_brackets_curlies_or_squares; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterNo_brackets_curlies_or_squares(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitNo_brackets_curlies_or_squares(this);
}
}
@RuleVersion(0)
public final No_brackets_curlies_or_squaresContext no_brackets_curlies_or_squares() throws RecognitionException {
No_brackets_curlies_or_squaresContext _localctx = new No_brackets_curlies_or_squaresContext(_ctx, getState());
enterRule(_localctx, 54, RULE_no_brackets_curlies_or_squares);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(378);
_la = _input.LA(1);
if ( _la <= 0 || ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << 2) | (1L << 12) | (1L << 23) | (1L << 30))) != 0) || _la==OPENING_CURLY || _la==CLOSING_CURLY) ) {
_errHandler.recoverInline(this);
}
consume();
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class No_brackets_or_semicolonContext extends ParserRuleContext {
public No_brackets_or_semicolonContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_no_brackets_or_semicolon; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterNo_brackets_or_semicolon(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitNo_brackets_or_semicolon(this);
}
}
@RuleVersion(0)
public final No_brackets_or_semicolonContext no_brackets_or_semicolon() throws RecognitionException {
No_brackets_or_semicolonContext _localctx = new No_brackets_or_semicolonContext(_ctx, getState());
enterRule(_localctx, 56, RULE_no_brackets_or_semicolon);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(380);
_la = _input.LA(1);
if ( _la <= 0 || ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << 12) | (1L << 30) | (1L << 46))) != 0)) ) {
_errHandler.recoverInline(this);
}
consume();
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class No_angle_brackets_or_bracketsContext extends ParserRuleContext {
public No_angle_brackets_or_bracketsContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_no_angle_brackets_or_brackets; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterNo_angle_brackets_or_brackets(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitNo_angle_brackets_or_brackets(this);
}
}
@RuleVersion(0)
public final No_angle_brackets_or_bracketsContext no_angle_brackets_or_brackets() throws RecognitionException {
No_angle_brackets_or_bracketsContext _localctx = new No_angle_brackets_or_bracketsContext(_ctx, getState());
enterRule(_localctx, 58, RULE_no_angle_brackets_or_brackets);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(382);
_la = _input.LA(1);
if ( _la <= 0 || ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << 4) | (1L << 12) | (1L << 30) | (1L << 49))) != 0)) ) {
_errHandler.recoverInline(this);
}
consume();
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class No_curliesContext extends ParserRuleContext {
public No_curliesContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_no_curlies; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterNo_curlies(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitNo_curlies(this);
}
}
@RuleVersion(0)
public final No_curliesContext no_curlies() throws RecognitionException {
No_curliesContext _localctx = new No_curliesContext(_ctx, getState());
enterRule(_localctx, 60, RULE_no_curlies);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(384);
_la = _input.LA(1);
if ( _la <= 0 || (_la==OPENING_CURLY || _la==CLOSING_CURLY) ) {
_errHandler.recoverInline(this);
}
consume();
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class No_squaresContext extends ParserRuleContext {
public No_squaresContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_no_squares; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterNo_squares(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitNo_squares(this);
}
}
@RuleVersion(0)
public final No_squaresContext no_squares() throws RecognitionException {
No_squaresContext _localctx = new No_squaresContext(_ctx, getState());
enterRule(_localctx, 62, RULE_no_squares);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(386);
_la = _input.LA(1);
if ( _la <= 0 || (_la==2 || _la==23) ) {
_errHandler.recoverInline(this);
}
consume();
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class No_squares_or_semicolonContext extends ParserRuleContext {
public No_squares_or_semicolonContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_no_squares_or_semicolon; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterNo_squares_or_semicolon(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitNo_squares_or_semicolon(this);
}
}
@RuleVersion(0)
public final No_squares_or_semicolonContext no_squares_or_semicolon() throws RecognitionException {
No_squares_or_semicolonContext _localctx = new No_squares_or_semicolonContext(_ctx, getState());
enterRule(_localctx, 64, RULE_no_squares_or_semicolon);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(388);
_la = _input.LA(1);
if ( _la <= 0 || ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << 2) | (1L << 23) | (1L << 46))) != 0)) ) {
_errHandler.recoverInline(this);
}
consume();
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class No_comma_or_semicolonContext extends ParserRuleContext {
public No_comma_or_semicolonContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_no_comma_or_semicolon; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterNo_comma_or_semicolon(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitNo_comma_or_semicolon(this);
}
}
@RuleVersion(0)
public final No_comma_or_semicolonContext no_comma_or_semicolon() throws RecognitionException {
No_comma_or_semicolonContext _localctx = new No_comma_or_semicolonContext(_ctx, getState());
enterRule(_localctx, 66, RULE_no_comma_or_semicolon);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(390);
_la = _input.LA(1);
if ( _la <= 0 || (_la==27 || _la==46) ) {
_errHandler.recoverInline(this);
}
consume();
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class Assign_waterContext extends ParserRuleContext {
public Assign_waterContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_assign_water; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterAssign_water(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitAssign_water(this);
}
}
@RuleVersion(0)
public final Assign_waterContext assign_water() throws RecognitionException {
Assign_waterContext _localctx = new Assign_waterContext(_ctx, getState());
enterRule(_localctx, 68, RULE_assign_water);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(392);
_la = _input.LA(1);
if ( _la <= 0 || ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << 2) | (1L << 12) | (1L << 23) | (1L << 27) | (1L << 30) | (1L << 46))) != 0) || _la==OPENING_CURLY || _la==CLOSING_CURLY) ) {
_errHandler.recoverInline(this);
}
consume();
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class Assign_water_l2Context extends ParserRuleContext {
public Assign_water_l2Context(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_assign_water_l2; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterAssign_water_l2(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitAssign_water_l2(this);
}
}
@RuleVersion(0)
public final Assign_water_l2Context assign_water_l2() throws RecognitionException {
Assign_water_l2Context _localctx = new Assign_water_l2Context(_ctx, getState());
enterRule(_localctx, 70, RULE_assign_water_l2);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(394);
_la = _input.LA(1);
if ( _la <= 0 || ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << 2) | (1L << 12) | (1L << 23) | (1L << 30))) != 0) || _la==OPENING_CURLY || _la==CLOSING_CURLY) ) {
_errHandler.recoverInline(this);
}
consume();
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class WaterContext extends ParserRuleContext {
public WaterContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_water; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterWater(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitWater(this);
}
}
@RuleVersion(0)
public final WaterContext water() throws RecognitionException {
WaterContext _localctx = new WaterContext(_ctx, getState());
enterRule(_localctx, 72, RULE_water);
try {
enterOuterAlt(_localctx, 1);
{
setState(396);
matchWildcard();
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class ExprContext extends ParserRuleContext {
public ExprContext expr() {
return getRuleContext(ExprContext.class,0);
}
public Assign_exprContext assign_expr() {
return getRuleContext(Assign_exprContext.class,0);
}
public ExprContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_expr; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterExpr(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitExpr(this);
}
}
@RuleVersion(0)
public final ExprContext expr() throws RecognitionException {
ExprContext _localctx = new ExprContext(_ctx, getState());
enterRule(_localctx, 74, RULE_expr);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(398); assign_expr();
setState(401);
_la = _input.LA(1);
if (_la==27) {
{
setState(399); match(27);
setState(400); expr();
}
}
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class Assign_exprContext extends ParserRuleContext {
public Assignment_operatorContext assignment_operator() {
return getRuleContext(Assignment_operatorContext.class,0);
}
public Conditional_expressionContext conditional_expression() {
return getRuleContext(Conditional_expressionContext.class,0);
}
public Assign_exprContext assign_expr() {
return getRuleContext(Assign_exprContext.class,0);
}
public Assign_exprContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_assign_expr; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterAssign_expr(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitAssign_expr(this);
}
}
@RuleVersion(0)
public final Assign_exprContext assign_expr() throws RecognitionException {
Assign_exprContext _localctx = new Assign_exprContext(_ctx, getState());
enterRule(_localctx, 76, RULE_assign_expr);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(403); conditional_expression();
setState(407);
_la = _input.LA(1);
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << 11) | (1L << 16) | (1L << 18) | (1L << 22) | (1L << 24) | (1L << 31) | (1L << 34) | (1L << 35) | (1L << 36) | (1L << 50) | (1L << 51))) != 0)) {
{
setState(404); assignment_operator();
setState(405); assign_expr();
}
}
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class Conditional_expressionContext extends ParserRuleContext {
public Conditional_expressionContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_conditional_expression; }
public Conditional_expressionContext() { }
public void copyFrom(Conditional_expressionContext ctx) {
super.copyFrom(ctx);
}
}
public static class NormOrContext extends Conditional_expressionContext {
public Or_expressionContext or_expression() {
return getRuleContext(Or_expressionContext.class,0);
}
public NormOrContext(Conditional_expressionContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterNormOr(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitNormOr(this);
}
}
public static class CndExprContext extends Conditional_expressionContext {
public ExprContext expr() {
return getRuleContext(ExprContext.class,0);
}
public Conditional_expressionContext conditional_expression() {
return getRuleContext(Conditional_expressionContext.class,0);
}
public Or_expressionContext or_expression() {
return getRuleContext(Or_expressionContext.class,0);
}
public CndExprContext(Conditional_expressionContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterCndExpr(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitCndExpr(this);
}
}
@RuleVersion(0)
public final Conditional_expressionContext conditional_expression() throws RecognitionException {
Conditional_expressionContext _localctx = new Conditional_expressionContext(_ctx, getState());
enterRule(_localctx, 78, RULE_conditional_expression);
try {
setState(416);
switch ( getInterpreter().adaptivePredict(_input,20,_ctx) ) {
case 1:
_localctx = new NormOrContext(_localctx);
enterOuterAlt(_localctx, 1);
{
setState(409); or_expression();
}
break;
case 2:
_localctx = new CndExprContext(_localctx);
enterOuterAlt(_localctx, 2);
{
setState(410); or_expression();
{
setState(411); match(33);
setState(412); expr();
setState(413); match(29);
setState(414); conditional_expression();
}
}
break;
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class Or_expressionContext extends ParserRuleContext {
public And_expressionContext and_expression() {
return getRuleContext(And_expressionContext.class,0);
}
public Or_expressionContext or_expression() {
return getRuleContext(Or_expressionContext.class,0);
}
public Or_expressionContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_or_expression; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterOr_expression(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitOr_expression(this);
}
}
@RuleVersion(0)
public final Or_expressionContext or_expression() throws RecognitionException {
Or_expressionContext _localctx = new Or_expressionContext(_ctx, getState());
enterRule(_localctx, 80, RULE_or_expression);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(418); and_expression();
setState(421);
_la = _input.LA(1);
if (_la==48) {
{
setState(419); match(48);
setState(420); or_expression();
}
}
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class And_expressionContext extends ParserRuleContext {
public Inclusive_or_expressionContext inclusive_or_expression() {
return getRuleContext(Inclusive_or_expressionContext.class,0);
}
public And_expressionContext and_expression() {
return getRuleContext(And_expressionContext.class,0);
}
public And_expressionContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_and_expression; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterAnd_expression(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitAnd_expression(this);
}
}
@RuleVersion(0)
public final And_expressionContext and_expression() throws RecognitionException {
And_expressionContext _localctx = new And_expressionContext(_ctx, getState());
enterRule(_localctx, 82, RULE_and_expression);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(423); inclusive_or_expression();
setState(426);
_la = _input.LA(1);
if (_la==47) {
{
setState(424); match(47);
setState(425); and_expression();
}
}
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class Inclusive_or_expressionContext extends ParserRuleContext {
public Inclusive_or_expressionContext inclusive_or_expression() {
return getRuleContext(Inclusive_or_expressionContext.class,0);
}
public Exclusive_or_expressionContext exclusive_or_expression() {
return getRuleContext(Exclusive_or_expressionContext.class,0);
}
public Inclusive_or_expressionContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_inclusive_or_expression; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterInclusive_or_expression(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitInclusive_or_expression(this);
}
}
@RuleVersion(0)
public final Inclusive_or_expressionContext inclusive_or_expression() throws RecognitionException {
Inclusive_or_expressionContext _localctx = new Inclusive_or_expressionContext(_ctx, getState());
enterRule(_localctx, 84, RULE_inclusive_or_expression);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(428); exclusive_or_expression();
setState(431);
_la = _input.LA(1);
if (_la==19) {
{
setState(429); match(19);
setState(430); inclusive_or_expression();
}
}
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class Exclusive_or_expressionContext extends ParserRuleContext {
public Bit_and_expressionContext bit_and_expression() {
return getRuleContext(Bit_and_expressionContext.class,0);
}
public Exclusive_or_expressionContext exclusive_or_expression() {
return getRuleContext(Exclusive_or_expressionContext.class,0);
}
public Exclusive_or_expressionContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_exclusive_or_expression; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterExclusive_or_expression(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitExclusive_or_expression(this);
}
}
@RuleVersion(0)
public final Exclusive_or_expressionContext exclusive_or_expression() throws RecognitionException {
Exclusive_or_expressionContext _localctx = new Exclusive_or_expressionContext(_ctx, getState());
enterRule(_localctx, 86, RULE_exclusive_or_expression);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(433); bit_and_expression();
setState(436);
_la = _input.LA(1);
if (_la==41) {
{
setState(434); match(41);
setState(435); exclusive_or_expression();
}
}
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class Bit_and_expressionContext extends ParserRuleContext {
public Equality_expressionContext equality_expression() {
return getRuleContext(Equality_expressionContext.class,0);
}
public Bit_and_expressionContext bit_and_expression() {
return getRuleContext(Bit_and_expressionContext.class,0);
}
public Bit_and_expressionContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_bit_and_expression; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterBit_and_expression(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitBit_and_expression(this);
}
}
@RuleVersion(0)
public final Bit_and_expressionContext bit_and_expression() throws RecognitionException {
Bit_and_expressionContext _localctx = new Bit_and_expressionContext(_ctx, getState());
enterRule(_localctx, 88, RULE_bit_and_expression);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(438); equality_expression();
setState(441);
_la = _input.LA(1);
if (_la==1) {
{
setState(439); match(1);
setState(440); bit_and_expression();
}
}
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class Equality_expressionContext extends ParserRuleContext {
public Relational_expressionContext relational_expression() {
return getRuleContext(Relational_expressionContext.class,0);
}
public Equality_operatorContext equality_operator() {
return getRuleContext(Equality_operatorContext.class,0);
}
public Equality_expressionContext equality_expression() {
return getRuleContext(Equality_expressionContext.class,0);
}
public Equality_expressionContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_equality_expression; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterEquality_expression(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitEquality_expression(this);
}
}
@RuleVersion(0)
public final Equality_expressionContext equality_expression() throws RecognitionException {
Equality_expressionContext _localctx = new Equality_expressionContext(_ctx, getState());
enterRule(_localctx, 90, RULE_equality_expression);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(443); relational_expression();
setState(447);
_la = _input.LA(1);
if (_la==6 || _la==52) {
{
setState(444); equality_operator();
setState(445); equality_expression();
}
}
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class Relational_expressionContext extends ParserRuleContext {
public Relational_expressionContext relational_expression() {
return getRuleContext(Relational_expressionContext.class,0);
}
public Shift_expressionContext shift_expression() {
return getRuleContext(Shift_expressionContext.class,0);
}
public Relational_operatorContext relational_operator() {
return getRuleContext(Relational_operatorContext.class,0);
}
public Relational_expressionContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_relational_expression; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterRelational_expression(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitRelational_expression(this);
}
}
@RuleVersion(0)
public final Relational_expressionContext relational_expression() throws RecognitionException {
Relational_expressionContext _localctx = new Relational_expressionContext(_ctx, getState());
enterRule(_localctx, 92, RULE_relational_expression);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(449); shift_expression();
setState(453);
_la = _input.LA(1);
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << 4) | (1L << 7) | (1L << 49) | (1L << 55))) != 0)) {
{
setState(450); relational_operator();
setState(451); relational_expression();
}
}
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class Shift_expressionContext extends ParserRuleContext {
public Shift_expressionContext shift_expression() {
return getRuleContext(Shift_expressionContext.class,0);
}
public Additive_expressionContext additive_expression() {
return getRuleContext(Additive_expressionContext.class,0);
}
public Shift_expressionContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_shift_expression; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterShift_expression(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitShift_expression(this);
}
}
@RuleVersion(0)
public final Shift_expressionContext shift_expression() throws RecognitionException {
Shift_expressionContext _localctx = new Shift_expressionContext(_ctx, getState());
enterRule(_localctx, 94, RULE_shift_expression);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(455); additive_expression();
setState(458);
_la = _input.LA(1);
if (_la==8 || _la==40) {
{
setState(456);
_la = _input.LA(1);
if ( !(_la==8 || _la==40) ) {
_errHandler.recoverInline(this);
}
consume();
setState(457); shift_expression();
}
}
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class Additive_expressionContext extends ParserRuleContext {
public Additive_expressionContext additive_expression() {
return getRuleContext(Additive_expressionContext.class,0);
}
public Multiplicative_expressionContext multiplicative_expression() {
return getRuleContext(Multiplicative_expressionContext.class,0);
}
public Additive_expressionContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_additive_expression; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterAdditive_expression(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitAdditive_expression(this);
}
}
@RuleVersion(0)
public final Additive_expressionContext additive_expression() throws RecognitionException {
Additive_expressionContext _localctx = new Additive_expressionContext(_ctx, getState());
enterRule(_localctx, 96, RULE_additive_expression);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(460); multiplicative_expression();
setState(463);
_la = _input.LA(1);
if (_la==28 || _la==44) {
{
setState(461);
_la = _input.LA(1);
if ( !(_la==28 || _la==44) ) {
_errHandler.recoverInline(this);
}
consume();
setState(462); additive_expression();
}
}
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class Multiplicative_expressionContext extends ParserRuleContext {
public Cast_expressionContext cast_expression() {
return getRuleContext(Cast_expressionContext.class,0);
}
public Multiplicative_expressionContext multiplicative_expression() {
return getRuleContext(Multiplicative_expressionContext.class,0);
}
public Multiplicative_expressionContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_multiplicative_expression; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterMultiplicative_expression(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitMultiplicative_expression(this);
}
}
@RuleVersion(0)
public final Multiplicative_expressionContext multiplicative_expression() throws RecognitionException {
Multiplicative_expressionContext _localctx = new Multiplicative_expressionContext(_ctx, getState());
enterRule(_localctx, 98, RULE_multiplicative_expression);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(465); cast_expression();
setState(468);
_la = _input.LA(1);
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << 3) | (1L << 9) | (1L << 53))) != 0)) {
{
setState(466);
_la = _input.LA(1);
if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << 3) | (1L << 9) | (1L << 53))) != 0)) ) {
_errHandler.recoverInline(this);
}
consume();
setState(467); multiplicative_expression();
}
}
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class Cast_expressionContext extends ParserRuleContext {
public Cast_expressionContext cast_expression() {
return getRuleContext(Cast_expressionContext.class,0);
}
public Cast_targetContext cast_target() {
return getRuleContext(Cast_targetContext.class,0);
}
public Unary_expressionContext unary_expression() {
return getRuleContext(Unary_expressionContext.class,0);
}
public Cast_expressionContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_cast_expression; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterCast_expression(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitCast_expression(this);
}
}
@RuleVersion(0)
public final Cast_expressionContext cast_expression() throws RecognitionException {
Cast_expressionContext _localctx = new Cast_expressionContext(_ctx, getState());
enterRule(_localctx, 100, RULE_cast_expression);
try {
setState(476);
switch ( getInterpreter().adaptivePredict(_input,31,_ctx) ) {
case 1:
enterOuterAlt(_localctx, 1);
{
{
setState(470); match(30);
setState(471); cast_target();
setState(472); match(12);
setState(473); cast_expression();
}
}
break;
case 2:
enterOuterAlt(_localctx, 2);
{
setState(475); unary_expression();
}
break;
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class Cast_targetContext extends ParserRuleContext {
public Type_nameContext type_name() {
return getRuleContext(Type_nameContext.class,0);
}
public List<? extends Ptr_operatorContext> ptr_operator() {
return getRuleContexts(Ptr_operatorContext.class);
}
public Ptr_operatorContext ptr_operator(int i) {
return getRuleContext(Ptr_operatorContext.class,i);
}
public Cast_targetContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_cast_target; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterCast_target(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitCast_target(this);
}
}
@RuleVersion(0)
public final Cast_targetContext cast_target() throws RecognitionException {
Cast_targetContext _localctx = new Cast_targetContext(_ctx, getState());
enterRule(_localctx, 102, RULE_cast_target);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(478); type_name();
setState(482);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==1 || _la==3) {
{
{
setState(479); ptr_operator();
}
}
setState(484);
_errHandler.sync(this);
_la = _input.LA(1);
}
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class Unary_expressionContext extends ParserRuleContext {
public Cast_expressionContext cast_expression() {
return getRuleContext(Cast_expressionContext.class,0);
}
public Sizeof_expressionContext sizeof_expression() {
return getRuleContext(Sizeof_expressionContext.class,0);
}
public New_expressionContext new_expression() {
return getRuleContext(New_expressionContext.class,0);
}
public Inc_decContext inc_dec() {
return getRuleContext(Inc_decContext.class,0);
}
public Unary_op_and_cast_exprContext unary_op_and_cast_expr() {
return getRuleContext(Unary_op_and_cast_exprContext.class,0);
}
public Postfix_expressionContext postfix_expression() {
return getRuleContext(Postfix_expressionContext.class,0);
}
public Unary_expressionContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_unary_expression; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterUnary_expression(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitUnary_expression(this);
}
}
@RuleVersion(0)
public final Unary_expressionContext unary_expression() throws RecognitionException {
Unary_expressionContext _localctx = new Unary_expressionContext(_ctx, getState());
enterRule(_localctx, 104, RULE_unary_expression);
try {
setState(492);
switch (_input.LA(1)) {
case 5:
case 39:
enterOuterAlt(_localctx, 1);
{
setState(485); inc_dec();
setState(486); cast_expression();
}
break;
case 1:
case 3:
case 20:
case 28:
case 44:
case 54:
enterOuterAlt(_localctx, 2);
{
setState(488); unary_op_and_cast_expr();
}
break;
case 21:
enterOuterAlt(_localctx, 3);
{
setState(489); sizeof_expression();
}
break;
case 15:
case NEW:
enterOuterAlt(_localctx, 4);
{
setState(490); new_expression();
}
break;
case 26:
case 30:
case 32:
case 45:
case ALPHA_NUMERIC:
case HEX_LITERAL:
case DECIMAL_LITERAL:
case OCTAL_LITERAL:
case FLOATING_POINT_LITERAL:
case CHAR:
case STRING:
enterOuterAlt(_localctx, 5);
{
setState(491); postfix_expression(0);
}
break;
default:
throw new NoViableAltException(this);
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class New_expressionContext extends ParserRuleContext {
public TerminalNode NEW() { return getToken(FunctionParser.NEW, 0); }
public ExprContext expr() {
return getRuleContext(ExprContext.class,0);
}
public Type_nameContext type_name() {
return getRuleContext(Type_nameContext.class,0);
}
public Conditional_expressionContext conditional_expression() {
return getRuleContext(Conditional_expressionContext.class,0);
}
public New_expressionContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_new_expression; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterNew_expression(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitNew_expression(this);
}
}
@RuleVersion(0)
public final New_expressionContext new_expression() throws RecognitionException {
New_expressionContext _localctx = new New_expressionContext(_ctx, getState());
enterRule(_localctx, 106, RULE_new_expression);
int _la;
try {
setState(516);
switch ( getInterpreter().adaptivePredict(_input,38,_ctx) ) {
case 1:
enterOuterAlt(_localctx, 1);
{
setState(495);
_la = _input.LA(1);
if (_la==15) {
{
setState(494); match(15);
}
}
setState(497); match(NEW);
setState(498); type_name();
setState(499); match(2);
setState(501);
_la = _input.LA(1);
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << 1) | (1L << 3) | (1L << 5) | (1L << 15) | (1L << 20) | (1L << 21) | (1L << 26) | (1L << 28) | (1L << 30) | (1L << 32) | (1L << 39) | (1L << 44) | (1L << 45) | (1L << 54))) != 0) || ((((_la - 83)) & ~0x3f) == 0 && ((1L << (_la - 83)) & ((1L << (NEW - 83)) | (1L << (ALPHA_NUMERIC - 83)) | (1L << (HEX_LITERAL - 83)) | (1L << (DECIMAL_LITERAL - 83)) | (1L << (OCTAL_LITERAL - 83)) | (1L << (FLOATING_POINT_LITERAL - 83)) | (1L << (CHAR - 83)) | (1L << (STRING - 83)))) != 0)) {
{
setState(500); conditional_expression();
}
}
setState(503); match(23);
}
break;
case 2:
enterOuterAlt(_localctx, 2);
{
setState(506);
_la = _input.LA(1);
if (_la==15) {
{
setState(505); match(15);
}
}
setState(508); match(NEW);
setState(509); type_name();
setState(510); match(30);
setState(512);
_la = _input.LA(1);
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << 1) | (1L << 3) | (1L << 5) | (1L << 15) | (1L << 20) | (1L << 21) | (1L << 26) | (1L << 28) | (1L << 30) | (1L << 32) | (1L << 39) | (1L << 44) | (1L << 45) | (1L << 54))) != 0) || ((((_la - 83)) & ~0x3f) == 0 && ((1L << (_la - 83)) & ((1L << (NEW - 83)) | (1L << (ALPHA_NUMERIC - 83)) | (1L << (HEX_LITERAL - 83)) | (1L << (DECIMAL_LITERAL - 83)) | (1L << (OCTAL_LITERAL - 83)) | (1L << (FLOATING_POINT_LITERAL - 83)) | (1L << (CHAR - 83)) | (1L << (STRING - 83)))) != 0)) {
{
setState(511); expr();
}
}
setState(514); match(12);
}
break;
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class Unary_op_and_cast_exprContext extends ParserRuleContext {
public Cast_expressionContext cast_expression() {
return getRuleContext(Cast_expressionContext.class,0);
}
public Unary_operatorContext unary_operator() {
return getRuleContext(Unary_operatorContext.class,0);
}
public Unary_op_and_cast_exprContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_unary_op_and_cast_expr; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterUnary_op_and_cast_expr(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitUnary_op_and_cast_expr(this);
}
}
@RuleVersion(0)
public final Unary_op_and_cast_exprContext unary_op_and_cast_expr() throws RecognitionException {
Unary_op_and_cast_exprContext _localctx = new Unary_op_and_cast_exprContext(_ctx, getState());
enterRule(_localctx, 108, RULE_unary_op_and_cast_expr);
try {
enterOuterAlt(_localctx, 1);
{
setState(518); unary_operator();
setState(519); cast_expression();
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class Sizeof_expressionContext extends ParserRuleContext {
public Sizeof_operand2Context sizeof_operand2() {
return getRuleContext(Sizeof_operand2Context.class,0);
}
public SizeofContext sizeof() {
return getRuleContext(SizeofContext.class,0);
}
public Sizeof_operandContext sizeof_operand() {
return getRuleContext(Sizeof_operandContext.class,0);
}
public Sizeof_expressionContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_sizeof_expression; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterSizeof_expression(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitSizeof_expression(this);
}
}
@RuleVersion(0)
public final Sizeof_expressionContext sizeof_expression() throws RecognitionException {
Sizeof_expressionContext _localctx = new Sizeof_expressionContext(_ctx, getState());
enterRule(_localctx, 110, RULE_sizeof_expression);
try {
setState(529);
switch ( getInterpreter().adaptivePredict(_input,39,_ctx) ) {
case 1:
enterOuterAlt(_localctx, 1);
{
setState(521); sizeof();
setState(522); match(30);
setState(523); sizeof_operand();
setState(524); match(12);
}
break;
case 2:
enterOuterAlt(_localctx, 2);
{
setState(526); sizeof();
setState(527); sizeof_operand2();
}
break;
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class SizeofContext extends ParserRuleContext {
public SizeofContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_sizeof; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterSizeof(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitSizeof(this);
}
}
@RuleVersion(0)
public final SizeofContext sizeof() throws RecognitionException {
SizeofContext _localctx = new SizeofContext(_ctx, getState());
enterRule(_localctx, 112, RULE_sizeof);
try {
enterOuterAlt(_localctx, 1);
{
setState(531); match(21);
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class Sizeof_operandContext extends ParserRuleContext {
public Type_nameContext type_name() {
return getRuleContext(Type_nameContext.class,0);
}
public List<? extends Ptr_operatorContext> ptr_operator() {
return getRuleContexts(Ptr_operatorContext.class);
}
public Ptr_operatorContext ptr_operator(int i) {
return getRuleContext(Ptr_operatorContext.class,i);
}
public Sizeof_operandContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_sizeof_operand; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterSizeof_operand(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitSizeof_operand(this);
}
}
@RuleVersion(0)
public final Sizeof_operandContext sizeof_operand() throws RecognitionException {
Sizeof_operandContext _localctx = new Sizeof_operandContext(_ctx, getState());
enterRule(_localctx, 114, RULE_sizeof_operand);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(533); type_name();
setState(537);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==1 || _la==3) {
{
{
setState(534); ptr_operator();
}
}
setState(539);
_errHandler.sync(this);
_la = _input.LA(1);
}
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class Sizeof_operand2Context extends ParserRuleContext {
public Unary_expressionContext unary_expression() {
return getRuleContext(Unary_expressionContext.class,0);
}
public Sizeof_operand2Context(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_sizeof_operand2; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterSizeof_operand2(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitSizeof_operand2(this);
}
}
@RuleVersion(0)
public final Sizeof_operand2Context sizeof_operand2() throws RecognitionException {
Sizeof_operand2Context _localctx = new Sizeof_operand2Context(_ctx, getState());
enterRule(_localctx, 116, RULE_sizeof_operand2);
try {
enterOuterAlt(_localctx, 1);
{
setState(540); unary_expression();
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class Inc_decContext extends ParserRuleContext {
public Inc_decContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_inc_dec; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterInc_dec(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitInc_dec(this);
}
}
@RuleVersion(0)
public final Inc_decContext inc_dec() throws RecognitionException {
Inc_decContext _localctx = new Inc_decContext(_ctx, getState());
enterRule(_localctx, 118, RULE_inc_dec);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(542);
_la = _input.LA(1);
if ( !(_la==5 || _la==39) ) {
_errHandler.recoverInline(this);
}
consume();
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class Postfix_expressionContext extends ParserRuleContext {
public Postfix_expressionContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_postfix_expression; }
public Postfix_expressionContext() { }
public void copyFrom(Postfix_expressionContext ctx) {
super.copyFrom(ctx);
}
}
public static class PrimaryOnlyContext extends Postfix_expressionContext {
public Primary_expressionContext primary_expression() {
return getRuleContext(Primary_expressionContext.class,0);
}
public PrimaryOnlyContext(Postfix_expressionContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterPrimaryOnly(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitPrimaryOnly(this);
}
}
public static class PtrMemberAccessContext extends Postfix_expressionContext {
public TerminalNode TEMPLATE() { return getToken(FunctionParser.TEMPLATE, 0); }
public IdentifierContext identifier() {
return getRuleContext(IdentifierContext.class,0);
}
public Postfix_expressionContext postfix_expression() {
return getRuleContext(Postfix_expressionContext.class,0);
}
public PtrMemberAccessContext(Postfix_expressionContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterPtrMemberAccess(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitPtrMemberAccess(this);
}
}
public static class ArrayIndexingContext extends Postfix_expressionContext {
public ExprContext expr() {
return getRuleContext(ExprContext.class,0);
}
public Postfix_expressionContext postfix_expression() {
return getRuleContext(Postfix_expressionContext.class,0);
}
public ArrayIndexingContext(Postfix_expressionContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterArrayIndexing(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitArrayIndexing(this);
}
}
public static class IncDecOpContext extends Postfix_expressionContext {
public Inc_decContext inc_dec() {
return getRuleContext(Inc_decContext.class,0);
}
public Postfix_expressionContext postfix_expression() {
return getRuleContext(Postfix_expressionContext.class,0);
}
public IncDecOpContext(Postfix_expressionContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterIncDecOp(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitIncDecOp(this);
}
}
public static class MemberAccessContext extends Postfix_expressionContext {
public TerminalNode TEMPLATE() { return getToken(FunctionParser.TEMPLATE, 0); }
public IdentifierContext identifier() {
return getRuleContext(IdentifierContext.class,0);
}
public Postfix_expressionContext postfix_expression() {
return getRuleContext(Postfix_expressionContext.class,0);
}
public MemberAccessContext(Postfix_expressionContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterMemberAccess(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitMemberAccess(this);
}
}
public static class FuncCallContext extends Postfix_expressionContext {
public Function_argument_listContext function_argument_list() {
return getRuleContext(Function_argument_listContext.class,0);
}
public Postfix_expressionContext postfix_expression() {
return getRuleContext(Postfix_expressionContext.class,0);
}
public FuncCallContext(Postfix_expressionContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterFuncCall(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitFuncCall(this);
}
}
@RuleVersion(0)
public final Postfix_expressionContext postfix_expression() throws RecognitionException {
return postfix_expression(0);
}
private Postfix_expressionContext postfix_expression(int _p) throws RecognitionException {
ParserRuleContext _parentctx = _ctx;
int _parentState = getState();
Postfix_expressionContext _localctx = new Postfix_expressionContext(_ctx, _parentState);
Postfix_expressionContext _prevctx = _localctx;
int _startState = 120;
enterRecursionRule(_localctx, 120, RULE_postfix_expression, _p);
int _la;
try {
int _alt;
enterOuterAlt(_localctx, 1);
{
{
_localctx = new PrimaryOnlyContext(_localctx);
_ctx = _localctx;
_prevctx = _localctx;
setState(545); primary_expression();
}
_ctx.stop = _input.LT(-1);
setState(573);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,44,_ctx);
while ( _alt!=2 && _alt!=-1 ) {
if ( _alt==1 ) {
if ( _parseListeners!=null ) triggerExitRuleEvent();
_prevctx = _localctx;
{
setState(571);
switch ( getInterpreter().adaptivePredict(_input,43,_ctx) ) {
case 1:
{
_localctx = new ArrayIndexingContext(new Postfix_expressionContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_postfix_expression);
setState(547);
if (!(precpred(_ctx, 6))) throw new FailedPredicateException(this, "precpred(_ctx, 6)");
setState(548); match(2);
setState(549); expr();
setState(550); match(23);
}
break;
case 2:
{
_localctx = new FuncCallContext(new Postfix_expressionContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_postfix_expression);
setState(552);
if (!(precpred(_ctx, 5))) throw new FailedPredicateException(this, "precpred(_ctx, 5)");
setState(553); match(30);
setState(554); function_argument_list();
setState(555); match(12);
}
break;
case 3:
{
_localctx = new MemberAccessContext(new Postfix_expressionContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_postfix_expression);
setState(557);
if (!(precpred(_ctx, 4))) throw new FailedPredicateException(this, "precpred(_ctx, 4)");
setState(558); match(43);
setState(560);
_la = _input.LA(1);
if (_la==TEMPLATE) {
{
setState(559); match(TEMPLATE);
}
}
{
setState(562); identifier();
}
}
break;
case 4:
{
_localctx = new PtrMemberAccessContext(new Postfix_expressionContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_postfix_expression);
setState(563);
if (!(precpred(_ctx, 3))) throw new FailedPredicateException(this, "precpred(_ctx, 3)");
setState(564); match(10);
setState(566);
_la = _input.LA(1);
if (_la==TEMPLATE) {
{
setState(565); match(TEMPLATE);
}
}
{
setState(568); identifier();
}
}
break;
case 5:
{
_localctx = new IncDecOpContext(new Postfix_expressionContext(_parentctx, _parentState));
pushNewRecursionContext(_localctx, _startState, RULE_postfix_expression);
setState(569);
if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)");
setState(570); inc_dec();
}
break;
}
}
}
setState(575);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,44,_ctx);
}
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
unrollRecursionContexts(_parentctx);
}
return _localctx;
}
public static class Function_argument_listContext extends ParserRuleContext {
public Function_argumentContext function_argument(int i) {
return getRuleContext(Function_argumentContext.class,i);
}
public List<? extends Function_argumentContext> function_argument() {
return getRuleContexts(Function_argumentContext.class);
}
public Function_argument_listContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_function_argument_list; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterFunction_argument_list(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitFunction_argument_list(this);
}
}
@RuleVersion(0)
public final Function_argument_listContext function_argument_list() throws RecognitionException {
Function_argument_listContext _localctx = new Function_argument_listContext(_ctx, getState());
enterRule(_localctx, 122, RULE_function_argument_list);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(584);
_la = _input.LA(1);
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << 1) | (1L << 3) | (1L << 5) | (1L << 15) | (1L << 20) | (1L << 21) | (1L << 26) | (1L << 28) | (1L << 30) | (1L << 32) | (1L << 39) | (1L << 44) | (1L << 45) | (1L << 54))) != 0) || ((((_la - 83)) & ~0x3f) == 0 && ((1L << (_la - 83)) & ((1L << (NEW - 83)) | (1L << (ALPHA_NUMERIC - 83)) | (1L << (HEX_LITERAL - 83)) | (1L << (DECIMAL_LITERAL - 83)) | (1L << (OCTAL_LITERAL - 83)) | (1L << (FLOATING_POINT_LITERAL - 83)) | (1L << (CHAR - 83)) | (1L << (STRING - 83)))) != 0)) {
{
setState(576); function_argument();
setState(581);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==27) {
{
{
setState(577); match(27);
setState(578); function_argument();
}
}
setState(583);
_errHandler.sync(this);
_la = _input.LA(1);
}
}
}
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class Function_argumentContext extends ParserRuleContext {
public Assign_exprContext assign_expr() {
return getRuleContext(Assign_exprContext.class,0);
}
public Function_argumentContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_function_argument; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterFunction_argument(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitFunction_argument(this);
}
}
@RuleVersion(0)
public final Function_argumentContext function_argument() throws RecognitionException {
Function_argumentContext _localctx = new Function_argumentContext(_ctx, getState());
enterRule(_localctx, 124, RULE_function_argument);
try {
enterOuterAlt(_localctx, 1);
{
setState(586); assign_expr();
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class Primary_expressionContext extends ParserRuleContext {
public ExprContext expr() {
return getRuleContext(ExprContext.class,0);
}
public ConstantContext constant() {
return getRuleContext(ConstantContext.class,0);
}
public IdentifierContext identifier() {
return getRuleContext(IdentifierContext.class,0);
}
public Primary_expressionContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_primary_expression; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterPrimary_expression(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitPrimary_expression(this);
}
}
@RuleVersion(0)
public final Primary_expressionContext primary_expression() throws RecognitionException {
Primary_expressionContext _localctx = new Primary_expressionContext(_ctx, getState());
enterRule(_localctx, 126, RULE_primary_expression);
try {
setState(594);
switch (_input.LA(1)) {
case 26:
case 32:
case 45:
case ALPHA_NUMERIC:
enterOuterAlt(_localctx, 1);
{
setState(588); identifier();
}
break;
case HEX_LITERAL:
case DECIMAL_LITERAL:
case OCTAL_LITERAL:
case FLOATING_POINT_LITERAL:
case CHAR:
case STRING:
enterOuterAlt(_localctx, 2);
{
setState(589); constant();
}
break;
case 30:
enterOuterAlt(_localctx, 3);
{
setState(590); match(30);
setState(591); expr();
setState(592); match(12);
}
break;
default:
throw new NoViableAltException(this);
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class Init_declaratorContext extends ParserRuleContext {
public Init_declaratorContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_init_declarator; }
public Init_declaratorContext() { }
public void copyFrom(Init_declaratorContext ctx) {
super.copyFrom(ctx);
}
}
public static class InitDeclWithCallContext extends Init_declaratorContext {
public ExprContext expr() {
return getRuleContext(ExprContext.class,0);
}
public DeclaratorContext declarator() {
return getRuleContext(DeclaratorContext.class,0);
}
public InitDeclWithCallContext(Init_declaratorContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterInitDeclWithCall(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitInitDeclWithCall(this);
}
}
public static class InitDeclSimpleContext extends Init_declaratorContext {
public DeclaratorContext declarator() {
return getRuleContext(DeclaratorContext.class,0);
}
public InitDeclSimpleContext(Init_declaratorContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterInitDeclSimple(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitInitDeclSimple(this);
}
}
public static class InitDeclWithAssignContext extends Init_declaratorContext {
public InitializerContext initializer() {
return getRuleContext(InitializerContext.class,0);
}
public DeclaratorContext declarator() {
return getRuleContext(DeclaratorContext.class,0);
}
public InitDeclWithAssignContext(Init_declaratorContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterInitDeclWithAssign(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitInitDeclWithAssign(this);
}
}
@RuleVersion(0)
public final Init_declaratorContext init_declarator() throws RecognitionException {
Init_declaratorContext _localctx = new Init_declaratorContext(_ctx, getState());
enterRule(_localctx, 128, RULE_init_declarator);
int _la;
try {
setState(608);
switch ( getInterpreter().adaptivePredict(_input,49,_ctx) ) {
case 1:
_localctx = new InitDeclWithCallContext(_localctx);
enterOuterAlt(_localctx, 1);
{
setState(596); declarator();
setState(597); match(30);
setState(599);
_la = _input.LA(1);
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << 1) | (1L << 3) | (1L << 5) | (1L << 15) | (1L << 20) | (1L << 21) | (1L << 26) | (1L << 28) | (1L << 30) | (1L << 32) | (1L << 39) | (1L << 44) | (1L << 45) | (1L << 54))) != 0) || ((((_la - 83)) & ~0x3f) == 0 && ((1L << (_la - 83)) & ((1L << (NEW - 83)) | (1L << (ALPHA_NUMERIC - 83)) | (1L << (HEX_LITERAL - 83)) | (1L << (DECIMAL_LITERAL - 83)) | (1L << (OCTAL_LITERAL - 83)) | (1L << (FLOATING_POINT_LITERAL - 83)) | (1L << (CHAR - 83)) | (1L << (STRING - 83)))) != 0)) {
{
setState(598); expr();
}
}
setState(601); match(12);
}
break;
case 2:
_localctx = new InitDeclWithAssignContext(_localctx);
enterOuterAlt(_localctx, 2);
{
setState(603); declarator();
setState(604); match(16);
setState(605); initializer();
}
break;
case 3:
_localctx = new InitDeclSimpleContext(_localctx);
enterOuterAlt(_localctx, 3);
{
setState(607); declarator();
}
break;
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class DeclaratorContext extends ParserRuleContext {
public PtrsContext ptrs() {
return getRuleContext(PtrsContext.class,0);
}
public Type_suffixContext type_suffix() {
return getRuleContext(Type_suffixContext.class,0);
}
public IdentifierContext identifier() {
return getRuleContext(IdentifierContext.class,0);
}
public DeclaratorContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_declarator; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterDeclarator(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitDeclarator(this);
}
}
@RuleVersion(0)
public final DeclaratorContext declarator() throws RecognitionException {
DeclaratorContext _localctx = new DeclaratorContext(_ctx, getState());
enterRule(_localctx, 130, RULE_declarator);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(611);
_la = _input.LA(1);
if (_la==1 || _la==3) {
{
setState(610); ptrs();
}
}
setState(613); identifier();
setState(615);
switch ( getInterpreter().adaptivePredict(_input,51,_ctx) ) {
case 1:
{
setState(614); type_suffix();
}
break;
}
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class Type_suffixContext extends ParserRuleContext {
public Conditional_expressionContext conditional_expression() {
return getRuleContext(Conditional_expressionContext.class,0);
}
public Param_type_listContext param_type_list() {
return getRuleContext(Param_type_listContext.class,0);
}
public Type_suffixContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_type_suffix; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterType_suffix(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitType_suffix(this);
}
}
@RuleVersion(0)
public final Type_suffixContext type_suffix() throws RecognitionException {
Type_suffixContext _localctx = new Type_suffixContext(_ctx, getState());
enterRule(_localctx, 132, RULE_type_suffix);
int _la;
try {
setState(623);
switch (_input.LA(1)) {
case 2:
enterOuterAlt(_localctx, 1);
{
{
setState(617); match(2);
setState(619);
_la = _input.LA(1);
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << 1) | (1L << 3) | (1L << 5) | (1L << 15) | (1L << 20) | (1L << 21) | (1L << 26) | (1L << 28) | (1L << 30) | (1L << 32) | (1L << 39) | (1L << 44) | (1L << 45) | (1L << 54))) != 0) || ((((_la - 83)) & ~0x3f) == 0 && ((1L << (_la - 83)) & ((1L << (NEW - 83)) | (1L << (ALPHA_NUMERIC - 83)) | (1L << (HEX_LITERAL - 83)) | (1L << (DECIMAL_LITERAL - 83)) | (1L << (OCTAL_LITERAL - 83)) | (1L << (FLOATING_POINT_LITERAL - 83)) | (1L << (CHAR - 83)) | (1L << (STRING - 83)))) != 0)) {
{
setState(618); conditional_expression();
}
}
setState(621); match(23);
}
}
break;
case 30:
enterOuterAlt(_localctx, 2);
{
setState(622); param_type_list();
}
break;
default:
throw new NoViableAltException(this);
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class Simple_declContext extends ParserRuleContext {
public TerminalNode TYPEDEF() { return getToken(FunctionParser.TYPEDEF, 0); }
public Var_declContext var_decl() {
return getRuleContext(Var_declContext.class,0);
}
public Template_decl_startContext template_decl_start() {
return getRuleContext(Template_decl_startContext.class,0);
}
public Simple_declContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_simple_decl; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterSimple_decl(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitSimple_decl(this);
}
}
@RuleVersion(0)
public final Simple_declContext simple_decl() throws RecognitionException {
Simple_declContext _localctx = new Simple_declContext(_ctx, getState());
enterRule(_localctx, 134, RULE_simple_decl);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
{
setState(626);
_la = _input.LA(1);
if (_la==TYPEDEF) {
{
setState(625); match(TYPEDEF);
}
}
setState(629);
_la = _input.LA(1);
if (_la==TEMPLATE) {
{
setState(628); template_decl_start();
}
}
}
setState(631); var_decl();
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class Var_declContext extends ParserRuleContext {
public Var_declContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_var_decl; }
public Var_declContext() { }
public void copyFrom(Var_declContext ctx) {
super.copyFrom(ctx);
}
}
public static class DeclByClassContext extends Var_declContext {
public Init_declarator_listContext init_declarator_list() {
return getRuleContext(Init_declarator_listContext.class,0);
}
public Class_defContext class_def() {
return getRuleContext(Class_defContext.class,0);
}
public DeclByClassContext(Var_declContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterDeclByClass(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitDeclByClass(this);
}
}
public static class DeclByTypeContext extends Var_declContext {
public Type_nameContext type_name() {
return getRuleContext(Type_nameContext.class,0);
}
public Init_declarator_listContext init_declarator_list() {
return getRuleContext(Init_declarator_listContext.class,0);
}
public DeclByTypeContext(Var_declContext ctx) { copyFrom(ctx); }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterDeclByType(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitDeclByType(this);
}
}
@RuleVersion(0)
public final Var_declContext var_decl() throws RecognitionException {
Var_declContext _localctx = new Var_declContext(_ctx, getState());
enterRule(_localctx, 136, RULE_var_decl);
try {
setState(640);
switch ( getInterpreter().adaptivePredict(_input,57,_ctx) ) {
case 1:
_localctx = new DeclByClassContext(_localctx);
enterOuterAlt(_localctx, 1);
{
setState(633); class_def();
setState(635);
switch ( getInterpreter().adaptivePredict(_input,56,_ctx) ) {
case 1:
{
setState(634); init_declarator_list();
}
break;
}
}
break;
case 2:
_localctx = new DeclByTypeContext(_localctx);
enterOuterAlt(_localctx, 2);
{
setState(637); type_name();
setState(638); init_declarator_list();
}
break;
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class Init_declarator_listContext extends ParserRuleContext {
public Init_declaratorContext init_declarator(int i) {
return getRuleContext(Init_declaratorContext.class,i);
}
public List<? extends Init_declaratorContext> init_declarator() {
return getRuleContexts(Init_declaratorContext.class);
}
public Init_declarator_listContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_init_declarator_list; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterInit_declarator_list(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitInit_declarator_list(this);
}
}
@RuleVersion(0)
public final Init_declarator_listContext init_declarator_list() throws RecognitionException {
Init_declarator_listContext _localctx = new Init_declarator_listContext(_ctx, getState());
enterRule(_localctx, 138, RULE_init_declarator_list);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(642); init_declarator();
setState(647);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==27) {
{
{
setState(643); match(27);
setState(644); init_declarator();
}
}
setState(649);
_errHandler.sync(this);
_la = _input.LA(1);
}
setState(650); match(46);
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class InitializerContext extends ParserRuleContext {
public Assign_exprContext assign_expr() {
return getRuleContext(Assign_exprContext.class,0);
}
public Initializer_listContext initializer_list() {
return getRuleContext(Initializer_listContext.class,0);
}
public InitializerContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_initializer; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterInitializer(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitInitializer(this);
}
}
@RuleVersion(0)
public final InitializerContext initializer() throws RecognitionException {
InitializerContext _localctx = new InitializerContext(_ctx, getState());
enterRule(_localctx, 140, RULE_initializer);
try {
setState(657);
switch (_input.LA(1)) {
case 1:
case 3:
case 5:
case 15:
case 20:
case 21:
case 26:
case 28:
case 30:
case 32:
case 39:
case 44:
case 45:
case 54:
case NEW:
case ALPHA_NUMERIC:
case HEX_LITERAL:
case DECIMAL_LITERAL:
case OCTAL_LITERAL:
case FLOATING_POINT_LITERAL:
case CHAR:
case STRING:
enterOuterAlt(_localctx, 1);
{
setState(652); assign_expr();
}
break;
case OPENING_CURLY:
enterOuterAlt(_localctx, 2);
{
setState(653); match(OPENING_CURLY);
setState(654); initializer_list();
setState(655); match(CLOSING_CURLY);
}
break;
default:
throw new NoViableAltException(this);
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class Initializer_listContext extends ParserRuleContext {
public List<? extends InitializerContext> initializer() {
return getRuleContexts(InitializerContext.class);
}
public InitializerContext initializer(int i) {
return getRuleContext(InitializerContext.class,i);
}
public Initializer_listContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_initializer_list; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterInitializer_list(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitInitializer_list(this);
}
}
@RuleVersion(0)
public final Initializer_listContext initializer_list() throws RecognitionException {
Initializer_listContext _localctx = new Initializer_listContext(_ctx, getState());
enterRule(_localctx, 142, RULE_initializer_list);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(659); initializer();
setState(664);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==27) {
{
{
setState(660); match(27);
setState(661); initializer();
}
}
setState(666);
_errHandler.sync(this);
_la = _input.LA(1);
}
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class Class_defContext extends ParserRuleContext {
public TerminalNode CLASS_KEY() { return getToken(FunctionParser.CLASS_KEY, 0); }
public TerminalNode OPENING_CURLY() { return getToken(FunctionParser.OPENING_CURLY, 0); }
public Base_classesContext base_classes() {
return getRuleContext(Base_classesContext.class,0);
}
public Class_nameContext class_name() {
return getRuleContext(Class_nameContext.class,0);
}
public Class_defContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_class_def; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterClass_def(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitClass_def(this);
}
}
@RuleVersion(0)
public final Class_defContext class_def() throws RecognitionException {
Class_defContext _localctx = new Class_defContext(_ctx, getState());
enterRule(_localctx, 144, RULE_class_def);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(667); match(CLASS_KEY);
setState(669);
_la = _input.LA(1);
if (((((_la - 26)) & ~0x3f) == 0 && ((1L << (_la - 26)) & ((1L << (26 - 26)) | (1L << (32 - 26)) | (1L << (45 - 26)) | (1L << (ALPHA_NUMERIC - 26)))) != 0)) {
{
setState(668); class_name();
}
}
setState(672);
_la = _input.LA(1);
if (_la==29) {
{
setState(671); base_classes();
}
}
setState(674); match(OPENING_CURLY);
skipToEndOfObject();
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class Class_nameContext extends ParserRuleContext {
public IdentifierContext identifier() {
return getRuleContext(IdentifierContext.class,0);
}
public Class_nameContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_class_name; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterClass_name(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitClass_name(this);
}
}
@RuleVersion(0)
public final Class_nameContext class_name() throws RecognitionException {
Class_nameContext _localctx = new Class_nameContext(_ctx, getState());
enterRule(_localctx, 146, RULE_class_name);
try {
enterOuterAlt(_localctx, 1);
{
setState(677); identifier();
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class Base_classesContext extends ParserRuleContext {
public List<? extends Base_classContext> base_class() {
return getRuleContexts(Base_classContext.class);
}
public Base_classContext base_class(int i) {
return getRuleContext(Base_classContext.class,i);
}
public Base_classesContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_base_classes; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterBase_classes(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitBase_classes(this);
}
}
@RuleVersion(0)
public final Base_classesContext base_classes() throws RecognitionException {
Base_classesContext _localctx = new Base_classesContext(_ctx, getState());
enterRule(_localctx, 148, RULE_base_classes);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(679); match(29);
setState(680); base_class();
setState(685);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==27) {
{
{
setState(681); match(27);
setState(682); base_class();
}
}
setState(687);
_errHandler.sync(this);
_la = _input.LA(1);
}
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class Base_classContext extends ParserRuleContext {
public Access_specifierContext access_specifier() {
return getRuleContext(Access_specifierContext.class,0);
}
public IdentifierContext identifier() {
return getRuleContext(IdentifierContext.class,0);
}
public TerminalNode VIRTUAL() { return getToken(FunctionParser.VIRTUAL, 0); }
public Base_classContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_base_class; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterBase_class(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitBase_class(this);
}
}
@RuleVersion(0)
public final Base_classContext base_class() throws RecognitionException {
Base_classContext _localctx = new Base_classContext(_ctx, getState());
enterRule(_localctx, 150, RULE_base_class);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(689);
_la = _input.LA(1);
if (_la==VIRTUAL) {
{
setState(688); match(VIRTUAL);
}
}
setState(692);
switch ( getInterpreter().adaptivePredict(_input,65,_ctx) ) {
case 1:
{
setState(691); access_specifier();
}
break;
}
setState(694); identifier();
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class Type_nameContext extends ParserRuleContext {
public List<? extends TerminalNode> CV_QUALIFIER() { return getTokens(FunctionParser.CV_QUALIFIER); }
public TerminalNode CLASS_KEY() { return getToken(FunctionParser.CLASS_KEY, 0); }
public Template_param_listContext template_param_list(int i) {
return getRuleContext(Template_param_listContext.class,i);
}
public TerminalNode SIGNED() { return getToken(FunctionParser.SIGNED, 0); }
public TerminalNode CV_QUALIFIER(int i) {
return getToken(FunctionParser.CV_QUALIFIER, i);
}
public Base_typeContext base_type(int i) {
return getRuleContext(Base_typeContext.class,i);
}
public List<? extends Base_typeContext> base_type() {
return getRuleContexts(Base_typeContext.class);
}
public TerminalNode UNSIGNED() { return getToken(FunctionParser.UNSIGNED, 0); }
public List<? extends Template_param_listContext> template_param_list() {
return getRuleContexts(Template_param_listContext.class);
}
public Type_nameContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_type_name; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterType_name(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitType_name(this);
}
}
@RuleVersion(0)
public final Type_nameContext type_name() throws RecognitionException {
Type_nameContext _localctx = new Type_nameContext(_ctx, getState());
enterRule(_localctx, 152, RULE_type_name);
int _la;
try {
setState(730);
switch ( getInterpreter().adaptivePredict(_input,72,_ctx) ) {
case 1:
enterOuterAlt(_localctx, 1);
{
{
setState(699);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==CV_QUALIFIER) {
{
{
setState(696); match(CV_QUALIFIER);
}
}
setState(701);
_errHandler.sync(this);
_la = _input.LA(1);
}
setState(703);
_la = _input.LA(1);
if (((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & ((1L << (UNSIGNED - 69)) | (1L << (SIGNED - 69)) | (1L << (CLASS_KEY - 69)))) != 0)) {
{
setState(702);
_la = _input.LA(1);
if ( !(((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & ((1L << (UNSIGNED - 69)) | (1L << (SIGNED - 69)) | (1L << (CLASS_KEY - 69)))) != 0)) ) {
_errHandler.recoverInline(this);
}
consume();
}
}
setState(705); base_type();
setState(710);
_la = _input.LA(1);
if (_la==4) {
{
setState(706); match(4);
setState(707); template_param_list();
setState(708); match(49);
}
}
setState(722);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==15) {
{
{
setState(712); match(15);
setState(713); base_type();
setState(718);
_la = _input.LA(1);
if (_la==4) {
{
setState(714); match(4);
setState(715); template_param_list();
setState(716); match(49);
}
}
}
}
setState(724);
_errHandler.sync(this);
_la = _input.LA(1);
}
}
setState(726);
_la = _input.LA(1);
if (_la==CV_QUALIFIER) {
{
setState(725); match(CV_QUALIFIER);
}
}
}
break;
case 2:
enterOuterAlt(_localctx, 2);
{
setState(728); match(UNSIGNED);
}
break;
case 3:
enterOuterAlt(_localctx, 3);
{
setState(729); match(SIGNED);
}
break;
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class Base_typeContext extends ParserRuleContext {
public List<? extends TerminalNode> ALPHA_NUMERIC() { return getTokens(FunctionParser.ALPHA_NUMERIC); }
public List<? extends TerminalNode> LONG() { return getTokens(FunctionParser.LONG); }
public TerminalNode VOID(int i) {
return getToken(FunctionParser.VOID, i);
}
public List<? extends TerminalNode> VOID() { return getTokens(FunctionParser.VOID); }
public TerminalNode LONG(int i) {
return getToken(FunctionParser.LONG, i);
}
public TerminalNode ALPHA_NUMERIC(int i) {
return getToken(FunctionParser.ALPHA_NUMERIC, i);
}
public Base_typeContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_base_type; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterBase_type(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitBase_type(this);
}
}
@RuleVersion(0)
public final Base_typeContext base_type() throws RecognitionException {
Base_typeContext _localctx = new Base_typeContext(_ctx, getState());
enterRule(_localctx, 154, RULE_base_type);
int _la;
try {
int _alt;
enterOuterAlt(_localctx, 1);
{
setState(733);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,73,_ctx);
do {
switch (_alt) {
case 1:
{
{
setState(732);
_la = _input.LA(1);
if ( !(((((_la - 68)) & ~0x3f) == 0 && ((1L << (_la - 68)) & ((1L << (VOID - 68)) | (1L << (LONG - 68)) | (1L << (ALPHA_NUMERIC - 68)))) != 0)) ) {
_errHandler.recoverInline(this);
}
consume();
}
}
break;
default:
throw new NoViableAltException(this);
}
setState(735);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,73,_ctx);
} while ( _alt!=2 && _alt!=-1 );
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class Param_decl_specifiersContext extends ParserRuleContext {
public Type_nameContext type_name() {
return getRuleContext(Type_nameContext.class,0);
}
public TerminalNode AUTO() { return getToken(FunctionParser.AUTO, 0); }
public TerminalNode REGISTER() { return getToken(FunctionParser.REGISTER, 0); }
public Param_decl_specifiersContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_param_decl_specifiers; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterParam_decl_specifiers(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitParam_decl_specifiers(this);
}
}
@RuleVersion(0)
public final Param_decl_specifiersContext param_decl_specifiers() throws RecognitionException {
Param_decl_specifiersContext _localctx = new Param_decl_specifiersContext(_ctx, getState());
enterRule(_localctx, 156, RULE_param_decl_specifiers);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(738);
_la = _input.LA(1);
if (_la==AUTO || _la==REGISTER) {
{
setState(737);
_la = _input.LA(1);
if ( !(_la==AUTO || _la==REGISTER) ) {
_errHandler.recoverInline(this);
}
consume();
}
}
setState(740); type_name();
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class Parameter_nameContext extends ParserRuleContext {
public IdentifierContext identifier() {
return getRuleContext(IdentifierContext.class,0);
}
public Parameter_nameContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_parameter_name; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterParameter_name(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitParameter_name(this);
}
}
@RuleVersion(0)
public final Parameter_nameContext parameter_name() throws RecognitionException {
Parameter_nameContext _localctx = new Parameter_nameContext(_ctx, getState());
enterRule(_localctx, 158, RULE_parameter_name);
try {
enterOuterAlt(_localctx, 1);
{
setState(742); identifier();
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class Param_type_listContext extends ParserRuleContext {
public List<? extends Param_typeContext> param_type() {
return getRuleContexts(Param_typeContext.class);
}
public TerminalNode VOID() { return getToken(FunctionParser.VOID, 0); }
public Param_typeContext param_type(int i) {
return getRuleContext(Param_typeContext.class,i);
}
public Param_type_listContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_param_type_list; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterParam_type_list(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitParam_type_list(this);
}
}
@RuleVersion(0)
public final Param_type_listContext param_type_list() throws RecognitionException {
Param_type_listContext _localctx = new Param_type_listContext(_ctx, getState());
enterRule(_localctx, 160, RULE_param_type_list);
int _la;
try {
setState(759);
switch ( getInterpreter().adaptivePredict(_input,77,_ctx) ) {
case 1:
enterOuterAlt(_localctx, 1);
{
setState(744); match(30);
setState(745); match(VOID);
setState(746); match(12);
}
break;
case 2:
enterOuterAlt(_localctx, 2);
{
setState(747); match(30);
setState(756);
_la = _input.LA(1);
if (((((_la - 68)) & ~0x3f) == 0 && ((1L << (_la - 68)) & ((1L << (VOID - 68)) | (1L << (UNSIGNED - 68)) | (1L << (SIGNED - 68)) | (1L << (LONG - 68)) | (1L << (CV_QUALIFIER - 68)) | (1L << (AUTO - 68)) | (1L << (REGISTER - 68)) | (1L << (CLASS_KEY - 68)) | (1L << (ALPHA_NUMERIC - 68)))) != 0)) {
{
setState(748); param_type();
setState(753);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==27) {
{
{
setState(749); match(27);
setState(750); param_type();
}
}
setState(755);
_errHandler.sync(this);
_la = _input.LA(1);
}
}
}
setState(758); match(12);
}
break;
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class Param_typeContext extends ParserRuleContext {
public Param_type_idContext param_type_id() {
return getRuleContext(Param_type_idContext.class,0);
}
public Param_decl_specifiersContext param_decl_specifiers() {
return getRuleContext(Param_decl_specifiersContext.class,0);
}
public Param_typeContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_param_type; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterParam_type(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitParam_type(this);
}
}
@RuleVersion(0)
public final Param_typeContext param_type() throws RecognitionException {
Param_typeContext _localctx = new Param_typeContext(_ctx, getState());
enterRule(_localctx, 162, RULE_param_type);
try {
enterOuterAlt(_localctx, 1);
{
setState(761); param_decl_specifiers();
setState(762); param_type_id();
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class Param_type_idContext extends ParserRuleContext {
public PtrsContext ptrs() {
return getRuleContext(PtrsContext.class,0);
}
public Param_type_idContext param_type_id() {
return getRuleContext(Param_type_idContext.class,0);
}
public Parameter_nameContext parameter_name() {
return getRuleContext(Parameter_nameContext.class,0);
}
public Type_suffixContext type_suffix() {
return getRuleContext(Type_suffixContext.class,0);
}
public Param_type_idContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_param_type_id; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterParam_type_id(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitParam_type_id(this);
}
}
@RuleVersion(0)
public final Param_type_idContext param_type_id() throws RecognitionException {
Param_type_idContext _localctx = new Param_type_idContext(_ctx, getState());
enterRule(_localctx, 164, RULE_param_type_id);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(765);
_la = _input.LA(1);
if (_la==1 || _la==3) {
{
setState(764); ptrs();
}
}
setState(774);
switch ( getInterpreter().adaptivePredict(_input,80,_ctx) ) {
case 1:
{
setState(767); match(30);
setState(768); param_type_id();
setState(769); match(12);
}
break;
case 2:
{
setState(772);
_la = _input.LA(1);
if (((((_la - 26)) & ~0x3f) == 0 && ((1L << (_la - 26)) & ((1L << (26 - 26)) | (1L << (32 - 26)) | (1L << (45 - 26)) | (1L << (ALPHA_NUMERIC - 26)))) != 0)) {
{
setState(771); parameter_name();
}
}
}
break;
}
setState(777);
_la = _input.LA(1);
if (_la==2 || _la==30) {
{
setState(776); type_suffix();
}
}
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class IdentifierContext extends ParserRuleContext {
public List<? extends TerminalNode> ALPHA_NUMERIC() { return getTokens(FunctionParser.ALPHA_NUMERIC); }
public Access_specifierContext access_specifier() {
return getRuleContext(Access_specifierContext.class,0);
}
public TerminalNode ALPHA_NUMERIC(int i) {
return getToken(FunctionParser.ALPHA_NUMERIC, i);
}
public IdentifierContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_identifier; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterIdentifier(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitIdentifier(this);
}
}
@RuleVersion(0)
public final IdentifierContext identifier() throws RecognitionException {
IdentifierContext _localctx = new IdentifierContext(_ctx, getState());
enterRule(_localctx, 166, RULE_identifier);
try {
int _alt;
setState(788);
switch (_input.LA(1)) {
case ALPHA_NUMERIC:
enterOuterAlt(_localctx, 1);
{
{
setState(779); match(ALPHA_NUMERIC);
setState(784);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,82,_ctx);
while ( _alt!=2 && _alt!=-1 ) {
if ( _alt==1 ) {
{
{
setState(780); match(15);
setState(781); match(ALPHA_NUMERIC);
}
}
}
setState(786);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,82,_ctx);
}
}
}
break;
case 26:
case 32:
case 45:
enterOuterAlt(_localctx, 2);
{
setState(787); access_specifier();
}
break;
default:
throw new NoViableAltException(this);
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class NumberContext extends ParserRuleContext {
public TerminalNode OCTAL_LITERAL() { return getToken(FunctionParser.OCTAL_LITERAL, 0); }
public TerminalNode DECIMAL_LITERAL() { return getToken(FunctionParser.DECIMAL_LITERAL, 0); }
public TerminalNode HEX_LITERAL() { return getToken(FunctionParser.HEX_LITERAL, 0); }
public NumberContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_number; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterNumber(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitNumber(this);
}
}
@RuleVersion(0)
public final NumberContext number() throws RecognitionException {
NumberContext _localctx = new NumberContext(_ctx, getState());
enterRule(_localctx, 168, RULE_number);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(790);
_la = _input.LA(1);
if ( !(((((_la - 91)) & ~0x3f) == 0 && ((1L << (_la - 91)) & ((1L << (HEX_LITERAL - 91)) | (1L << (DECIMAL_LITERAL - 91)) | (1L << (OCTAL_LITERAL - 91)))) != 0)) ) {
_errHandler.recoverInline(this);
}
consume();
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class PtrsContext extends ParserRuleContext {
public List<? extends Ptr_operatorContext> ptr_operator() {
return getRuleContexts(Ptr_operatorContext.class);
}
public Ptr_operatorContext ptr_operator(int i) {
return getRuleContext(Ptr_operatorContext.class,i);
}
public PtrsContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_ptrs; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).enterPtrs(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof FunctionListener ) ((FunctionListener)listener).exitPtrs(this);
}
}
@RuleVersion(0)
public final PtrsContext ptrs() throws RecognitionException {
PtrsContext _localctx = new PtrsContext(_ctx, getState());
enterRule(_localctx, 170, RULE_ptrs);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(796);
_errHandler.sync(this);
_la = _input.LA(1);
do {
{
{
setState(792); ptr_operator();
setState(794);
_la = _input.LA(1);
if (_la==17) {
{
setState(793); match(17);
}
}
}
}
setState(798);
_errHandler.sync(this);
_la = _input.LA(1);
} while ( _la==1 || _la==3 );
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public boolean sempred(RuleContext _localctx, int ruleIndex, int predIndex) {
switch (ruleIndex) {
case 60: return postfix_expression_sempred((Postfix_expressionContext)_localctx, predIndex);
}
return true;
}
private boolean postfix_expression_sempred(Postfix_expressionContext _localctx, int predIndex) {
switch (predIndex) {
case 0: return precpred(_ctx, 6);
case 1: return precpred(_ctx, 5);
case 2: return precpred(_ctx, 4);
case 3: return precpred(_ctx, 3);
case 4: return precpred(_ctx, 2);
}
return true;
}
public static final String _serializedATN =
"\3\uaf6f\u8320\u479d\ub75c\u4880\u1605\u191c\uab37\3f\u0323\4\2\t\2\4"+
"\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7\4\b\t\b\4\t\t\t\4\n\t\n\4\13\t"+
"\13\4\f\t\f\4\r\t\r\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22"+
"\4\23\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30\4\31\t\31"+
"\4\32\t\32\4\33\t\33\4\34\t\34\4\35\t\35\4\36\t\36\4\37\t\37\4 \t \4!"+
"\t!\4\"\t\"\4#\t#\4$\t$\4%\t%\4&\t&\4\'\t\'\4(\t(\4)\t)\4*\t*\4+\t+\4"+
",\t,\4-\t-\4.\t.\4/\t/\4\60\t\60\4\61\t\61\4\62\t\62\4\63\t\63\4\64\t"+
"\64\4\65\t\65\4\66\t\66\4\67\t\67\48\t8\49\t9\4:\t:\4;\t;\4<\t<\4=\t="+
"\4>\t>\4?\t?\4@\t@\4A\tA\4B\tB\4C\tC\4D\tD\4E\tE\4F\tF\4G\tG\4H\tH\4I"+
"\tI\4J\tJ\4K\tK\4L\tL\4M\tM\4N\tN\4O\tO\4P\tP\4Q\tQ\4R\tR\4S\tS\4T\tT"+
"\4U\tU\4V\tV\4W\tW\3\2\3\2\3\2\3\2\3\2\3\2\7\2\u00b5\n\2\f\2\16\2\u00b8"+
"\13\2\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\5\3\u00c2\n\3\3\4\3\4\3\5\3\5\3"+
"\6\3\6\3\7\3\7\3\b\3\b\3\t\3\t\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n"+
"\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\5\n\u00e5\n\n\3\n\5\n\u00e8"+
"\n\n\3\n\3\n\5\n\u00ec\n\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\5\n\u00f5\n\n\3"+
"\13\3\13\3\13\3\13\3\13\3\13\3\13\3\f\3\f\3\f\3\f\5\f\u0102\n\f\3\r\3"+
"\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\5\r\u010e\n\r\3\r\5\r\u0111\n\r\3\16"+
"\5\16\u0114\n\16\3\16\3\16\3\16\5\16\u0119\n\16\3\16\3\16\3\17\5\17\u011e"+
"\n\17\3\17\3\17\3\20\3\20\3\20\3\20\3\20\3\20\5\20\u0128\n\20\3\21\3\21"+
"\3\22\3\22\3\23\3\23\3\24\3\24\3\25\3\25\3\26\3\26\3\27\3\27\3\27\5\27"+
"\u0139\n\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27"+
"\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27"+
"\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27"+
"\5\27\u0163\n\27\3\30\3\30\3\31\3\31\3\32\3\32\3\32\3\32\3\32\3\33\3\33"+
"\3\33\3\33\3\33\3\33\3\33\3\33\3\33\6\33\u0177\n\33\r\33\16\33\u0178\3"+
"\34\3\34\3\35\3\35\3\36\3\36\3\37\3\37\3 \3 \3!\3!\3\"\3\"\3#\3#\3$\3"+
"$\3%\3%\3&\3&\3\'\3\'\3\'\5\'\u0194\n\'\3(\3(\3(\3(\5(\u019a\n(\3)\3)"+
"\3)\3)\3)\3)\3)\5)\u01a3\n)\3*\3*\3*\5*\u01a8\n*\3+\3+\3+\5+\u01ad\n+"+
"\3,\3,\3,\5,\u01b2\n,\3-\3-\3-\5-\u01b7\n-\3.\3.\3.\5.\u01bc\n.\3/\3/"+
"\3/\3/\5/\u01c2\n/\3\60\3\60\3\60\3\60\5\60\u01c8\n\60\3\61\3\61\3\61"+
"\5\61\u01cd\n\61\3\62\3\62\3\62\5\62\u01d2\n\62\3\63\3\63\3\63\5\63\u01d7"+
"\n\63\3\64\3\64\3\64\3\64\3\64\3\64\5\64\u01df\n\64\3\65\3\65\7\65\u01e3"+
"\n\65\f\65\16\65\u01e6\13\65\3\66\3\66\3\66\3\66\3\66\3\66\3\66\5\66\u01ef"+
"\n\66\3\67\5\67\u01f2\n\67\3\67\3\67\3\67\3\67\5\67\u01f8\n\67\3\67\3"+
"\67\3\67\5\67\u01fd\n\67\3\67\3\67\3\67\3\67\5\67\u0203\n\67\3\67\3\67"+
"\5\67\u0207\n\67\38\38\38\39\39\39\39\39\39\39\39\59\u0214\n9\3:\3:\3"+
";\3;\7;\u021a\n;\f;\16;\u021d\13;\3<\3<\3=\3=\3>\3>\3>\3>\3>\3>\3>\3>"+
"\3>\3>\3>\3>\3>\3>\3>\3>\5>\u0233\n>\3>\3>\3>\3>\5>\u0239\n>\3>\3>\3>"+
"\7>\u023e\n>\f>\16>\u0241\13>\3?\3?\3?\7?\u0246\n?\f?\16?\u0249\13?\5"+
"?\u024b\n?\3@\3@\3A\3A\3A\3A\3A\3A\5A\u0255\nA\3B\3B\3B\5B\u025a\nB\3"+
"B\3B\3B\3B\3B\3B\3B\5B\u0263\nB\3C\5C\u0266\nC\3C\3C\5C\u026a\nC\3D\3"+
"D\5D\u026e\nD\3D\3D\5D\u0272\nD\3E\5E\u0275\nE\3E\5E\u0278\nE\3E\3E\3"+
"F\3F\5F\u027e\nF\3F\3F\3F\5F\u0283\nF\3G\3G\3G\7G\u0288\nG\fG\16G\u028b"+
"\13G\3G\3G\3H\3H\3H\3H\3H\5H\u0294\nH\3I\3I\3I\7I\u0299\nI\fI\16I\u029c"+
"\13I\3J\3J\5J\u02a0\nJ\3J\5J\u02a3\nJ\3J\3J\3J\3K\3K\3L\3L\3L\3L\7L\u02ae"+
"\nL\fL\16L\u02b1\13L\3M\5M\u02b4\nM\3M\5M\u02b7\nM\3M\3M\3N\7N\u02bc\n"+
"N\fN\16N\u02bf\13N\3N\5N\u02c2\nN\3N\3N\3N\3N\3N\5N\u02c9\nN\3N\3N\3N"+
"\3N\3N\3N\5N\u02d1\nN\7N\u02d3\nN\fN\16N\u02d6\13N\3N\5N\u02d9\nN\3N\3"+
"N\5N\u02dd\nN\3O\6O\u02e0\nO\rO\16O\u02e1\3P\5P\u02e5\nP\3P\3P\3Q\3Q\3"+
"R\3R\3R\3R\3R\3R\3R\7R\u02f2\nR\fR\16R\u02f5\13R\5R\u02f7\nR\3R\5R\u02fa"+
"\nR\3S\3S\3S\3T\5T\u0300\nT\3T\3T\3T\3T\3T\5T\u0307\nT\5T\u0309\nT\3T"+
"\5T\u030c\nT\3U\3U\3U\7U\u0311\nU\fU\16U\u0314\13U\3U\5U\u0317\nU\3V\3"+
"V\3W\3W\5W\u031d\nW\6W\u031f\nW\rW\16W\u0320\3W\2\2\3zX\2\2\4\2\6\2\b"+
"\2\n\2\f\2\16\2\20\2\22\2\24\2\26\2\30\2\32\2\34\2\36\2 \2\"\2$\2&\2("+
"\2*\2,\2.\2\60\2\62\2\64\2\66\28\2:\2<\2>\2@\2B\2D\2F\2H\2J\2L\2N\2P\2"+
"R\2T\2V\2X\2Z\2\\\2^\2`\2b\2d\2f\2h\2j\2l\2n\2p\2r\2t\2v\2x\2z\2|\2~\2"+
"\u0080\2\u0082\2\u0084\2\u0086\2\u0088\2\u008a\2\u008c\2\u008e\2\u0090"+
"\2\u0092\2\u0094\2\u0096\2\u0098\2\u009a\2\u009c\2\u009e\2\u00a0\2\u00a2"+
"\2\u00a4\2\u00a6\2\u00a8\2\u00aa\2\u00ac\2\2\34\b\2\3\3\5\5\26\26\36\36"+
"..88\6\2\6\6\t\t\63\6399\3\2]b\5\2\17\20\'(KK\4\2\3\3\5\5\5\2\34\34\""+
"\"//\4\2,,UU\n\2\r\r\22\22\24\24\30\30\32\32!!$&\64\65\4\2\b\b\66\66\4"+
"\2\16\16 \7\2\4\4\16\16\31\31 XY\5\2\16\16 \60\60\6\2\6\6\16\16 \63"+
"\63\3\2XY\4\2\4\4\31\31\5\2\4\4\31\31\60\60\4\2\35\35\60\60\t\2\4\4\16"+
"\16\31\31\35\35 \60\60XY\4\2\n\n**\4\2\36\36..\5\2\5\5\13\13\67\67\4"+
"\2\7\7))\4\2GHVV\5\2FFIIWW\3\2QR\3\2]_\u0362\2\u00b6\3\2\2\2\4\u00c1\3"+
"\2\2\2\6\u00c3\3\2\2\2\b\u00c5\3\2\2\2\n\u00c7\3\2\2\2\f\u00c9\3\2\2\2"+
"\16\u00cb\3\2\2\2\20\u00cd\3\2\2\2\22\u00f4\3\2\2\2\24\u00f6\3\2\2\2\26"+
"\u0101\3\2\2\2\30\u0110\3\2\2\2\32\u0113\3\2\2\2\34\u011d\3\2\2\2\36\u0127"+
"\3\2\2\2 \u0129\3\2\2\2\"\u012b\3\2\2\2$\u012d\3\2\2\2&\u012f\3\2\2\2"+
"(\u0131\3\2\2\2*\u0133\3\2\2\2,\u0162\3\2\2\2.\u0164\3\2\2\2\60\u0166"+
"\3\2\2\2\62\u0168\3\2\2\2\64\u0176\3\2\2\2\66\u017a\3\2\2\28\u017c\3\2"+
"\2\2:\u017e\3\2\2\2<\u0180\3\2\2\2>\u0182\3\2\2\2@\u0184\3\2\2\2B\u0186"+
"\3\2\2\2D\u0188\3\2\2\2F\u018a\3\2\2\2H\u018c\3\2\2\2J\u018e\3\2\2\2L"+
"\u0190\3\2\2\2N\u0195\3\2\2\2P\u01a2\3\2\2\2R\u01a4\3\2\2\2T\u01a9\3\2"+
"\2\2V\u01ae\3\2\2\2X\u01b3\3\2\2\2Z\u01b8\3\2\2\2\\\u01bd\3\2\2\2^\u01c3"+
"\3\2\2\2`\u01c9\3\2\2\2b\u01ce\3\2\2\2d\u01d3\3\2\2\2f\u01de\3\2\2\2h"+
"\u01e0\3\2\2\2j\u01ee\3\2\2\2l\u0206\3\2\2\2n\u0208\3\2\2\2p\u0213\3\2"+
"\2\2r\u0215\3\2\2\2t\u0217\3\2\2\2v\u021e\3\2\2\2x\u0220\3\2\2\2z\u0222"+
"\3\2\2\2|\u024a\3\2\2\2~\u024c\3\2\2\2\u0080\u0254\3\2\2\2\u0082\u0262"+
"\3\2\2\2\u0084\u0265\3\2\2\2\u0086\u0271\3\2\2\2\u0088\u0274\3\2\2\2\u008a"+
"\u0282\3\2\2\2\u008c\u0284\3\2\2\2\u008e\u0293\3\2\2\2\u0090\u0295\3\2"+
"\2\2\u0092\u029d\3\2\2\2\u0094\u02a7\3\2\2\2\u0096\u02a9\3\2\2\2\u0098"+
"\u02b3\3\2\2\2\u009a\u02dc\3\2\2\2\u009c\u02df\3\2\2\2\u009e\u02e4\3\2"+
"\2\2\u00a0\u02e8\3\2\2\2\u00a2\u02f9\3\2\2\2\u00a4\u02fb\3\2\2\2\u00a6"+
"\u02ff\3\2\2\2\u00a8\u0316\3\2\2\2\u00aa\u0318\3\2\2\2\u00ac\u031e\3\2"+
"\2\2\u00ae\u00b5\5\6\4\2\u00af\u00b5\5\n\6\2\u00b0\u00b1\5\b\5\2\u00b1"+
"\u00b2\b\2\1\2\u00b2\u00b5\3\2\2\2\u00b3\u00b5\5\4\3\2\u00b4\u00ae\3\2"+
"\2\2\u00b4\u00af\3\2\2\2\u00b4\u00b0\3\2\2\2\u00b4\u00b3\3\2\2\2\u00b5"+
"\u00b8\3\2\2\2\u00b6\u00b4\3\2\2\2\u00b6\u00b7\3\2\2\2\u00b7\3\3\2\2\2"+
"\u00b8\u00b6\3\2\2\2\u00b9\u00c2\5\f\7\2\u00ba\u00c2\5\16\b\2\u00bb\u00c2"+
"\5\20\t\2\u00bc\u00c2\5\30\r\2\u00bd\u00c2\5\32\16\2\u00be\u00c2\5\u0088"+
"E\2\u00bf\u00c2\5\34\17\2\u00c0\u00c2\5J&\2\u00c1\u00b9\3\2\2\2\u00c1"+
"\u00ba\3\2\2\2\u00c1\u00bb\3\2\2\2\u00c1\u00bc\3\2\2\2\u00c1\u00bd\3\2"+
"\2\2\u00c1\u00be\3\2\2\2\u00c1\u00bf\3\2\2\2\u00c1\u00c0\3\2\2\2\u00c2"+
"\5\3\2\2\2\u00c3\u00c4\7Z\2\2\u00c4\7\3\2\2\2\u00c5\u00c6\7[\2\2\u00c6"+
"\t\3\2\2\2\u00c7\u00c8\7\\\2\2\u00c8\13\3\2\2\2\u00c9\u00ca\7X\2\2\u00ca"+
"\r\3\2\2\2\u00cb\u00cc\7Y\2\2\u00cc\17\3\2\2\2\u00cd\u00ce\5\22\n\2\u00ce"+
"\21\3\2\2\2\u00cf\u00f5\7L\2\2\u00d0\u00d1\7M\2\2\u00d1\u00d2\7 \2\2\u00d2"+
"\u00d3\5\u00a4S\2\u00d3\u00d4\7\16\2\2\u00d4\u00f5\3\2\2\2\u00d5\u00d6"+
"\7:\2\2\u00d6\u00d7\7 \2\2\u00d7\u00d8\5\36\20\2\u00d8\u00d9\7\16\2\2"+
"\u00d9\u00f5\3\2\2\2\u00da\u00f5\7;\2\2\u00db\u00dc\7A\2\2\u00dc\u00dd"+
"\7 \2\2\u00dd\u00de\5\36\20\2\u00de\u00df\7\16\2\2\u00df\u00f5\3\2\2\2"+
"\u00e0\u00e1\7<\2\2\u00e1\u00e4\7 \2\2\u00e2\u00e5\5\26\f\2\u00e3\u00e5"+
"\7\60\2\2\u00e4\u00e2\3\2\2\2\u00e4\u00e3\3\2\2\2\u00e5\u00e7\3\2\2\2"+
"\u00e6\u00e8\5\36\20\2\u00e7\u00e6\3\2\2\2\u00e7\u00e8\3\2\2\2\u00e8\u00e9"+
"\3\2\2\2\u00e9\u00eb\7\60\2\2\u00ea\u00ec\5L\'\2\u00eb\u00ea\3\2\2\2\u00eb"+
"\u00ec\3\2\2\2\u00ec\u00ed\3\2\2\2\u00ed\u00f5\7\16\2\2\u00ee\u00f5\7"+
"B\2\2\u00ef\u00f0\7=\2\2\u00f0\u00f1\7 \2\2\u00f1\u00f2\5\36\20\2\u00f2"+
"\u00f3\7\16\2\2\u00f3\u00f5\3\2\2\2\u00f4\u00cf\3\2\2\2\u00f4\u00d0\3"+
"\2\2\2\u00f4\u00d5\3\2\2\2\u00f4\u00da\3\2\2\2\u00f4\u00db\3\2\2\2\u00f4"+
"\u00e0\3\2\2\2\u00f4\u00ee\3\2\2\2\u00f4\u00ef\3\2\2\2\u00f5\23\3\2\2"+
"\2\u00f6\u00f7\7B\2\2\u00f7\u00f8\5\4\3\2\u00f8\u00f9\7=\2\2\u00f9\u00fa"+
"\7 \2\2\u00fa\u00fb\5L\'\2\u00fb\u00fc\7\16\2\2\u00fc\25\3\2\2\2\u00fd"+
"\u0102\5\u0088E\2\u00fe\u00ff\5L\'\2\u00ff\u0100\7\60\2\2\u0100\u0102"+
"\3\2\2\2\u0101\u00fd\3\2\2\2\u0101\u00fe\3\2\2\2\u0102\27\3\2\2\2\u0103"+
"\u0104\7>\2\2\u0104\u0111\7\60\2\2\u0105\u0106\7@\2\2\u0106\u0111\7\60"+
"\2\2\u0107\u0108\7C\2\2\u0108\u0109\5\u00a8U\2\u0109\u010a\7\60\2\2\u010a"+
"\u0111\3\2\2\2\u010b\u010d\7D\2\2\u010c\u010e\5L\'\2\u010d\u010c\3\2\2"+
"\2\u010d\u010e\3\2\2\2\u010e\u010f\3\2\2\2\u010f\u0111\7\60\2\2\u0110"+
"\u0103\3\2\2\2\u0110\u0105\3\2\2\2\u0110\u0107\3\2\2\2\u0110\u010b\3\2"+
"\2\2\u0111\31\3\2\2\2\u0112\u0114\7?\2\2\u0113\u0112\3\2\2\2\u0113\u0114"+
"\3\2\2\2\u0114\u0118\3\2\2\2\u0115\u0119\5\u00a8U\2\u0116\u0119\5\u00aa"+
"V\2\u0117\u0119\7a\2\2\u0118\u0115\3\2\2\2\u0118\u0116\3\2\2\2\u0118\u0117"+
"\3\2\2\2\u0119\u011a\3\2\2\2\u011a\u011b\7\37\2\2\u011b\33\3\2\2\2\u011c"+
"\u011e\5L\'\2\u011d\u011c\3\2\2\2\u011d\u011e\3\2\2\2\u011e\u011f\3\2"+
"\2\2\u011f\u0120\7\60\2\2\u0120\35\3\2\2\2\u0121\u0128\5L\'\2\u0122\u0123"+
"\5\u009aN\2\u0123\u0124\5\u0084C\2\u0124\u0125\7\22\2\2\u0125\u0126\5"+
"N(\2\u0126\u0128\3\2\2\2\u0127\u0121\3\2\2\2\u0127\u0122\3\2\2\2\u0128"+
"\37\3\2\2\2\u0129\u012a\t\2\2\2\u012a!\3\2\2\2\u012b\u012c\t\3\2\2\u012c"+
"#\3\2\2\2\u012d\u012e\t\4\2\2\u012e%\3\2\2\2\u012f\u0130\t\5\2\2\u0130"+
"\'\3\2\2\2\u0131\u0132\t\6\2\2\u0132)\3\2\2\2\u0133\u0134\t\7\2\2\u0134"+
"+\3\2\2\2\u0135\u0138\t\b\2\2\u0136\u0137\7\4\2\2\u0137\u0139\7\31\2\2"+
"\u0138\u0136\3\2\2\2\u0138\u0139\3\2\2\2\u0139\u0163\3\2\2\2\u013a\u0163"+
"\7.\2\2\u013b\u0163\7\36\2\2\u013c\u0163\7\5\2\2\u013d\u0163\7\67\2\2"+
"\u013e\u0163\7\13\2\2\u013f\u0163\7+\2\2\u0140\u0163\7\3\2\2\u0141\u0163"+
"\7\25\2\2\u0142\u0163\78\2\2\u0143\u0163\7\26\2\2\u0144\u0163\7\22\2\2"+
"\u0145\u0163\7\6\2\2\u0146\u0163\7\63\2\2\u0147\u0163\7%\2\2\u0148\u0163"+
"\7\32\2\2\u0149\u0163\7\r\2\2\u014a\u0163\7\65\2\2\u014b\u0163\7\64\2"+
"\2\u014c\u0163\7&\2\2\u014d\u0163\7!\2\2\u014e\u0163\7\24\2\2\u014f\u0163"+
"\7*\2\2\u0150\u0163\7\n\2\2\u0151\u0163\7$\2\2\u0152\u0163\7\30\2\2\u0153"+
"\u0163\7\66\2\2\u0154\u0163\7\b\2\2\u0155\u0163\7\t\2\2\u0156\u0163\7"+
"9\2\2\u0157\u0163\7\61\2\2\u0158\u0163\7\62\2\2\u0159\u0163\7)\2\2\u015a"+
"\u0163\7\7\2\2\u015b\u0163\7\35\2\2\u015c\u0163\7\33\2\2\u015d\u0163\7"+
"\f\2\2\u015e\u015f\7 \2\2\u015f\u0163\7\16\2\2\u0160\u0161\7\4\2\2\u0161"+
"\u0163\7\31\2\2\u0162\u0135\3\2\2\2\u0162\u013a\3\2\2\2\u0162\u013b\3"+
"\2\2\2\u0162\u013c\3\2\2\2\u0162\u013d\3\2\2\2\u0162\u013e\3\2\2\2\u0162"+
"\u013f\3\2\2\2\u0162\u0140\3\2\2\2\u0162\u0141\3\2\2\2\u0162\u0142\3\2"+
"\2\2\u0162\u0143\3\2\2\2\u0162\u0144\3\2\2\2\u0162\u0145\3\2\2\2\u0162"+
"\u0146\3\2\2\2\u0162\u0147\3\2\2\2\u0162\u0148\3\2\2\2\u0162\u0149\3\2"+
"\2\2\u0162\u014a\3\2\2\2\u0162\u014b\3\2\2\2\u0162\u014c\3\2\2\2\u0162"+
"\u014d\3\2\2\2\u0162\u014e\3\2\2\2\u0162\u014f\3\2\2\2\u0162\u0150\3\2"+
"\2\2\u0162\u0151\3\2\2\2\u0162\u0152\3\2\2\2\u0162\u0153\3\2\2\2\u0162"+
"\u0154\3\2\2\2\u0162\u0155\3\2\2\2\u0162\u0156\3\2\2\2\u0162\u0157\3\2"+
"\2\2\u0162\u0158\3\2\2\2\u0162\u0159\3\2\2\2\u0162\u015a\3\2\2\2\u0162"+
"\u015b\3\2\2\2\u0162\u015c\3\2\2\2\u0162\u015d\3\2\2\2\u0162\u015e\3\2"+
"\2\2\u0162\u0160\3\2\2\2\u0163-\3\2\2\2\u0164\u0165\t\t\2\2\u0165/\3\2"+
"\2\2\u0166\u0167\t\n\2\2\u0167\61\3\2\2\2\u0168\u0169\7T\2\2\u0169\u016a"+
"\7\6\2\2\u016a\u016b\5\64\33\2\u016b\u016c\7\63\2\2\u016c\63\3\2\2\2\u016d"+
"\u016e\7\6\2\2\u016e\u016f\5\64\33\2\u016f\u0170\7\63\2\2\u0170\u0177"+
"\3\2\2\2\u0171\u0172\7 \2\2\u0172\u0173\5\64\33\2\u0173\u0174\7\16\2\2"+
"\u0174\u0177\3\2\2\2\u0175\u0177\5<\37\2\u0176\u016d\3\2\2\2\u0176\u0171"+
"\3\2\2\2\u0176\u0175\3\2\2\2\u0177\u0178\3\2\2\2\u0178\u0176\3\2\2\2\u0178"+
"\u0179\3\2\2\2\u0179\65\3\2\2\2\u017a\u017b\n\13\2\2\u017b\67\3\2\2\2"+
"\u017c\u017d\n\f\2\2\u017d9\3\2\2\2\u017e\u017f\n\r\2\2\u017f;\3\2\2\2"+
"\u0180\u0181\n\16\2\2\u0181=\3\2\2\2\u0182\u0183\n\17\2\2\u0183?\3\2\2"+
"\2\u0184\u0185\n\20\2\2\u0185A\3\2\2\2\u0186\u0187\n\21\2\2\u0187C\3\2"+
"\2\2\u0188\u0189\n\22\2\2\u0189E\3\2\2\2\u018a\u018b\n\23\2\2\u018bG\3"+
"\2\2\2\u018c\u018d\n\f\2\2\u018dI\3\2\2\2\u018e\u018f\13\2\2\2\u018fK"+
"\3\2\2\2\u0190\u0193\5N(\2\u0191\u0192\7\35\2\2\u0192\u0194\5L\'\2\u0193"+
"\u0191\3\2\2\2\u0193\u0194\3\2\2\2\u0194M\3\2\2\2\u0195\u0199\5P)\2\u0196"+
"\u0197\5.\30\2\u0197\u0198\5N(\2\u0198\u019a\3\2\2\2\u0199\u0196\3\2\2"+
"\2\u0199\u019a\3\2\2\2\u019aO\3\2\2\2\u019b\u01a3\5R*\2\u019c\u019d\5"+
"R*\2\u019d\u019e\7#\2\2\u019e\u019f\5L\'\2\u019f\u01a0\7\37\2\2\u01a0"+
"\u01a1\5P)\2\u01a1\u01a3\3\2\2\2\u01a2\u019b\3\2\2\2\u01a2\u019c\3\2\2"+
"\2\u01a3Q\3\2\2\2\u01a4\u01a7\5T+\2\u01a5\u01a6\7\62\2\2\u01a6\u01a8\5"+
"R*\2\u01a7\u01a5\3\2\2\2\u01a7\u01a8\3\2\2\2\u01a8S\3\2\2\2\u01a9\u01ac"+
"\5V,\2\u01aa\u01ab\7\61\2\2\u01ab\u01ad\5T+\2\u01ac\u01aa\3\2\2\2\u01ac"+
"\u01ad\3\2\2\2\u01adU\3\2\2\2\u01ae\u01b1\5X-\2\u01af\u01b0\7\25\2\2\u01b0"+
"\u01b2\5V,\2\u01b1\u01af\3\2\2\2\u01b1\u01b2\3\2\2\2\u01b2W\3\2\2\2\u01b3"+
"\u01b6\5Z.\2\u01b4\u01b5\7+\2\2\u01b5\u01b7\5X-\2\u01b6\u01b4\3\2\2\2"+
"\u01b6\u01b7\3\2\2\2\u01b7Y\3\2\2\2\u01b8\u01bb\5\\/\2\u01b9\u01ba\7\3"+
"\2\2\u01ba\u01bc\5Z.\2\u01bb\u01b9\3\2\2\2\u01bb\u01bc\3\2\2\2\u01bc["+
"\3\2\2\2\u01bd\u01c1\5^\60\2\u01be\u01bf\5\60\31\2\u01bf\u01c0\5\\/\2"+
"\u01c0\u01c2\3\2\2\2\u01c1\u01be\3\2\2\2\u01c1\u01c2\3\2\2\2\u01c2]\3"+
"\2\2\2\u01c3\u01c7\5`\61\2\u01c4\u01c5\5\"\22\2\u01c5\u01c6\5^\60\2\u01c6"+
"\u01c8\3\2\2\2\u01c7\u01c4\3\2\2\2\u01c7\u01c8\3\2\2\2\u01c8_\3\2\2\2"+
"\u01c9\u01cc\5b\62\2\u01ca\u01cb\t\24\2\2\u01cb\u01cd\5`\61\2\u01cc\u01ca"+
"\3\2\2\2\u01cc\u01cd\3\2\2\2\u01cda\3\2\2\2\u01ce\u01d1\5d\63\2\u01cf"+
"\u01d0\t\25\2\2\u01d0\u01d2\5b\62\2\u01d1\u01cf\3\2\2\2\u01d1\u01d2\3"+
"\2\2\2\u01d2c\3\2\2\2\u01d3\u01d6\5f\64\2\u01d4\u01d5\t\26\2\2\u01d5\u01d7"+
"\5d\63\2\u01d6\u01d4\3\2\2\2\u01d6\u01d7\3\2\2\2\u01d7e\3\2\2\2\u01d8"+
"\u01d9\7 \2\2\u01d9\u01da\5h\65\2\u01da\u01db\7\16\2\2\u01db\u01dc\5f"+
"\64\2\u01dc\u01df\3\2\2\2\u01dd\u01df\5j\66\2\u01de\u01d8\3\2\2\2\u01de"+
"\u01dd\3\2\2\2\u01dfg\3\2\2\2\u01e0\u01e4\5\u009aN\2\u01e1\u01e3\5(\25"+
"\2\u01e2\u01e1\3\2\2\2\u01e3\u01e6\3\2\2\2\u01e4\u01e2\3\2\2\2\u01e4\u01e5"+
"\3\2\2\2\u01e5i\3\2\2\2\u01e6\u01e4\3\2\2\2\u01e7\u01e8\5x=\2\u01e8\u01e9"+
"\5f\64\2\u01e9\u01ef\3\2\2\2\u01ea\u01ef\5n8\2\u01eb\u01ef\5p9\2\u01ec"+
"\u01ef\5l\67\2\u01ed\u01ef\5z>\2\u01ee\u01e7\3\2\2\2\u01ee\u01ea\3\2\2"+
"\2\u01ee\u01eb\3\2\2\2\u01ee\u01ec\3\2\2\2\u01ee\u01ed\3\2\2\2\u01efk"+
"\3\2\2\2\u01f0\u01f2\7\21\2\2\u01f1\u01f0\3\2\2\2\u01f1\u01f2\3\2\2\2"+
"\u01f2\u01f3\3\2\2\2\u01f3\u01f4\7U\2\2\u01f4\u01f5\5\u009aN\2\u01f5\u01f7"+
"\7\4\2\2\u01f6\u01f8\5P)\2\u01f7\u01f6\3\2\2\2\u01f7\u01f8\3\2\2\2\u01f8"+
"\u01f9\3\2\2\2\u01f9\u01fa\7\31\2\2\u01fa\u0207\3\2\2\2\u01fb\u01fd\7"+
"\21\2\2\u01fc\u01fb\3\2\2\2\u01fc\u01fd\3\2\2\2\u01fd\u01fe\3\2\2\2\u01fe"+
"\u01ff\7U\2\2\u01ff\u0200\5\u009aN\2\u0200\u0202\7 \2\2\u0201\u0203\5"+
"L\'\2\u0202\u0201\3\2\2\2\u0202\u0203\3\2\2\2\u0203\u0204\3\2\2\2\u0204"+
"\u0205\7\16\2\2\u0205\u0207\3\2\2\2\u0206\u01f1\3\2\2\2\u0206\u01fc\3"+
"\2\2\2\u0207m\3\2\2\2\u0208\u0209\5 \21\2\u0209\u020a\5f\64\2\u020ao\3"+
"\2\2\2\u020b\u020c\5r:\2\u020c\u020d\7 \2\2\u020d\u020e\5t;\2\u020e\u020f"+
"\7\16\2\2\u020f\u0214\3\2\2\2\u0210\u0211\5r:\2\u0211\u0212\5v<\2\u0212"+
"\u0214\3\2\2\2\u0213\u020b\3\2\2\2\u0213\u0210\3\2\2\2\u0214q\3\2\2\2"+
"\u0215\u0216\7\27\2\2\u0216s\3\2\2\2\u0217\u021b\5\u009aN\2\u0218\u021a"+
"\5(\25\2\u0219\u0218\3\2\2\2\u021a\u021d\3\2\2\2\u021b\u0219\3\2\2\2\u021b"+
"\u021c\3\2\2\2\u021cu\3\2\2\2\u021d\u021b\3\2\2\2\u021e\u021f\5j\66\2"+
"\u021fw\3\2\2\2\u0220\u0221\t\27\2\2\u0221y\3\2\2\2\u0222\u0223\b>\1\2"+
"\u0223\u0224\5\u0080A\2\u0224\u023f\3\2\2\2\u0225\u0226\f\b\2\2\u0226"+
"\u0227\7\4\2\2\u0227\u0228\5L\'\2\u0228\u0229\7\31\2\2\u0229\u023e\3\2"+
"\2\2\u022a\u022b\f\7\2\2\u022b\u022c\7 \2\2\u022c\u022d\5|?\2\u022d\u022e"+
"\7\16\2\2\u022e\u023e\3\2\2\2\u022f\u0230\f\6\2\2\u0230\u0232\7-\2\2\u0231"+
"\u0233\7T\2\2\u0232\u0231\3\2\2\2\u0232\u0233\3\2\2\2\u0233\u0234\3\2"+
"\2\2\u0234\u023e\5\u00a8U\2\u0235\u0236\f\5\2\2\u0236\u0238\7\f\2\2\u0237"+
"\u0239\7T\2\2\u0238\u0237\3\2\2\2\u0238\u0239\3\2\2\2\u0239\u023a\3\2"+
"\2\2\u023a\u023e\5\u00a8U\2\u023b\u023c\f\4\2\2\u023c\u023e\5x=\2\u023d"+
"\u0225\3\2\2\2\u023d\u022a\3\2\2\2\u023d\u022f\3\2\2\2\u023d\u0235\3\2"+
"\2\2\u023d\u023b\3\2\2\2\u023e\u0241\3\2\2\2\u023f\u023d\3\2\2\2\u023f"+
"\u0240\3\2\2\2\u0240{\3\2\2\2\u0241\u023f\3\2\2\2\u0242\u0247\5~@\2\u0243"+
"\u0244\7\35\2\2\u0244\u0246\5~@\2\u0245\u0243\3\2\2\2\u0246\u0249\3\2"+
"\2\2\u0247\u0245\3\2\2\2\u0247\u0248\3\2\2\2\u0248\u024b\3\2\2\2\u0249"+
"\u0247\3\2\2\2\u024a\u0242\3\2\2\2\u024a\u024b\3\2\2\2\u024b}\3\2\2\2"+
"\u024c\u024d\5N(\2\u024d\177\3\2\2\2\u024e\u0255\5\u00a8U\2\u024f\u0255"+
"\5$\23\2\u0250\u0251\7 \2\2\u0251\u0252\5L\'\2\u0252\u0253\7\16\2\2\u0253"+
"\u0255\3\2\2\2\u0254\u024e\3\2\2\2\u0254\u024f\3\2\2\2\u0254\u0250\3\2"+
"\2\2\u0255\u0081\3\2\2\2\u0256\u0257\5\u0084C\2\u0257\u0259\7 \2\2\u0258"+
"\u025a\5L\'\2\u0259\u0258\3\2\2\2\u0259\u025a\3\2\2\2\u025a\u025b\3\2"+
"\2\2\u025b\u025c\7\16\2\2\u025c\u0263\3\2\2\2\u025d\u025e\5\u0084C\2\u025e"+
"\u025f\7\22\2\2\u025f\u0260\5\u008eH\2\u0260\u0263\3\2\2\2\u0261\u0263"+
"\5\u0084C\2\u0262\u0256\3\2\2\2\u0262\u025d\3\2\2\2\u0262\u0261\3\2\2"+
"\2\u0263\u0083\3\2\2\2\u0264\u0266\5\u00acW\2\u0265\u0264\3\2\2\2\u0265"+
"\u0266\3\2\2\2\u0266\u0267\3\2\2\2\u0267\u0269\5\u00a8U\2\u0268\u026a"+
"\5\u0086D\2\u0269\u0268\3\2\2\2\u0269\u026a\3\2\2\2\u026a\u0085\3\2\2"+
"\2\u026b\u026d\7\4\2\2\u026c\u026e\5P)\2\u026d\u026c\3\2\2\2\u026d\u026e"+
"\3\2\2\2\u026e\u026f\3\2\2\2\u026f\u0272\7\31\2\2\u0270\u0272\5\u00a2"+
"R\2\u0271\u026b\3\2\2\2\u0271\u0270\3\2\2\2\u0272\u0087\3\2\2\2\u0273"+
"\u0275\7E\2\2\u0274\u0273\3\2\2\2\u0274\u0275\3\2\2\2\u0275\u0277\3\2"+
"\2\2\u0276\u0278\5\62\32\2\u0277\u0276\3\2\2\2\u0277\u0278\3\2\2\2\u0278"+
"\u0279\3\2\2\2\u0279\u027a\5\u008aF\2\u027a\u0089\3\2\2\2\u027b\u027d"+
"\5\u0092J\2\u027c\u027e\5\u008cG\2\u027d\u027c\3\2\2\2\u027d\u027e\3\2"+
"\2\2\u027e\u0283\3\2\2\2\u027f\u0280\5\u009aN\2\u0280\u0281\5\u008cG\2"+
"\u0281\u0283\3\2\2\2\u0282\u027b\3\2\2\2\u0282\u027f\3\2\2\2\u0283\u008b"+
"\3\2\2\2\u0284\u0289\5\u0082B\2\u0285\u0286\7\35\2\2\u0286\u0288\5\u0082"+
"B\2\u0287\u0285\3\2\2\2\u0288\u028b\3\2\2\2\u0289\u0287\3\2\2\2\u0289"+
"\u028a\3\2\2\2\u028a\u028c\3\2\2\2\u028b\u0289\3\2\2\2\u028c\u028d\7\60"+
"\2\2\u028d\u008d\3\2\2\2\u028e\u0294\5N(\2\u028f\u0290\7X\2\2\u0290\u0291"+
"\5\u0090I\2\u0291\u0292\7Y\2\2\u0292\u0294\3\2\2\2\u0293\u028e\3\2\2\2"+
"\u0293\u028f\3\2\2\2\u0294\u008f\3\2\2\2\u0295\u029a\5\u008eH\2\u0296"+
"\u0297\7\35\2\2\u0297\u0299\5\u008eH\2\u0298\u0296\3\2\2\2\u0299\u029c"+
"\3\2\2\2\u029a\u0298\3\2\2\2\u029a\u029b\3\2\2\2\u029b\u0091\3\2\2\2\u029c"+
"\u029a\3\2\2\2\u029d\u029f\7V\2\2\u029e\u02a0\5\u0094K\2\u029f\u029e\3"+
"\2\2\2\u029f\u02a0\3\2\2\2\u02a0\u02a2\3\2\2\2\u02a1\u02a3\5\u0096L\2"+
"\u02a2\u02a1\3\2\2\2\u02a2\u02a3\3\2\2\2\u02a3\u02a4\3\2\2\2\u02a4\u02a5"+
"\7X\2\2\u02a5\u02a6\bJ\1\2\u02a6\u0093\3\2\2\2\u02a7\u02a8\5\u00a8U\2"+
"\u02a8\u0095\3\2\2\2\u02a9\u02aa\7\37\2\2\u02aa\u02af\5\u0098M\2\u02ab"+
"\u02ac\7\35\2\2\u02ac\u02ae\5\u0098M\2\u02ad\u02ab\3\2\2\2\u02ae\u02b1"+
"\3\2\2\2\u02af\u02ad\3\2\2\2\u02af\u02b0\3\2\2\2\u02b0\u0097\3\2\2\2\u02b1"+
"\u02af\3\2\2\2\u02b2\u02b4\7K\2\2\u02b3\u02b2\3\2\2\2\u02b3\u02b4\3\2"+
"\2\2\u02b4\u02b6\3\2\2\2\u02b5\u02b7\5*\26\2\u02b6\u02b5\3\2\2\2\u02b6"+
"\u02b7\3\2\2\2\u02b7\u02b8\3\2\2\2\u02b8\u02b9\5\u00a8U\2\u02b9\u0099"+
"\3\2\2\2\u02ba\u02bc\7J\2\2\u02bb\u02ba\3\2\2\2\u02bc\u02bf\3\2\2\2\u02bd"+
"\u02bb\3\2\2\2\u02bd\u02be\3\2\2\2\u02be\u02c1\3\2\2\2\u02bf\u02bd\3\2"+
"\2\2\u02c0\u02c2\t\30\2\2\u02c1\u02c0\3\2\2\2\u02c1\u02c2\3\2\2\2\u02c2"+
"\u02c3\3\2\2\2\u02c3\u02c8\5\u009cO\2\u02c4\u02c5\7\6\2\2\u02c5\u02c6"+
"\5\64\33\2\u02c6\u02c7\7\63\2\2\u02c7\u02c9\3\2\2\2\u02c8\u02c4\3\2\2"+
"\2\u02c8\u02c9\3\2\2\2\u02c9\u02d4\3\2\2\2\u02ca\u02cb\7\21\2\2\u02cb"+
"\u02d0\5\u009cO\2\u02cc\u02cd\7\6\2\2\u02cd\u02ce\5\64\33\2\u02ce\u02cf"+
"\7\63\2\2\u02cf\u02d1\3\2\2\2\u02d0\u02cc\3\2\2\2\u02d0\u02d1\3\2\2\2"+
"\u02d1\u02d3\3\2\2\2\u02d2\u02ca\3\2\2\2\u02d3\u02d6\3\2\2\2\u02d4\u02d2"+
"\3\2\2\2\u02d4\u02d5\3\2\2\2\u02d5\u02d8\3\2\2\2\u02d6\u02d4\3\2\2\2\u02d7"+
"\u02d9\7J\2\2\u02d8\u02d7\3\2\2\2\u02d8\u02d9\3\2\2\2\u02d9\u02dd\3\2"+
"\2\2\u02da\u02dd\7G\2\2\u02db\u02dd\7H\2\2\u02dc\u02bd\3\2\2\2\u02dc\u02da"+
"\3\2\2\2\u02dc\u02db\3\2\2\2\u02dd\u009b\3\2\2\2\u02de\u02e0\t\31\2\2"+
"\u02df\u02de\3\2\2\2\u02e0\u02e1\3\2\2\2\u02e1\u02df\3\2\2\2\u02e1\u02e2"+
"\3\2\2\2\u02e2\u009d\3\2\2\2\u02e3\u02e5\t\32\2\2\u02e4\u02e3\3\2\2\2"+
"\u02e4\u02e5\3\2\2\2\u02e5\u02e6\3\2\2\2\u02e6\u02e7\5\u009aN\2\u02e7"+
"\u009f\3\2\2\2\u02e8\u02e9\5\u00a8U\2\u02e9\u00a1\3\2\2\2\u02ea\u02eb"+
"\7 \2\2\u02eb\u02ec\7F\2\2\u02ec\u02fa\7\16\2\2\u02ed\u02f6\7 \2\2\u02ee"+
"\u02f3\5\u00a4S\2\u02ef\u02f0\7\35\2\2\u02f0\u02f2\5\u00a4S\2\u02f1\u02ef"+
"\3\2\2\2\u02f2\u02f5\3\2\2\2\u02f3\u02f1\3\2\2\2\u02f3\u02f4\3\2\2\2\u02f4"+
"\u02f7\3\2\2\2\u02f5\u02f3\3\2\2\2\u02f6\u02ee\3\2\2\2\u02f6\u02f7\3\2"+
"\2\2\u02f7\u02f8\3\2\2\2\u02f8\u02fa\7\16\2\2\u02f9\u02ea\3\2\2\2\u02f9"+
"\u02ed\3\2\2\2\u02fa\u00a3\3\2\2\2\u02fb\u02fc\5\u009eP\2\u02fc\u02fd"+
"\5\u00a6T\2\u02fd\u00a5\3\2\2\2\u02fe\u0300\5\u00acW\2\u02ff\u02fe\3\2"+
"\2\2\u02ff\u0300\3\2\2\2\u0300\u0308\3\2\2\2\u0301\u0302\7 \2\2\u0302"+
"\u0303\5\u00a6T\2\u0303\u0304\7\16\2\2\u0304\u0309\3\2\2\2\u0305\u0307"+
"\5\u00a0Q\2\u0306\u0305\3\2\2\2\u0306\u0307\3\2\2\2\u0307\u0309\3\2\2"+
"\2\u0308\u0301\3\2\2\2\u0308\u0306\3\2\2\2\u0309\u030b\3\2\2\2\u030a\u030c"+
"\5\u0086D\2\u030b\u030a\3\2\2\2\u030b\u030c\3\2\2\2\u030c\u00a7\3\2\2"+
"\2\u030d\u0312\7W\2\2\u030e\u030f\7\21\2\2\u030f\u0311\7W\2\2\u0310\u030e"+
"\3\2\2\2\u0311\u0314\3\2\2\2\u0312\u0310\3\2\2\2\u0312\u0313\3\2\2\2\u0313"+
"\u0317\3\2\2\2\u0314\u0312\3\2\2\2\u0315\u0317\5*\26\2\u0316\u030d\3\2"+
"\2\2\u0316\u0315\3\2\2\2\u0317\u00a9\3\2\2\2\u0318\u0319\t\33\2\2\u0319"+
"\u00ab\3\2\2\2\u031a\u031c\5(\25\2\u031b\u031d\7\23\2\2\u031c\u031b\3"+
"\2\2\2\u031c\u031d\3\2\2\2\u031d\u031f\3\2\2\2\u031e\u031a\3\2\2\2\u031f"+
"\u0320\3\2\2\2\u0320\u031e\3\2\2\2\u0320\u0321\3\2\2\2\u0321\u00ad\3\2"+
"\2\2X\u00b4\u00b6\u00c1\u00e4\u00e7\u00eb\u00f4\u0101\u010d\u0110\u0113"+
"\u0118\u011d\u0127\u0138\u0162\u0176\u0178\u0193\u0199\u01a2\u01a7\u01ac"+
"\u01b1\u01b6\u01bb\u01c1\u01c7\u01cc\u01d1\u01d6\u01de\u01e4\u01ee\u01f1"+
"\u01f7\u01fc\u0202\u0206\u0213\u021b\u0232\u0238\u023d\u023f\u0247\u024a"+
"\u0254\u0259\u0262\u0265\u0269\u026d\u0271\u0274\u0277\u027d\u0282\u0289"+
"\u0293\u029a\u029f\u02a2\u02af\u02b3\u02b6\u02bd\u02c1\u02c8\u02d0\u02d4"+
"\u02d8\u02dc\u02e1\u02e4\u02f3\u02f6\u02f9\u02ff\u0306\u0308\u030b\u0312"+
"\u0316\u031c\u0320";
public static final ATN _ATN =
new ATNDeserializer().deserialize(_serializedATN.toCharArray());
static {
}
}