diff options
| author | bjculkin <bjculkin@mix.wvu.edu> | 2018-03-01 19:13:48 -0500 |
|---|---|---|
| committer | bjculkin <bjculkin@mix.wvu.edu> | 2018-03-01 19:13:48 -0500 |
| commit | f9d9bd4bbf7dd6a297e1daf5ee7b4263d706d9cd (patch) | |
| tree | 75ade2ca798bcdbdd7daf867480378299598581a /base/src/bjc/dicelang/CLIArgsParser.java | |
| parent | b14a399d05fc90d8532cd08d1546e6bf197db10e (diff) | |
Update
Diffstat (limited to 'base/src/bjc/dicelang/CLIArgsParser.java')
| -rw-r--r-- | base/src/bjc/dicelang/CLIArgsParser.java | 208 |
1 files changed, 0 insertions, 208 deletions
diff --git a/base/src/bjc/dicelang/CLIArgsParser.java b/base/src/bjc/dicelang/CLIArgsParser.java deleted file mode 100644 index 553692b..0000000 --- a/base/src/bjc/dicelang/CLIArgsParser.java +++ /dev/null @@ -1,208 +0,0 @@ -package bjc.dicelang; - -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.IOException; -import java.util.Arrays; -import java.util.Scanner; - -import bjc.dicelang.util.ResourceLoader; - -import static bjc.dicelang.Errors.ErrorKey.*; - -/** - * Parse CLI arguments. - * - * @author Ben Culkin - * - */ -public class CLIArgsParser { - /** - * Parse the provided set of CLI arguments. - * - * @param args - * The CLI arguments to parse. - * @param eng - * The engine to affect with parsing. - * - * @return Whether or not to continue to the DiceLang repl. - */ - public static boolean parseArgs(final String[] args, final DiceLangEngine eng) { - if (args.length < 0) { - return true; - } - - if (args.length == 1 && (args[0].equals("--help") || args[0].equals("-h"))) { - for (final String lne : ResourceLoader.loadHelpFile("cli")) { - System.out.println(lne); - } - - System.exit(0); - } - - for (int i = 0; i < args.length; i++) { - final String arg = args[i]; - - /* - * @TODO 10/08/17 Ben Culkin :CLIArgRefactor - * - * Use whatever library gets added to BJC-Utils for this, and extend these to do - * more things. - */ - switch (arg) { - case "-d": - case "--debug": - if (!eng.toggleDebug()) { - eng.toggleDebug(); - } - break; - case "-nd": - case "--no-debug": - if (eng.toggleDebug()) { - eng.toggleDebug(); - } - break; - case "-po": - case "--postfix": - if (!eng.togglePostfix()) { - eng.togglePostfix(); - } - break; - case "-npo": - case "--no-postfix": - if (eng.togglePostfix()) { - eng.togglePostfix(); - } - break; - case "-pr": - case "--prefix": - if (!eng.togglePrefix()) { - eng.togglePrefix(); - } - break; - case "-npr": - case "--no-prefix": - if (eng.togglePrefix()) { - eng.togglePrefix(); - } - break; - case "-se": - case "--stepeval": - if (!eng.toggleStepEval()) { - eng.toggleStepEval(); - } - break; - case "-nse": - case "--no-stepeval": - if (eng.toggleStepEval()) { - eng.toggleStepEval(); - } - break; - case "-D": - case "--define": - i = simpleDefine(i, args, eng); - if (i == -1) { - return false; - } - break; - case "-df": - case "--define-file": - i = defineFile(i, args, eng); - if (i == -1) { - return false; - } - break; - case "-ctf": - case "--compiler-tweak-file": - /* - * @NOTE Not yet implemented. - */ - default: - Errors.inst.printError(EK_CLI_UNARG, arg); - return false; - } - } - - return true; - } - - /* Handle parsing a simple define. */ - private static int simpleDefine(final int i, final String[] args, final DiceLangEngine eng) { - /* :DefineRefactor */ - - if (i >= args.length - 1) { - Errors.inst.printError(EK_CLI_MISARG, "define"); - return -1; - } - - if (i >= args.length - 2) { - final Define dfn = new Define(5, false, false, false, null, args[i + 1], Arrays.asList("")); - - if (dfn.inError) { - return -1; - } - - eng.addLineDefine(dfn); - return i + 1; - } - - final Define dfn = new Define(5, false, false, false, null, args[i + 1], Arrays.asList(args[i + 2])); - - if (dfn.inError) { - return -1; - } - - eng.addLineDefine(dfn); - return i + 2; - } - - /* Load a series of defines from a file. */ - private static int defineFile(final int i, final String[] args, final DiceLangEngine eng) { - if (i >= args.length - 1) { - Errors.inst.printError(EK_CLI_MISARG, "define-file"); - return -1; - } - - final String fName = args[i + 1]; - - try (FileInputStream fis = new FileInputStream(fName)) { - try (Scanner scan = new Scanner(fis)) { - while (scan.hasNextLine()) { - final String ln = scan.nextLine(); - - final Define dfn = parseDefine(ln.substring(ln.indexOf(' '))); - - if (dfn == null || dfn.inError) { - return -1; - } - - if (ln.startsWith("line")) { - eng.addLineDefine(dfn); - } else if (ln.startsWith("token")) { - eng.addTokenDefine(dfn); - } else { - final String defnType = ln.substring(0, ln.indexOf(' ')); - - Errors.inst.printError(EK_CLI_INVDFNTYPE, defnType); - return -1; - } - } - } - } catch (final FileNotFoundException fnfex) { - Errors.inst.printError(EK_MISC_NOFILE, fName); - return -1; - } catch (final IOException ioex) { - Errors.inst.printError(EK_MISC_IOEX, fName); - return -1; - } - - return i + 1; - } - - private static Define parseDefine(final String ln) { - final Define res = null; - - /* :DefineRefactor */ - return res; - } -} |
