summaryrefslogtreecommitdiff
path: root/src/util/Tokenizer.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'src/util/Tokenizer.cxx')
-rw-r--r--src/util/Tokenizer.cxx64
1 files changed, 21 insertions, 43 deletions
diff --git a/src/util/Tokenizer.cxx b/src/util/Tokenizer.cxx
index 19322b70d..e065ab6e0 100644
--- a/src/util/Tokenizer.cxx
+++ b/src/util/Tokenizer.cxx
@@ -31,10 +31,8 @@
#include "Tokenizer.hxx"
#include "CharUtil.hxx"
#include "StringUtil.hxx"
-#include "Error.hxx"
-#include "Domain.hxx"
-static constexpr Domain tokenizer_domain("tokenizer");
+#include <stdexcept>
static inline bool
valid_word_first_char(char ch)
@@ -49,7 +47,7 @@ valid_word_char(char ch)
}
char *
-Tokenizer::NextWord(Error &error)
+Tokenizer::NextWord()
{
char *const word = input;
@@ -58,10 +56,8 @@ Tokenizer::NextWord(Error &error)
/* check the first character */
- if (!valid_word_first_char(*input)) {
- error.Set(tokenizer_domain, "Letter expected");
- return nullptr;
- }
+ if (!valid_word_first_char(*input))
+ throw std::runtime_error("Letter expected");
/* now iterate over the other characters until we find a
whitespace or end-of-string */
@@ -75,10 +71,8 @@ Tokenizer::NextWord(Error &error)
break;
}
- if (!valid_word_char(*input)) {
- error.Set(tokenizer_domain, "Invalid word character");
- return nullptr;
- }
+ if (!valid_word_char(*input))
+ throw std::runtime_error("Invalid word character");
}
/* end of string: the string is already null-terminated
@@ -94,7 +88,7 @@ valid_unquoted_char(char ch)
}
char *
-Tokenizer::NextUnquoted(Error &error)
+Tokenizer::NextUnquoted()
{
char *const word = input;
@@ -103,10 +97,8 @@ Tokenizer::NextUnquoted(Error &error)
/* check the first character */
- if (!valid_unquoted_char(*input)) {
- error.Set(tokenizer_domain, "Invalid unquoted character");
- return nullptr;
- }
+ if (!valid_unquoted_char(*input))
+ throw std::runtime_error("Invalid unquoted character");
/* now iterate over the other characters until we find a
whitespace or end-of-string */
@@ -120,11 +112,8 @@ Tokenizer::NextUnquoted(Error &error)
break;
}
- if (!valid_unquoted_char(*input)) {
- error.Set(tokenizer_domain,
- "Invalid unquoted character");
- return nullptr;
- }
+ if (!valid_unquoted_char(*input))
+ throw std::runtime_error("Invalid unquoted character");
}
/* end of string: the string is already null-terminated
@@ -134,7 +123,7 @@ Tokenizer::NextUnquoted(Error &error)
}
char *
-Tokenizer::NextString(Error &error)
+Tokenizer::NextString()
{
char *const word = input, *dest = input;
@@ -144,10 +133,8 @@ Tokenizer::NextString(Error &error)
/* check for the opening " */
- if (*input != '"') {
- error.Set(tokenizer_domain, "'\"' expected");
- return nullptr;
- }
+ if (*input != '"')
+ throw std::runtime_error("'\"' expected");
++input;
@@ -159,14 +146,8 @@ Tokenizer::NextString(Error &error)
character */
++input;
- if (*input == 0) {
- /* return input-1 so the caller can see the
- difference between "end of line" and
- "error" */
- --input;
- error.Set(tokenizer_domain, "Missing closing '\"'");
- return nullptr;
- }
+ if (*input == 0)
+ throw std::runtime_error("Missing closing '\"'");
/* copy one character */
*dest++ = *input++;
@@ -176,11 +157,8 @@ Tokenizer::NextString(Error &error)
line) */
++input;
- if (!IsWhitespaceFast(*input)) {
- error.Set(tokenizer_domain,
- "Space expected after closing '\"'");
- return nullptr;
- }
+ if (!IsWhitespaceFast(*input))
+ throw std::runtime_error("Space expected after closing '\"'");
/* finish the string and return it */
@@ -190,10 +168,10 @@ Tokenizer::NextString(Error &error)
}
char *
-Tokenizer::NextParam(Error &error)
+Tokenizer::NextParam()
{
if (*input == '"')
- return NextString(error);
+ return NextString();
else
- return NextUnquoted(error);
+ return NextUnquoted();
}