// $ANTLR 3.5.2 /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g 2016-09-09 13:35:49 package org.jf.smali; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Iterables; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import org.antlr.runtime.BitSet; import org.antlr.runtime.*; import org.antlr.runtime.tree.CommonTree; import org.antlr.runtime.tree.TreeNodeStream; import org.antlr.runtime.tree.TreeParser; import org.antlr.runtime.tree.TreeRuleReturnScope; import org.jf.dexlib2.*; import org.jf.dexlib2.builder.Label; import org.jf.dexlib2.builder.MethodImplementationBuilder; import org.jf.dexlib2.builder.SwitchLabelElement; import org.jf.dexlib2.builder.instruction.*; import org.jf.dexlib2.iface.Annotation; import org.jf.dexlib2.iface.AnnotationElement; import org.jf.dexlib2.iface.ClassDef; import org.jf.dexlib2.iface.MethodImplementation; import org.jf.dexlib2.iface.reference.FieldReference; import org.jf.dexlib2.iface.reference.MethodReference; import org.jf.dexlib2.iface.value.EncodedValue; import org.jf.dexlib2.immutable.ImmutableAnnotation; import org.jf.dexlib2.immutable.ImmutableAnnotationElement; import org.jf.dexlib2.immutable.reference.ImmutableFieldReference; import org.jf.dexlib2.immutable.reference.ImmutableMethodReference; import org.jf.dexlib2.immutable.reference.ImmutableMethodProtoReference; import org.jf.dexlib2.immutable.reference.ImmutableReference; import org.jf.dexlib2.immutable.reference.ImmutableTypeReference; import org.jf.dexlib2.immutable.value.*; import org.jf.dexlib2.util.MethodUtil; import org.jf.dexlib2.writer.InstructionFactory; import org.jf.dexlib2.writer.builder.*; import org.jf.util.LinearSearch; import java.util.*; import org.antlr.runtime.*; import org.antlr.runtime.tree.*; import java.util.Stack; import java.util.List; import java.util.ArrayList; @SuppressWarnings("all") public class smaliTreeWalker extends TreeParser { public static final String[] tokenNames = new String[] { "", "", "", "", "ACCESS_SPEC", "ANNOTATION_DIRECTIVE", "ANNOTATION_VISIBILITY", "ARRAY_DATA_DIRECTIVE", "ARRAY_TYPE_PREFIX", "ARROW", "BOOL_LITERAL", "BYTE_LITERAL", "CATCHALL_DIRECTIVE", "CATCH_DIRECTIVE", "CHAR_LITERAL", "CLASS_DESCRIPTOR", "CLASS_DIRECTIVE", "CLOSE_BRACE", "CLOSE_PAREN", "COLON", "COMMA", "DOTDOT", "DOUBLE_LITERAL", "DOUBLE_LITERAL_OR_ID", "END_ANNOTATION_DIRECTIVE", "END_ARRAY_DATA_DIRECTIVE", "END_FIELD_DIRECTIVE", "END_LOCAL_DIRECTIVE", "END_METHOD_DIRECTIVE", "END_PACKED_SWITCH_DIRECTIVE", "END_PARAMETER_DIRECTIVE", "END_SPARSE_SWITCH_DIRECTIVE", "END_SUBANNOTATION_DIRECTIVE", "ENUM_DIRECTIVE", "EPILOGUE_DIRECTIVE", "EQUAL", "FIELD_DIRECTIVE", "FIELD_OFFSET", "FLOAT_LITERAL", "FLOAT_LITERAL_OR_ID", "IMPLEMENTS_DIRECTIVE", "INLINE_INDEX", "INSTRUCTION_FORMAT10t", "INSTRUCTION_FORMAT10x", "INSTRUCTION_FORMAT10x_ODEX", "INSTRUCTION_FORMAT11n", "INSTRUCTION_FORMAT11x", "INSTRUCTION_FORMAT12x", "INSTRUCTION_FORMAT12x_OR_ID", "INSTRUCTION_FORMAT20bc", "INSTRUCTION_FORMAT20t", "INSTRUCTION_FORMAT21c_FIELD", "INSTRUCTION_FORMAT21c_FIELD_ODEX", "INSTRUCTION_FORMAT21c_STRING", "INSTRUCTION_FORMAT21c_TYPE", "INSTRUCTION_FORMAT21ih", "INSTRUCTION_FORMAT21lh", "INSTRUCTION_FORMAT21s", "INSTRUCTION_FORMAT21t", "INSTRUCTION_FORMAT22b", "INSTRUCTION_FORMAT22c_FIELD", "INSTRUCTION_FORMAT22c_FIELD_ODEX", "INSTRUCTION_FORMAT22c_TYPE", "INSTRUCTION_FORMAT22cs_FIELD", "INSTRUCTION_FORMAT22s", "INSTRUCTION_FORMAT22s_OR_ID", "INSTRUCTION_FORMAT22t", "INSTRUCTION_FORMAT22x", "INSTRUCTION_FORMAT23x", "INSTRUCTION_FORMAT30t", "INSTRUCTION_FORMAT31c", "INSTRUCTION_FORMAT31i", "INSTRUCTION_FORMAT31i_OR_ID", "INSTRUCTION_FORMAT31t", "INSTRUCTION_FORMAT32x", "INSTRUCTION_FORMAT35c_METHOD", "INSTRUCTION_FORMAT35c_METHOD_ODEX", "INSTRUCTION_FORMAT35c_TYPE", "INSTRUCTION_FORMAT35mi_METHOD", "INSTRUCTION_FORMAT35ms_METHOD", "INSTRUCTION_FORMAT3rc_METHOD", "INSTRUCTION_FORMAT3rc_METHOD_ODEX", "INSTRUCTION_FORMAT3rc_TYPE", "INSTRUCTION_FORMAT3rmi_METHOD", "INSTRUCTION_FORMAT3rms_METHOD", "INSTRUCTION_FORMAT45cc_METHOD", "INSTRUCTION_FORMAT4rcc_METHOD", "INSTRUCTION_FORMAT51l", "INTEGER_LITERAL", "INVALID_TOKEN", "I_ACCESS_LIST", "I_ANNOTATION", "I_ANNOTATIONS", "I_ANNOTATION_ELEMENT", "I_ARRAY_ELEMENTS", "I_ARRAY_ELEMENT_SIZE", "I_CATCH", "I_CATCHALL", "I_CATCHES", "I_CLASS_DEF", "I_ENCODED_ARRAY", "I_ENCODED_ENUM", "I_ENCODED_FIELD", "I_ENCODED_METHOD", "I_END_LOCAL", "I_EPILOGUE", "I_FIELD", "I_FIELDS", "I_FIELD_INITIAL_VALUE", "I_FIELD_TYPE", "I_IMPLEMENTS", "I_LABEL", "I_LINE", "I_LOCAL", "I_LOCALS", "I_METHOD", "I_METHODS", "I_METHOD_PROTOTYPE", "I_METHOD_RETURN_TYPE", "I_ORDERED_METHOD_ITEMS", "I_PACKED_SWITCH_ELEMENTS", "I_PACKED_SWITCH_START_KEY", "I_PARAMETER", "I_PARAMETERS", "I_PARAMETER_NOT_SPECIFIED", "I_PROLOGUE", "I_REGISTERS", "I_REGISTER_LIST", "I_REGISTER_RANGE", "I_RESTART_LOCAL", "I_SOURCE", "I_SPARSE_SWITCH_ELEMENTS", "I_STATEMENT_ARRAY_DATA", "I_STATEMENT_FORMAT10t", "I_STATEMENT_FORMAT10x", "I_STATEMENT_FORMAT11n", "I_STATEMENT_FORMAT11x", "I_STATEMENT_FORMAT12x", "I_STATEMENT_FORMAT20bc", "I_STATEMENT_FORMAT20t", "I_STATEMENT_FORMAT21c_FIELD", "I_STATEMENT_FORMAT21c_STRING", "I_STATEMENT_FORMAT21c_TYPE", "I_STATEMENT_FORMAT21ih", "I_STATEMENT_FORMAT21lh", "I_STATEMENT_FORMAT21s", "I_STATEMENT_FORMAT21t", "I_STATEMENT_FORMAT22b", "I_STATEMENT_FORMAT22c_FIELD", "I_STATEMENT_FORMAT22c_TYPE", "I_STATEMENT_FORMAT22s", "I_STATEMENT_FORMAT22t", "I_STATEMENT_FORMAT22x", "I_STATEMENT_FORMAT23x", "I_STATEMENT_FORMAT30t", "I_STATEMENT_FORMAT31c", "I_STATEMENT_FORMAT31i", "I_STATEMENT_FORMAT31t", "I_STATEMENT_FORMAT32x", "I_STATEMENT_FORMAT35c_METHOD", "I_STATEMENT_FORMAT35c_TYPE", "I_STATEMENT_FORMAT3rc_METHOD", "I_STATEMENT_FORMAT3rc_TYPE", "I_STATEMENT_FORMAT45cc_METHOD", "I_STATEMENT_FORMAT4rcc_METHOD", "I_STATEMENT_FORMAT51l", "I_STATEMENT_PACKED_SWITCH", "I_STATEMENT_SPARSE_SWITCH", "I_SUBANNOTATION", "I_SUPER", "LINE_COMMENT", "LINE_DIRECTIVE", "LOCALS_DIRECTIVE", "LOCAL_DIRECTIVE", "LONG_LITERAL", "MEMBER_NAME", "METHOD_DIRECTIVE", "NEGATIVE_INTEGER_LITERAL", "NULL_LITERAL", "OPEN_BRACE", "OPEN_PAREN", "PACKED_SWITCH_DIRECTIVE", "PARAMETER_DIRECTIVE", "PARAM_LIST_OR_ID_PRIMITIVE_TYPE", "POSITIVE_INTEGER_LITERAL", "PRIMITIVE_TYPE", "PROLOGUE_DIRECTIVE", "REGISTER", "REGISTERS_DIRECTIVE", "RESTART_LOCAL_DIRECTIVE", "SHORT_LITERAL", "SIMPLE_NAME", "SOURCE_DIRECTIVE", "SPARSE_SWITCH_DIRECTIVE", "STRING_LITERAL", "SUBANNOTATION_DIRECTIVE", "SUPER_DIRECTIVE", "VERIFICATION_ERROR_TYPE", "VOID_TYPE", "VTABLE_INDEX", "WHITE_SPACE" }; public static final int EOF=-1; public static final int ACCESS_SPEC=4; public static final int ANNOTATION_DIRECTIVE=5; public static final int ANNOTATION_VISIBILITY=6; public static final int ARRAY_DATA_DIRECTIVE=7; public static final int ARRAY_TYPE_PREFIX=8; public static final int ARROW=9; public static final int BOOL_LITERAL=10; public static final int BYTE_LITERAL=11; public static final int CATCHALL_DIRECTIVE=12; public static final int CATCH_DIRECTIVE=13; public static final int CHAR_LITERAL=14; public static final int CLASS_DESCRIPTOR=15; public static final int CLASS_DIRECTIVE=16; public static final int CLOSE_BRACE=17; public static final int CLOSE_PAREN=18; public static final int COLON=19; public static final int COMMA=20; public static final int DOTDOT=21; public static final int DOUBLE_LITERAL=22; public static final int DOUBLE_LITERAL_OR_ID=23; public static final int END_ANNOTATION_DIRECTIVE=24; public static final int END_ARRAY_DATA_DIRECTIVE=25; public static final int END_FIELD_DIRECTIVE=26; public static final int END_LOCAL_DIRECTIVE=27; public static final int END_METHOD_DIRECTIVE=28; public static final int END_PACKED_SWITCH_DIRECTIVE=29; public static final int END_PARAMETER_DIRECTIVE=30; public static final int END_SPARSE_SWITCH_DIRECTIVE=31; public static final int END_SUBANNOTATION_DIRECTIVE=32; public static final int ENUM_DIRECTIVE=33; public static final int EPILOGUE_DIRECTIVE=34; public static final int EQUAL=35; public static final int FIELD_DIRECTIVE=36; public static final int FIELD_OFFSET=37; public static final int FLOAT_LITERAL=38; public static final int FLOAT_LITERAL_OR_ID=39; public static final int IMPLEMENTS_DIRECTIVE=40; public static final int INLINE_INDEX=41; public static final int INSTRUCTION_FORMAT10t=42; public static final int INSTRUCTION_FORMAT10x=43; public static final int INSTRUCTION_FORMAT10x_ODEX=44; public static final int INSTRUCTION_FORMAT11n=45; public static final int INSTRUCTION_FORMAT11x=46; public static final int INSTRUCTION_FORMAT12x=47; public static final int INSTRUCTION_FORMAT12x_OR_ID=48; public static final int INSTRUCTION_FORMAT20bc=49; public static final int INSTRUCTION_FORMAT20t=50; public static final int INSTRUCTION_FORMAT21c_FIELD=51; public static final int INSTRUCTION_FORMAT21c_FIELD_ODEX=52; public static final int INSTRUCTION_FORMAT21c_STRING=53; public static final int INSTRUCTION_FORMAT21c_TYPE=54; public static final int INSTRUCTION_FORMAT21ih=55; public static final int INSTRUCTION_FORMAT21lh=56; public static final int INSTRUCTION_FORMAT21s=57; public static final int INSTRUCTION_FORMAT21t=58; public static final int INSTRUCTION_FORMAT22b=59; public static final int INSTRUCTION_FORMAT22c_FIELD=60; public static final int INSTRUCTION_FORMAT22c_FIELD_ODEX=61; public static final int INSTRUCTION_FORMAT22c_TYPE=62; public static final int INSTRUCTION_FORMAT22cs_FIELD=63; public static final int INSTRUCTION_FORMAT22s=64; public static final int INSTRUCTION_FORMAT22s_OR_ID=65; public static final int INSTRUCTION_FORMAT22t=66; public static final int INSTRUCTION_FORMAT22x=67; public static final int INSTRUCTION_FORMAT23x=68; public static final int INSTRUCTION_FORMAT30t=69; public static final int INSTRUCTION_FORMAT31c=70; public static final int INSTRUCTION_FORMAT31i=71; public static final int INSTRUCTION_FORMAT31i_OR_ID=72; public static final int INSTRUCTION_FORMAT31t=73; public static final int INSTRUCTION_FORMAT32x=74; public static final int INSTRUCTION_FORMAT35c_METHOD=75; public static final int INSTRUCTION_FORMAT35c_METHOD_ODEX=76; public static final int INSTRUCTION_FORMAT35c_TYPE=77; public static final int INSTRUCTION_FORMAT35mi_METHOD=78; public static final int INSTRUCTION_FORMAT35ms_METHOD=79; public static final int INSTRUCTION_FORMAT3rc_METHOD=80; public static final int INSTRUCTION_FORMAT3rc_METHOD_ODEX=81; public static final int INSTRUCTION_FORMAT3rc_TYPE=82; public static final int INSTRUCTION_FORMAT3rmi_METHOD=83; public static final int INSTRUCTION_FORMAT3rms_METHOD=84; public static final int INSTRUCTION_FORMAT45cc_METHOD=85; public static final int INSTRUCTION_FORMAT4rcc_METHOD=86; public static final int INSTRUCTION_FORMAT51l=87; public static final int INTEGER_LITERAL=88; public static final int INVALID_TOKEN=89; public static final int I_ACCESS_LIST=90; public static final int I_ANNOTATION=91; public static final int I_ANNOTATIONS=92; public static final int I_ANNOTATION_ELEMENT=93; public static final int I_ARRAY_ELEMENTS=94; public static final int I_ARRAY_ELEMENT_SIZE=95; public static final int I_CATCH=96; public static final int I_CATCHALL=97; public static final int I_CATCHES=98; public static final int I_CLASS_DEF=99; public static final int I_ENCODED_ARRAY=100; public static final int I_ENCODED_ENUM=101; public static final int I_ENCODED_FIELD=102; public static final int I_ENCODED_METHOD=103; public static final int I_END_LOCAL=104; public static final int I_EPILOGUE=105; public static final int I_FIELD=106; public static final int I_FIELDS=107; public static final int I_FIELD_INITIAL_VALUE=108; public static final int I_FIELD_TYPE=109; public static final int I_IMPLEMENTS=110; public static final int I_LABEL=111; public static final int I_LINE=112; public static final int I_LOCAL=113; public static final int I_LOCALS=114; public static final int I_METHOD=115; public static final int I_METHODS=116; public static final int I_METHOD_PROTOTYPE=117; public static final int I_METHOD_RETURN_TYPE=118; public static final int I_ORDERED_METHOD_ITEMS=119; public static final int I_PACKED_SWITCH_ELEMENTS=120; public static final int I_PACKED_SWITCH_START_KEY=121; public static final int I_PARAMETER=122; public static final int I_PARAMETERS=123; public static final int I_PARAMETER_NOT_SPECIFIED=124; public static final int I_PROLOGUE=125; public static final int I_REGISTERS=126; public static final int I_REGISTER_LIST=127; public static final int I_REGISTER_RANGE=128; public static final int I_RESTART_LOCAL=129; public static final int I_SOURCE=130; public static final int I_SPARSE_SWITCH_ELEMENTS=131; public static final int I_STATEMENT_ARRAY_DATA=132; public static final int I_STATEMENT_FORMAT10t=133; public static final int I_STATEMENT_FORMAT10x=134; public static final int I_STATEMENT_FORMAT11n=135; public static final int I_STATEMENT_FORMAT11x=136; public static final int I_STATEMENT_FORMAT12x=137; public static final int I_STATEMENT_FORMAT20bc=138; public static final int I_STATEMENT_FORMAT20t=139; public static final int I_STATEMENT_FORMAT21c_FIELD=140; public static final int I_STATEMENT_FORMAT21c_STRING=141; public static final int I_STATEMENT_FORMAT21c_TYPE=142; public static final int I_STATEMENT_FORMAT21ih=143; public static final int I_STATEMENT_FORMAT21lh=144; public static final int I_STATEMENT_FORMAT21s=145; public static final int I_STATEMENT_FORMAT21t=146; public static final int I_STATEMENT_FORMAT22b=147; public static final int I_STATEMENT_FORMAT22c_FIELD=148; public static final int I_STATEMENT_FORMAT22c_TYPE=149; public static final int I_STATEMENT_FORMAT22s=150; public static final int I_STATEMENT_FORMAT22t=151; public static final int I_STATEMENT_FORMAT22x=152; public static final int I_STATEMENT_FORMAT23x=153; public static final int I_STATEMENT_FORMAT30t=154; public static final int I_STATEMENT_FORMAT31c=155; public static final int I_STATEMENT_FORMAT31i=156; public static final int I_STATEMENT_FORMAT31t=157; public static final int I_STATEMENT_FORMAT32x=158; public static final int I_STATEMENT_FORMAT35c_METHOD=159; public static final int I_STATEMENT_FORMAT35c_TYPE=160; public static final int I_STATEMENT_FORMAT3rc_METHOD=161; public static final int I_STATEMENT_FORMAT3rc_TYPE=162; public static final int I_STATEMENT_FORMAT45cc_METHOD=163; public static final int I_STATEMENT_FORMAT4rcc_METHOD=164; public static final int I_STATEMENT_FORMAT51l=165; public static final int I_STATEMENT_PACKED_SWITCH=166; public static final int I_STATEMENT_SPARSE_SWITCH=167; public static final int I_SUBANNOTATION=168; public static final int I_SUPER=169; public static final int LINE_COMMENT=170; public static final int LINE_DIRECTIVE=171; public static final int LOCALS_DIRECTIVE=172; public static final int LOCAL_DIRECTIVE=173; public static final int LONG_LITERAL=174; public static final int MEMBER_NAME=175; public static final int METHOD_DIRECTIVE=176; public static final int NEGATIVE_INTEGER_LITERAL=177; public static final int NULL_LITERAL=178; public static final int OPEN_BRACE=179; public static final int OPEN_PAREN=180; public static final int PACKED_SWITCH_DIRECTIVE=181; public static final int PARAMETER_DIRECTIVE=182; public static final int PARAM_LIST_OR_ID_PRIMITIVE_TYPE=183; public static final int POSITIVE_INTEGER_LITERAL=184; public static final int PRIMITIVE_TYPE=185; public static final int PROLOGUE_DIRECTIVE=186; public static final int REGISTER=187; public static final int REGISTERS_DIRECTIVE=188; public static final int RESTART_LOCAL_DIRECTIVE=189; public static final int SHORT_LITERAL=190; public static final int SIMPLE_NAME=191; public static final int SOURCE_DIRECTIVE=192; public static final int SPARSE_SWITCH_DIRECTIVE=193; public static final int STRING_LITERAL=194; public static final int SUBANNOTATION_DIRECTIVE=195; public static final int SUPER_DIRECTIVE=196; public static final int VERIFICATION_ERROR_TYPE=197; public static final int VOID_TYPE=198; public static final int VTABLE_INDEX=199; public static final int WHITE_SPACE=200; // delegates public TreeParser[] getDelegates() { return new TreeParser[] {}; } // delegators public smaliTreeWalker(TreeNodeStream input) { this(input, new RecognizerSharedState()); } public smaliTreeWalker(TreeNodeStream input, RecognizerSharedState state) { super(input, state); } @Override public String[] getTokenNames() { return smaliTreeWalker.tokenNames; } @Override public String getGrammarFileName() { return "/ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g"; } public String classType; private boolean verboseErrors = false; private int apiLevel = 15; private Opcodes opcodes = Opcodes.forApi(apiLevel); private DexBuilder dexBuilder; public void setDexBuilder(DexBuilder dexBuilder) { this.dexBuilder = dexBuilder; } public void setApiLevel(int apiLevel, boolean experimental) { this.opcodes = new Opcodes(apiLevel, experimental); this.apiLevel = apiLevel; } public void setVerboseErrors(boolean verboseErrors) { this.verboseErrors = verboseErrors; } private byte parseRegister_nibble(String register) throws SemanticException { int totalMethodRegisters = method_stack.peek().totalMethodRegisters; int methodParameterRegisters = method_stack.peek().methodParameterRegisters; //register should be in the format "v12" int val = Byte.parseByte(register.substring(1)); if (register.charAt(0) == 'p') { val = totalMethodRegisters - methodParameterRegisters + val; } if (val >= 2<<4) { throw new SemanticException(input, "The maximum allowed register in this context is list of registers is v15"); } //the parser wouldn't have accepted a negative register, i.e. v-1, so we don't have to check for val<0; return (byte)val; } //return a short, because java's byte is signed private short parseRegister_byte(String register) throws SemanticException { int totalMethodRegisters = method_stack.peek().totalMethodRegisters; int methodParameterRegisters = method_stack.peek().methodParameterRegisters; //register should be in the format "v123" int val = Short.parseShort(register.substring(1)); if (register.charAt(0) == 'p') { val = totalMethodRegisters - methodParameterRegisters + val; } if (val >= 2<<8) { throw new SemanticException(input, "The maximum allowed register in this context is v255"); } return (short)val; } //return an int because java's short is signed private int parseRegister_short(String register) throws SemanticException { int totalMethodRegisters = method_stack.peek().totalMethodRegisters; int methodParameterRegisters = method_stack.peek().methodParameterRegisters; //register should be in the format "v12345" int val = Integer.parseInt(register.substring(1)); if (register.charAt(0) == 'p') { val = totalMethodRegisters - methodParameterRegisters + val; } if (val >= 2<<16) { throw new SemanticException(input, "The maximum allowed register in this context is v65535"); } //the parser wouldn't accept a negative register, i.e. v-1, so we don't have to check for val<0; return val; } public String getErrorMessage(RecognitionException e, String[] tokenNames) { if ( e instanceof SemanticException ) { return e.getMessage(); } else { return super.getErrorMessage(e, tokenNames); } } public String getErrorHeader(RecognitionException e) { return getSourceName()+"["+ e.line+","+e.charPositionInLine+"]"; } // $ANTLR start "smali_file" // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:160:1: smali_file returns [ClassDef classDef] : ^( I_CLASS_DEF header methods fields annotations ) ; public final ClassDef smali_file() throws RecognitionException { ClassDef classDef = null; TreeRuleReturnScope header1 =null; Set annotations2 =null; List fields3 =null; List methods4 =null; try { // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:161:3: ( ^( I_CLASS_DEF header methods fields annotations ) ) // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:161:5: ^( I_CLASS_DEF header methods fields annotations ) { match(input,I_CLASS_DEF,FOLLOW_I_CLASS_DEF_in_smali_file52); match(input, Token.DOWN, null); pushFollow(FOLLOW_header_in_smali_file54); header1=header(); state._fsp--; pushFollow(FOLLOW_methods_in_smali_file56); methods4=methods(); state._fsp--; pushFollow(FOLLOW_fields_in_smali_file58); fields3=fields(); state._fsp--; pushFollow(FOLLOW_annotations_in_smali_file60); annotations2=annotations(); state._fsp--; match(input, Token.UP, null); classDef = dexBuilder.internClassDef((header1!=null?((smaliTreeWalker.header_return)header1).classType:null), (header1!=null?((smaliTreeWalker.header_return)header1).accessFlags:0), (header1!=null?((smaliTreeWalker.header_return)header1).superType:null), (header1!=null?((smaliTreeWalker.header_return)header1).implementsList:null), (header1!=null?((smaliTreeWalker.header_return)header1).sourceSpec:null), annotations2, fields3, methods4); } } catch (Exception ex) { if (verboseErrors) { ex.printStackTrace(System.err); } reportError(new SemanticException(input, ex)); } finally { // do for sure before leaving } return classDef; } // $ANTLR end "smali_file" public static class header_return extends TreeRuleReturnScope { public String classType; public int accessFlags; public String superType; public List implementsList; public String sourceSpec; }; // $ANTLR start "header" // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:174:1: header returns [String classType, int accessFlags, String superType, List implementsList, String sourceSpec] : class_spec ( super_spec )? implements_list source_spec ; public final smaliTreeWalker.header_return header() throws RecognitionException { smaliTreeWalker.header_return retval = new smaliTreeWalker.header_return(); retval.start = input.LT(1); TreeRuleReturnScope class_spec5 =null; String super_spec6 =null; List implements_list7 =null; String source_spec8 =null; try { // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:175:3: ( class_spec ( super_spec )? implements_list source_spec ) // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:175:3: class_spec ( super_spec )? implements_list source_spec { pushFollow(FOLLOW_class_spec_in_header85); class_spec5=class_spec(); state._fsp--; // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:175:14: ( super_spec )? int alt1=2; int LA1_0 = input.LA(1); if ( (LA1_0==I_SUPER) ) { alt1=1; } switch (alt1) { case 1 : // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:175:14: super_spec { pushFollow(FOLLOW_super_spec_in_header87); super_spec6=super_spec(); state._fsp--; } break; } pushFollow(FOLLOW_implements_list_in_header90); implements_list7=implements_list(); state._fsp--; pushFollow(FOLLOW_source_spec_in_header92); source_spec8=source_spec(); state._fsp--; classType = (class_spec5!=null?((smaliTreeWalker.class_spec_return)class_spec5).type:null); retval.classType = classType; retval.accessFlags = (class_spec5!=null?((smaliTreeWalker.class_spec_return)class_spec5).accessFlags:0); retval.superType = super_spec6; retval.implementsList = implements_list7; retval.sourceSpec = source_spec8; } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { // do for sure before leaving } return retval; } // $ANTLR end "header" public static class class_spec_return extends TreeRuleReturnScope { public String type; public int accessFlags; }; // $ANTLR start "class_spec" // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:186:1: class_spec returns [String type, int accessFlags] : CLASS_DESCRIPTOR access_list ; public final smaliTreeWalker.class_spec_return class_spec() throws RecognitionException { smaliTreeWalker.class_spec_return retval = new smaliTreeWalker.class_spec_return(); retval.start = input.LT(1); CommonTree CLASS_DESCRIPTOR9=null; int access_list10 =0; try { // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:187:3: ( CLASS_DESCRIPTOR access_list ) // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:187:5: CLASS_DESCRIPTOR access_list { CLASS_DESCRIPTOR9=(CommonTree)match(input,CLASS_DESCRIPTOR,FOLLOW_CLASS_DESCRIPTOR_in_class_spec110); pushFollow(FOLLOW_access_list_in_class_spec112); access_list10=access_list(); state._fsp--; retval.type = (CLASS_DESCRIPTOR9!=null?CLASS_DESCRIPTOR9.getText():null); retval.accessFlags = access_list10; } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { // do for sure before leaving } return retval; } // $ANTLR end "class_spec" // $ANTLR start "super_spec" // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:193:1: super_spec returns [String type] : ^( I_SUPER CLASS_DESCRIPTOR ) ; public final String super_spec() throws RecognitionException { String type = null; CommonTree CLASS_DESCRIPTOR11=null; try { // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:194:3: ( ^( I_SUPER CLASS_DESCRIPTOR ) ) // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:194:5: ^( I_SUPER CLASS_DESCRIPTOR ) { match(input,I_SUPER,FOLLOW_I_SUPER_in_super_spec130); match(input, Token.DOWN, null); CLASS_DESCRIPTOR11=(CommonTree)match(input,CLASS_DESCRIPTOR,FOLLOW_CLASS_DESCRIPTOR_in_super_spec132); match(input, Token.UP, null); type = (CLASS_DESCRIPTOR11!=null?CLASS_DESCRIPTOR11.getText():null); } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { // do for sure before leaving } return type; } // $ANTLR end "super_spec" // $ANTLR start "implements_spec" // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:200:1: implements_spec returns [String type] : ^( I_IMPLEMENTS CLASS_DESCRIPTOR ) ; public final String implements_spec() throws RecognitionException { String type = null; CommonTree CLASS_DESCRIPTOR12=null; try { // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:201:3: ( ^( I_IMPLEMENTS CLASS_DESCRIPTOR ) ) // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:201:5: ^( I_IMPLEMENTS CLASS_DESCRIPTOR ) { match(input,I_IMPLEMENTS,FOLLOW_I_IMPLEMENTS_in_implements_spec152); match(input, Token.DOWN, null); CLASS_DESCRIPTOR12=(CommonTree)match(input,CLASS_DESCRIPTOR,FOLLOW_CLASS_DESCRIPTOR_in_implements_spec154); match(input, Token.UP, null); type = (CLASS_DESCRIPTOR12!=null?CLASS_DESCRIPTOR12.getText():null); } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { // do for sure before leaving } return type; } // $ANTLR end "implements_spec" // $ANTLR start "implements_list" // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:206:1: implements_list returns [List implementsList] : ( implements_spec )* ; public final List implements_list() throws RecognitionException { List implementsList = null; String implements_spec13 =null; List typeList; try { // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:208:3: ( ( implements_spec )* ) // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:208:5: ( implements_spec )* { typeList = Lists.newArrayList(); // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:209:5: ( implements_spec )* loop2: while (true) { int alt2=2; int LA2_0 = input.LA(1); if ( (LA2_0==I_IMPLEMENTS) ) { alt2=1; } switch (alt2) { case 1 : // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:209:6: implements_spec { pushFollow(FOLLOW_implements_spec_in_implements_list184); implements_spec13=implements_spec(); state._fsp--; typeList.add(implements_spec13); } break; default : break loop2; } } if (typeList.size() > 0) { implementsList = typeList; } else { implementsList = null; } } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { // do for sure before leaving } return implementsList; } // $ANTLR end "implements_list" // $ANTLR start "source_spec" // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:218:1: source_spec returns [String source] : ( ^( I_SOURCE string_literal ) |); public final String source_spec() throws RecognitionException { String source = null; String string_literal14 =null; try { // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:219:3: ( ^( I_SOURCE string_literal ) |) int alt3=2; int LA3_0 = input.LA(1); if ( (LA3_0==I_SOURCE) ) { alt3=1; } else if ( (LA3_0==I_METHODS) ) { alt3=2; } else { NoViableAltException nvae = new NoViableAltException("", 3, 0, input); throw nvae; } switch (alt3) { case 1 : // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:219:5: ^( I_SOURCE string_literal ) { source = null; match(input,I_SOURCE,FOLLOW_I_SOURCE_in_source_spec213); match(input, Token.DOWN, null); pushFollow(FOLLOW_string_literal_in_source_spec215); string_literal14=string_literal(); state._fsp--; source = string_literal14; match(input, Token.UP, null); } break; case 2 : // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:221:16: { } break; } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { // do for sure before leaving } return source; } // $ANTLR end "source_spec" // $ANTLR start "access_list" // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:223:1: access_list returns [int value] : ^( I_ACCESS_LIST ( ACCESS_SPEC )* ) ; public final int access_list() throws RecognitionException { int value = 0; CommonTree ACCESS_SPEC15=null; value = 0; try { // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:228:3: ( ^( I_ACCESS_LIST ( ACCESS_SPEC )* ) ) // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:228:5: ^( I_ACCESS_LIST ( ACCESS_SPEC )* ) { match(input,I_ACCESS_LIST,FOLLOW_I_ACCESS_LIST_in_access_list248); if ( input.LA(1)==Token.DOWN ) { match(input, Token.DOWN, null); // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:229:7: ( ACCESS_SPEC )* loop4: while (true) { int alt4=2; int LA4_0 = input.LA(1); if ( (LA4_0==ACCESS_SPEC) ) { alt4=1; } switch (alt4) { case 1 : // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:230:9: ACCESS_SPEC { ACCESS_SPEC15=(CommonTree)match(input,ACCESS_SPEC,FOLLOW_ACCESS_SPEC_in_access_list266); value |= AccessFlags.getAccessFlag(ACCESS_SPEC15.getText()).getValue(); } break; default : break loop4; } } match(input, Token.UP, null); } } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { // do for sure before leaving } return value; } // $ANTLR end "access_list" // $ANTLR start "fields" // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:237:1: fields returns [List fields] : ^( I_FIELDS ( field )* ) ; public final List fields() throws RecognitionException { List fields = null; BuilderField field16 =null; fields = Lists.newArrayList(); try { // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:239:3: ( ^( I_FIELDS ( field )* ) ) // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:239:5: ^( I_FIELDS ( field )* ) { match(input,I_FIELDS,FOLLOW_I_FIELDS_in_fields308); if ( input.LA(1)==Token.DOWN ) { match(input, Token.DOWN, null); // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:240:7: ( field )* loop5: while (true) { int alt5=2; int LA5_0 = input.LA(1); if ( (LA5_0==I_FIELD) ) { alt5=1; } switch (alt5) { case 1 : // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:240:8: field { pushFollow(FOLLOW_field_in_fields317); field16=field(); state._fsp--; fields.add(field16); } break; default : break loop5; } } match(input, Token.UP, null); } } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { // do for sure before leaving } return fields; } // $ANTLR end "fields" // $ANTLR start "methods" // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:245:1: methods returns [List methods] : ^( I_METHODS ( method )* ) ; public final List methods() throws RecognitionException { List methods = null; BuilderMethod method17 =null; methods = Lists.newArrayList(); try { // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:247:3: ( ^( I_METHODS ( method )* ) ) // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:247:5: ^( I_METHODS ( method )* ) { match(input,I_METHODS,FOLLOW_I_METHODS_in_methods349); if ( input.LA(1)==Token.DOWN ) { match(input, Token.DOWN, null); // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:248:7: ( method )* loop6: while (true) { int alt6=2; int LA6_0 = input.LA(1); if ( (LA6_0==I_METHOD) ) { alt6=1; } switch (alt6) { case 1 : // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:248:8: method { pushFollow(FOLLOW_method_in_methods358); method17=method(); state._fsp--; methods.add(method17); } break; default : break loop6; } } match(input, Token.UP, null); } } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { // do for sure before leaving } return methods; } // $ANTLR end "methods" // $ANTLR start "field" // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:253:1: field returns [BuilderField field] : ^( I_FIELD SIMPLE_NAME access_list ^( I_FIELD_TYPE nonvoid_type_descriptor ) field_initial_value ( annotations )? ) ; public final BuilderField field() throws RecognitionException { BuilderField field = null; CommonTree SIMPLE_NAME20=null; int access_list18 =0; EncodedValue field_initial_value19 =null; TreeRuleReturnScope nonvoid_type_descriptor21 =null; Set annotations22 =null; try { // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:254:3: ( ^( I_FIELD SIMPLE_NAME access_list ^( I_FIELD_TYPE nonvoid_type_descriptor ) field_initial_value ( annotations )? ) ) // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:254:4: ^( I_FIELD SIMPLE_NAME access_list ^( I_FIELD_TYPE nonvoid_type_descriptor ) field_initial_value ( annotations )? ) { match(input,I_FIELD,FOLLOW_I_FIELD_in_field383); match(input, Token.DOWN, null); SIMPLE_NAME20=(CommonTree)match(input,SIMPLE_NAME,FOLLOW_SIMPLE_NAME_in_field385); pushFollow(FOLLOW_access_list_in_field387); access_list18=access_list(); state._fsp--; match(input,I_FIELD_TYPE,FOLLOW_I_FIELD_TYPE_in_field390); match(input, Token.DOWN, null); pushFollow(FOLLOW_nonvoid_type_descriptor_in_field392); nonvoid_type_descriptor21=nonvoid_type_descriptor(); state._fsp--; match(input, Token.UP, null); pushFollow(FOLLOW_field_initial_value_in_field395); field_initial_value19=field_initial_value(); state._fsp--; // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:254:98: ( annotations )? int alt7=2; int LA7_0 = input.LA(1); if ( (LA7_0==I_ANNOTATIONS) ) { alt7=1; } switch (alt7) { case 1 : // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:254:98: annotations { pushFollow(FOLLOW_annotations_in_field397); annotations22=annotations(); state._fsp--; } break; } match(input, Token.UP, null); int accessFlags = access_list18; if (!AccessFlags.STATIC.isSet(accessFlags) && field_initial_value19 != null) { throw new SemanticException(input, "Initial field values can only be specified for static fields."); } field = dexBuilder.internField(classType, (SIMPLE_NAME20!=null?SIMPLE_NAME20.getText():null), (nonvoid_type_descriptor21!=null?((smaliTreeWalker.nonvoid_type_descriptor_return)nonvoid_type_descriptor21).type:null), access_list18, field_initial_value19, annotations22); } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { // do for sure before leaving } return field; } // $ANTLR end "field" // $ANTLR start "field_initial_value" // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:268:1: field_initial_value returns [EncodedValue encodedValue] : ( ^( I_FIELD_INITIAL_VALUE literal ) |); public final EncodedValue field_initial_value() throws RecognitionException { EncodedValue encodedValue = null; EncodedValue literal23 =null; try { // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:269:3: ( ^( I_FIELD_INITIAL_VALUE literal ) |) int alt8=2; int LA8_0 = input.LA(1); if ( (LA8_0==I_FIELD_INITIAL_VALUE) ) { alt8=1; } else if ( (LA8_0==UP||LA8_0==I_ANNOTATIONS) ) { alt8=2; } else { NoViableAltException nvae = new NoViableAltException("", 8, 0, input); throw nvae; } switch (alt8) { case 1 : // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:269:5: ^( I_FIELD_INITIAL_VALUE literal ) { match(input,I_FIELD_INITIAL_VALUE,FOLLOW_I_FIELD_INITIAL_VALUE_in_field_initial_value418); match(input, Token.DOWN, null); pushFollow(FOLLOW_literal_in_field_initial_value420); literal23=literal(); state._fsp--; match(input, Token.UP, null); encodedValue = literal23; } break; case 2 : // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:270:16: { } break; } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { // do for sure before leaving } return encodedValue; } // $ANTLR end "field_initial_value" // $ANTLR start "literal" // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:272:1: literal returns [EncodedValue encodedValue] : ( integer_literal | long_literal | short_literal | byte_literal | float_literal | double_literal | char_literal | string_literal | bool_literal | NULL_LITERAL | type_descriptor | array_literal | subannotation | field_literal | method_literal | enum_literal ); public final EncodedValue literal() throws RecognitionException { EncodedValue encodedValue = null; int integer_literal24 =0; long long_literal25 =0; short short_literal26 =0; byte byte_literal27 =0; float float_literal28 =0.0f; double double_literal29 =0.0; char char_literal30 =0; String string_literal31 =null; boolean bool_literal32 =false; String type_descriptor33 =null; List array_literal34 =null; TreeRuleReturnScope subannotation35 =null; FieldReference field_literal36 =null; MethodReference method_literal37 =null; FieldReference enum_literal38 =null; try { // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:273:3: ( integer_literal | long_literal | short_literal | byte_literal | float_literal | double_literal | char_literal | string_literal | bool_literal | NULL_LITERAL | type_descriptor | array_literal | subannotation | field_literal | method_literal | enum_literal ) int alt9=16; switch ( input.LA(1) ) { case INTEGER_LITERAL: { alt9=1; } break; case LONG_LITERAL: { alt9=2; } break; case SHORT_LITERAL: { alt9=3; } break; case BYTE_LITERAL: { alt9=4; } break; case FLOAT_LITERAL: { alt9=5; } break; case DOUBLE_LITERAL: { alt9=6; } break; case CHAR_LITERAL: { alt9=7; } break; case STRING_LITERAL: { alt9=8; } break; case BOOL_LITERAL: { alt9=9; } break; case NULL_LITERAL: { alt9=10; } break; case ARRAY_TYPE_PREFIX: case CLASS_DESCRIPTOR: case PRIMITIVE_TYPE: case VOID_TYPE: { alt9=11; } break; case I_ENCODED_ARRAY: { alt9=12; } break; case I_SUBANNOTATION: { alt9=13; } break; case I_ENCODED_FIELD: { alt9=14; } break; case I_ENCODED_METHOD: { alt9=15; } break; case I_ENCODED_ENUM: { alt9=16; } break; default: NoViableAltException nvae = new NoViableAltException("", 9, 0, input); throw nvae; } switch (alt9) { case 1 : // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:273:5: integer_literal { pushFollow(FOLLOW_integer_literal_in_literal442); integer_literal24=integer_literal(); state._fsp--; encodedValue = new ImmutableIntEncodedValue(integer_literal24); } break; case 2 : // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:274:5: long_literal { pushFollow(FOLLOW_long_literal_in_literal450); long_literal25=long_literal(); state._fsp--; encodedValue = new ImmutableLongEncodedValue(long_literal25); } break; case 3 : // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:275:5: short_literal { pushFollow(FOLLOW_short_literal_in_literal458); short_literal26=short_literal(); state._fsp--; encodedValue = new ImmutableShortEncodedValue(short_literal26); } break; case 4 : // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:276:5: byte_literal { pushFollow(FOLLOW_byte_literal_in_literal466); byte_literal27=byte_literal(); state._fsp--; encodedValue = new ImmutableByteEncodedValue(byte_literal27); } break; case 5 : // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:277:5: float_literal { pushFollow(FOLLOW_float_literal_in_literal474); float_literal28=float_literal(); state._fsp--; encodedValue = new ImmutableFloatEncodedValue(float_literal28); } break; case 6 : // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:278:5: double_literal { pushFollow(FOLLOW_double_literal_in_literal482); double_literal29=double_literal(); state._fsp--; encodedValue = new ImmutableDoubleEncodedValue(double_literal29); } break; case 7 : // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:279:5: char_literal { pushFollow(FOLLOW_char_literal_in_literal490); char_literal30=char_literal(); state._fsp--; encodedValue = new ImmutableCharEncodedValue(char_literal30); } break; case 8 : // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:280:5: string_literal { pushFollow(FOLLOW_string_literal_in_literal498); string_literal31=string_literal(); state._fsp--; encodedValue = new ImmutableStringEncodedValue(string_literal31); } break; case 9 : // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:281:5: bool_literal { pushFollow(FOLLOW_bool_literal_in_literal506); bool_literal32=bool_literal(); state._fsp--; encodedValue = ImmutableBooleanEncodedValue.forBoolean(bool_literal32); } break; case 10 : // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:282:5: NULL_LITERAL { match(input,NULL_LITERAL,FOLLOW_NULL_LITERAL_in_literal514); encodedValue = ImmutableNullEncodedValue.INSTANCE; } break; case 11 : // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:283:5: type_descriptor { pushFollow(FOLLOW_type_descriptor_in_literal522); type_descriptor33=type_descriptor(); state._fsp--; encodedValue = new ImmutableTypeEncodedValue(type_descriptor33); } break; case 12 : // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:284:5: array_literal { pushFollow(FOLLOW_array_literal_in_literal530); array_literal34=array_literal(); state._fsp--; encodedValue = new ImmutableArrayEncodedValue(array_literal34); } break; case 13 : // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:285:5: subannotation { pushFollow(FOLLOW_subannotation_in_literal538); subannotation35=subannotation(); state._fsp--; encodedValue = new ImmutableAnnotationEncodedValue((subannotation35!=null?((smaliTreeWalker.subannotation_return)subannotation35).annotationType:null), (subannotation35!=null?((smaliTreeWalker.subannotation_return)subannotation35).elements:null)); } break; case 14 : // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:286:5: field_literal { pushFollow(FOLLOW_field_literal_in_literal546); field_literal36=field_literal(); state._fsp--; encodedValue = new ImmutableFieldEncodedValue(field_literal36); } break; case 15 : // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:287:5: method_literal { pushFollow(FOLLOW_method_literal_in_literal554); method_literal37=method_literal(); state._fsp--; encodedValue = new ImmutableMethodEncodedValue(method_literal37); } break; case 16 : // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:288:5: enum_literal { pushFollow(FOLLOW_enum_literal_in_literal562); enum_literal38=enum_literal(); state._fsp--; encodedValue = new ImmutableEnumEncodedValue(enum_literal38); } break; } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { // do for sure before leaving } return encodedValue; } // $ANTLR end "literal" // $ANTLR start "fixed_64bit_literal_number" // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:291:1: fixed_64bit_literal_number returns [Number value] : ( integer_literal | long_literal | short_literal | byte_literal | float_literal | double_literal | char_literal | bool_literal ); public final Number fixed_64bit_literal_number() throws RecognitionException { Number value = null; int integer_literal39 =0; long long_literal40 =0; short short_literal41 =0; byte byte_literal42 =0; float float_literal43 =0.0f; double double_literal44 =0.0; char char_literal45 =0; boolean bool_literal46 =false; try { // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:292:3: ( integer_literal | long_literal | short_literal | byte_literal | float_literal | double_literal | char_literal | bool_literal ) int alt10=8; switch ( input.LA(1) ) { case INTEGER_LITERAL: { alt10=1; } break; case LONG_LITERAL: { alt10=2; } break; case SHORT_LITERAL: { alt10=3; } break; case BYTE_LITERAL: { alt10=4; } break; case FLOAT_LITERAL: { alt10=5; } break; case DOUBLE_LITERAL: { alt10=6; } break; case CHAR_LITERAL: { alt10=7; } break; case BOOL_LITERAL: { alt10=8; } break; default: NoViableAltException nvae = new NoViableAltException("", 10, 0, input); throw nvae; } switch (alt10) { case 1 : // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:292:5: integer_literal { pushFollow(FOLLOW_integer_literal_in_fixed_64bit_literal_number578); integer_literal39=integer_literal(); state._fsp--; value = integer_literal39; } break; case 2 : // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:293:5: long_literal { pushFollow(FOLLOW_long_literal_in_fixed_64bit_literal_number586); long_literal40=long_literal(); state._fsp--; value = long_literal40; } break; case 3 : // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:294:5: short_literal { pushFollow(FOLLOW_short_literal_in_fixed_64bit_literal_number594); short_literal41=short_literal(); state._fsp--; value = short_literal41; } break; case 4 : // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:295:5: byte_literal { pushFollow(FOLLOW_byte_literal_in_fixed_64bit_literal_number602); byte_literal42=byte_literal(); state._fsp--; value = byte_literal42; } break; case 5 : // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:296:5: float_literal { pushFollow(FOLLOW_float_literal_in_fixed_64bit_literal_number610); float_literal43=float_literal(); state._fsp--; value = Float.floatToRawIntBits(float_literal43); } break; case 6 : // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:297:5: double_literal { pushFollow(FOLLOW_double_literal_in_fixed_64bit_literal_number618); double_literal44=double_literal(); state._fsp--; value = Double.doubleToRawLongBits(double_literal44); } break; case 7 : // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:298:5: char_literal { pushFollow(FOLLOW_char_literal_in_fixed_64bit_literal_number626); char_literal45=char_literal(); state._fsp--; value = (int)char_literal45; } break; case 8 : // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:299:5: bool_literal { pushFollow(FOLLOW_bool_literal_in_fixed_64bit_literal_number634); bool_literal46=bool_literal(); state._fsp--; value = bool_literal46?1:0; } break; } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { // do for sure before leaving } return value; } // $ANTLR end "fixed_64bit_literal_number" // $ANTLR start "fixed_64bit_literal" // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:301:1: fixed_64bit_literal returns [long value] : ( integer_literal | long_literal | short_literal | byte_literal | float_literal | double_literal | char_literal | bool_literal ); public final long fixed_64bit_literal() throws RecognitionException { long value = 0; int integer_literal47 =0; long long_literal48 =0; short short_literal49 =0; byte byte_literal50 =0; float float_literal51 =0.0f; double double_literal52 =0.0; char char_literal53 =0; boolean bool_literal54 =false; try { // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:302:3: ( integer_literal | long_literal | short_literal | byte_literal | float_literal | double_literal | char_literal | bool_literal ) int alt11=8; switch ( input.LA(1) ) { case INTEGER_LITERAL: { alt11=1; } break; case LONG_LITERAL: { alt11=2; } break; case SHORT_LITERAL: { alt11=3; } break; case BYTE_LITERAL: { alt11=4; } break; case FLOAT_LITERAL: { alt11=5; } break; case DOUBLE_LITERAL: { alt11=6; } break; case CHAR_LITERAL: { alt11=7; } break; case BOOL_LITERAL: { alt11=8; } break; default: NoViableAltException nvae = new NoViableAltException("", 11, 0, input); throw nvae; } switch (alt11) { case 1 : // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:302:5: integer_literal { pushFollow(FOLLOW_integer_literal_in_fixed_64bit_literal649); integer_literal47=integer_literal(); state._fsp--; value = integer_literal47; } break; case 2 : // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:303:5: long_literal { pushFollow(FOLLOW_long_literal_in_fixed_64bit_literal657); long_literal48=long_literal(); state._fsp--; value = long_literal48; } break; case 3 : // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:304:5: short_literal { pushFollow(FOLLOW_short_literal_in_fixed_64bit_literal665); short_literal49=short_literal(); state._fsp--; value = short_literal49; } break; case 4 : // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:305:5: byte_literal { pushFollow(FOLLOW_byte_literal_in_fixed_64bit_literal673); byte_literal50=byte_literal(); state._fsp--; value = byte_literal50; } break; case 5 : // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:306:5: float_literal { pushFollow(FOLLOW_float_literal_in_fixed_64bit_literal681); float_literal51=float_literal(); state._fsp--; value = Float.floatToRawIntBits(float_literal51); } break; case 6 : // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:307:5: double_literal { pushFollow(FOLLOW_double_literal_in_fixed_64bit_literal689); double_literal52=double_literal(); state._fsp--; value = Double.doubleToRawLongBits(double_literal52); } break; case 7 : // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:308:5: char_literal { pushFollow(FOLLOW_char_literal_in_fixed_64bit_literal697); char_literal53=char_literal(); state._fsp--; value = char_literal53; } break; case 8 : // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:309:5: bool_literal { pushFollow(FOLLOW_bool_literal_in_fixed_64bit_literal705); bool_literal54=bool_literal(); state._fsp--; value = bool_literal54?1:0; } break; } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { // do for sure before leaving } return value; } // $ANTLR end "fixed_64bit_literal" // $ANTLR start "fixed_32bit_literal" // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:313:1: fixed_32bit_literal returns [int value] : ( integer_literal | long_literal | short_literal | byte_literal | float_literal | char_literal | bool_literal ); public final int fixed_32bit_literal() throws RecognitionException { int value = 0; int integer_literal55 =0; long long_literal56 =0; short short_literal57 =0; byte byte_literal58 =0; float float_literal59 =0.0f; char char_literal60 =0; boolean bool_literal61 =false; try { // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:314:3: ( integer_literal | long_literal | short_literal | byte_literal | float_literal | char_literal | bool_literal ) int alt12=7; switch ( input.LA(1) ) { case INTEGER_LITERAL: { alt12=1; } break; case LONG_LITERAL: { alt12=2; } break; case SHORT_LITERAL: { alt12=3; } break; case BYTE_LITERAL: { alt12=4; } break; case FLOAT_LITERAL: { alt12=5; } break; case CHAR_LITERAL: { alt12=6; } break; case BOOL_LITERAL: { alt12=7; } break; default: NoViableAltException nvae = new NoViableAltException("", 12, 0, input); throw nvae; } switch (alt12) { case 1 : // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:314:5: integer_literal { pushFollow(FOLLOW_integer_literal_in_fixed_32bit_literal722); integer_literal55=integer_literal(); state._fsp--; value = integer_literal55; } break; case 2 : // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:315:5: long_literal { pushFollow(FOLLOW_long_literal_in_fixed_32bit_literal730); long_literal56=long_literal(); state._fsp--; LiteralTools.checkInt(long_literal56); value = (int)long_literal56; } break; case 3 : // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:316:5: short_literal { pushFollow(FOLLOW_short_literal_in_fixed_32bit_literal738); short_literal57=short_literal(); state._fsp--; value = short_literal57; } break; case 4 : // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:317:5: byte_literal { pushFollow(FOLLOW_byte_literal_in_fixed_32bit_literal746); byte_literal58=byte_literal(); state._fsp--; value = byte_literal58; } break; case 5 : // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:318:5: float_literal { pushFollow(FOLLOW_float_literal_in_fixed_32bit_literal754); float_literal59=float_literal(); state._fsp--; value = Float.floatToRawIntBits(float_literal59); } break; case 6 : // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:319:5: char_literal { pushFollow(FOLLOW_char_literal_in_fixed_32bit_literal762); char_literal60=char_literal(); state._fsp--; value = char_literal60; } break; case 7 : // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:320:5: bool_literal { pushFollow(FOLLOW_bool_literal_in_fixed_32bit_literal770); bool_literal61=bool_literal(); state._fsp--; value = bool_literal61?1:0; } break; } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { // do for sure before leaving } return value; } // $ANTLR end "fixed_32bit_literal" // $ANTLR start "array_elements" // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:322:1: array_elements returns [List elements] : ^( I_ARRAY_ELEMENTS ( fixed_64bit_literal_number )* ) ; public final List array_elements() throws RecognitionException { List elements = null; Number fixed_64bit_literal_number62 =null; try { // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:323:3: ( ^( I_ARRAY_ELEMENTS ( fixed_64bit_literal_number )* ) ) // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:323:5: ^( I_ARRAY_ELEMENTS ( fixed_64bit_literal_number )* ) { elements = Lists.newArrayList(); match(input,I_ARRAY_ELEMENTS,FOLLOW_I_ARRAY_ELEMENTS_in_array_elements792); if ( input.LA(1)==Token.DOWN ) { match(input, Token.DOWN, null); // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:325:7: ( fixed_64bit_literal_number )* loop13: while (true) { int alt13=2; int LA13_0 = input.LA(1); if ( ((LA13_0 >= BOOL_LITERAL && LA13_0 <= BYTE_LITERAL)||LA13_0==CHAR_LITERAL||LA13_0==DOUBLE_LITERAL||LA13_0==FLOAT_LITERAL||LA13_0==INTEGER_LITERAL||LA13_0==LONG_LITERAL||LA13_0==SHORT_LITERAL) ) { alt13=1; } switch (alt13) { case 1 : // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:325:8: fixed_64bit_literal_number { pushFollow(FOLLOW_fixed_64bit_literal_number_in_array_elements801); fixed_64bit_literal_number62=fixed_64bit_literal_number(); state._fsp--; elements.add(fixed_64bit_literal_number62); } break; default : break loop13; } } match(input, Token.UP, null); } } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { // do for sure before leaving } return elements; } // $ANTLR end "array_elements" // $ANTLR start "packed_switch_elements" // /ssd2/floating/external/smali/smali/src/main/antlr/smaliTreeWalker.g:330:1: packed_switch_elements returns [List