summaryrefslogtreecommitdiff
path: root/dice-lang/src/bjc/dicelang/Errors.java
diff options
context:
space:
mode:
Diffstat (limited to 'dice-lang/src/bjc/dicelang/Errors.java')
-rw-r--r--dice-lang/src/bjc/dicelang/Errors.java523
1 files changed, 0 insertions, 523 deletions
diff --git a/dice-lang/src/bjc/dicelang/Errors.java b/dice-lang/src/bjc/dicelang/Errors.java
deleted file mode 100644
index 255db75..0000000
--- a/dice-lang/src/bjc/dicelang/Errors.java
+++ /dev/null
@@ -1,523 +0,0 @@
-package bjc.dicelang;
-
-/**
- * Repository for error messages.
- *
- * @TODO 10/08/17 Ben Culkin :ErrorRefactor
- * This way of handling error messages is not easy to deal with. Something
- * else needs to be done, but I'm not sure what at the moment.
- *
- * @author EVE
- *
- */
-public class Errors {
- /**
- * The types of error message.
- *
- * @author EVE
- *
- */
- public static enum ErrorKey {
- /* Define Errors */
- /**
- * Incorrect define guard syntax
- */
- EK_DFN_PREDSYN,
- /**
- * Incorrect define search syntax
- */
- EK_DFN_SRCSYN,
- /**
- * Recursive define recursed too many times
- */
- EK_DFN_RECUR,
-
- /* Console Errors */
- /**
- * Unknown console pragma
- */
- EK_CONS_INVPRAG,
- /**
- * Improperly formatted define
- */
- EK_CONS_INVDEFINE,
-
- /* Language Engine Errors */
- /**
- * Found closing double-brace w/out opening double-brace
- */
- EK_ENG_NOOPENING,
- /**
- * Reached end of command w/out balanced double-braces
- */
- EK_ENG_NOCLOSING,
-
- /* Tokenizer Errors */
- /**
- * Found an unexpected grouping token
- */
- EK_TOK_UNGROUP,
- /**
- * Invalid base for a flexadecimal number
- */
- EK_TOK_INVBASE,
- /**
- * Invalid flexadecimal number in a given base
- */
- EK_TOK_INVFLEX,
-
- /* Evaluator Errors */
- /**
- * Unknown node type
- */
- EK_EVAL_INVNODE,
- /**
- * Incorrect # of args to binary operator
- */
- EK_EVAL_INVBIN,
- /**
- * Incorrect # of args to unary operator
- */
- EK_EVAL_INVUNARY,
- /**
- * Unknown binary operator
- */
- EK_EVAL_UNBIN,
- /**
- * Unknown unary operator
- */
- EK_EVAL_UNUNARY,
- /**
- * Math on strings doesn't work
- */
- EK_EVAL_STRINGMATH,
- /**
- * Attempted divide by zero
- */
- EK_EVAL_DIVZERO,
- /**
- * Attempted to divide dice
- */
- EK_EVAL_DIVDICE,
- /**
- * Unknown math operator
- */
- EK_EVAL_UNMATH,
- /**
- * Unknown token reference
- */
- EK_EVAL_UNTOK,
- /**
- * Unknown dice operator
- */
- EK_EVAL_UNDICE,
- /**
- * Incorrect type to dice group operator
- */
- EK_EVAL_INVDGROUP,
- /**
- * Incorrect type to dice creation operator
- */
- EK_EVAL_INVDCREATE,
- /**
- * Incorrect type to other dice operator
- */
- EK_EVAL_INVDICE,
- /**
- * Mismatched types to math operator
- */
- EK_EVAL_MISMATH,
- /**
- * Incorrect type to string operator
- */
- EK_EVAL_INVSTRING,
- /**
- * Unknown string operator
- */
- EK_EVAL_UNSTRING,
-
- /* Parser Error */
- /**
- * Group closing where there couldn't be an opener
- */
- EK_PARSE_NOCLOSE,
- /**
- * Group closing without group opener
- */
- EK_PARSE_UNCLOSE,
- /**
- * Incorrect # of arguments to binary operator
- */
- EK_PARSE_BINARY,
- /**
- * Not enough operands to binary operator
- */
- EK_PARSE_UNOPERAND,
- /**
- * Unrecognized token type
- */
- EK_PARSE_INVTOKEN,
-
- /* Shunter Error */
- /**
- * Unary operator expected a operand, but got an operator
- */
- EK_SHUNT_NOTADV,
- /**
- * Unary operator expected an operator, but got an operand
- */
- EK_SHUNT_NOTADJ,
- /**
- * Unary operator expected an operator, but didn't find one
- */
- EK_SHUNT_NOOP,
- /**
- * Asked for opening grouping operator, but couldn't find one
- */
- EK_SHUNT_NOGROUP,
- /**
- * No group for group seperator to attach to
- */
- EK_SHUNT_INVSEP,
- /**
- * Attempted to chain non-associative operator
- */
- EK_SHUNT_NOTASSOC,
-
- /* Stream Errors */
- /**
- * Attempted to switch to a non-existant stream
- */
- EK_STRM_NONEX,
- /**
- * Can't delete the last stream
- */
- EK_STRM_LAST,
- /**
- * Unknown stream command
- */
- EK_STRM_INVCOM,
-
- /* SCL Errors */
- /**
- * Unknown SCL token
- */
- EK_SCL_INVTOKEN,
- /**
- * Mismatched quote in SCL command
- */
- EK_SCL_MMQUOTE,
- /**
- * Stack underflow in SCL command
- */
- EK_SCL_SUNDERFLOW,
- /**
- * Unknown word in SCL command
- */
- EK_SCL_UNWORD,
- /**
- * Invalid argument to SCL command
- */
- EK_SCL_INVARG,
-
- /* CLI Argument Errors */
- /**
- * Unknown CLI argument
- */
- EK_CLI_UNARG,
- /**
- * Missing sub-argument to argument
- */
- EK_CLI_MISARG,
- /**
- * Invalid define type
- */
- EK_CLI_INVDFNTYPE,
-
- /* Miscellaneous errors */
- /**
- * Unknown I/O problem
- */
- EK_MISC_IOEX,
- /**
- * File not found
- */
- EK_MISC_NOFILE,
-
- /* Dice errors. */
- /* Recieved the wrong sort of expression to a die. */
- EK_DICE_INVTYPE,
- }
-
- /**
- * The mode for the type of error messages to print out.
- *
- * @author EVE
- *
- */
- public static enum ErrorMode {
- /**
- * Output error messages for wizards.
- */
- WIZARD,
- /**
- * Output error messages for developers.
- */
- DEV
- }
-
- private ErrorMode mode;
-
- /**
- * Print an error.
- *
- * @param key
- * The key of the error.
- *
- * @param args
- * The arguments for the error.
- */
- public void printError(final ErrorKey key, final String... args) {
- switch (mode) {
- case WIZARD:
- if (key == ErrorKey.EK_MISC_NOFILE) {
- System.out.println("\t? 404");
- } else {
- System.out.println("\t? " + key.ordinal());
- }
-
- break;
-
- case DEV:
- devError(key, args);
- break;
-
- default:
- System.out.println("\tERROR ERROR: Unknown error mode " + mode);
- }
- }
-
- private static void devError(final ErrorKey key, final String[] args) {
- switch (key) {
- case EK_DFN_PREDSYN:
- System.out.printf("\tERROR: Incorrect define guard syntax %s\n", args[0]);
- break;
-
- case EK_DFN_SRCSYN:
- System.out.printf("\tERROR: Incorrect define match syntax %s\n", args[0]);
- break;
-
- case EK_DFN_RECUR:
- System.out.printf(
- "\tERROR: Recursive define didn't converge after %s iterations."
- + " Original string was %s, last iteration was %s\n",
- args[0], args[1], args[2]);
- break;
-
- case EK_CONS_INVPRAG:
- System.out.printf("\tERROR: Unknown pragma %s\n", args[0]);
- break;
-
- case EK_CONS_INVDEFINE:
- System.out.printf("\tERROR: Improperly formatted define %s\n", args[0]);
- break;
-
- case EK_ENG_NOOPENING:
- System.out.printf("\tERROR: Encountered closing doublebrace without"
- + " matching opening doublebrace\n");
- break;
-
- case EK_ENG_NOCLOSING:
- System.out.printf("\tERROR: Reached end of string before closing doublebrace was found\n");
- break;
-
- case EK_TOK_UNGROUP:
- System.out.printf("\tERROR: Unrecognized grouping token %s\n", args[0]);
- break;
-
- case EK_TOK_INVBASE:
- System.out.printf("\tERROR: Invalid flexadecimal base %s\n", args[0]);
- break;
-
- case EK_TOK_INVFLEX:
- System.out.printf("\tERROR: Invalid flexadecimal number %s in base %s\n", args[0],
- args[1]);
- break;
-
- case EK_EVAL_INVNODE:
- System.out.printf("\tERROR: Unknown node in evaluator: %s\n", args[0]);
- break;
-
- case EK_EVAL_INVBIN:
- System.out.printf("\tERROR: Binary operators take 2 operands, not %s\n"
- + "\tProblem node is %s\n", args[0], args[1]);
- break;
-
- case EK_EVAL_UNBIN:
- System.out.printf("\tERROR: Unknown binary operator %s\n", args[0]);
- break;
-
- case EK_EVAL_STRINGMATH:
- System.out.printf("\tERROR: Math operators don't work on strings\n");
- break;
-
- case EK_EVAL_DIVZERO:
- System.out.printf("\tERROR: Attempted divide by zero\n");
- break;
-
- case EK_EVAL_DIVDICE:
- System.out.printf("\tERROR: Dice cannot be divided\n");
- break;
-
- case EK_EVAL_UNMATH:
- System.out.printf("\tERROR: Unknown math binary operator: %s\n", args[0]);
- break;
-
- case EK_EVAL_UNTOK:
- System.out.printf("\tERROR: Unknown token ref %s\n", args[0]);
- break;
-
- case EK_EVAL_UNDICE:
- System.out.printf("\tERROR: Unknown dice operator %s\n", args[0]);
- break;
-
- case EK_EVAL_INVDCREATE:
- System.out.printf("\tERROR: Dice creation operator expects integers," + " not %s\n",
- args[0]);
- break;
-
- case EK_EVAL_INVDGROUP:
- System.out.printf("\tERROR: Dice group operator expects scalar dice or integers," +
- " not %s\n",
- args[0]);
- break;
-
- case EK_EVAL_INVDICE:
- System.out.printf("\tERROR: Dice operators expect scalar dice, not %s\n", args[0]);
- break;
-
- case EK_EVAL_MISMATH:
- System.out.printf("\tERROR: Math operators expect two operands of the same type\n");
- break;
-
- case EK_EVAL_INVSTRING:
- System.out.printf("\tERROR: Incorrect type %s to string operator\n", args[0]);
- break;
-
- case EK_EVAL_UNSTRING:
- System.out.printf("\tERROR: Unknown string operator %s\n", args[0]);
- break;
-
- case EK_PARSE_NOCLOSE:
- System.out.printf("\tERROR: Group closing with no possible group opener\n");
- break;
-
- case EK_PARSE_UNCLOSE:
- System.out.printf("\tERROR: Found group closer without opener: (closing was %s"
- + ", expected %s)\n", args[0], args[1]);
- break;
-
- case EK_PARSE_BINARY:
- System.out.printf("\tERROR: Expected at least two operands\n");
- break;
-
- case EK_PARSE_UNOPERAND:
- System.out.printf("\tERROR: Operator %s expected more operands than provided\n", args[0]);
- break;
-
- case EK_PARSE_INVTOKEN:
- System.out.printf("\tERROR: Unrecognized token type in parsing: %s\n", args[0]);
- break;
-
- case EK_SHUNT_NOTADV:
- System.out.printf("\tERROR: Unary operator %s is an adjective, not an adverb. It can't be"
- + " applied to the operator %s\n", args[0], args[1]);
- break;
-
- case EK_SHUNT_NOTADJ:
- System.out.printf("\tERROR: Unary operator %s is an adjective, not an adverb. It can't be"
- + " applied to the operator %s\n", args[0], args[1]);
- break;
-
- case EK_SHUNT_NOOP:
- System.out.printf("\tERROR: Unary operator %s is an adverb, but there is no operator"
- + " to apply it to\n", args[0]);
- break;
-
- case EK_SHUNT_NOGROUP:
- System.out.printf("\tERROR: Couldn't find matching grouping %s (expected %s)\n", args[0],
- args[1]);
- break;
-
- case EK_SHUNT_NOTASSOC:
- System.out.printf("\tERROR: Attempted to chain non-associative operator %s\n", args[0]);
- break;
-
- case EK_SHUNT_INVSEP:
- System.out.printf("\tERROR: Couldn't find grouper for group seperator to attach to\n");
- break;
-
- case EK_STRM_NONEX:
- System.out.printf("\tERROR: Attempted to switch to non-existent stream\n");
- break;
-
- case EK_STRM_LAST:
- System.out.printf("\tERROR: Cannot delete last stream\n");
- break;
-
- case EK_STRM_INVCOM:
- System.out.printf("\tERROR: Unknown stream control command %s\n", args[0]);
- break;
-
- case EK_SCL_INVTOKEN:
- System.out.printf("\tERROR: Unknown SCL token %s\n", args[0]);
- break;
-
- case EK_SCL_MMQUOTE:
- System.out.printf("\tERROR: Mismatched delimiter in SCL command\n");
- break;
-
- case EK_SCL_SUNDERFLOW:
- System.out.printf("\tERROR: Not enough items in stack for word %s\n", args[0]);
- break;
-
- case EK_SCL_UNWORD:
- System.out.printf("\tERROR: Unknown word %s\n", args[0]);
- break;
-
- case EK_CLI_UNARG:
- System.out.printf("\tERROR: Unknown argument %s\n", args[0]);
- break;
-
- case EK_CLI_MISARG:
- System.out.printf("\tERROR: Missing subargument to command %s", args[0]);
- break;
-
- case EK_CLI_INVDFNTYPE:
- System.out.printf("\tERROR: Invalid define type %s\n", args[0]);
- break;
-
- case EK_MISC_IOEX:
- System.out.printf("\tERROR: I/O problem with file\n");
- break;
-
- case EK_MISC_NOFILE:
- System.out.printf("\tERROR: No such file %s\n", args[0]);
- break;
-
- default:
- System.out.printf("\tERROR ERROR: Unknown error key %s\n", key);
- }
- }
-
- /**
- * The instance of the errors.
- */
- public final static Errors inst;
-
- static {
- inst = new Errors();
-
- inst.mode = ErrorMode.DEV;
- }
-}