summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2016-04-30 15:51:46 +0100
committerMichael Williamson <mike@zwobble.org>2016-04-30 15:51:46 +0100
commitcd0383a5cdb303a552ef13fc3c70261d36823ba8 (patch)
treeb3ba3af7d1fe124a1b6ce0c258cf4a00935e1eee
parentdeaf4b7d433aeab4a422f1b875f802cad16b7014 (diff)
Handle unterminated strings in tokenizer
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/styles/parsing/StyleMappingTokeniser.java4
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/styles/parsing/TokenType.java1
-rw-r--r--src/test/java/org/zwobble/mammoth/tests/styles/parsing/StyleMappingTokeniserTests.java5
3 files changed, 10 insertions, 0 deletions
diff --git a/src/main/java/org/zwobble/mammoth/internal/styles/parsing/StyleMappingTokeniser.java b/src/main/java/org/zwobble/mammoth/internal/styles/parsing/StyleMappingTokeniser.java
index fe36242..4c6a2a9 100644
--- a/src/main/java/org/zwobble/mammoth/internal/styles/parsing/StyleMappingTokeniser.java
+++ b/src/main/java/org/zwobble/mammoth/internal/styles/parsing/StyleMappingTokeniser.java
@@ -27,6 +27,10 @@ public class StyleMappingTokeniser {
index = startIndex + 2;
} else {
index = seekEndOfToken(line, startIndex + 1, tokenType);
+ if (tokenType == TokenType.STRING && index == line.length() + 1) {
+ tokenType = TokenType.UNTERMINATED_STRING;
+ index -= 1;
+ }
}
return new Token(tokenType, line.substring(startIndex, index));
}
diff --git a/src/main/java/org/zwobble/mammoth/internal/styles/parsing/TokenType.java b/src/main/java/org/zwobble/mammoth/internal/styles/parsing/TokenType.java
index c9cc9a4..04a0b64 100644
--- a/src/main/java/org/zwobble/mammoth/internal/styles/parsing/TokenType.java
+++ b/src/main/java/org/zwobble/mammoth/internal/styles/parsing/TokenType.java
@@ -13,6 +13,7 @@ public enum TokenType {
OPEN_SQUARE_BRACKET,
CLOSE_SQUARE_BRACKET,
STRING,
+ UNTERMINATED_STRING,
INTEGER,
CHOICE,
EOF,
diff --git a/src/test/java/org/zwobble/mammoth/tests/styles/parsing/StyleMappingTokeniserTests.java b/src/test/java/org/zwobble/mammoth/tests/styles/parsing/StyleMappingTokeniserTests.java
index de60249..dd7c15f 100644
--- a/src/test/java/org/zwobble/mammoth/tests/styles/parsing/StyleMappingTokeniserTests.java
+++ b/src/test/java/org/zwobble/mammoth/tests/styles/parsing/StyleMappingTokeniserTests.java
@@ -41,6 +41,11 @@ public class StyleMappingTokeniserTests {
}
@Test
+ public void unterminatedStringsAreTokenised() {
+ assertTokens("'Tristan", isToken(TokenType.UNTERMINATED_STRING, "'Tristan"));
+ }
+
+ @Test
public void arrowsAreTokenised() {
assertTokens("=>=>", isToken(TokenType.ARROW, "=>"), isToken(TokenType.ARROW, "=>"));
}