Cmd.java 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. /***
  2. * Copyright (C) 2015 by Chang Liu <liuchang@cs.umd.edu>
  3. */
  4. package com.oblivm.backend.lang.inter;
  5. import net.sourceforge.argparse4j.ArgumentParsers;
  6. import net.sourceforge.argparse4j.inf.ArgumentParser;
  7. import net.sourceforge.argparse4j.inf.ArgumentParserException;
  8. import net.sourceforge.argparse4j.inf.Namespace;
  9. import com.oblivm.backend.flexsc.Flag;
  10. import com.oblivm.backend.util.EvaRunnable;
  11. import com.oblivm.backend.util.GenRunnable;
  12. /**
  13. * A single entry point to call EvaRunnable and GenRunnable. This class should
  14. * be used as the entry point for the jar file.
  15. *
  16. */
  17. public class Cmd {
  18. @SuppressWarnings("rawtypes")
  19. public static void main(String[] args) throws Exception {
  20. ArgumentParser ap = ArgumentParsers.newArgumentParser("Cmd");
  21. ap.addArgument("file").nargs("*").help("File to compile");
  22. ap.addArgument("--config").setDefault("Config.conf").help("Config file");
  23. ap.addArgument("-la", "--lenghAlice").help("input length of Alice");
  24. ap.addArgument("-t", "--type").choices("gen", "eva").setDefault("gen")
  25. .help("Whether it is the generator or the evaluator");
  26. ap.addArgument("-i", "--input").help("Input file");
  27. ap.addArgument("-c", "--class").help("Runnable Class");
  28. Namespace ns = null;
  29. try {
  30. ns = ap.parseArgs(args);
  31. } catch (ArgumentParserException e) {
  32. ap.handleError(e);
  33. System.exit(1);
  34. }
  35. if (ns.getString("type").equals("gen")) {
  36. GenRunnable gen = new MainRunnable.Generator(ns.getString("class"), ns.getString("input"));
  37. gen.loadConfig(ns.getString("config"));
  38. gen.runCore();
  39. if (Flag.CountTime)
  40. Flag.sw.print();
  41. } else {
  42. EvaRunnable eva = new MainRunnable.Evaluator(ns.getString("class"), ns.getString("input"));
  43. eva.loadConfig(ns.getString("config"));
  44. eva.runCore();
  45. if (Flag.CountTime)
  46. Flag.sw.print();
  47. if (Flag.countIO)
  48. eva.printStatistic();
  49. }
  50. }
  51. }