bool Token::is_command()

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();
}