diff options
| author | Michael Williamson <mike@zwobble.org> | 2016-04-30 15:51:46 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2016-04-30 15:51:46 +0100 |
| commit | cd0383a5cdb303a552ef13fc3c70261d36823ba8 (patch) | |
| tree | b3ba3af7d1fe124a1b6ce0c258cf4a00935e1eee | |
| parent | deaf4b7d433aeab4a422f1b875f802cad16b7014 (diff) | |
Handle unterminated strings in tokenizer
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, "=>")); } |
