sootup.jimple.JimpleParser Maven / Gradle / Ivy
The newest version!
// Generated from sootup/jimple/Jimple.g4 by ANTLR 4.9.3
package sootup.jimple;
import org.antlr.v4.runtime.atn.*;
import org.antlr.v4.runtime.dfa.DFA;
import org.antlr.v4.runtime.*;
import org.antlr.v4.runtime.misc.*;
import org.antlr.v4.runtime.tree.*;
import java.util.List;
import java.util.Iterator;
import java.util.ArrayList;
@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast"})
public class JimpleParser extends Parser {
static { RuntimeMetaData.checkVersion("4.9.3", RuntimeMetaData.VERSION); }
protected static final DFA[] _decisionToDFA;
protected static final PredictionContextCache _sharedContextCache =
new PredictionContextCache();
public static final int
T__0=1, T__1=2, T__2=3, T__3=4, T__4=5, T__5=6, T__6=7, T__7=8, T__8=9,
T__9=10, T__10=11, T__11=12, T__12=13, T__13=14, T__14=15, T__15=16, T__16=17,
T__17=18, T__18=19, T__19=20, T__20=21, T__21=22, T__22=23, T__23=24,
T__24=25, T__25=26, T__26=27, LINE_COMMENT=28, LONG_COMMENT=29, STRING_CONSTANT=30,
CLASS=31, EXTENDS=32, IMPLEMENTS=33, BREAKPOINT=34, CASE=35, CATCH=36,
CMP=37, CMPG=38, CMPL=39, DEFAULT=40, ENTERMONITOR=41, EXITMONITOR=42,
GOTO=43, IF=44, INSTANCEOF=45, LENGTHOF=46, SWITCH=47, NEG=48, NEWARRAY=49,
NEWMULTIARRAY=50, NEW=51, NOP=52, RETURN=53, RET=54, NONSTATIC_INVOKE=55,
STATICINVOKE=56, DYNAMICINVOKE=57, THROWS=58, THROW=59, NULL=60, FROM=61,
TO=62, WITH=63, COMMA=64, L_BRACE=65, R_BRACE=66, SEMICOLON=67, L_BRACKET=68,
R_BRACKET=69, L_PAREN=70, R_PAREN=71, COLON=72, DOT=73, EQUALS=74, COLON_EQUALS=75,
AND=76, OR=77, XOR=78, MOD=79, CMPEQ=80, CMPNE=81, CMPGT=82, CMPGE=83,
CMPLT=84, CMPLE=85, SHL=86, SHR=87, USHR=88, PLUS=89, MINUS=90, MULT=91,
DIV=92, QUOTE=93, BOOL_CONSTANT=94, FLOAT_CONSTANT=95, DEC_CONSTANT=96,
HEX_CONSTANT=97, IDENTIFIER=98, BLANK=99;
public static final int
RULE_identifier = 0, RULE_integer_constant = 1, RULE_file = 2, RULE_importItem = 3,
RULE_common_modifier = 4, RULE_class_modifier = 5, RULE_method_modifier = 6,
RULE_field_modifier = 7, RULE_file_type = 8, RULE_extends_clause = 9,
RULE_implements_clause = 10, RULE_type = 11, RULE_type_list = 12, RULE_member = 13,
RULE_field = 14, RULE_method = 15, RULE_method_name = 16, RULE_throws_clause = 17,
RULE_method_body = 18, RULE_method_body_contents = 19, RULE_trap_clauses = 20,
RULE_statements = 21, RULE_declarations = 22, RULE_declaration = 23, RULE_statement = 24,
RULE_stmt = 25, RULE_assignments = 26, RULE_identity_ref = 27, RULE_case_stmt = 28,
RULE_case_label = 29, RULE_goto_stmt = 30, RULE_trap_clause = 31, RULE_value = 32,
RULE_bool_expr = 33, RULE_invoke_expr = 34, RULE_binop_expr = 35, RULE_unop_expr = 36,
RULE_method_subsignature = 37, RULE_method_signature = 38, RULE_reference = 39,
RULE_field_signature = 40, RULE_array_descriptor = 41, RULE_arg_list = 42,
RULE_immediate = 43, RULE_methodhandle = 44, RULE_constant = 45, RULE_binop = 46,
RULE_unop = 47;
private static String[] makeRuleNames() {
return new String[] {
"identifier", "integer_constant", "file", "importItem", "common_modifier",
"class_modifier", "method_modifier", "field_modifier", "file_type", "extends_clause",
"implements_clause", "type", "type_list", "member", "field", "method",
"method_name", "throws_clause", "method_body", "method_body_contents",
"trap_clauses", "statements", "declarations", "declaration", "statement",
"stmt", "assignments", "identity_ref", "case_stmt", "case_label", "goto_stmt",
"trap_clause", "value", "bool_expr", "invoke_expr", "binop_expr", "unop_expr",
"method_subsignature", "method_signature", "reference", "field_signature",
"array_descriptor", "arg_list", "immediate", "methodhandle", "constant",
"binop", "unop"
};
}
public static final String[] ruleNames = makeRuleNames();
private static String[] makeLiteralNames() {
return new String[] {
null, "'L'", "'import'", "'final'", "'public'", "'protected'", "'private'",
"'static'", "'enum'", "'synthetic'", "'abstract'", "'super'", "'native'",
"'synchronized'", "'varargs'", "'bridge'", "'strictfp'", "'transient'",
"'volatile'", "'interface'", "'annotation interface'", "''", "''",
"'@parameter'", "'@this:'", "'@caughtexception'", "'methodhandle: '",
"'methodtype:'", null, null, null, "'class'", "'extends'", "'implements'",
"'breakpoint'", "'case'", "'catch'", "'cmp'", "'cmpg'", "'cmpl'", "'default'",
"'entermonitor'", "'exitmonitor'", "'goto'", "'if'", "'instanceof'",
"'lengthof'", null, "'neg'", "'newarray'", "'newmultiarray'", "'new'",
"'nop'", "'return'", "'ret'", null, "'staticinvoke'", "'dynamicinvoke'",
"'throws'", "'throw'", "'null'", "'from'", "'to'", "'with'", "','", "'{'",
"'}'", "';'", "'['", "']'", "'('", "')'", "':'", "'.'", "'='", "':='",
"'&'", "'|'", "'^'", "'%'", "'=='", "'!='", "'>'", "'>='", "'<'", "'<='",
"'<<'", "'>>'", "'>>>'", "'+'", "'-'", "'*'", "'/'", "'''"
};
}
private static final String[] _LITERAL_NAMES = makeLiteralNames();
private static String[] makeSymbolicNames() {
return new String[] {
null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, "LINE_COMMENT", "LONG_COMMENT", "STRING_CONSTANT",
"CLASS", "EXTENDS", "IMPLEMENTS", "BREAKPOINT", "CASE", "CATCH", "CMP",
"CMPG", "CMPL", "DEFAULT", "ENTERMONITOR", "EXITMONITOR", "GOTO", "IF",
"INSTANCEOF", "LENGTHOF", "SWITCH", "NEG", "NEWARRAY", "NEWMULTIARRAY",
"NEW", "NOP", "RETURN", "RET", "NONSTATIC_INVOKE", "STATICINVOKE", "DYNAMICINVOKE",
"THROWS", "THROW", "NULL", "FROM", "TO", "WITH", "COMMA", "L_BRACE",
"R_BRACE", "SEMICOLON", "L_BRACKET", "R_BRACKET", "L_PAREN", "R_PAREN",
"COLON", "DOT", "EQUALS", "COLON_EQUALS", "AND", "OR", "XOR", "MOD",
"CMPEQ", "CMPNE", "CMPGT", "CMPGE", "CMPLT", "CMPLE", "SHL", "SHR", "USHR",
"PLUS", "MINUS", "MULT", "DIV", "QUOTE", "BOOL_CONSTANT", "FLOAT_CONSTANT",
"DEC_CONSTANT", "HEX_CONSTANT", "IDENTIFIER", "BLANK"
};
}
private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames();
public static final Vocabulary VOCABULARY = new VocabularyImpl(_LITERAL_NAMES, _SYMBOLIC_NAMES);
/**
* @deprecated Use {@link #VOCABULARY} instead.
*/
@Deprecated
public static final String[] tokenNames;
static {
tokenNames = new String[_SYMBOLIC_NAMES.length];
for (int i = 0; i < tokenNames.length; i++) {
tokenNames[i] = VOCABULARY.getLiteralName(i);
if (tokenNames[i] == null) {
tokenNames[i] = VOCABULARY.getSymbolicName(i);
}
if (tokenNames[i] == null) {
tokenNames[i] = "";
}
}
}
@Override
@Deprecated
public String[] getTokenNames() {
return tokenNames;
}
@Override
public Vocabulary getVocabulary() {
return VOCABULARY;
}
@Override
public String getGrammarFileName() { return "Jimple.g4"; }
@Override
public String[] getRuleNames() { return ruleNames; }
@Override
public String getSerializedATN() { return _serializedATN; }
@Override
public ATN getATN() { return _ATN; }
public JimpleParser(TokenStream input) {
super(input);
_interp = new ParserATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache);
}
public static class IdentifierContext extends ParserRuleContext {
public TerminalNode IDENTIFIER() { return getToken(JimpleParser.IDENTIFIER, 0); }
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 JimpleListener ) ((JimpleListener)listener).enterIdentifier(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof JimpleListener ) ((JimpleListener)listener).exitIdentifier(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof JimpleVisitor ) return ((JimpleVisitor extends T>)visitor).visitIdentifier(this);
else return visitor.visitChildren(this);
}
}
public final IdentifierContext identifier() throws RecognitionException {
IdentifierContext _localctx = new IdentifierContext(_ctx, getState());
enterRule(_localctx, 0, RULE_identifier);
try {
enterOuterAlt(_localctx, 1);
{
setState(96);
match(IDENTIFIER);
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class Integer_constantContext extends ParserRuleContext {
public TerminalNode DEC_CONSTANT() { return getToken(JimpleParser.DEC_CONSTANT, 0); }
public TerminalNode HEX_CONSTANT() { return getToken(JimpleParser.HEX_CONSTANT, 0); }
public TerminalNode PLUS() { return getToken(JimpleParser.PLUS, 0); }
public TerminalNode MINUS() { return getToken(JimpleParser.MINUS, 0); }
public Integer_constantContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_integer_constant; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof JimpleListener ) ((JimpleListener)listener).enterInteger_constant(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof JimpleListener ) ((JimpleListener)listener).exitInteger_constant(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof JimpleVisitor ) return ((JimpleVisitor extends T>)visitor).visitInteger_constant(this);
else return visitor.visitChildren(this);
}
}
public final Integer_constantContext integer_constant() throws RecognitionException {
Integer_constantContext _localctx = new Integer_constantContext(_ctx, getState());
enterRule(_localctx, 2, RULE_integer_constant);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(99);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==PLUS || _la==MINUS) {
{
setState(98);
_la = _input.LA(1);
if ( !(_la==PLUS || _la==MINUS) ) {
_errHandler.recoverInline(this);
}
else {
if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
_errHandler.reportMatch(this);
consume();
}
}
}
setState(101);
_la = _input.LA(1);
if ( !(_la==DEC_CONSTANT || _la==HEX_CONSTANT) ) {
_errHandler.recoverInline(this);
}
else {
if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
_errHandler.reportMatch(this);
consume();
}
setState(103);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==T__0) {
{
setState(102);
match(T__0);
}
}
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class FileContext extends ParserRuleContext {
public Token classname;
public File_typeContext file_type() {
return getRuleContext(File_typeContext.class,0);
}
public TerminalNode L_BRACE() { return getToken(JimpleParser.L_BRACE, 0); }
public TerminalNode R_BRACE() { return getToken(JimpleParser.R_BRACE, 0); }
public TerminalNode EOF() { return getToken(JimpleParser.EOF, 0); }
public TerminalNode IDENTIFIER() { return getToken(JimpleParser.IDENTIFIER, 0); }
public List importItem() {
return getRuleContexts(ImportItemContext.class);
}
public ImportItemContext importItem(int i) {
return getRuleContext(ImportItemContext.class,i);
}
public List class_modifier() {
return getRuleContexts(Class_modifierContext.class);
}
public Class_modifierContext class_modifier(int i) {
return getRuleContext(Class_modifierContext.class,i);
}
public Extends_clauseContext extends_clause() {
return getRuleContext(Extends_clauseContext.class,0);
}
public Implements_clauseContext implements_clause() {
return getRuleContext(Implements_clauseContext.class,0);
}
public List member() {
return getRuleContexts(MemberContext.class);
}
public MemberContext member(int i) {
return getRuleContext(MemberContext.class,i);
}
public FileContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_file; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof JimpleListener ) ((JimpleListener)listener).enterFile(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof JimpleListener ) ((JimpleListener)listener).exitFile(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof JimpleVisitor ) return ((JimpleVisitor extends T>)visitor).visitFile(this);
else return visitor.visitChildren(this);
}
}
public final FileContext file() throws RecognitionException {
FileContext _localctx = new FileContext(_ctx, getState());
enterRule(_localctx, 4, RULE_file);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(108);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==T__1) {
{
{
setState(105);
importItem();
}
}
setState(110);
_errHandler.sync(this);
_la = _input.LA(1);
}
setState(114);
_errHandler.sync(this);
_la = _input.LA(1);
while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__2) | (1L << T__3) | (1L << T__4) | (1L << T__5) | (1L << T__6) | (1L << T__7) | (1L << T__8) | (1L << T__9) | (1L << T__10))) != 0)) {
{
{
setState(111);
class_modifier();
}
}
setState(116);
_errHandler.sync(this);
_la = _input.LA(1);
}
setState(117);
file_type();
setState(118);
((FileContext)_localctx).classname = match(IDENTIFIER);
setState(120);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==EXTENDS) {
{
setState(119);
extends_clause();
}
}
setState(123);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==IMPLEMENTS) {
{
setState(122);
implements_clause();
}
}
setState(125);
match(L_BRACE);
setState(129);
_errHandler.sync(this);
_la = _input.LA(1);
while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__2) | (1L << T__3) | (1L << T__4) | (1L << T__5) | (1L << T__6) | (1L << T__7) | (1L << T__8) | (1L << T__9) | (1L << T__11) | (1L << T__12) | (1L << T__13) | (1L << T__14) | (1L << T__15) | (1L << T__16) | (1L << T__17))) != 0) || _la==IDENTIFIER) {
{
{
setState(126);
member();
}
}
setState(131);
_errHandler.sync(this);
_la = _input.LA(1);
}
setState(132);
match(R_BRACE);
setState(133);
match(EOF);
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class ImportItemContext extends ParserRuleContext {
public IdentifierContext location;
public TerminalNode SEMICOLON() { return getToken(JimpleParser.SEMICOLON, 0); }
public IdentifierContext identifier() {
return getRuleContext(IdentifierContext.class,0);
}
public ImportItemContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_importItem; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof JimpleListener ) ((JimpleListener)listener).enterImportItem(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof JimpleListener ) ((JimpleListener)listener).exitImportItem(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof JimpleVisitor ) return ((JimpleVisitor extends T>)visitor).visitImportItem(this);
else return visitor.visitChildren(this);
}
}
public final ImportItemContext importItem() throws RecognitionException {
ImportItemContext _localctx = new ImportItemContext(_ctx, getState());
enterRule(_localctx, 6, RULE_importItem);
try {
enterOuterAlt(_localctx, 1);
{
setState(135);
match(T__1);
setState(136);
((ImportItemContext)_localctx).location = identifier();
setState(137);
match(SEMICOLON);
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class Common_modifierContext extends ParserRuleContext {
public Common_modifierContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_common_modifier; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof JimpleListener ) ((JimpleListener)listener).enterCommon_modifier(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof JimpleListener ) ((JimpleListener)listener).exitCommon_modifier(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof JimpleVisitor ) return ((JimpleVisitor extends T>)visitor).visitCommon_modifier(this);
else return visitor.visitChildren(this);
}
}
public final Common_modifierContext common_modifier() throws RecognitionException {
Common_modifierContext _localctx = new Common_modifierContext(_ctx, getState());
enterRule(_localctx, 8, RULE_common_modifier);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(139);
_la = _input.LA(1);
if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__2) | (1L << T__3) | (1L << T__4) | (1L << T__5) | (1L << T__6) | (1L << T__7) | (1L << T__8))) != 0)) ) {
_errHandler.recoverInline(this);
}
else {
if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
_errHandler.reportMatch(this);
consume();
}
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class Class_modifierContext extends ParserRuleContext {
public Common_modifierContext common_modifier() {
return getRuleContext(Common_modifierContext.class,0);
}
public Class_modifierContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_class_modifier; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof JimpleListener ) ((JimpleListener)listener).enterClass_modifier(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof JimpleListener ) ((JimpleListener)listener).exitClass_modifier(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof JimpleVisitor ) return ((JimpleVisitor extends T>)visitor).visitClass_modifier(this);
else return visitor.visitChildren(this);
}
}
public final Class_modifierContext class_modifier() throws RecognitionException {
Class_modifierContext _localctx = new Class_modifierContext(_ctx, getState());
enterRule(_localctx, 10, RULE_class_modifier);
try {
setState(144);
_errHandler.sync(this);
switch (_input.LA(1)) {
case T__2:
case T__3:
case T__4:
case T__5:
case T__6:
case T__7:
case T__8:
enterOuterAlt(_localctx, 1);
{
setState(141);
common_modifier();
}
break;
case T__9:
enterOuterAlt(_localctx, 2);
{
setState(142);
match(T__9);
}
break;
case T__10:
enterOuterAlt(_localctx, 3);
{
setState(143);
match(T__10);
}
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 Method_modifierContext extends ParserRuleContext {
public Common_modifierContext common_modifier() {
return getRuleContext(Common_modifierContext.class,0);
}
public Method_modifierContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_method_modifier; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof JimpleListener ) ((JimpleListener)listener).enterMethod_modifier(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof JimpleListener ) ((JimpleListener)listener).exitMethod_modifier(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof JimpleVisitor ) return ((JimpleVisitor extends T>)visitor).visitMethod_modifier(this);
else return visitor.visitChildren(this);
}
}
public final Method_modifierContext method_modifier() throws RecognitionException {
Method_modifierContext _localctx = new Method_modifierContext(_ctx, getState());
enterRule(_localctx, 12, RULE_method_modifier);
try {
setState(154);
_errHandler.sync(this);
switch (_input.LA(1)) {
case T__2:
case T__3:
case T__4:
case T__5:
case T__6:
case T__7:
case T__8:
enterOuterAlt(_localctx, 1);
{
setState(146);
common_modifier();
}
break;
case T__9:
enterOuterAlt(_localctx, 2);
{
setState(147);
match(T__9);
}
break;
case T__11:
enterOuterAlt(_localctx, 3);
{
setState(148);
match(T__11);
}
break;
case T__12:
enterOuterAlt(_localctx, 4);
{
setState(149);
match(T__12);
}
break;
case T__13:
enterOuterAlt(_localctx, 5);
{
setState(150);
match(T__13);
}
break;
case T__14:
enterOuterAlt(_localctx, 6);
{
setState(151);
match(T__14);
}
break;
case T__15:
enterOuterAlt(_localctx, 7);
{
setState(152);
match(T__15);
}
break;
case T__16:
enterOuterAlt(_localctx, 8);
{
setState(153);
match(T__16);
}
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 Field_modifierContext extends ParserRuleContext {
public Common_modifierContext common_modifier() {
return getRuleContext(Common_modifierContext.class,0);
}
public Field_modifierContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_field_modifier; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof JimpleListener ) ((JimpleListener)listener).enterField_modifier(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof JimpleListener ) ((JimpleListener)listener).exitField_modifier(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof JimpleVisitor ) return ((JimpleVisitor extends T>)visitor).visitField_modifier(this);
else return visitor.visitChildren(this);
}
}
public final Field_modifierContext field_modifier() throws RecognitionException {
Field_modifierContext _localctx = new Field_modifierContext(_ctx, getState());
enterRule(_localctx, 14, RULE_field_modifier);
try {
setState(159);
_errHandler.sync(this);
switch (_input.LA(1)) {
case T__2:
case T__3:
case T__4:
case T__5:
case T__6:
case T__7:
case T__8:
enterOuterAlt(_localctx, 1);
{
setState(156);
common_modifier();
}
break;
case T__16:
enterOuterAlt(_localctx, 2);
{
setState(157);
match(T__16);
}
break;
case T__17:
enterOuterAlt(_localctx, 3);
{
setState(158);
match(T__17);
}
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 File_typeContext extends ParserRuleContext {
public TerminalNode CLASS() { return getToken(JimpleParser.CLASS, 0); }
public File_typeContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_file_type; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof JimpleListener ) ((JimpleListener)listener).enterFile_type(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof JimpleListener ) ((JimpleListener)listener).exitFile_type(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof JimpleVisitor ) return ((JimpleVisitor extends T>)visitor).visitFile_type(this);
else return visitor.visitChildren(this);
}
}
public final File_typeContext file_type() throws RecognitionException {
File_typeContext _localctx = new File_typeContext(_ctx, getState());
enterRule(_localctx, 16, RULE_file_type);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(161);
_la = _input.LA(1);
if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__18) | (1L << T__19) | (1L << CLASS))) != 0)) ) {
_errHandler.recoverInline(this);
}
else {
if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
_errHandler.reportMatch(this);
consume();
}
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class Extends_clauseContext extends ParserRuleContext {
public IdentifierContext classname;
public TerminalNode EXTENDS() { return getToken(JimpleParser.EXTENDS, 0); }
public IdentifierContext identifier() {
return getRuleContext(IdentifierContext.class,0);
}
public Extends_clauseContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_extends_clause; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof JimpleListener ) ((JimpleListener)listener).enterExtends_clause(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof JimpleListener ) ((JimpleListener)listener).exitExtends_clause(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof JimpleVisitor ) return ((JimpleVisitor extends T>)visitor).visitExtends_clause(this);
else return visitor.visitChildren(this);
}
}
public final Extends_clauseContext extends_clause() throws RecognitionException {
Extends_clauseContext _localctx = new Extends_clauseContext(_ctx, getState());
enterRule(_localctx, 18, RULE_extends_clause);
try {
enterOuterAlt(_localctx, 1);
{
setState(163);
match(EXTENDS);
setState(164);
((Extends_clauseContext)_localctx).classname = identifier();
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class Implements_clauseContext extends ParserRuleContext {
public TerminalNode IMPLEMENTS() { return getToken(JimpleParser.IMPLEMENTS, 0); }
public Type_listContext type_list() {
return getRuleContext(Type_listContext.class,0);
}
public Implements_clauseContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_implements_clause; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof JimpleListener ) ((JimpleListener)listener).enterImplements_clause(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof JimpleListener ) ((JimpleListener)listener).exitImplements_clause(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof JimpleVisitor ) return ((JimpleVisitor extends T>)visitor).visitImplements_clause(this);
else return visitor.visitChildren(this);
}
}
public final Implements_clauseContext implements_clause() throws RecognitionException {
Implements_clauseContext _localctx = new Implements_clauseContext(_ctx, getState());
enterRule(_localctx, 20, RULE_implements_clause);
try {
enterOuterAlt(_localctx, 1);
{
setState(166);
match(IMPLEMENTS);
setState(167);
type_list();
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class TypeContext extends ParserRuleContext {
public IdentifierContext identifier() {
return getRuleContext(IdentifierContext.class,0);
}
public List L_BRACKET() { return getTokens(JimpleParser.L_BRACKET); }
public TerminalNode L_BRACKET(int i) {
return getToken(JimpleParser.L_BRACKET, i);
}
public List R_BRACKET() { return getTokens(JimpleParser.R_BRACKET); }
public TerminalNode R_BRACKET(int i) {
return getToken(JimpleParser.R_BRACKET, i);
}
public TypeContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_type; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof JimpleListener ) ((JimpleListener)listener).enterType(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof JimpleListener ) ((JimpleListener)listener).exitType(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof JimpleVisitor ) return ((JimpleVisitor extends T>)visitor).visitType(this);
else return visitor.visitChildren(this);
}
}
public final TypeContext type() throws RecognitionException {
TypeContext _localctx = new TypeContext(_ctx, getState());
enterRule(_localctx, 22, RULE_type);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(169);
identifier();
setState(174);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==L_BRACKET) {
{
{
setState(170);
match(L_BRACKET);
setState(171);
match(R_BRACKET);
}
}
setState(176);
_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 Type_listContext extends ParserRuleContext {
public List type() {
return getRuleContexts(TypeContext.class);
}
public TypeContext type(int i) {
return getRuleContext(TypeContext.class,i);
}
public List COMMA() { return getTokens(JimpleParser.COMMA); }
public TerminalNode COMMA(int i) {
return getToken(JimpleParser.COMMA, i);
}
public Type_listContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_type_list; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof JimpleListener ) ((JimpleListener)listener).enterType_list(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof JimpleListener ) ((JimpleListener)listener).exitType_list(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof JimpleVisitor ) return ((JimpleVisitor extends T>)visitor).visitType_list(this);
else return visitor.visitChildren(this);
}
}
public final Type_listContext type_list() throws RecognitionException {
Type_listContext _localctx = new Type_listContext(_ctx, getState());
enterRule(_localctx, 24, RULE_type_list);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(177);
type();
setState(182);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==COMMA) {
{
{
setState(178);
match(COMMA);
setState(179);
type();
}
}
setState(184);
_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 MemberContext extends ParserRuleContext {
public FieldContext field() {
return getRuleContext(FieldContext.class,0);
}
public MethodContext method() {
return getRuleContext(MethodContext.class,0);
}
public MemberContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_member; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof JimpleListener ) ((JimpleListener)listener).enterMember(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof JimpleListener ) ((JimpleListener)listener).exitMember(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof JimpleVisitor ) return ((JimpleVisitor extends T>)visitor).visitMember(this);
else return visitor.visitChildren(this);
}
}
public final MemberContext member() throws RecognitionException {
MemberContext _localctx = new MemberContext(_ctx, getState());
enterRule(_localctx, 26, RULE_member);
try {
setState(187);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,12,_ctx) ) {
case 1:
enterOuterAlt(_localctx, 1);
{
setState(185);
field();
}
break;
case 2:
enterOuterAlt(_localctx, 2);
{
setState(186);
method();
}
break;
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class FieldContext extends ParserRuleContext {
public TypeContext type() {
return getRuleContext(TypeContext.class,0);
}
public IdentifierContext identifier() {
return getRuleContext(IdentifierContext.class,0);
}
public TerminalNode SEMICOLON() { return getToken(JimpleParser.SEMICOLON, 0); }
public List field_modifier() {
return getRuleContexts(Field_modifierContext.class);
}
public Field_modifierContext field_modifier(int i) {
return getRuleContext(Field_modifierContext.class,i);
}
public FieldContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_field; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof JimpleListener ) ((JimpleListener)listener).enterField(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof JimpleListener ) ((JimpleListener)listener).exitField(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof JimpleVisitor ) return ((JimpleVisitor extends T>)visitor).visitField(this);
else return visitor.visitChildren(this);
}
}
public final FieldContext field() throws RecognitionException {
FieldContext _localctx = new FieldContext(_ctx, getState());
enterRule(_localctx, 28, RULE_field);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(192);
_errHandler.sync(this);
_la = _input.LA(1);
while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__2) | (1L << T__3) | (1L << T__4) | (1L << T__5) | (1L << T__6) | (1L << T__7) | (1L << T__8) | (1L << T__16) | (1L << T__17))) != 0)) {
{
{
setState(189);
field_modifier();
}
}
setState(194);
_errHandler.sync(this);
_la = _input.LA(1);
}
setState(195);
type();
setState(196);
identifier();
setState(197);
match(SEMICOLON);
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class MethodContext extends ParserRuleContext {
public Method_subsignatureContext method_subsignature() {
return getRuleContext(Method_subsignatureContext.class,0);
}
public Method_bodyContext method_body() {
return getRuleContext(Method_bodyContext.class,0);
}
public List method_modifier() {
return getRuleContexts(Method_modifierContext.class);
}
public Method_modifierContext method_modifier(int i) {
return getRuleContext(Method_modifierContext.class,i);
}
public Throws_clauseContext throws_clause() {
return getRuleContext(Throws_clauseContext.class,0);
}
public MethodContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_method; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof JimpleListener ) ((JimpleListener)listener).enterMethod(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof JimpleListener ) ((JimpleListener)listener).exitMethod(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof JimpleVisitor ) return ((JimpleVisitor extends T>)visitor).visitMethod(this);
else return visitor.visitChildren(this);
}
}
public final MethodContext method() throws RecognitionException {
MethodContext _localctx = new MethodContext(_ctx, getState());
enterRule(_localctx, 30, RULE_method);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(202);
_errHandler.sync(this);
_la = _input.LA(1);
while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__2) | (1L << T__3) | (1L << T__4) | (1L << T__5) | (1L << T__6) | (1L << T__7) | (1L << T__8) | (1L << T__9) | (1L << T__11) | (1L << T__12) | (1L << T__13) | (1L << T__14) | (1L << T__15) | (1L << T__16))) != 0)) {
{
{
setState(199);
method_modifier();
}
}
setState(204);
_errHandler.sync(this);
_la = _input.LA(1);
}
setState(205);
method_subsignature();
setState(207);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==THROWS) {
{
setState(206);
throws_clause();
}
}
setState(209);
method_body();
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class Method_nameContext extends ParserRuleContext {
public IdentifierContext identifier() {
return getRuleContext(IdentifierContext.class,0);
}
public Method_nameContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_method_name; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof JimpleListener ) ((JimpleListener)listener).enterMethod_name(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof JimpleListener ) ((JimpleListener)listener).exitMethod_name(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof JimpleVisitor ) return ((JimpleVisitor extends T>)visitor).visitMethod_name(this);
else return visitor.visitChildren(this);
}
}
public final Method_nameContext method_name() throws RecognitionException {
Method_nameContext _localctx = new Method_nameContext(_ctx, getState());
enterRule(_localctx, 32, RULE_method_name);
try {
setState(214);
_errHandler.sync(this);
switch (_input.LA(1)) {
case T__20:
enterOuterAlt(_localctx, 1);
{
setState(211);
match(T__20);
}
break;
case T__21:
enterOuterAlt(_localctx, 2);
{
setState(212);
match(T__21);
}
break;
case IDENTIFIER:
enterOuterAlt(_localctx, 3);
{
setState(213);
identifier();
}
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 Throws_clauseContext extends ParserRuleContext {
public TerminalNode THROWS() { return getToken(JimpleParser.THROWS, 0); }
public Type_listContext type_list() {
return getRuleContext(Type_listContext.class,0);
}
public Throws_clauseContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_throws_clause; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof JimpleListener ) ((JimpleListener)listener).enterThrows_clause(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof JimpleListener ) ((JimpleListener)listener).exitThrows_clause(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof JimpleVisitor ) return ((JimpleVisitor extends T>)visitor).visitThrows_clause(this);
else return visitor.visitChildren(this);
}
}
public final Throws_clauseContext throws_clause() throws RecognitionException {
Throws_clauseContext _localctx = new Throws_clauseContext(_ctx, getState());
enterRule(_localctx, 34, RULE_throws_clause);
try {
enterOuterAlt(_localctx, 1);
{
setState(216);
match(THROWS);
setState(217);
type_list();
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class Method_bodyContext extends ParserRuleContext {
public TerminalNode SEMICOLON() { return getToken(JimpleParser.SEMICOLON, 0); }
public TerminalNode L_BRACE() { return getToken(JimpleParser.L_BRACE, 0); }
public Method_body_contentsContext method_body_contents() {
return getRuleContext(Method_body_contentsContext.class,0);
}
public TerminalNode R_BRACE() { return getToken(JimpleParser.R_BRACE, 0); }
public Method_bodyContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_method_body; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof JimpleListener ) ((JimpleListener)listener).enterMethod_body(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof JimpleListener ) ((JimpleListener)listener).exitMethod_body(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof JimpleVisitor ) return ((JimpleVisitor extends T>)visitor).visitMethod_body(this);
else return visitor.visitChildren(this);
}
}
public final Method_bodyContext method_body() throws RecognitionException {
Method_bodyContext _localctx = new Method_bodyContext(_ctx, getState());
enterRule(_localctx, 36, RULE_method_body);
try {
setState(224);
_errHandler.sync(this);
switch (_input.LA(1)) {
case SEMICOLON:
enterOuterAlt(_localctx, 1);
{
setState(219);
match(SEMICOLON);
}
break;
case L_BRACE:
enterOuterAlt(_localctx, 2);
{
setState(220);
match(L_BRACE);
setState(221);
method_body_contents();
setState(222);
match(R_BRACE);
}
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 Method_body_contentsContext extends ParserRuleContext {
public DeclarationsContext declarations() {
return getRuleContext(DeclarationsContext.class,0);
}
public StatementsContext statements() {
return getRuleContext(StatementsContext.class,0);
}
public Trap_clausesContext trap_clauses() {
return getRuleContext(Trap_clausesContext.class,0);
}
public Method_body_contentsContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_method_body_contents; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof JimpleListener ) ((JimpleListener)listener).enterMethod_body_contents(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof JimpleListener ) ((JimpleListener)listener).exitMethod_body_contents(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof JimpleVisitor ) return ((JimpleVisitor extends T>)visitor).visitMethod_body_contents(this);
else return visitor.visitChildren(this);
}
}
public final Method_body_contentsContext method_body_contents() throws RecognitionException {
Method_body_contentsContext _localctx = new Method_body_contentsContext(_ctx, getState());
enterRule(_localctx, 38, RULE_method_body_contents);
try {
enterOuterAlt(_localctx, 1);
{
setState(226);
declarations();
setState(227);
statements();
setState(228);
trap_clauses();
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class Trap_clausesContext extends ParserRuleContext {
public List trap_clause() {
return getRuleContexts(Trap_clauseContext.class);
}
public Trap_clauseContext trap_clause(int i) {
return getRuleContext(Trap_clauseContext.class,i);
}
public Trap_clausesContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_trap_clauses; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof JimpleListener ) ((JimpleListener)listener).enterTrap_clauses(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof JimpleListener ) ((JimpleListener)listener).exitTrap_clauses(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof JimpleVisitor ) return ((JimpleVisitor extends T>)visitor).visitTrap_clauses(this);
else return visitor.visitChildren(this);
}
}
public final Trap_clausesContext trap_clauses() throws RecognitionException {
Trap_clausesContext _localctx = new Trap_clausesContext(_ctx, getState());
enterRule(_localctx, 40, RULE_trap_clauses);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(233);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==CATCH) {
{
{
setState(230);
trap_clause();
}
}
setState(235);
_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 StatementsContext extends ParserRuleContext {
public List statement() {
return getRuleContexts(StatementContext.class);
}
public StatementContext statement(int i) {
return getRuleContext(StatementContext.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 JimpleListener ) ((JimpleListener)listener).enterStatements(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof JimpleListener ) ((JimpleListener)listener).exitStatements(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof JimpleVisitor ) return ((JimpleVisitor extends T>)visitor).visitStatements(this);
else return visitor.visitChildren(this);
}
}
public final StatementsContext statements() throws RecognitionException {
StatementsContext _localctx = new StatementsContext(_ctx, getState());
enterRule(_localctx, 42, RULE_statements);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(239);
_errHandler.sync(this);
_la = _input.LA(1);
while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BREAKPOINT) | (1L << ENTERMONITOR) | (1L << EXITMONITOR) | (1L << GOTO) | (1L << IF) | (1L << SWITCH) | (1L << NOP) | (1L << RETURN) | (1L << RET) | (1L << NONSTATIC_INVOKE) | (1L << STATICINVOKE) | (1L << DYNAMICINVOKE) | (1L << THROW))) != 0) || _la==CMPLT || _la==IDENTIFIER) {
{
{
setState(236);
statement();
}
}
setState(241);
_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 DeclarationsContext extends ParserRuleContext {
public List declaration() {
return getRuleContexts(DeclarationContext.class);
}
public DeclarationContext declaration(int i) {
return getRuleContext(DeclarationContext.class,i);
}
public DeclarationsContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_declarations; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof JimpleListener ) ((JimpleListener)listener).enterDeclarations(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof JimpleListener ) ((JimpleListener)listener).exitDeclarations(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof JimpleVisitor ) return ((JimpleVisitor extends T>)visitor).visitDeclarations(this);
else return visitor.visitChildren(this);
}
}
public final DeclarationsContext declarations() throws RecognitionException {
DeclarationsContext _localctx = new DeclarationsContext(_ctx, getState());
enterRule(_localctx, 44, RULE_declarations);
try {
int _alt;
enterOuterAlt(_localctx, 1);
{
setState(245);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,20,_ctx);
while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
if ( _alt==1 ) {
{
{
setState(242);
declaration();
}
}
}
setState(247);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,20,_ctx);
}
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class DeclarationContext extends ParserRuleContext {
public TypeContext type() {
return getRuleContext(TypeContext.class,0);
}
public Arg_listContext arg_list() {
return getRuleContext(Arg_listContext.class,0);
}
public TerminalNode SEMICOLON() { return getToken(JimpleParser.SEMICOLON, 0); }
public DeclarationContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_declaration; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof JimpleListener ) ((JimpleListener)listener).enterDeclaration(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof JimpleListener ) ((JimpleListener)listener).exitDeclaration(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof JimpleVisitor ) return ((JimpleVisitor extends T>)visitor).visitDeclaration(this);
else return visitor.visitChildren(this);
}
}
public final DeclarationContext declaration() throws RecognitionException {
DeclarationContext _localctx = new DeclarationContext(_ctx, getState());
enterRule(_localctx, 46, RULE_declaration);
try {
enterOuterAlt(_localctx, 1);
{
setState(248);
type();
setState(249);
arg_list();
setState(250);
match(SEMICOLON);
}
}
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 IdentifierContext label_name;
public StmtContext stmt() {
return getRuleContext(StmtContext.class,0);
}
public TerminalNode SEMICOLON() { return getToken(JimpleParser.SEMICOLON, 0); }
public TerminalNode COLON() { return getToken(JimpleParser.COLON, 0); }
public IdentifierContext identifier() {
return getRuleContext(IdentifierContext.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 JimpleListener ) ((JimpleListener)listener).enterStatement(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof JimpleListener ) ((JimpleListener)listener).exitStatement(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof JimpleVisitor ) return ((JimpleVisitor extends T>)visitor).visitStatement(this);
else return visitor.visitChildren(this);
}
}
public final StatementContext statement() throws RecognitionException {
StatementContext _localctx = new StatementContext(_ctx, getState());
enterRule(_localctx, 48, RULE_statement);
try {
enterOuterAlt(_localctx, 1);
{
setState(255);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,21,_ctx) ) {
case 1:
{
setState(252);
((StatementContext)_localctx).label_name = identifier();
setState(253);
match(COLON);
}
break;
}
setState(257);
stmt();
setState(258);
match(SEMICOLON);
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class StmtContext extends ParserRuleContext {
public AssignmentsContext assignments() {
return getRuleContext(AssignmentsContext.class,0);
}
public Goto_stmtContext goto_stmt() {
return getRuleContext(Goto_stmtContext.class,0);
}
public TerminalNode IF() { return getToken(JimpleParser.IF, 0); }
public Bool_exprContext bool_expr() {
return getRuleContext(Bool_exprContext.class,0);
}
public Invoke_exprContext invoke_expr() {
return getRuleContext(Invoke_exprContext.class,0);
}
public TerminalNode RETURN() { return getToken(JimpleParser.RETURN, 0); }
public ImmediateContext immediate() {
return getRuleContext(ImmediateContext.class,0);
}
public TerminalNode SWITCH() { return getToken(JimpleParser.SWITCH, 0); }
public TerminalNode L_PAREN() { return getToken(JimpleParser.L_PAREN, 0); }
public TerminalNode R_PAREN() { return getToken(JimpleParser.R_PAREN, 0); }
public TerminalNode L_BRACE() { return getToken(JimpleParser.L_BRACE, 0); }
public TerminalNode R_BRACE() { return getToken(JimpleParser.R_BRACE, 0); }
public List case_stmt() {
return getRuleContexts(Case_stmtContext.class);
}
public Case_stmtContext case_stmt(int i) {
return getRuleContext(Case_stmtContext.class,i);
}
public TerminalNode RET() { return getToken(JimpleParser.RET, 0); }
public TerminalNode THROW() { return getToken(JimpleParser.THROW, 0); }
public TerminalNode ENTERMONITOR() { return getToken(JimpleParser.ENTERMONITOR, 0); }
public TerminalNode EXITMONITOR() { return getToken(JimpleParser.EXITMONITOR, 0); }
public TerminalNode NOP() { return getToken(JimpleParser.NOP, 0); }
public TerminalNode BREAKPOINT() { return getToken(JimpleParser.BREAKPOINT, 0); }
public StmtContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_stmt; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof JimpleListener ) ((JimpleListener)listener).enterStmt(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof JimpleListener ) ((JimpleListener)listener).exitStmt(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof JimpleVisitor ) return ((JimpleVisitor extends T>)visitor).visitStmt(this);
else return visitor.visitChildren(this);
}
}
public final StmtContext stmt() throws RecognitionException {
StmtContext _localctx = new StmtContext(_ctx, getState());
enterRule(_localctx, 50, RULE_stmt);
int _la;
try {
setState(295);
_errHandler.sync(this);
switch (_input.LA(1)) {
case CMPLT:
case IDENTIFIER:
enterOuterAlt(_localctx, 1);
{
setState(260);
assignments();
}
break;
case GOTO:
case IF:
enterOuterAlt(_localctx, 2);
{
setState(263);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==IF) {
{
setState(261);
match(IF);
setState(262);
bool_expr();
}
}
setState(265);
goto_stmt();
}
break;
case NONSTATIC_INVOKE:
case STATICINVOKE:
case DYNAMICINVOKE:
enterOuterAlt(_localctx, 3);
{
setState(266);
invoke_expr();
}
break;
case RETURN:
enterOuterAlt(_localctx, 4);
{
setState(267);
match(RETURN);
setState(269);
_errHandler.sync(this);
_la = _input.LA(1);
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__25) | (1L << T__26) | (1L << STRING_CONSTANT) | (1L << CLASS) | (1L << NULL))) != 0) || ((((_la - 89)) & ~0x3f) == 0 && ((1L << (_la - 89)) & ((1L << (PLUS - 89)) | (1L << (MINUS - 89)) | (1L << (BOOL_CONSTANT - 89)) | (1L << (FLOAT_CONSTANT - 89)) | (1L << (DEC_CONSTANT - 89)) | (1L << (HEX_CONSTANT - 89)) | (1L << (IDENTIFIER - 89)))) != 0)) {
{
setState(268);
immediate();
}
}
}
break;
case SWITCH:
enterOuterAlt(_localctx, 5);
{
setState(271);
match(SWITCH);
setState(272);
match(L_PAREN);
setState(273);
immediate();
setState(274);
match(R_PAREN);
setState(275);
match(L_BRACE);
setState(277);
_errHandler.sync(this);
_la = _input.LA(1);
do {
{
{
setState(276);
case_stmt();
}
}
setState(279);
_errHandler.sync(this);
_la = _input.LA(1);
} while ( _la==CASE || _la==DEFAULT );
setState(281);
match(R_BRACE);
}
break;
case RET:
enterOuterAlt(_localctx, 6);
{
setState(283);
match(RET);
setState(285);
_errHandler.sync(this);
_la = _input.LA(1);
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__25) | (1L << T__26) | (1L << STRING_CONSTANT) | (1L << CLASS) | (1L << NULL))) != 0) || ((((_la - 89)) & ~0x3f) == 0 && ((1L << (_la - 89)) & ((1L << (PLUS - 89)) | (1L << (MINUS - 89)) | (1L << (BOOL_CONSTANT - 89)) | (1L << (FLOAT_CONSTANT - 89)) | (1L << (DEC_CONSTANT - 89)) | (1L << (HEX_CONSTANT - 89)) | (1L << (IDENTIFIER - 89)))) != 0)) {
{
setState(284);
immediate();
}
}
}
break;
case THROW:
enterOuterAlt(_localctx, 7);
{
setState(287);
match(THROW);
setState(288);
immediate();
}
break;
case ENTERMONITOR:
enterOuterAlt(_localctx, 8);
{
setState(289);
match(ENTERMONITOR);
setState(290);
immediate();
}
break;
case EXITMONITOR:
enterOuterAlt(_localctx, 9);
{
setState(291);
match(EXITMONITOR);
setState(292);
immediate();
}
break;
case NOP:
enterOuterAlt(_localctx, 10);
{
setState(293);
match(NOP);
}
break;
case BREAKPOINT:
enterOuterAlt(_localctx, 11);
{
setState(294);
match(BREAKPOINT);
}
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 AssignmentsContext extends ParserRuleContext {
public IdentifierContext local;
public TerminalNode COLON_EQUALS() { return getToken(JimpleParser.COLON_EQUALS, 0); }
public Identity_refContext identity_ref() {
return getRuleContext(Identity_refContext.class,0);
}
public IdentifierContext identifier() {
return getRuleContext(IdentifierContext.class,0);
}
public TerminalNode EQUALS() { return getToken(JimpleParser.EQUALS, 0); }
public ValueContext value() {
return getRuleContext(ValueContext.class,0);
}
public ReferenceContext reference() {
return getRuleContext(ReferenceContext.class,0);
}
public AssignmentsContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_assignments; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof JimpleListener ) ((JimpleListener)listener).enterAssignments(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof JimpleListener ) ((JimpleListener)listener).exitAssignments(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof JimpleVisitor ) return ((JimpleVisitor extends T>)visitor).visitAssignments(this);
else return visitor.visitChildren(this);
}
}
public final AssignmentsContext assignments() throws RecognitionException {
AssignmentsContext _localctx = new AssignmentsContext(_ctx, getState());
enterRule(_localctx, 52, RULE_assignments);
try {
setState(308);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,28,_ctx) ) {
case 1:
enterOuterAlt(_localctx, 1);
{
setState(297);
((AssignmentsContext)_localctx).local = identifier();
setState(298);
match(COLON_EQUALS);
setState(299);
identity_ref();
}
break;
case 2:
enterOuterAlt(_localctx, 2);
{
setState(303);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,27,_ctx) ) {
case 1:
{
setState(301);
reference();
}
break;
case 2:
{
setState(302);
((AssignmentsContext)_localctx).local = identifier();
}
break;
}
setState(305);
match(EQUALS);
setState(306);
value();
}
break;
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class Identity_refContext extends ParserRuleContext {
public Token parameter_idx;
public Token caught;
public TerminalNode COLON() { return getToken(JimpleParser.COLON, 0); }
public TypeContext type() {
return getRuleContext(TypeContext.class,0);
}
public TerminalNode DEC_CONSTANT() { return getToken(JimpleParser.DEC_CONSTANT, 0); }
public Identity_refContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_identity_ref; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof JimpleListener ) ((JimpleListener)listener).enterIdentity_ref(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof JimpleListener ) ((JimpleListener)listener).exitIdentity_ref(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof JimpleVisitor ) return ((JimpleVisitor extends T>)visitor).visitIdentity_ref(this);
else return visitor.visitChildren(this);
}
}
public final Identity_refContext identity_ref() throws RecognitionException {
Identity_refContext _localctx = new Identity_refContext(_ctx, getState());
enterRule(_localctx, 54, RULE_identity_ref);
try {
setState(317);
_errHandler.sync(this);
switch (_input.LA(1)) {
case T__22:
enterOuterAlt(_localctx, 1);
{
setState(310);
match(T__22);
setState(311);
((Identity_refContext)_localctx).parameter_idx = match(DEC_CONSTANT);
setState(312);
match(COLON);
setState(313);
type();
}
break;
case T__23:
enterOuterAlt(_localctx, 2);
{
setState(314);
match(T__23);
setState(315);
type();
}
break;
case T__24:
enterOuterAlt(_localctx, 3);
{
setState(316);
((Identity_refContext)_localctx).caught = match(T__24);
}
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 Case_stmtContext extends ParserRuleContext {
public Case_labelContext case_label() {
return getRuleContext(Case_labelContext.class,0);
}
public TerminalNode COLON() { return getToken(JimpleParser.COLON, 0); }
public Goto_stmtContext goto_stmt() {
return getRuleContext(Goto_stmtContext.class,0);
}
public TerminalNode SEMICOLON() { return getToken(JimpleParser.SEMICOLON, 0); }
public Case_stmtContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_case_stmt; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof JimpleListener ) ((JimpleListener)listener).enterCase_stmt(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof JimpleListener ) ((JimpleListener)listener).exitCase_stmt(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof JimpleVisitor ) return ((JimpleVisitor extends T>)visitor).visitCase_stmt(this);
else return visitor.visitChildren(this);
}
}
public final Case_stmtContext case_stmt() throws RecognitionException {
Case_stmtContext _localctx = new Case_stmtContext(_ctx, getState());
enterRule(_localctx, 56, RULE_case_stmt);
try {
enterOuterAlt(_localctx, 1);
{
setState(319);
case_label();
setState(320);
match(COLON);
setState(321);
goto_stmt();
setState(322);
match(SEMICOLON);
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class Case_labelContext extends ParserRuleContext {
public TerminalNode CASE() { return getToken(JimpleParser.CASE, 0); }
public Integer_constantContext integer_constant() {
return getRuleContext(Integer_constantContext.class,0);
}
public TerminalNode DEFAULT() { return getToken(JimpleParser.DEFAULT, 0); }
public Case_labelContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_case_label; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof JimpleListener ) ((JimpleListener)listener).enterCase_label(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof JimpleListener ) ((JimpleListener)listener).exitCase_label(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof JimpleVisitor ) return ((JimpleVisitor extends T>)visitor).visitCase_label(this);
else return visitor.visitChildren(this);
}
}
public final Case_labelContext case_label() throws RecognitionException {
Case_labelContext _localctx = new Case_labelContext(_ctx, getState());
enterRule(_localctx, 58, RULE_case_label);
try {
setState(327);
_errHandler.sync(this);
switch (_input.LA(1)) {
case CASE:
enterOuterAlt(_localctx, 1);
{
setState(324);
match(CASE);
setState(325);
integer_constant();
}
break;
case DEFAULT:
enterOuterAlt(_localctx, 2);
{
setState(326);
match(DEFAULT);
}
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 Goto_stmtContext extends ParserRuleContext {
public IdentifierContext label_name;
public TerminalNode GOTO() { return getToken(JimpleParser.GOTO, 0); }
public IdentifierContext identifier() {
return getRuleContext(IdentifierContext.class,0);
}
public Goto_stmtContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_goto_stmt; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof JimpleListener ) ((JimpleListener)listener).enterGoto_stmt(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof JimpleListener ) ((JimpleListener)listener).exitGoto_stmt(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof JimpleVisitor ) return ((JimpleVisitor extends T>)visitor).visitGoto_stmt(this);
else return visitor.visitChildren(this);
}
}
public final Goto_stmtContext goto_stmt() throws RecognitionException {
Goto_stmtContext _localctx = new Goto_stmtContext(_ctx, getState());
enterRule(_localctx, 60, RULE_goto_stmt);
try {
enterOuterAlt(_localctx, 1);
{
setState(329);
match(GOTO);
setState(330);
((Goto_stmtContext)_localctx).label_name = identifier();
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class Trap_clauseContext extends ParserRuleContext {
public IdentifierContext exceptiontype;
public IdentifierContext from;
public IdentifierContext to;
public IdentifierContext with;
public TerminalNode CATCH() { return getToken(JimpleParser.CATCH, 0); }
public TerminalNode FROM() { return getToken(JimpleParser.FROM, 0); }
public TerminalNode TO() { return getToken(JimpleParser.TO, 0); }
public TerminalNode WITH() { return getToken(JimpleParser.WITH, 0); }
public TerminalNode SEMICOLON() { return getToken(JimpleParser.SEMICOLON, 0); }
public List identifier() {
return getRuleContexts(IdentifierContext.class);
}
public IdentifierContext identifier(int i) {
return getRuleContext(IdentifierContext.class,i);
}
public Trap_clauseContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_trap_clause; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof JimpleListener ) ((JimpleListener)listener).enterTrap_clause(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof JimpleListener ) ((JimpleListener)listener).exitTrap_clause(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof JimpleVisitor ) return ((JimpleVisitor extends T>)visitor).visitTrap_clause(this);
else return visitor.visitChildren(this);
}
}
public final Trap_clauseContext trap_clause() throws RecognitionException {
Trap_clauseContext _localctx = new Trap_clauseContext(_ctx, getState());
enterRule(_localctx, 62, RULE_trap_clause);
try {
enterOuterAlt(_localctx, 1);
{
setState(332);
match(CATCH);
setState(333);
((Trap_clauseContext)_localctx).exceptiontype = identifier();
setState(334);
match(FROM);
setState(335);
((Trap_clauseContext)_localctx).from = identifier();
setState(336);
match(TO);
setState(337);
((Trap_clauseContext)_localctx).to = identifier();
setState(338);
match(WITH);
setState(339);
((Trap_clauseContext)_localctx).with = identifier();
setState(340);
match(SEMICOLON);
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class ValueContext extends ParserRuleContext {
public IdentifierContext base_type;
public TypeContext array_type;
public TypeContext multiarray_type;
public TypeContext nonvoid_cast;
public ImmediateContext op;
public TypeContext nonvoid_type;
public List immediate() {
return getRuleContexts(ImmediateContext.class);
}
public ImmediateContext immediate(int i) {
return getRuleContext(ImmediateContext.class,i);
}
public ReferenceContext reference() {
return getRuleContext(ReferenceContext.class,0);
}
public TerminalNode NEW() { return getToken(JimpleParser.NEW, 0); }
public IdentifierContext identifier() {
return getRuleContext(IdentifierContext.class,0);
}
public TerminalNode NEWARRAY() { return getToken(JimpleParser.NEWARRAY, 0); }
public TerminalNode L_PAREN() { return getToken(JimpleParser.L_PAREN, 0); }
public TerminalNode R_PAREN() { return getToken(JimpleParser.R_PAREN, 0); }
public Array_descriptorContext array_descriptor() {
return getRuleContext(Array_descriptorContext.class,0);
}
public TypeContext type() {
return getRuleContext(TypeContext.class,0);
}
public TerminalNode NEWMULTIARRAY() { return getToken(JimpleParser.NEWMULTIARRAY, 0); }
public List L_BRACKET() { return getTokens(JimpleParser.L_BRACKET); }
public TerminalNode L_BRACKET(int i) {
return getToken(JimpleParser.L_BRACKET, i);
}
public List R_BRACKET() { return getTokens(JimpleParser.R_BRACKET); }
public TerminalNode R_BRACKET(int i) {
return getToken(JimpleParser.R_BRACKET, i);
}
public TerminalNode INSTANCEOF() { return getToken(JimpleParser.INSTANCEOF, 0); }
public Binop_exprContext binop_expr() {
return getRuleContext(Binop_exprContext.class,0);
}
public Invoke_exprContext invoke_expr() {
return getRuleContext(Invoke_exprContext.class,0);
}
public Unop_exprContext unop_expr() {
return getRuleContext(Unop_exprContext.class,0);
}
public ValueContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_value; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof JimpleListener ) ((JimpleListener)listener).enterValue(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof JimpleListener ) ((JimpleListener)listener).exitValue(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof JimpleVisitor ) return ((JimpleVisitor extends T>)visitor).visitValue(this);
else return visitor.visitChildren(this);
}
}
public final ValueContext value() throws RecognitionException {
ValueContext _localctx = new ValueContext(_ctx, getState());
enterRule(_localctx, 64, RULE_value);
int _la;
try {
setState(377);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,33,_ctx) ) {
case 1:
enterOuterAlt(_localctx, 1);
{
setState(342);
immediate();
}
break;
case 2:
enterOuterAlt(_localctx, 2);
{
setState(343);
reference();
}
break;
case 3:
enterOuterAlt(_localctx, 3);
{
setState(344);
match(NEW);
setState(345);
((ValueContext)_localctx).base_type = identifier();
}
break;
case 4:
enterOuterAlt(_localctx, 4);
{
setState(346);
match(NEWARRAY);
setState(347);
match(L_PAREN);
setState(348);
((ValueContext)_localctx).array_type = type();
setState(349);
match(R_PAREN);
setState(350);
array_descriptor();
}
break;
case 5:
enterOuterAlt(_localctx, 5);
{
setState(352);
match(NEWMULTIARRAY);
setState(353);
match(L_PAREN);
setState(354);
((ValueContext)_localctx).multiarray_type = type();
setState(355);
match(R_PAREN);
setState(361);
_errHandler.sync(this);
_la = _input.LA(1);
do {
{
{
setState(356);
match(L_BRACKET);
setState(358);
_errHandler.sync(this);
_la = _input.LA(1);
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__25) | (1L << T__26) | (1L << STRING_CONSTANT) | (1L << CLASS) | (1L << NULL))) != 0) || ((((_la - 89)) & ~0x3f) == 0 && ((1L << (_la - 89)) & ((1L << (PLUS - 89)) | (1L << (MINUS - 89)) | (1L << (BOOL_CONSTANT - 89)) | (1L << (FLOAT_CONSTANT - 89)) | (1L << (DEC_CONSTANT - 89)) | (1L << (HEX_CONSTANT - 89)) | (1L << (IDENTIFIER - 89)))) != 0)) {
{
setState(357);
immediate();
}
}
setState(360);
match(R_BRACKET);
}
}
setState(363);
_errHandler.sync(this);
_la = _input.LA(1);
} while ( _la==L_BRACKET );
}
break;
case 6:
enterOuterAlt(_localctx, 6);
{
setState(365);
match(L_PAREN);
setState(366);
((ValueContext)_localctx).nonvoid_cast = type();
setState(367);
match(R_PAREN);
setState(368);
((ValueContext)_localctx).op = immediate();
}
break;
case 7:
enterOuterAlt(_localctx, 7);
{
setState(370);
((ValueContext)_localctx).op = immediate();
setState(371);
match(INSTANCEOF);
setState(372);
((ValueContext)_localctx).nonvoid_type = type();
}
break;
case 8:
enterOuterAlt(_localctx, 8);
{
setState(374);
binop_expr();
}
break;
case 9:
enterOuterAlt(_localctx, 9);
{
setState(375);
invoke_expr();
}
break;
case 10:
enterOuterAlt(_localctx, 10);
{
setState(376);
unop_expr();
}
break;
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class Bool_exprContext extends ParserRuleContext {
public Binop_exprContext binop_expr() {
return getRuleContext(Binop_exprContext.class,0);
}
public Unop_exprContext unop_expr() {
return getRuleContext(Unop_exprContext.class,0);
}
public Bool_exprContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_bool_expr; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof JimpleListener ) ((JimpleListener)listener).enterBool_expr(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof JimpleListener ) ((JimpleListener)listener).exitBool_expr(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof JimpleVisitor ) return ((JimpleVisitor extends T>)visitor).visitBool_expr(this);
else return visitor.visitChildren(this);
}
}
public final Bool_exprContext bool_expr() throws RecognitionException {
Bool_exprContext _localctx = new Bool_exprContext(_ctx, getState());
enterRule(_localctx, 66, RULE_bool_expr);
try {
setState(381);
_errHandler.sync(this);
switch (_input.LA(1)) {
case T__25:
case T__26:
case STRING_CONSTANT:
case CLASS:
case NULL:
case PLUS:
case MINUS:
case BOOL_CONSTANT:
case FLOAT_CONSTANT:
case DEC_CONSTANT:
case HEX_CONSTANT:
case IDENTIFIER:
enterOuterAlt(_localctx, 1);
{
setState(379);
binop_expr();
}
break;
case LENGTHOF:
case NEG:
enterOuterAlt(_localctx, 2);
{
setState(380);
unop_expr();
}
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 Invoke_exprContext extends ParserRuleContext {
public Token nonstaticinvoke;
public IdentifierContext local_name;
public Token staticinvoke;
public Token dynamicinvoke;
public Token unnamed_method_name;
public TypeContext name;
public Type_listContext parameter_list;
public Arg_listContext dyn_args;
public Method_signatureContext bsm;
public Arg_listContext staticargs;
public TerminalNode DOT() { return getToken(JimpleParser.DOT, 0); }
public Method_signatureContext method_signature() {
return getRuleContext(Method_signatureContext.class,0);
}
public List L_PAREN() { return getTokens(JimpleParser.L_PAREN); }
public TerminalNode L_PAREN(int i) {
return getToken(JimpleParser.L_PAREN, i);
}
public List R_PAREN() { return getTokens(JimpleParser.R_PAREN); }
public TerminalNode R_PAREN(int i) {
return getToken(JimpleParser.R_PAREN, i);
}
public TerminalNode NONSTATIC_INVOKE() { return getToken(JimpleParser.NONSTATIC_INVOKE, 0); }
public IdentifierContext identifier() {
return getRuleContext(IdentifierContext.class,0);
}
public List arg_list() {
return getRuleContexts(Arg_listContext.class);
}
public Arg_listContext arg_list(int i) {
return getRuleContext(Arg_listContext.class,i);
}
public TerminalNode STATICINVOKE() { return getToken(JimpleParser.STATICINVOKE, 0); }
public TerminalNode CMPLT() { return getToken(JimpleParser.CMPLT, 0); }
public TerminalNode CMPGT() { return getToken(JimpleParser.CMPGT, 0); }
public TerminalNode DYNAMICINVOKE() { return getToken(JimpleParser.DYNAMICINVOKE, 0); }
public TerminalNode STRING_CONSTANT() { return getToken(JimpleParser.STRING_CONSTANT, 0); }
public TypeContext type() {
return getRuleContext(TypeContext.class,0);
}
public Type_listContext type_list() {
return getRuleContext(Type_listContext.class,0);
}
public Invoke_exprContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_invoke_expr; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof JimpleListener ) ((JimpleListener)listener).enterInvoke_expr(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof JimpleListener ) ((JimpleListener)listener).exitInvoke_expr(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof JimpleVisitor ) return ((JimpleVisitor extends T>)visitor).visitInvoke_expr(this);
else return visitor.visitChildren(this);
}
}
public final Invoke_exprContext invoke_expr() throws RecognitionException {
Invoke_exprContext _localctx = new Invoke_exprContext(_ctx, getState());
enterRule(_localctx, 68, RULE_invoke_expr);
int _la;
try {
setState(423);
_errHandler.sync(this);
switch (_input.LA(1)) {
case NONSTATIC_INVOKE:
enterOuterAlt(_localctx, 1);
{
setState(383);
((Invoke_exprContext)_localctx).nonstaticinvoke = match(NONSTATIC_INVOKE);
setState(384);
((Invoke_exprContext)_localctx).local_name = identifier();
setState(385);
match(DOT);
setState(386);
method_signature();
setState(387);
match(L_PAREN);
setState(389);
_errHandler.sync(this);
_la = _input.LA(1);
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__25) | (1L << T__26) | (1L << STRING_CONSTANT) | (1L << CLASS) | (1L << NULL))) != 0) || ((((_la - 89)) & ~0x3f) == 0 && ((1L << (_la - 89)) & ((1L << (PLUS - 89)) | (1L << (MINUS - 89)) | (1L << (BOOL_CONSTANT - 89)) | (1L << (FLOAT_CONSTANT - 89)) | (1L << (DEC_CONSTANT - 89)) | (1L << (HEX_CONSTANT - 89)) | (1L << (IDENTIFIER - 89)))) != 0)) {
{
setState(388);
arg_list();
}
}
setState(391);
match(R_PAREN);
}
break;
case STATICINVOKE:
enterOuterAlt(_localctx, 2);
{
setState(393);
((Invoke_exprContext)_localctx).staticinvoke = match(STATICINVOKE);
setState(394);
method_signature();
setState(395);
match(L_PAREN);
setState(397);
_errHandler.sync(this);
_la = _input.LA(1);
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__25) | (1L << T__26) | (1L << STRING_CONSTANT) | (1L << CLASS) | (1L << NULL))) != 0) || ((((_la - 89)) & ~0x3f) == 0 && ((1L << (_la - 89)) & ((1L << (PLUS - 89)) | (1L << (MINUS - 89)) | (1L << (BOOL_CONSTANT - 89)) | (1L << (FLOAT_CONSTANT - 89)) | (1L << (DEC_CONSTANT - 89)) | (1L << (HEX_CONSTANT - 89)) | (1L << (IDENTIFIER - 89)))) != 0)) {
{
setState(396);
arg_list();
}
}
setState(399);
match(R_PAREN);
}
break;
case DYNAMICINVOKE:
enterOuterAlt(_localctx, 3);
{
setState(401);
((Invoke_exprContext)_localctx).dynamicinvoke = match(DYNAMICINVOKE);
setState(402);
((Invoke_exprContext)_localctx).unnamed_method_name = match(STRING_CONSTANT);
setState(403);
match(CMPLT);
setState(404);
((Invoke_exprContext)_localctx).name = type();
setState(405);
match(L_PAREN);
setState(407);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==IDENTIFIER) {
{
setState(406);
((Invoke_exprContext)_localctx).parameter_list = type_list();
}
}
setState(409);
match(R_PAREN);
setState(410);
match(CMPGT);
setState(411);
match(L_PAREN);
setState(413);
_errHandler.sync(this);
_la = _input.LA(1);
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__25) | (1L << T__26) | (1L << STRING_CONSTANT) | (1L << CLASS) | (1L << NULL))) != 0) || ((((_la - 89)) & ~0x3f) == 0 && ((1L << (_la - 89)) & ((1L << (PLUS - 89)) | (1L << (MINUS - 89)) | (1L << (BOOL_CONSTANT - 89)) | (1L << (FLOAT_CONSTANT - 89)) | (1L << (DEC_CONSTANT - 89)) | (1L << (HEX_CONSTANT - 89)) | (1L << (IDENTIFIER - 89)))) != 0)) {
{
setState(412);
((Invoke_exprContext)_localctx).dyn_args = arg_list();
}
}
setState(415);
match(R_PAREN);
setState(416);
((Invoke_exprContext)_localctx).bsm = method_signature();
setState(417);
match(L_PAREN);
setState(419);
_errHandler.sync(this);
_la = _input.LA(1);
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__25) | (1L << T__26) | (1L << STRING_CONSTANT) | (1L << CLASS) | (1L << NULL))) != 0) || ((((_la - 89)) & ~0x3f) == 0 && ((1L << (_la - 89)) & ((1L << (PLUS - 89)) | (1L << (MINUS - 89)) | (1L << (BOOL_CONSTANT - 89)) | (1L << (FLOAT_CONSTANT - 89)) | (1L << (DEC_CONSTANT - 89)) | (1L << (HEX_CONSTANT - 89)) | (1L << (IDENTIFIER - 89)))) != 0)) {
{
setState(418);
((Invoke_exprContext)_localctx).staticargs = arg_list();
}
}
setState(421);
match(R_PAREN);
}
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 Binop_exprContext extends ParserRuleContext {
public ImmediateContext left;
public ImmediateContext right;
public BinopContext binop() {
return getRuleContext(BinopContext.class,0);
}
public List immediate() {
return getRuleContexts(ImmediateContext.class);
}
public ImmediateContext immediate(int i) {
return getRuleContext(ImmediateContext.class,i);
}
public Binop_exprContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_binop_expr; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof JimpleListener ) ((JimpleListener)listener).enterBinop_expr(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof JimpleListener ) ((JimpleListener)listener).exitBinop_expr(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof JimpleVisitor ) return ((JimpleVisitor extends T>)visitor).visitBinop_expr(this);
else return visitor.visitChildren(this);
}
}
public final Binop_exprContext binop_expr() throws RecognitionException {
Binop_exprContext _localctx = new Binop_exprContext(_ctx, getState());
enterRule(_localctx, 70, RULE_binop_expr);
try {
enterOuterAlt(_localctx, 1);
{
setState(425);
((Binop_exprContext)_localctx).left = immediate();
setState(426);
binop();
setState(427);
((Binop_exprContext)_localctx).right = immediate();
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class Unop_exprContext extends ParserRuleContext {
public UnopContext unop() {
return getRuleContext(UnopContext.class,0);
}
public ImmediateContext immediate() {
return getRuleContext(ImmediateContext.class,0);
}
public Unop_exprContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_unop_expr; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof JimpleListener ) ((JimpleListener)listener).enterUnop_expr(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof JimpleListener ) ((JimpleListener)listener).exitUnop_expr(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof JimpleVisitor ) return ((JimpleVisitor extends T>)visitor).visitUnop_expr(this);
else return visitor.visitChildren(this);
}
}
public final Unop_exprContext unop_expr() throws RecognitionException {
Unop_exprContext _localctx = new Unop_exprContext(_ctx, getState());
enterRule(_localctx, 72, RULE_unop_expr);
try {
enterOuterAlt(_localctx, 1);
{
setState(429);
unop();
setState(430);
immediate();
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class Method_subsignatureContext extends ParserRuleContext {
public TypeContext type() {
return getRuleContext(TypeContext.class,0);
}
public Method_nameContext method_name() {
return getRuleContext(Method_nameContext.class,0);
}
public TerminalNode L_PAREN() { return getToken(JimpleParser.L_PAREN, 0); }
public TerminalNode R_PAREN() { return getToken(JimpleParser.R_PAREN, 0); }
public Type_listContext type_list() {
return getRuleContext(Type_listContext.class,0);
}
public Method_subsignatureContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_method_subsignature; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof JimpleListener ) ((JimpleListener)listener).enterMethod_subsignature(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof JimpleListener ) ((JimpleListener)listener).exitMethod_subsignature(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof JimpleVisitor ) return ((JimpleVisitor extends T>)visitor).visitMethod_subsignature(this);
else return visitor.visitChildren(this);
}
}
public final Method_subsignatureContext method_subsignature() throws RecognitionException {
Method_subsignatureContext _localctx = new Method_subsignatureContext(_ctx, getState());
enterRule(_localctx, 74, RULE_method_subsignature);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(432);
type();
setState(433);
method_name();
setState(434);
match(L_PAREN);
setState(436);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==IDENTIFIER) {
{
setState(435);
type_list();
}
}
setState(438);
match(R_PAREN);
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class Method_signatureContext extends ParserRuleContext {
public IdentifierContext class_name;
public TerminalNode CMPLT() { return getToken(JimpleParser.CMPLT, 0); }
public TerminalNode COLON() { return getToken(JimpleParser.COLON, 0); }
public Method_subsignatureContext method_subsignature() {
return getRuleContext(Method_subsignatureContext.class,0);
}
public TerminalNode CMPGT() { return getToken(JimpleParser.CMPGT, 0); }
public IdentifierContext identifier() {
return getRuleContext(IdentifierContext.class,0);
}
public Method_signatureContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_method_signature; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof JimpleListener ) ((JimpleListener)listener).enterMethod_signature(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof JimpleListener ) ((JimpleListener)listener).exitMethod_signature(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof JimpleVisitor ) return ((JimpleVisitor extends T>)visitor).visitMethod_signature(this);
else return visitor.visitChildren(this);
}
}
public final Method_signatureContext method_signature() throws RecognitionException {
Method_signatureContext _localctx = new Method_signatureContext(_ctx, getState());
enterRule(_localctx, 76, RULE_method_signature);
try {
enterOuterAlt(_localctx, 1);
{
setState(440);
match(CMPLT);
setState(441);
((Method_signatureContext)_localctx).class_name = identifier();
setState(442);
match(COLON);
setState(443);
method_subsignature();
setState(444);
match(CMPGT);
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class ReferenceContext extends ParserRuleContext {
public IdentifierContext identifier() {
return getRuleContext(IdentifierContext.class,0);
}
public Array_descriptorContext array_descriptor() {
return getRuleContext(Array_descriptorContext.class,0);
}
public TerminalNode DOT() { return getToken(JimpleParser.DOT, 0); }
public Field_signatureContext field_signature() {
return getRuleContext(Field_signatureContext.class,0);
}
public ReferenceContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_reference; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof JimpleListener ) ((JimpleListener)listener).enterReference(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof JimpleListener ) ((JimpleListener)listener).exitReference(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof JimpleVisitor ) return ((JimpleVisitor extends T>)visitor).visitReference(this);
else return visitor.visitChildren(this);
}
}
public final ReferenceContext reference() throws RecognitionException {
ReferenceContext _localctx = new ReferenceContext(_ctx, getState());
enterRule(_localctx, 78, RULE_reference);
try {
setState(454);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,42,_ctx) ) {
case 1:
enterOuterAlt(_localctx, 1);
{
setState(446);
identifier();
setState(447);
array_descriptor();
}
break;
case 2:
enterOuterAlt(_localctx, 2);
{
setState(449);
identifier();
setState(450);
match(DOT);
setState(451);
field_signature();
}
break;
case 3:
enterOuterAlt(_localctx, 3);
{
setState(453);
field_signature();
}
break;
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class Field_signatureContext extends ParserRuleContext {
public IdentifierContext classname;
public IdentifierContext fieldname;
public TerminalNode CMPLT() { return getToken(JimpleParser.CMPLT, 0); }
public TerminalNode COLON() { return getToken(JimpleParser.COLON, 0); }
public TypeContext type() {
return getRuleContext(TypeContext.class,0);
}
public TerminalNode CMPGT() { return getToken(JimpleParser.CMPGT, 0); }
public List identifier() {
return getRuleContexts(IdentifierContext.class);
}
public IdentifierContext identifier(int i) {
return getRuleContext(IdentifierContext.class,i);
}
public Field_signatureContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_field_signature; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof JimpleListener ) ((JimpleListener)listener).enterField_signature(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof JimpleListener ) ((JimpleListener)listener).exitField_signature(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof JimpleVisitor ) return ((JimpleVisitor extends T>)visitor).visitField_signature(this);
else return visitor.visitChildren(this);
}
}
public final Field_signatureContext field_signature() throws RecognitionException {
Field_signatureContext _localctx = new Field_signatureContext(_ctx, getState());
enterRule(_localctx, 80, RULE_field_signature);
try {
enterOuterAlt(_localctx, 1);
{
setState(456);
match(CMPLT);
setState(457);
((Field_signatureContext)_localctx).classname = identifier();
setState(458);
match(COLON);
setState(459);
type();
setState(460);
((Field_signatureContext)_localctx).fieldname = identifier();
setState(461);
match(CMPGT);
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class Array_descriptorContext extends ParserRuleContext {
public TerminalNode L_BRACKET() { return getToken(JimpleParser.L_BRACKET, 0); }
public ImmediateContext immediate() {
return getRuleContext(ImmediateContext.class,0);
}
public TerminalNode R_BRACKET() { return getToken(JimpleParser.R_BRACKET, 0); }
public Array_descriptorContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_array_descriptor; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof JimpleListener ) ((JimpleListener)listener).enterArray_descriptor(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof JimpleListener ) ((JimpleListener)listener).exitArray_descriptor(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof JimpleVisitor ) return ((JimpleVisitor extends T>)visitor).visitArray_descriptor(this);
else return visitor.visitChildren(this);
}
}
public final Array_descriptorContext array_descriptor() throws RecognitionException {
Array_descriptorContext _localctx = new Array_descriptorContext(_ctx, getState());
enterRule(_localctx, 82, RULE_array_descriptor);
try {
enterOuterAlt(_localctx, 1);
{
setState(463);
match(L_BRACKET);
setState(464);
immediate();
setState(465);
match(R_BRACKET);
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class Arg_listContext extends ParserRuleContext {
public List immediate() {
return getRuleContexts(ImmediateContext.class);
}
public ImmediateContext immediate(int i) {
return getRuleContext(ImmediateContext.class,i);
}
public List COMMA() { return getTokens(JimpleParser.COMMA); }
public TerminalNode COMMA(int i) {
return getToken(JimpleParser.COMMA, i);
}
public Arg_listContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_arg_list; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof JimpleListener ) ((JimpleListener)listener).enterArg_list(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof JimpleListener ) ((JimpleListener)listener).exitArg_list(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof JimpleVisitor ) return ((JimpleVisitor extends T>)visitor).visitArg_list(this);
else return visitor.visitChildren(this);
}
}
public final Arg_listContext arg_list() throws RecognitionException {
Arg_listContext _localctx = new Arg_listContext(_ctx, getState());
enterRule(_localctx, 84, RULE_arg_list);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(467);
immediate();
setState(472);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==COMMA) {
{
{
setState(468);
match(COMMA);
setState(469);
immediate();
}
}
setState(474);
_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 ImmediateContext extends ParserRuleContext {
public IdentifierContext local;
public IdentifierContext identifier() {
return getRuleContext(IdentifierContext.class,0);
}
public ConstantContext constant() {
return getRuleContext(ConstantContext.class,0);
}
public ImmediateContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_immediate; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof JimpleListener ) ((JimpleListener)listener).enterImmediate(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof JimpleListener ) ((JimpleListener)listener).exitImmediate(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof JimpleVisitor ) return ((JimpleVisitor extends T>)visitor).visitImmediate(this);
else return visitor.visitChildren(this);
}
}
public final ImmediateContext immediate() throws RecognitionException {
ImmediateContext _localctx = new ImmediateContext(_ctx, getState());
enterRule(_localctx, 86, RULE_immediate);
try {
setState(477);
_errHandler.sync(this);
switch (_input.LA(1)) {
case IDENTIFIER:
enterOuterAlt(_localctx, 1);
{
setState(475);
((ImmediateContext)_localctx).local = identifier();
}
break;
case T__25:
case T__26:
case STRING_CONSTANT:
case CLASS:
case NULL:
case PLUS:
case MINUS:
case BOOL_CONSTANT:
case FLOAT_CONSTANT:
case DEC_CONSTANT:
case HEX_CONSTANT:
enterOuterAlt(_localctx, 2);
{
setState(476);
constant();
}
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 MethodhandleContext extends ParserRuleContext {
public TerminalNode STRING_CONSTANT() { return getToken(JimpleParser.STRING_CONSTANT, 0); }
public Method_signatureContext method_signature() {
return getRuleContext(Method_signatureContext.class,0);
}
public Field_signatureContext field_signature() {
return getRuleContext(Field_signatureContext.class,0);
}
public MethodhandleContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_methodhandle; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof JimpleListener ) ((JimpleListener)listener).enterMethodhandle(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof JimpleListener ) ((JimpleListener)listener).exitMethodhandle(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof JimpleVisitor ) return ((JimpleVisitor extends T>)visitor).visitMethodhandle(this);
else return visitor.visitChildren(this);
}
}
public final MethodhandleContext methodhandle() throws RecognitionException {
MethodhandleContext _localctx = new MethodhandleContext(_ctx, getState());
enterRule(_localctx, 88, RULE_methodhandle);
try {
enterOuterAlt(_localctx, 1);
{
setState(479);
match(T__25);
setState(480);
match(STRING_CONSTANT);
setState(483);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,45,_ctx) ) {
case 1:
{
setState(481);
method_signature();
}
break;
case 2:
{
setState(482);
field_signature();
}
break;
}
}
}
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 Token methodtype;
public TerminalNode BOOL_CONSTANT() { return getToken(JimpleParser.BOOL_CONSTANT, 0); }
public Integer_constantContext integer_constant() {
return getRuleContext(Integer_constantContext.class,0);
}
public TerminalNode FLOAT_CONSTANT() { return getToken(JimpleParser.FLOAT_CONSTANT, 0); }
public TerminalNode STRING_CONSTANT() { return getToken(JimpleParser.STRING_CONSTANT, 0); }
public TerminalNode CLASS() { return getToken(JimpleParser.CLASS, 0); }
public TerminalNode NULL() { return getToken(JimpleParser.NULL, 0); }
public MethodhandleContext methodhandle() {
return getRuleContext(MethodhandleContext.class,0);
}
public Method_subsignatureContext method_subsignature() {
return getRuleContext(Method_subsignatureContext.class,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 JimpleListener ) ((JimpleListener)listener).enterConstant(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof JimpleListener ) ((JimpleListener)listener).exitConstant(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof JimpleVisitor ) return ((JimpleVisitor extends T>)visitor).visitConstant(this);
else return visitor.visitChildren(this);
}
}
public final ConstantContext constant() throws RecognitionException {
ConstantContext _localctx = new ConstantContext(_ctx, getState());
enterRule(_localctx, 90, RULE_constant);
try {
setState(495);
_errHandler.sync(this);
switch (_input.LA(1)) {
case BOOL_CONSTANT:
enterOuterAlt(_localctx, 1);
{
setState(485);
match(BOOL_CONSTANT);
}
break;
case PLUS:
case MINUS:
case DEC_CONSTANT:
case HEX_CONSTANT:
enterOuterAlt(_localctx, 2);
{
setState(486);
integer_constant();
}
break;
case FLOAT_CONSTANT:
enterOuterAlt(_localctx, 3);
{
setState(487);
match(FLOAT_CONSTANT);
}
break;
case STRING_CONSTANT:
enterOuterAlt(_localctx, 4);
{
setState(488);
match(STRING_CONSTANT);
}
break;
case CLASS:
enterOuterAlt(_localctx, 5);
{
setState(489);
match(CLASS);
setState(490);
match(STRING_CONSTANT);
}
break;
case NULL:
enterOuterAlt(_localctx, 6);
{
setState(491);
match(NULL);
}
break;
case T__25:
enterOuterAlt(_localctx, 7);
{
setState(492);
methodhandle();
}
break;
case T__26:
enterOuterAlt(_localctx, 8);
{
setState(493);
((ConstantContext)_localctx).methodtype = match(T__26);
setState(494);
method_subsignature();
}
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 BinopContext extends ParserRuleContext {
public TerminalNode AND() { return getToken(JimpleParser.AND, 0); }
public TerminalNode OR() { return getToken(JimpleParser.OR, 0); }
public TerminalNode XOR() { return getToken(JimpleParser.XOR, 0); }
public TerminalNode CMP() { return getToken(JimpleParser.CMP, 0); }
public TerminalNode CMPG() { return getToken(JimpleParser.CMPG, 0); }
public TerminalNode CMPL() { return getToken(JimpleParser.CMPL, 0); }
public TerminalNode CMPEQ() { return getToken(JimpleParser.CMPEQ, 0); }
public TerminalNode CMPNE() { return getToken(JimpleParser.CMPNE, 0); }
public TerminalNode CMPGT() { return getToken(JimpleParser.CMPGT, 0); }
public TerminalNode CMPGE() { return getToken(JimpleParser.CMPGE, 0); }
public TerminalNode CMPLT() { return getToken(JimpleParser.CMPLT, 0); }
public TerminalNode CMPLE() { return getToken(JimpleParser.CMPLE, 0); }
public TerminalNode SHL() { return getToken(JimpleParser.SHL, 0); }
public TerminalNode SHR() { return getToken(JimpleParser.SHR, 0); }
public TerminalNode USHR() { return getToken(JimpleParser.USHR, 0); }
public TerminalNode PLUS() { return getToken(JimpleParser.PLUS, 0); }
public TerminalNode MINUS() { return getToken(JimpleParser.MINUS, 0); }
public TerminalNode MULT() { return getToken(JimpleParser.MULT, 0); }
public TerminalNode DIV() { return getToken(JimpleParser.DIV, 0); }
public TerminalNode MOD() { return getToken(JimpleParser.MOD, 0); }
public BinopContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_binop; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof JimpleListener ) ((JimpleListener)listener).enterBinop(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof JimpleListener ) ((JimpleListener)listener).exitBinop(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof JimpleVisitor ) return ((JimpleVisitor extends T>)visitor).visitBinop(this);
else return visitor.visitChildren(this);
}
}
public final BinopContext binop() throws RecognitionException {
BinopContext _localctx = new BinopContext(_ctx, getState());
enterRule(_localctx, 92, RULE_binop);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(497);
_la = _input.LA(1);
if ( !(((((_la - 37)) & ~0x3f) == 0 && ((1L << (_la - 37)) & ((1L << (CMP - 37)) | (1L << (CMPG - 37)) | (1L << (CMPL - 37)) | (1L << (AND - 37)) | (1L << (OR - 37)) | (1L << (XOR - 37)) | (1L << (MOD - 37)) | (1L << (CMPEQ - 37)) | (1L << (CMPNE - 37)) | (1L << (CMPGT - 37)) | (1L << (CMPGE - 37)) | (1L << (CMPLT - 37)) | (1L << (CMPLE - 37)) | (1L << (SHL - 37)) | (1L << (SHR - 37)) | (1L << (USHR - 37)) | (1L << (PLUS - 37)) | (1L << (MINUS - 37)) | (1L << (MULT - 37)) | (1L << (DIV - 37)))) != 0)) ) {
_errHandler.recoverInline(this);
}
else {
if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
_errHandler.reportMatch(this);
consume();
}
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static class UnopContext extends ParserRuleContext {
public TerminalNode LENGTHOF() { return getToken(JimpleParser.LENGTHOF, 0); }
public TerminalNode NEG() { return getToken(JimpleParser.NEG, 0); }
public UnopContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@Override public int getRuleIndex() { return RULE_unop; }
@Override
public void enterRule(ParseTreeListener listener) {
if ( listener instanceof JimpleListener ) ((JimpleListener)listener).enterUnop(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
if ( listener instanceof JimpleListener ) ((JimpleListener)listener).exitUnop(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
if ( visitor instanceof JimpleVisitor ) return ((JimpleVisitor extends T>)visitor).visitUnop(this);
else return visitor.visitChildren(this);
}
}
public final UnopContext unop() throws RecognitionException {
UnopContext _localctx = new UnopContext(_ctx, getState());
enterRule(_localctx, 94, RULE_unop);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
setState(499);
_la = _input.LA(1);
if ( !(_la==LENGTHOF || _la==NEG) ) {
_errHandler.recoverInline(this);
}
else {
if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
_errHandler.reportMatch(this);
consume();
}
}
}
catch (RecognitionException re) {
_localctx.exception = re;
_errHandler.reportError(this, re);
_errHandler.recover(this, re);
}
finally {
exitRule();
}
return _localctx;
}
public static final String _serializedATN =
"\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\3e\u01f8\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\3\2\3\2\3\3\5\3f\n\3\3\3\3"+
"\3\5\3j\n\3\3\4\7\4m\n\4\f\4\16\4p\13\4\3\4\7\4s\n\4\f\4\16\4v\13\4\3"+
"\4\3\4\3\4\5\4{\n\4\3\4\5\4~\n\4\3\4\3\4\7\4\u0082\n\4\f\4\16\4\u0085"+
"\13\4\3\4\3\4\3\4\3\5\3\5\3\5\3\5\3\6\3\6\3\7\3\7\3\7\5\7\u0093\n\7\3"+
"\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\5\b\u009d\n\b\3\t\3\t\3\t\5\t\u00a2\n\t"+
"\3\n\3\n\3\13\3\13\3\13\3\f\3\f\3\f\3\r\3\r\3\r\7\r\u00af\n\r\f\r\16\r"+
"\u00b2\13\r\3\16\3\16\3\16\7\16\u00b7\n\16\f\16\16\16\u00ba\13\16\3\17"+
"\3\17\5\17\u00be\n\17\3\20\7\20\u00c1\n\20\f\20\16\20\u00c4\13\20\3\20"+
"\3\20\3\20\3\20\3\21\7\21\u00cb\n\21\f\21\16\21\u00ce\13\21\3\21\3\21"+
"\5\21\u00d2\n\21\3\21\3\21\3\22\3\22\3\22\5\22\u00d9\n\22\3\23\3\23\3"+
"\23\3\24\3\24\3\24\3\24\3\24\5\24\u00e3\n\24\3\25\3\25\3\25\3\25\3\26"+
"\7\26\u00ea\n\26\f\26\16\26\u00ed\13\26\3\27\7\27\u00f0\n\27\f\27\16\27"+
"\u00f3\13\27\3\30\7\30\u00f6\n\30\f\30\16\30\u00f9\13\30\3\31\3\31\3\31"+
"\3\31\3\32\3\32\3\32\5\32\u0102\n\32\3\32\3\32\3\32\3\33\3\33\3\33\5\33"+
"\u010a\n\33\3\33\3\33\3\33\3\33\5\33\u0110\n\33\3\33\3\33\3\33\3\33\3"+
"\33\3\33\6\33\u0118\n\33\r\33\16\33\u0119\3\33\3\33\3\33\3\33\5\33\u0120"+
"\n\33\3\33\3\33\3\33\3\33\3\33\3\33\3\33\3\33\5\33\u012a\n\33\3\34\3\34"+
"\3\34\3\34\3\34\3\34\5\34\u0132\n\34\3\34\3\34\3\34\5\34\u0137\n\34\3"+
"\35\3\35\3\35\3\35\3\35\3\35\3\35\5\35\u0140\n\35\3\36\3\36\3\36\3\36"+
"\3\36\3\37\3\37\3\37\5\37\u014a\n\37\3 \3 \3 \3!\3!\3!\3!\3!\3!\3!\3!"+
"\3!\3!\3\"\3\"\3\"\3\"\3\"\3\"\3\"\3\"\3\"\3\"\3\"\3\"\3\"\3\"\3\"\3\""+
"\5\"\u0169\n\"\3\"\6\"\u016c\n\"\r\"\16\"\u016d\3\"\3\"\3\"\3\"\3\"\3"+
"\"\3\"\3\"\3\"\3\"\3\"\3\"\5\"\u017c\n\"\3#\3#\5#\u0180\n#\3$\3$\3$\3"+
"$\3$\3$\5$\u0188\n$\3$\3$\3$\3$\3$\3$\5$\u0190\n$\3$\3$\3$\3$\3$\3$\3"+
"$\3$\5$\u019a\n$\3$\3$\3$\3$\5$\u01a0\n$\3$\3$\3$\3$\5$\u01a6\n$\3$\3"+
"$\5$\u01aa\n$\3%\3%\3%\3%\3&\3&\3&\3\'\3\'\3\'\3\'\5\'\u01b7\n\'\3\'\3"+
"\'\3(\3(\3(\3(\3(\3(\3)\3)\3)\3)\3)\3)\3)\3)\5)\u01c9\n)\3*\3*\3*\3*\3"+
"*\3*\3*\3+\3+\3+\3+\3,\3,\3,\7,\u01d9\n,\f,\16,\u01dc\13,\3-\3-\5-\u01e0"+
"\n-\3.\3.\3.\3.\5.\u01e6\n.\3/\3/\3/\3/\3/\3/\3/\3/\3/\3/\5/\u01f2\n/"+
"\3\60\3\60\3\61\3\61\3\61\2\2\62\2\4\6\b\n\f\16\20\22\24\26\30\32\34\36"+
" \"$&(*,.\60\62\64\668:<>@BDFHJLNPRTVXZ\\^`\2\b\3\2[\\\3\2bc\3\2\5\13"+
"\4\2\25\26!!\4\2\')N^\4\2\60\60\62\62\2\u0219\2b\3\2\2\2\4e\3\2\2\2\6"+
"n\3\2\2\2\b\u0089\3\2\2\2\n\u008d\3\2\2\2\f\u0092\3\2\2\2\16\u009c\3\2"+
"\2\2\20\u00a1\3\2\2\2\22\u00a3\3\2\2\2\24\u00a5\3\2\2\2\26\u00a8\3\2\2"+
"\2\30\u00ab\3\2\2\2\32\u00b3\3\2\2\2\34\u00bd\3\2\2\2\36\u00c2\3\2\2\2"+
" \u00cc\3\2\2\2\"\u00d8\3\2\2\2$\u00da\3\2\2\2&\u00e2\3\2\2\2(\u00e4\3"+
"\2\2\2*\u00eb\3\2\2\2,\u00f1\3\2\2\2.\u00f7\3\2\2\2\60\u00fa\3\2\2\2\62"+
"\u0101\3\2\2\2\64\u0129\3\2\2\2\66\u0136\3\2\2\28\u013f\3\2\2\2:\u0141"+
"\3\2\2\2<\u0149\3\2\2\2>\u014b\3\2\2\2@\u014e\3\2\2\2B\u017b\3\2\2\2D"+
"\u017f\3\2\2\2F\u01a9\3\2\2\2H\u01ab\3\2\2\2J\u01af\3\2\2\2L\u01b2\3\2"+
"\2\2N\u01ba\3\2\2\2P\u01c8\3\2\2\2R\u01ca\3\2\2\2T\u01d1\3\2\2\2V\u01d5"+
"\3\2\2\2X\u01df\3\2\2\2Z\u01e1\3\2\2\2\\\u01f1\3\2\2\2^\u01f3\3\2\2\2"+
"`\u01f5\3\2\2\2bc\7d\2\2c\3\3\2\2\2df\t\2\2\2ed\3\2\2\2ef\3\2\2\2fg\3"+
"\2\2\2gi\t\3\2\2hj\7\3\2\2ih\3\2\2\2ij\3\2\2\2j\5\3\2\2\2km\5\b\5\2lk"+
"\3\2\2\2mp\3\2\2\2nl\3\2\2\2no\3\2\2\2ot\3\2\2\2pn\3\2\2\2qs\5\f\7\2r"+
"q\3\2\2\2sv\3\2\2\2tr\3\2\2\2tu\3\2\2\2uw\3\2\2\2vt\3\2\2\2wx\5\22\n\2"+
"xz\7d\2\2y{\5\24\13\2zy\3\2\2\2z{\3\2\2\2{}\3\2\2\2|~\5\26\f\2}|\3\2\2"+
"\2}~\3\2\2\2~\177\3\2\2\2\177\u0083\7C\2\2\u0080\u0082\5\34\17\2\u0081"+
"\u0080\3\2\2\2\u0082\u0085\3\2\2\2\u0083\u0081\3\2\2\2\u0083\u0084\3\2"+
"\2\2\u0084\u0086\3\2\2\2\u0085\u0083\3\2\2\2\u0086\u0087\7D\2\2\u0087"+
"\u0088\7\2\2\3\u0088\7\3\2\2\2\u0089\u008a\7\4\2\2\u008a\u008b\5\2\2\2"+
"\u008b\u008c\7E\2\2\u008c\t\3\2\2\2\u008d\u008e\t\4\2\2\u008e\13\3\2\2"+
"\2\u008f\u0093\5\n\6\2\u0090\u0093\7\f\2\2\u0091\u0093\7\r\2\2\u0092\u008f"+
"\3\2\2\2\u0092\u0090\3\2\2\2\u0092\u0091\3\2\2\2\u0093\r\3\2\2\2\u0094"+
"\u009d\5\n\6\2\u0095\u009d\7\f\2\2\u0096\u009d\7\16\2\2\u0097\u009d\7"+
"\17\2\2\u0098\u009d\7\20\2\2\u0099\u009d\7\21\2\2\u009a\u009d\7\22\2\2"+
"\u009b\u009d\7\23\2\2\u009c\u0094\3\2\2\2\u009c\u0095\3\2\2\2\u009c\u0096"+
"\3\2\2\2\u009c\u0097\3\2\2\2\u009c\u0098\3\2\2\2\u009c\u0099\3\2\2\2\u009c"+
"\u009a\3\2\2\2\u009c\u009b\3\2\2\2\u009d\17\3\2\2\2\u009e\u00a2\5\n\6"+
"\2\u009f\u00a2\7\23\2\2\u00a0\u00a2\7\24\2\2\u00a1\u009e\3\2\2\2\u00a1"+
"\u009f\3\2\2\2\u00a1\u00a0\3\2\2\2\u00a2\21\3\2\2\2\u00a3\u00a4\t\5\2"+
"\2\u00a4\23\3\2\2\2\u00a5\u00a6\7\"\2\2\u00a6\u00a7\5\2\2\2\u00a7\25\3"+
"\2\2\2\u00a8\u00a9\7#\2\2\u00a9\u00aa\5\32\16\2\u00aa\27\3\2\2\2\u00ab"+
"\u00b0\5\2\2\2\u00ac\u00ad\7F\2\2\u00ad\u00af\7G\2\2\u00ae\u00ac\3\2\2"+
"\2\u00af\u00b2\3\2\2\2\u00b0\u00ae\3\2\2\2\u00b0\u00b1\3\2\2\2\u00b1\31"+
"\3\2\2\2\u00b2\u00b0\3\2\2\2\u00b3\u00b8\5\30\r\2\u00b4\u00b5\7B\2\2\u00b5"+
"\u00b7\5\30\r\2\u00b6\u00b4\3\2\2\2\u00b7\u00ba\3\2\2\2\u00b8\u00b6\3"+
"\2\2\2\u00b8\u00b9\3\2\2\2\u00b9\33\3\2\2\2\u00ba\u00b8\3\2\2\2\u00bb"+
"\u00be\5\36\20\2\u00bc\u00be\5 \21\2\u00bd\u00bb\3\2\2\2\u00bd\u00bc\3"+
"\2\2\2\u00be\35\3\2\2\2\u00bf\u00c1\5\20\t\2\u00c0\u00bf\3\2\2\2\u00c1"+
"\u00c4\3\2\2\2\u00c2\u00c0\3\2\2\2\u00c2\u00c3\3\2\2\2\u00c3\u00c5\3\2"+
"\2\2\u00c4\u00c2\3\2\2\2\u00c5\u00c6\5\30\r\2\u00c6\u00c7\5\2\2\2\u00c7"+
"\u00c8\7E\2\2\u00c8\37\3\2\2\2\u00c9\u00cb\5\16\b\2\u00ca\u00c9\3\2\2"+
"\2\u00cb\u00ce\3\2\2\2\u00cc\u00ca\3\2\2\2\u00cc\u00cd\3\2\2\2\u00cd\u00cf"+
"\3\2\2\2\u00ce\u00cc\3\2\2\2\u00cf\u00d1\5L\'\2\u00d0\u00d2\5$\23\2\u00d1"+
"\u00d0\3\2\2\2\u00d1\u00d2\3\2\2\2\u00d2\u00d3\3\2\2\2\u00d3\u00d4\5&"+
"\24\2\u00d4!\3\2\2\2\u00d5\u00d9\7\27\2\2\u00d6\u00d9\7\30\2\2\u00d7\u00d9"+
"\5\2\2\2\u00d8\u00d5\3\2\2\2\u00d8\u00d6\3\2\2\2\u00d8\u00d7\3\2\2\2\u00d9"+
"#\3\2\2\2\u00da\u00db\7<\2\2\u00db\u00dc\5\32\16\2\u00dc%\3\2\2\2\u00dd"+
"\u00e3\7E\2\2\u00de\u00df\7C\2\2\u00df\u00e0\5(\25\2\u00e0\u00e1\7D\2"+
"\2\u00e1\u00e3\3\2\2\2\u00e2\u00dd\3\2\2\2\u00e2\u00de\3\2\2\2\u00e3\'"+
"\3\2\2\2\u00e4\u00e5\5.\30\2\u00e5\u00e6\5,\27\2\u00e6\u00e7\5*\26\2\u00e7"+
")\3\2\2\2\u00e8\u00ea\5@!\2\u00e9\u00e8\3\2\2\2\u00ea\u00ed\3\2\2\2\u00eb"+
"\u00e9\3\2\2\2\u00eb\u00ec\3\2\2\2\u00ec+\3\2\2\2\u00ed\u00eb\3\2\2\2"+
"\u00ee\u00f0\5\62\32\2\u00ef\u00ee\3\2\2\2\u00f0\u00f3\3\2\2\2\u00f1\u00ef"+
"\3\2\2\2\u00f1\u00f2\3\2\2\2\u00f2-\3\2\2\2\u00f3\u00f1\3\2\2\2\u00f4"+
"\u00f6\5\60\31\2\u00f5\u00f4\3\2\2\2\u00f6\u00f9\3\2\2\2\u00f7\u00f5\3"+
"\2\2\2\u00f7\u00f8\3\2\2\2\u00f8/\3\2\2\2\u00f9\u00f7\3\2\2\2\u00fa\u00fb"+
"\5\30\r\2\u00fb\u00fc\5V,\2\u00fc\u00fd\7E\2\2\u00fd\61\3\2\2\2\u00fe"+
"\u00ff\5\2\2\2\u00ff\u0100\7J\2\2\u0100\u0102\3\2\2\2\u0101\u00fe\3\2"+
"\2\2\u0101\u0102\3\2\2\2\u0102\u0103\3\2\2\2\u0103\u0104\5\64\33\2\u0104"+
"\u0105\7E\2\2\u0105\63\3\2\2\2\u0106\u012a\5\66\34\2\u0107\u0108\7.\2"+
"\2\u0108\u010a\5D#\2\u0109\u0107\3\2\2\2\u0109\u010a\3\2\2\2\u010a\u010b"+
"\3\2\2\2\u010b\u012a\5> \2\u010c\u012a\5F$\2\u010d\u010f\7\67\2\2\u010e"+
"\u0110\5X-\2\u010f\u010e\3\2\2\2\u010f\u0110\3\2\2\2\u0110\u012a\3\2\2"+
"\2\u0111\u0112\7\61\2\2\u0112\u0113\7H\2\2\u0113\u0114\5X-\2\u0114\u0115"+
"\7I\2\2\u0115\u0117\7C\2\2\u0116\u0118\5:\36\2\u0117\u0116\3\2\2\2\u0118"+
"\u0119\3\2\2\2\u0119\u0117\3\2\2\2\u0119\u011a\3\2\2\2\u011a\u011b\3\2"+
"\2\2\u011b\u011c\7D\2\2\u011c\u012a\3\2\2\2\u011d\u011f\78\2\2\u011e\u0120"+
"\5X-\2\u011f\u011e\3\2\2\2\u011f\u0120\3\2\2\2\u0120\u012a\3\2\2\2\u0121"+
"\u0122\7=\2\2\u0122\u012a\5X-\2\u0123\u0124\7+\2\2\u0124\u012a\5X-\2\u0125"+
"\u0126\7,\2\2\u0126\u012a\5X-\2\u0127\u012a\7\66\2\2\u0128\u012a\7$\2"+
"\2\u0129\u0106\3\2\2\2\u0129\u0109\3\2\2\2\u0129\u010c\3\2\2\2\u0129\u010d"+
"\3\2\2\2\u0129\u0111\3\2\2\2\u0129\u011d\3\2\2\2\u0129\u0121\3\2\2\2\u0129"+
"\u0123\3\2\2\2\u0129\u0125\3\2\2\2\u0129\u0127\3\2\2\2\u0129\u0128\3\2"+
"\2\2\u012a\65\3\2\2\2\u012b\u012c\5\2\2\2\u012c\u012d\7M\2\2\u012d\u012e"+
"\58\35\2\u012e\u0137\3\2\2\2\u012f\u0132\5P)\2\u0130\u0132\5\2\2\2\u0131"+
"\u012f\3\2\2\2\u0131\u0130\3\2\2\2\u0132\u0133\3\2\2\2\u0133\u0134\7L"+
"\2\2\u0134\u0135\5B\"\2\u0135\u0137\3\2\2\2\u0136\u012b\3\2\2\2\u0136"+
"\u0131\3\2\2\2\u0137\67\3\2\2\2\u0138\u0139\7\31\2\2\u0139\u013a\7b\2"+
"\2\u013a\u013b\7J\2\2\u013b\u0140\5\30\r\2\u013c\u013d\7\32\2\2\u013d"+
"\u0140\5\30\r\2\u013e\u0140\7\33\2\2\u013f\u0138\3\2\2\2\u013f\u013c\3"+
"\2\2\2\u013f\u013e\3\2\2\2\u01409\3\2\2\2\u0141\u0142\5<\37\2\u0142\u0143"+
"\7J\2\2\u0143\u0144\5> \2\u0144\u0145\7E\2\2\u0145;\3\2\2\2\u0146\u0147"+
"\7%\2\2\u0147\u014a\5\4\3\2\u0148\u014a\7*\2\2\u0149\u0146\3\2\2\2\u0149"+
"\u0148\3\2\2\2\u014a=\3\2\2\2\u014b\u014c\7-\2\2\u014c\u014d\5\2\2\2\u014d"+
"?\3\2\2\2\u014e\u014f\7&\2\2\u014f\u0150\5\2\2\2\u0150\u0151\7?\2\2\u0151"+
"\u0152\5\2\2\2\u0152\u0153\7@\2\2\u0153\u0154\5\2\2\2\u0154\u0155\7A\2"+
"\2\u0155\u0156\5\2\2\2\u0156\u0157\7E\2\2\u0157A\3\2\2\2\u0158\u017c\5"+
"X-\2\u0159\u017c\5P)\2\u015a\u015b\7\65\2\2\u015b\u017c\5\2\2\2\u015c"+
"\u015d\7\63\2\2\u015d\u015e\7H\2\2\u015e\u015f\5\30\r\2\u015f\u0160\7"+
"I\2\2\u0160\u0161\5T+\2\u0161\u017c\3\2\2\2\u0162\u0163\7\64\2\2\u0163"+
"\u0164\7H\2\2\u0164\u0165\5\30\r\2\u0165\u016b\7I\2\2\u0166\u0168\7F\2"+
"\2\u0167\u0169\5X-\2\u0168\u0167\3\2\2\2\u0168\u0169\3\2\2\2\u0169\u016a"+
"\3\2\2\2\u016a\u016c\7G\2\2\u016b\u0166\3\2\2\2\u016c\u016d\3\2\2\2\u016d"+
"\u016b\3\2\2\2\u016d\u016e\3\2\2\2\u016e\u017c\3\2\2\2\u016f\u0170\7H"+
"\2\2\u0170\u0171\5\30\r\2\u0171\u0172\7I\2\2\u0172\u0173\5X-\2\u0173\u017c"+
"\3\2\2\2\u0174\u0175\5X-\2\u0175\u0176\7/\2\2\u0176\u0177\5\30\r\2\u0177"+
"\u017c\3\2\2\2\u0178\u017c\5H%\2\u0179\u017c\5F$\2\u017a\u017c\5J&\2\u017b"+
"\u0158\3\2\2\2\u017b\u0159\3\2\2\2\u017b\u015a\3\2\2\2\u017b\u015c\3\2"+
"\2\2\u017b\u0162\3\2\2\2\u017b\u016f\3\2\2\2\u017b\u0174\3\2\2\2\u017b"+
"\u0178\3\2\2\2\u017b\u0179\3\2\2\2\u017b\u017a\3\2\2\2\u017cC\3\2\2\2"+
"\u017d\u0180\5H%\2\u017e\u0180\5J&\2\u017f\u017d\3\2\2\2\u017f\u017e\3"+
"\2\2\2\u0180E\3\2\2\2\u0181\u0182\79\2\2\u0182\u0183\5\2\2\2\u0183\u0184"+
"\7K\2\2\u0184\u0185\5N(\2\u0185\u0187\7H\2\2\u0186\u0188\5V,\2\u0187\u0186"+
"\3\2\2\2\u0187\u0188\3\2\2\2\u0188\u0189\3\2\2\2\u0189\u018a\7I\2\2\u018a"+
"\u01aa\3\2\2\2\u018b\u018c\7:\2\2\u018c\u018d\5N(\2\u018d\u018f\7H\2\2"+
"\u018e\u0190\5V,\2\u018f\u018e\3\2\2\2\u018f\u0190\3\2\2\2\u0190\u0191"+
"\3\2\2\2\u0191\u0192\7I\2\2\u0192\u01aa\3\2\2\2\u0193\u0194\7;\2\2\u0194"+
"\u0195\7 \2\2\u0195\u0196\7V\2\2\u0196\u0197\5\30\r\2\u0197\u0199\7H\2"+
"\2\u0198\u019a\5\32\16\2\u0199\u0198\3\2\2\2\u0199\u019a\3\2\2\2\u019a"+
"\u019b\3\2\2\2\u019b\u019c\7I\2\2\u019c\u019d\7T\2\2\u019d\u019f\7H\2"+
"\2\u019e\u01a0\5V,\2\u019f\u019e\3\2\2\2\u019f\u01a0\3\2\2\2\u01a0\u01a1"+
"\3\2\2\2\u01a1\u01a2\7I\2\2\u01a2\u01a3\5N(\2\u01a3\u01a5\7H\2\2\u01a4"+
"\u01a6\5V,\2\u01a5\u01a4\3\2\2\2\u01a5\u01a6\3\2\2\2\u01a6\u01a7\3\2\2"+
"\2\u01a7\u01a8\7I\2\2\u01a8\u01aa\3\2\2\2\u01a9\u0181\3\2\2\2\u01a9\u018b"+
"\3\2\2\2\u01a9\u0193\3\2\2\2\u01aaG\3\2\2\2\u01ab\u01ac\5X-\2\u01ac\u01ad"+
"\5^\60\2\u01ad\u01ae\5X-\2\u01aeI\3\2\2\2\u01af\u01b0\5`\61\2\u01b0\u01b1"+
"\5X-\2\u01b1K\3\2\2\2\u01b2\u01b3\5\30\r\2\u01b3\u01b4\5\"\22\2\u01b4"+
"\u01b6\7H\2\2\u01b5\u01b7\5\32\16\2\u01b6\u01b5\3\2\2\2\u01b6\u01b7\3"+
"\2\2\2\u01b7\u01b8\3\2\2\2\u01b8\u01b9\7I\2\2\u01b9M\3\2\2\2\u01ba\u01bb"+
"\7V\2\2\u01bb\u01bc\5\2\2\2\u01bc\u01bd\7J\2\2\u01bd\u01be\5L\'\2\u01be"+
"\u01bf\7T\2\2\u01bfO\3\2\2\2\u01c0\u01c1\5\2\2\2\u01c1\u01c2\5T+\2\u01c2"+
"\u01c9\3\2\2\2\u01c3\u01c4\5\2\2\2\u01c4\u01c5\7K\2\2\u01c5\u01c6\5R*"+
"\2\u01c6\u01c9\3\2\2\2\u01c7\u01c9\5R*\2\u01c8\u01c0\3\2\2\2\u01c8\u01c3"+
"\3\2\2\2\u01c8\u01c7\3\2\2\2\u01c9Q\3\2\2\2\u01ca\u01cb\7V\2\2\u01cb\u01cc"+
"\5\2\2\2\u01cc\u01cd\7J\2\2\u01cd\u01ce\5\30\r\2\u01ce\u01cf\5\2\2\2\u01cf"+
"\u01d0\7T\2\2\u01d0S\3\2\2\2\u01d1\u01d2\7F\2\2\u01d2\u01d3\5X-\2\u01d3"+
"\u01d4\7G\2\2\u01d4U\3\2\2\2\u01d5\u01da\5X-\2\u01d6\u01d7\7B\2\2\u01d7"+
"\u01d9\5X-\2\u01d8\u01d6\3\2\2\2\u01d9\u01dc\3\2\2\2\u01da\u01d8\3\2\2"+
"\2\u01da\u01db\3\2\2\2\u01dbW\3\2\2\2\u01dc\u01da\3\2\2\2\u01dd\u01e0"+
"\5\2\2\2\u01de\u01e0\5\\/\2\u01df\u01dd\3\2\2\2\u01df\u01de\3\2\2\2\u01e0"+
"Y\3\2\2\2\u01e1\u01e2\7\34\2\2\u01e2\u01e5\7 \2\2\u01e3\u01e6\5N(\2\u01e4"+
"\u01e6\5R*\2\u01e5\u01e3\3\2\2\2\u01e5\u01e4\3\2\2\2\u01e6[\3\2\2\2\u01e7"+
"\u01f2\7`\2\2\u01e8\u01f2\5\4\3\2\u01e9\u01f2\7a\2\2\u01ea\u01f2\7 \2"+
"\2\u01eb\u01ec\7!\2\2\u01ec\u01f2\7 \2\2\u01ed\u01f2\7>\2\2\u01ee\u01f2"+
"\5Z.\2\u01ef\u01f0\7\35\2\2\u01f0\u01f2\5L\'\2\u01f1\u01e7\3\2\2\2\u01f1"+
"\u01e8\3\2\2\2\u01f1\u01e9\3\2\2\2\u01f1\u01ea\3\2\2\2\u01f1\u01eb\3\2"+
"\2\2\u01f1\u01ed\3\2\2\2\u01f1\u01ee\3\2\2\2\u01f1\u01ef\3\2\2\2\u01f2"+
"]\3\2\2\2\u01f3\u01f4\t\6\2\2\u01f4_\3\2\2\2\u01f5\u01f6\t\7\2\2\u01f6"+
"a\3\2\2\2\61eintz}\u0083\u0092\u009c\u00a1\u00b0\u00b8\u00bd\u00c2\u00cc"+
"\u00d1\u00d8\u00e2\u00eb\u00f1\u00f7\u0101\u0109\u010f\u0119\u011f\u0129"+
"\u0131\u0136\u013f\u0149\u0168\u016d\u017b\u017f\u0187\u018f\u0199\u019f"+
"\u01a5\u01a9\u01b6\u01c8\u01da\u01df\u01e5\u01f1";
public static final ATN _ATN =
new ATNDeserializer().deserialize(_serializedATN.toCharArray());
static {
_decisionToDFA = new DFA[_ATN.getNumberOfDecisions()];
for (int i = 0; i < _ATN.getNumberOfDecisions(); i++) {
_decisionToDFA[i] = new DFA(_ATN.getDecisionState(i), i);
}
}
}