private static List parseOptions()

in jflex/src/main/java/jflex/Main.java [50:236]


  private static List<File> parseOptions(String[] argv) throws SilentExit {
    List<File> files = new ArrayList<>();

    for (int i = 0; i < argv.length; i++) {

      if (Objects.equals(argv[i], "-d")
          || Objects.equals(argv[i], "--outdir")) { // $NON-NLS-1$ //$NON-NLS-2$
        if (++i >= argv.length) {
          Out.error(ErrorMessages.NO_DIRECTORY);
          throw new GeneratorException();
        }
        OptionUtils.setDir(argv[i]);
        continue;
      }

      if (Objects.equals(argv[i], "--skel")
          || Objects.equals(argv[i], "-skel")) { // $NON-NLS-1$ //$NON-NLS-2$
        if (++i >= argv.length) {
          Out.error(ErrorMessages.NO_SKEL_FILE);
          throw new GeneratorException();
        }

        OptionUtils.setSkeleton(new File(argv[i]));
        continue;
      }

      if (Objects.equals(argv[i], "--encoding")) {
        if (++i >= argv.length) {
          Out.error(ErrorMessages.NO_ENCODING);
          throw new GeneratorException();
        }

        OptionUtils.setEncoding(argv[i]);
        continue;
      }

      if (Objects.equals(argv[i], "-jlex")
          || Objects.equals(argv[i], "--jlex")) { // $NON-NLS-1$ //$NON-NLS-2$
        Options.jlex = true;
        continue;
      }

      if (Objects.equals(argv[i], "-v")
          || Objects.equals(argv[i], "--verbose")
          || Objects.equals(argv[i], "-verbose")) { // $NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
        Options.verbose = true;
        Options.progress = true;
        Options.enable(ErrorMessages.MACRO_UNUSED);
        continue;
      }

      if (Objects.equals(argv[i], "-q")
          || Objects.equals(argv[i], "--quiet")
          || Objects.equals(argv[i], "-quiet")) { // $NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
        Options.verbose = false;
        Options.progress = false;
        Options.suppress(ErrorMessages.MACRO_UNUSED);
        continue;
      }

      if (Objects.equals(argv[i], "--warn-all")) { // $NON-NLS-1$
        OptionUtils.enableAllWarnings();
        continue;
      }

      if (Objects.equals(argv[i], "--no-warn-all")) { // $NON-NLS-1$
        OptionUtils.suppressAllWarnings();
        continue;
      }

      if (Objects.equals(argv[i], "--warn-unused")) { // $NON-NLS-1$
        Options.enable(ErrorMessages.MACRO_UNUSED);
        continue;
      }

      if (Objects.equals(argv[i], "--no-warn-unused")) { // $NON-NLS-1$
        Options.suppress(ErrorMessages.MACRO_UNUSED);
        continue;
      }

      if (argv[i].startsWith("--warn-")) { // $NON-NLS-1$
        OptionUtils.enableWarning(argv[i].substring(7));
        continue;
      }

      if (argv[i].startsWith("--no-warn-")) { // $NON-NLS-1$
        OptionUtils.suppressWarning(argv[i].substring(10));
        continue;
      }

      if (Objects.equals(argv[i], "--dump")
          || Objects.equals(argv[i], "-dump")) { // $NON-NLS-1$ //$NON-NLS-2$
        Options.dump = true;
        continue;
      }

      if (Objects.equals(argv[i], "--time")
          || Objects.equals(argv[i], "-time")) { // $NON-NLS-1$ //$NON-NLS-2$
        Options.time = true;
        continue;
      }

      if (Objects.equals(argv[i], "--version")
          || Objects.equals(argv[i], "-version")) { // $NON-NLS-1$ //$NON-NLS-2$
        Out.println(ErrorMessages.THIS_IS_JFLEX, Build.VERSION);
        throw new SilentExit(0);
      }

      if (Objects.equals(argv[i], "--dot")
          || Objects.equals(argv[i], "-dot")) { // $NON-NLS-1$ //$NON-NLS-2$
        Options.dot = true;
        continue;
      }

      if (Objects.equals(argv[i], "--help")
          || Objects.equals(argv[i], "-h")
          || Objects.equals(argv[i], "/h")) { // $NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
        printUsage();
        throw new SilentExit(0);
      }

      if (Objects.equals(argv[i], "--info")
          || Objects.equals(argv[i], "-info")) { // $NON-NLS-1$ //$NON-NLS-2$
        printSystemInfo();
        throw new SilentExit(0);
      }

      if (Objects.equals(argv[i], "--nomin")
          || Objects.equals(argv[i], "-nomin")) { // $NON-NLS-1$ //$NON-NLS-2$
        Options.no_minimize = true;
        continue;
      }

      if (Objects.equals(argv[i], "--pack")
          || Objects.equals(argv[i], "-pack")) { // $NON-NLS-1$ //$NON-NLS-2$
        /* no-op - pack is the only generation method */
        continue;
      }

      if (Objects.equals(argv[i], "--nobak")
          || Objects.equals(argv[i], "-nobak")) { // $NON-NLS-1$ //$NON-NLS-2$
        Options.no_backup = true;
        continue;
      }

      if (Objects.equals(argv[i], "--legacydot")
          || Objects.equals(argv[i], "-legacydot")) { // $NON-NLS-1$ //$NON-NLS-2$
        Options.legacy_dot = true;
        continue;
      }

      if (Objects.equals(argv[i], "--uniprops")
          || Objects.equals(argv[i], "-uniprops")) { // $NON-NLS-1$ //$NON-NLS-2$
        if (++i >= argv.length) {
          Out.error(
              ErrorMessages.PROPS_ARG_REQUIRES_UNICODE_VERSION, UnicodeProperties.UNICODE_VERSIONS);
          throw new GeneratorException();
        }
        String unicodeVersion = argv[i];
        try {
          printUnicodePropertyValuesAndAliases(unicodeVersion);
        } catch (UnicodeProperties.UnsupportedUnicodeVersionException e) {
          Out.error(
              ErrorMessages.UNSUPPORTED_UNICODE_VERSION_SUPPORTED_ARE,
              UnicodeProperties.UNICODE_VERSIONS);
          throw new GeneratorException(e);
        }
        throw new SilentExit();
      }

      if (argv[i].startsWith("-")) { // $NON-NLS-1$
        Out.error(ErrorMessages.UNKNOWN_COMMANDLINE, argv[i]);
        printUsage();
        throw new SilentExit();
      }

      // if argv[i] is not an option, try to read it as file
      File f = new File(argv[i]);
      if (f.isFile() && f.canRead()) files.add(f);
      else {
        Out.error("Sorry, couldn't open \"" + f + "\""); // $NON-NLS-2$
        throw new GeneratorException();
      }
    }

    return files;
  }