smaliParser parser = new smaliParser(tokens); parser.setVerboseErrors(options.verboseErrors); parser.setAllowOdex(options.allowOdexOpcodes); parser.setApiLevel(options.apiLevel); smaliParser.smali_file_return result = parser.smali_file(); if (parser.getNumberOfSyntaxErrors() > 0 || lexer.getNumberOfSyntaxErrors() > 0) { return false;
FIELD_DIRECTIVE19=(Token)match(input,FIELD_DIRECTIVE,FOLLOW_FIELD_DIRECTIVE_in_field1402); stream_FIELD_DIRECTIVE.add(FIELD_DIRECTIVE19); pushFollow(FOLLOW_access_list_in_field1404); access_list20=access_list(); state._fsp--; pushFollow(FOLLOW_member_name_in_field1406); member_name21=member_name(); state._fsp--; COLON22=(Token)match(input,COLON,FOLLOW_COLON_in_field1408); stream_COLON.add(COLON22); pushFollow(FOLLOW_nonvoid_type_descriptor_in_field1410); nonvoid_type_descriptor23=nonvoid_type_descriptor(); state._fsp--; EQUAL24=(Token)match(input,EQUAL,FOLLOW_EQUAL_in_field1413); stream_EQUAL.add(EQUAL24); pushFollow(FOLLOW_literal_in_field1415); literal25=literal(); state._fsp--; pushFollow(FOLLOW_annotation_in_field1428); annotation26=annotation(); state._fsp--;
SUBANNOTATION_DIRECTIVE167=(Token)match(input,SUBANNOTATION_DIRECTIVE,FOLLOW_SUBANNOTATION_DIRECTIVE_in_subannotation2951); stream_SUBANNOTATION_DIRECTIVE.add(SUBANNOTATION_DIRECTIVE167); CLASS_DESCRIPTOR168=(Token)match(input,CLASS_DESCRIPTOR,FOLLOW_CLASS_DESCRIPTOR_in_subannotation2953); stream_CLASS_DESCRIPTOR.add(CLASS_DESCRIPTOR168); pushFollow(FOLLOW_annotation_element_in_subannotation2955); annotation_element169=annotation_element(); state._fsp--; END_SUBANNOTATION_DIRECTIVE170=(Token)match(input,END_SUBANNOTATION_DIRECTIVE,FOLLOW_END_SUBANNOTATION_DIRECTIVE_in_subannotation2958); stream_END_SUBANNOTATION_DIRECTIVE.add(END_SUBANNOTATION_DIRECTIVE170); reportError(re); recover(input,re); retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
public static BuilderClassDef parse(String path, InputStream is, DexBuilder dexBuilder) throws UnsupportedEncodingException, RecognitionException { File smaliFile = new File(path); InputStreamReader reader = new InputStreamReader(is, "UTF-8"); LexerErrorInterface lexer = new smaliFlexLexer(reader); ((smaliFlexLexer) lexer).setSourceFile(smaliFile); CommonTokenStream tokens = new CommonTokenStream((TokenSource) lexer); smaliParser parser = new smaliParser(tokens); parser.setApiLevel(DEFAULT_API_LEVEL); smaliParser.smali_file_return result = parser.smali_file(); if ((parser.getNumberOfSyntaxErrors() > 0) || (lexer.getNumberOfSyntaxErrors() > 0)) { throw new RuntimeException("Unable to parse: " + smaliFile); } CommonTree t = result.getTree(); CommonTreeNodeStream treeStream = new CommonTreeNodeStream(t); treeStream.setTokenStream(tokens); smaliTreeWalker dexGen = new smaliTreeWalker(treeStream); dexGen.setVerboseErrors(false); dexGen.setDexBuilder(dexBuilder); BuilderClassDef classDef = (BuilderClassDef) dexGen.smali_file(); if (dexGen.getNumberOfSyntaxErrors() != 0) { throw new RuntimeException("Unable to walk: " + smaliFile); } return classDef; }
smaliParser parser = new smaliParser(tokens); parser.setVerboseErrors(verboseErrors); smaliParser.smali_file_return result = parser.smali_file(); if (parser.getNumberOfSyntaxErrors() > 0 || lexer.getNumberOfSyntaxErrors() > 0) { is.close(); reader.close();
LONG_LITERAL117=(Token)match(input,LONG_LITERAL,FOLLOW_LONG_LITERAL_in_literal2589); LONG_LITERAL117_tree = (CommonTree)adaptor.create(LONG_LITERAL117); adaptor.addChild(root_0, LONG_LITERAL117_tree); pushFollow(FOLLOW_integer_literal_in_literal2595); integer_literal118=integer_literal(); state._fsp--; SHORT_LITERAL119=(Token)match(input,SHORT_LITERAL,FOLLOW_SHORT_LITERAL_in_literal2601); SHORT_LITERAL119_tree = (CommonTree)adaptor.create(SHORT_LITERAL119); adaptor.addChild(root_0, SHORT_LITERAL119_tree); BYTE_LITERAL120=(Token)match(input,BYTE_LITERAL,FOLLOW_BYTE_LITERAL_in_literal2607); BYTE_LITERAL120_tree = (CommonTree)adaptor.create(BYTE_LITERAL120); adaptor.addChild(root_0, BYTE_LITERAL120_tree); pushFollow(FOLLOW_float_literal_in_literal2613); float_literal121=float_literal(); state._fsp--; pushFollow(FOLLOW_double_literal_in_literal2619); double_literal122=double_literal(); state._fsp--; CHAR_LITERAL123=(Token)match(input,CHAR_LITERAL,FOLLOW_CHAR_LITERAL_in_literal2625); CHAR_LITERAL123_tree = (CommonTree)adaptor.create(CHAR_LITERAL123); adaptor.addChild(root_0, CHAR_LITERAL123_tree); STRING_LITERAL124=(Token)match(input,STRING_LITERAL,FOLLOW_STRING_LITERAL_in_literal2631);
pushFollow(FOLLOW_class_spec_in_smali_file1140); class_spec1=class_spec(); state._fsp--; pushFollow(FOLLOW_super_spec_in_smali_file1151); super_spec2=super_spec(); state._fsp--; pushFollow(FOLLOW_implements_spec_in_smali_file1159); implements_spec3=implements_spec(); state._fsp--; pushFollow(FOLLOW_source_spec_in_smali_file1168); source_spec4=source_spec(); state._fsp--; pushFollow(FOLLOW_method_in_smali_file1176); method5=method(); state._fsp--; pushFollow(FOLLOW_field_in_smali_file1182); field6=field(); state._fsp--; pushFollow(FOLLOW_annotation_in_smali_file1188); annotation7=annotation(); state._fsp--; EOF8=(Token)match(input,EOF,FOLLOW_EOF_in_smali_file1199);
pushFollow(FOLLOW_ordered_method_item_in_statements_and_directives1612); ordered_method_item34=ordered_method_item(); state._fsp--; pushFollow(FOLLOW_registers_directive_in_statements_and_directives1620); registers_directive35=registers_directive(); state._fsp--; pushFollow(FOLLOW_catch_directive_in_statements_and_directives1628); catch_directive36=catch_directive(); state._fsp--; pushFollow(FOLLOW_catchall_directive_in_statements_and_directives1636); catchall_directive37=catchall_directive(); state._fsp--; pushFollow(FOLLOW_parameter_directive_in_statements_and_directives1644); parameter_directive38=parameter_directive(); state._fsp--; pushFollow(FOLLOW_annotation_in_statements_and_directives1652); annotation39=annotation(); state._fsp--; adaptor.addChild(root_0, buildTree(I_ANNOTATIONS, "I_ANNOTATIONS", statements_and_directives_stack.peek().methodAnnotations)); reportError(re); recover(input,re); retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
METHOD_DIRECTIVE28=(Token)match(input,METHOD_DIRECTIVE,FOLLOW_METHOD_DIRECTIVE_in_method1553); stream_METHOD_DIRECTIVE.add(METHOD_DIRECTIVE28); pushFollow(FOLLOW_access_list_in_method1555); access_list29=access_list(); state._fsp--; pushFollow(FOLLOW_member_name_in_method1557); member_name30=member_name(); state._fsp--; pushFollow(FOLLOW_method_prototype_in_method1559); method_prototype31=method_prototype(); state._fsp--; pushFollow(FOLLOW_statements_and_directives_in_method1561); statements_and_directives32=statements_and_directives(); state._fsp--; END_METHOD_DIRECTIVE33=(Token)match(input,END_METHOD_DIRECTIVE,FOLLOW_END_METHOD_DIRECTIVE_in_method1567); stream_END_METHOD_DIRECTIVE.add(END_METHOD_DIRECTIVE33); reportError(re); recover(input,re); retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
CLASS_DIRECTIVE9=(Token)match(input,CLASS_DIRECTIVE,FOLLOW_CLASS_DIRECTIVE_in_class_spec1286); stream_CLASS_DIRECTIVE.add(CLASS_DIRECTIVE9); pushFollow(FOLLOW_access_list_in_class_spec1288); access_list10=access_list(); state._fsp--; CLASS_DESCRIPTOR11=(Token)match(input,CLASS_DESCRIPTOR,FOLLOW_CLASS_DESCRIPTOR_in_class_spec1290); stream_CLASS_DESCRIPTOR.add(CLASS_DESCRIPTOR11); reportError(re); recover(input,re); retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
PARAMETER_DIRECTIVE232=(Token)match(input,PARAMETER_DIRECTIVE,FOLLOW_PARAMETER_DIRECTIVE_in_parameter_directive3547); stream_PARAMETER_DIRECTIVE.add(PARAMETER_DIRECTIVE232); REGISTER233=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_parameter_directive3549); stream_REGISTER.add(REGISTER233); COMMA234=(Token)match(input,COMMA,FOLLOW_COMMA_in_parameter_directive3552); stream_COMMA.add(COMMA234); STRING_LITERAL235=(Token)match(input,STRING_LITERAL,FOLLOW_STRING_LITERAL_in_parameter_directive3554); stream_STRING_LITERAL.add(STRING_LITERAL235); throw new FailedPredicateException(input, "parameter_directive", "input.LA(1) == ANNOTATION_DIRECTIVE"); pushFollow(FOLLOW_annotation_in_parameter_directive3565); annotation236=annotation(); state._fsp--; END_PARAMETER_DIRECTIVE237=(Token)match(input,END_PARAMETER_DIRECTIVE,FOLLOW_END_PARAMETER_DIRECTIVE_in_parameter_directive3578); stream_END_PARAMETER_DIRECTIVE.add(END_PARAMETER_DIRECTIVE237); reportError(re); recover(input,re); retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
LONG_LITERAL100=(Token)match(input,LONG_LITERAL,FOLLOW_LONG_LITERAL_in_literal2486); LONG_LITERAL100_tree = (CommonTree)adaptor.create(LONG_LITERAL100); adaptor.addChild(root_0, LONG_LITERAL100_tree); pushFollow(FOLLOW_integer_literal_in_literal2492); integer_literal101=integer_literal(); state._fsp--; SHORT_LITERAL102=(Token)match(input,SHORT_LITERAL,FOLLOW_SHORT_LITERAL_in_literal2498); SHORT_LITERAL102_tree = (CommonTree)adaptor.create(SHORT_LITERAL102); adaptor.addChild(root_0, SHORT_LITERAL102_tree); BYTE_LITERAL103=(Token)match(input,BYTE_LITERAL,FOLLOW_BYTE_LITERAL_in_literal2504); BYTE_LITERAL103_tree = (CommonTree)adaptor.create(BYTE_LITERAL103); adaptor.addChild(root_0, BYTE_LITERAL103_tree); pushFollow(FOLLOW_float_literal_in_literal2510); float_literal104=float_literal(); state._fsp--; pushFollow(FOLLOW_double_literal_in_literal2516); double_literal105=double_literal(); state._fsp--; CHAR_LITERAL106=(Token)match(input,CHAR_LITERAL,FOLLOW_CHAR_LITERAL_in_literal2522); CHAR_LITERAL106_tree = (CommonTree)adaptor.create(CHAR_LITERAL106); adaptor.addChild(root_0, CHAR_LITERAL106_tree); STRING_LITERAL107=(Token)match(input,STRING_LITERAL,FOLLOW_STRING_LITERAL_in_literal2528);
pushFollow(FOLLOW_class_spec_in_smali_file1140); class_spec1=class_spec(); state._fsp--; pushFollow(FOLLOW_super_spec_in_smali_file1151); super_spec2=super_spec(); state._fsp--; pushFollow(FOLLOW_implements_spec_in_smali_file1159); implements_spec3=implements_spec(); state._fsp--; pushFollow(FOLLOW_source_spec_in_smali_file1168); source_spec4=source_spec(); state._fsp--; pushFollow(FOLLOW_method_in_smali_file1176); method5=method(); state._fsp--; pushFollow(FOLLOW_field_in_smali_file1182); field6=field(); state._fsp--; pushFollow(FOLLOW_annotation_in_smali_file1188); annotation7=annotation(); state._fsp--; EOF8=(Token)match(input,EOF,FOLLOW_EOF_in_smali_file1199);
pushFollow(FOLLOW_ordered_method_item_in_statements_and_directives1612); ordered_method_item34=ordered_method_item(); state._fsp--; pushFollow(FOLLOW_registers_directive_in_statements_and_directives1620); registers_directive35=registers_directive(); state._fsp--; pushFollow(FOLLOW_catch_directive_in_statements_and_directives1628); catch_directive36=catch_directive(); state._fsp--; pushFollow(FOLLOW_catchall_directive_in_statements_and_directives1636); catchall_directive37=catchall_directive(); state._fsp--; pushFollow(FOLLOW_parameter_directive_in_statements_and_directives1644); parameter_directive38=parameter_directive(); state._fsp--; pushFollow(FOLLOW_annotation_in_statements_and_directives1652); annotation39=annotation(); state._fsp--; adaptor.addChild(root_0, buildTree(I_ANNOTATIONS, "I_ANNOTATIONS", statements_and_directives_stack.peek().methodAnnotations)); reportError(re); recover(input,re); retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
METHOD_DIRECTIVE28=(Token)match(input,METHOD_DIRECTIVE,FOLLOW_METHOD_DIRECTIVE_in_method1553); stream_METHOD_DIRECTIVE.add(METHOD_DIRECTIVE28); pushFollow(FOLLOW_access_list_in_method1555); access_list29=access_list(); state._fsp--; pushFollow(FOLLOW_member_name_in_method1557); member_name30=member_name(); state._fsp--; pushFollow(FOLLOW_method_prototype_in_method1559); method_prototype31=method_prototype(); state._fsp--; pushFollow(FOLLOW_statements_and_directives_in_method1561); statements_and_directives32=statements_and_directives(); state._fsp--; END_METHOD_DIRECTIVE33=(Token)match(input,END_METHOD_DIRECTIVE,FOLLOW_END_METHOD_DIRECTIVE_in_method1567); stream_END_METHOD_DIRECTIVE.add(END_METHOD_DIRECTIVE33); reportError(re); recover(input,re); retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
smaliParser parser = new smaliParser(tokens); parser.setVerboseErrors(verboseErrors); smaliParser.smali_file_return result = parser.smali_file(); if (parser.getNumberOfSyntaxErrors() > 0 || lexer.getNumberOfSyntaxErrors() > 0) { return false;
CLASS_DIRECTIVE9=(Token)match(input,CLASS_DIRECTIVE,FOLLOW_CLASS_DIRECTIVE_in_class_spec1291); stream_CLASS_DIRECTIVE.add(CLASS_DIRECTIVE9); pushFollow(FOLLOW_access_list_in_class_spec1293); access_list10=access_list(); state._fsp--; CLASS_DESCRIPTOR11=(Token)match(input,CLASS_DESCRIPTOR,FOLLOW_CLASS_DESCRIPTOR_in_class_spec1295); stream_CLASS_DESCRIPTOR.add(CLASS_DESCRIPTOR11); reportError(re); recover(input,re); retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
PARAMETER_DIRECTIVE232=(Token)match(input,PARAMETER_DIRECTIVE,FOLLOW_PARAMETER_DIRECTIVE_in_parameter_directive3547); stream_PARAMETER_DIRECTIVE.add(PARAMETER_DIRECTIVE232); REGISTER233=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_parameter_directive3549); stream_REGISTER.add(REGISTER233); COMMA234=(Token)match(input,COMMA,FOLLOW_COMMA_in_parameter_directive3552); stream_COMMA.add(COMMA234); STRING_LITERAL235=(Token)match(input,STRING_LITERAL,FOLLOW_STRING_LITERAL_in_parameter_directive3554); stream_STRING_LITERAL.add(STRING_LITERAL235); throw new FailedPredicateException(input, "parameter_directive", "input.LA(1) == ANNOTATION_DIRECTIVE"); pushFollow(FOLLOW_annotation_in_parameter_directive3565); annotation236=annotation(); state._fsp--; END_PARAMETER_DIRECTIVE237=(Token)match(input,END_PARAMETER_DIRECTIVE,FOLLOW_END_PARAMETER_DIRECTIVE_in_parameter_directive3578); stream_END_PARAMETER_DIRECTIVE.add(END_PARAMETER_DIRECTIVE237); reportError(re); recover(input,re); retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
smaliParser parser = new smaliParser(tokens); parser.setVerboseErrors(verboseErrors); parser.setAllowOdex(allowOdex); parser.setApiLevel(apiLevel); smaliParser.smali_file_return result = parser.smali_file(); if (parser.getNumberOfSyntaxErrors() > 0 || lexer.getNumberOfSyntaxErrors() > 0) { return false;
LONG_LITERAL117=(Token)match(input,LONG_LITERAL,FOLLOW_LONG_LITERAL_in_literal2589); LONG_LITERAL117_tree = (CommonTree)adaptor.create(LONG_LITERAL117); adaptor.addChild(root_0, LONG_LITERAL117_tree); pushFollow(FOLLOW_integer_literal_in_literal2595); integer_literal118=integer_literal(); state._fsp--; SHORT_LITERAL119=(Token)match(input,SHORT_LITERAL,FOLLOW_SHORT_LITERAL_in_literal2601); SHORT_LITERAL119_tree = (CommonTree)adaptor.create(SHORT_LITERAL119); adaptor.addChild(root_0, SHORT_LITERAL119_tree); BYTE_LITERAL120=(Token)match(input,BYTE_LITERAL,FOLLOW_BYTE_LITERAL_in_literal2607); BYTE_LITERAL120_tree = (CommonTree)adaptor.create(BYTE_LITERAL120); adaptor.addChild(root_0, BYTE_LITERAL120_tree); pushFollow(FOLLOW_float_literal_in_literal2613); float_literal121=float_literal(); state._fsp--; pushFollow(FOLLOW_double_literal_in_literal2619); double_literal122=double_literal(); state._fsp--; CHAR_LITERAL123=(Token)match(input,CHAR_LITERAL,FOLLOW_CHAR_LITERAL_in_literal2625); CHAR_LITERAL123_tree = (CommonTree)adaptor.create(CHAR_LITERAL123); adaptor.addChild(root_0, CHAR_LITERAL123_tree); STRING_LITERAL124=(Token)match(input,STRING_LITERAL,FOLLOW_STRING_LITERAL_in_literal2631);