aboutsummaryrefslogtreecommitdiff
path: root/src/Conf.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/Conf.cpp')
-rw-r--r--src/Conf.cpp16
1 files changed, 9 insertions, 7 deletions
diff --git a/src/Conf.cpp b/src/Conf.cpp
index 56b1e2a..6383c30 100644
--- a/src/Conf.cpp
+++ b/src/Conf.cpp
@@ -68,7 +68,7 @@ namespace sibs
char *startOfIdentifier = code.base();
++code;
c = *code;
- while(isAlpha(c) || c == '_' || isDigit(c))
+ while(isAlpha(c) || isDigit(c) || c == '_' || c == '-')
{
++code;
c = *code;
@@ -95,19 +95,21 @@ namespace sibs
}
else if(c == '"')
{
- u32 escapeCount = 0;
+ bool escapeQuote = false;
++code;
char *startOfStr = code.base();
- while(escapeCount > 0 || *code != '"')
+ while(true)
{
c = *code;
- if(c == '\0')
- return Token::END_OF_FILE;
+ if(c == '"' && !escapeQuote)
+ break;
else if(c == '\\')
- ++escapeCount;
+ escapeQuote = !escapeQuote;
+ else if(c == '\0')
+ throw UnexpectedTokenException("Reached end of file before string end");
else
- escapeCount = min(0, escapeCount - 1);
+ escapeQuote = false;
++code;
}