in libredex/ProguardLexer.cpp [413:525]
bool Token::is_command() const {
switch (type) {
case TokenType::openCurlyBracket:
case TokenType::closeCurlyBracket:
case TokenType::openBracket:
case TokenType::closeBracket:
case TokenType::semiColon:
case TokenType::colon:
case TokenType::notToken:
case TokenType::comma:
case TokenType::slash:
case TokenType::classToken:
case TokenType::publicToken:
case TokenType::final:
case TokenType::abstract:
case TokenType::interface:
case TokenType::enumToken:
case TokenType::extends:
case TokenType::implements:
case TokenType::privateToken:
case TokenType::protectedToken:
case TokenType::staticToken:
case TokenType::volatileToken:
case TokenType::transient:
case TokenType::annotation:
case TokenType::annotation_application:
case TokenType::synchronized:
case TokenType::native:
case TokenType::strictfp:
case TokenType::synthetic:
case TokenType::bridge:
case TokenType::varargs:
case TokenType::identifier:
case TokenType::arrayType:
case TokenType::filepath:
case TokenType::target_version_token:
case TokenType::filter_pattern:
case TokenType::eof_token:
case TokenType::comment:
return false;
case TokenType::command:
return true;
// Input/Output Options
case TokenType::include:
case TokenType::basedirectory:
case TokenType::dump:
case TokenType::injars:
case TokenType::outjars:
case TokenType::libraryjars:
case TokenType::keepdirectories:
case TokenType::target:
case TokenType::dontskipnonpubliclibraryclasses:
return true;
// Keep Options
case TokenType::keep:
case TokenType::keepclassmembers:
case TokenType::keepclasseswithmembers:
case TokenType::keepnames:
case TokenType::keepclassmembernames:
case TokenType::keepclasseswithmembernames:
case TokenType::printseeds:
return true;
// Keep Option Modifiers
case TokenType::includedescriptorclasses_token:
case TokenType::allowshrinking_token:
case TokenType::allowoptimization_token:
case TokenType::allowobfuscation_token:
return false;
// Shrinking Options
case TokenType::dontshrink:
case TokenType::printusage:
case TokenType::whyareyoukeeping:
return true;
// Optimization Options
case TokenType::dontoptimize:
case TokenType::optimizations:
case TokenType::optimizationpasses:
case TokenType::assumenosideeffects:
case TokenType::mergeinterfacesaggressively:
case TokenType::allowaccessmodification_token:
case TokenType::returns:
return true;
// Obfuscation Options
case TokenType::dontobfuscate:
case TokenType::printmapping:
case TokenType::repackageclasses:
case TokenType::keepattributes:
case TokenType::dontusemixedcaseclassnames_token:
case TokenType::keeppackagenames:
return true;
// Preverification Options
case TokenType::dontpreverify_token:
return true;
// General Options
case TokenType::printconfiguration:
case TokenType::dontwarn:
case TokenType::verbose_token:
return true;
case TokenType::unknownToken:
return false;
}
not_reached();
}