From f729ef7c6dfaf537d0dd562943ee4db69500779c Mon Sep 17 00:00:00 2001 From: Rob Greene Date: Mon, 2 Sep 2019 21:07:52 -0500 Subject: [PATCH] Displaying a more intelligent error message with invalid tokens in the input stream. #20 --- .../applecommander/bastools/api/TokenReader.java | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/api/src/main/java/io/github/applecommander/bastools/api/TokenReader.java b/api/src/main/java/io/github/applecommander/bastools/api/TokenReader.java index bf23231..85fa8de 100644 --- a/api/src/main/java/io/github/applecommander/bastools/api/TokenReader.java +++ b/api/src/main/java/io/github/applecommander/bastools/api/TokenReader.java @@ -158,8 +158,18 @@ public class TokenReader { break; } default: - throw new IOException(String.format( - "Unknown! ttype=%d, nval=%f, sval=%s\n", tokenizer.ttype, tokenizer.nval, tokenizer.sval)); + String message = String.format("Unknown or unexpected character '%c'", tokenizer.ttype); + if (tokenizer.ttype == StreamTokenizer.TT_WORD) { + message = String.format("Unknown or unexpected string '%s'", tokenizer.sval); + } else if (tokenizer.ttype == StreamTokenizer.TT_NUMBER) { + message = String.format("Unknown or unexpected number %f", tokenizer.nval); + } else if (tokenizer.ttype == StreamTokenizer.TT_EOF) { + message = "Unexpected EOF"; + } else if (tokenizer.ttype == StreamTokenizer.TT_EOL) { + message = "Unexpected EOL"; + } + message += String.format(" found on line #%d", tokenizer.lineno()); + throw new IOException(message); } } }