diff options
| author | Benjamin J. Culkin <bjculkin@mix.wvu.edu> | 2018-05-29 15:02:15 -0300 |
|---|---|---|
| committer | Benjamin J. Culkin <bjculkin@mix.wvu.edu> | 2018-05-29 15:02:15 -0300 |
| commit | fbf0024a72e58b303bfa54dfd181b59ede935891 (patch) | |
| tree | 82e69012cc92a76e0c743aeb01b8fef4605ae3a2 /src/main/java/bjc/dicelang/scl/StreamControlEngine.java | |
| parent | 1898f53cc072befe2694b5af78b1b916bef3b450 (diff) | |
Error handling cleanup
Cleanup the way errors are handled, as well as add some additional
debugging text.
Diffstat (limited to 'src/main/java/bjc/dicelang/scl/StreamControlEngine.java')
| -rw-r--r-- | src/main/java/bjc/dicelang/scl/StreamControlEngine.java | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/src/main/java/bjc/dicelang/scl/StreamControlEngine.java b/src/main/java/bjc/dicelang/scl/StreamControlEngine.java index 5c2b4de..d48d593 100644 --- a/src/main/java/bjc/dicelang/scl/StreamControlEngine.java +++ b/src/main/java/bjc/dicelang/scl/StreamControlEngine.java @@ -27,6 +27,7 @@ import static bjc.dicelang.scl.tokens.WordType.*; * * This is a large enough class that it should maybe be split into subclasses. */ + /** * Runs a Stream Control Language (SCL) program. * @@ -108,7 +109,7 @@ public class StreamControlEngine { case WORD: /* Handle words. */ if (!handleWord((WordSCLToken) tok)) { - System.out.printf("WARNING: Execution of word '%s' failed\n", tok); + Errors.inst.printError(WK_SCL_WRDFAIL, tok); } break; @@ -183,7 +184,8 @@ public class StreamControlEngine { break; case DROP: if (curStack.size() == 0) { - Errors.inst.printError(EK_SCL_SUNDERFLOW, tk.toString()); + Errors.inst.printError(EK_SCL_SUNDERFLOW, tk.toString(), 1); + return false; } curStack.drop(); @@ -196,7 +198,7 @@ public class StreamControlEngine { break; case NIP: if (curStack.size() < 2) { - Errors.inst.printError(EK_SCL_SUNDERFLOW, tk.toString()); + Errors.inst.printError(EK_SCL_SUNDERFLOW, tk.toString(), 2); return false; } curStack.nip(); @@ -223,7 +225,7 @@ public class StreamControlEngine { private boolean handleDefine() { if (curStack.size() < 2) { - Errors.inst.printError(EK_SCL_SUNDERFLOW, "def"); + Errors.inst.printError(EK_SCL_SUNDERFLOW, "def", 2); return false; } @@ -256,7 +258,7 @@ public class StreamControlEngine { final int n = (int) ((IntSCLToken) num).intVal; if (curStack.size() < n) { - Errors.inst.printError(EK_SCL_SUNDERFLOW, NNIP.toString()); + Errors.inst.printError(EK_SCL_SUNDERFLOW, NNIP.toString(), n); return false; } @@ -276,7 +278,7 @@ public class StreamControlEngine { final int n = (int) ((IntSCLToken) num).intVal; if (curStack.size() < n) { - Errors.inst.printError(EK_SCL_SUNDERFLOW, NDROP.toString()); + Errors.inst.printError(EK_SCL_SUNDERFLOW, NDROP.toString(), n); return false; } |
