From c45367eb373bf52fd370f1a685f68aa05f189265 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Wed, 16 Nov 2016 20:09:00 +0000 Subject: Add rule for unterminated strings --- lib/styles/parser/tokeniser.js | 5 ++++- test/styles/parser/tokeniser.tests.js | 4 ++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/lib/styles/parser/tokeniser.js b/lib/styles/parser/tokeniser.js index 2ada818..b97facd 100644 --- a/lib/styles/parser/tokeniser.js +++ b/lib/styles/parser/tokeniser.js @@ -3,6 +3,8 @@ var RegexTokeniser = lop.RegexTokeniser; exports.tokenise = tokenise; +var stringPrefix = "'((?:\\\\.|[^'])*)"; + function tokenise(string) { var tokeniser = new RegexTokeniser([ {name: "identifier", regex: /([a-zA-Z][a-zA-Z0-9\-]*)/}, @@ -16,7 +18,8 @@ function tokenise(string) { {name: "close-paren", regex: /\)/}, {name: "open-square-bracket", regex: /\[/}, {name: "close-square-bracket", regex: /\]/}, - {name: "string", regex: /'((?:\\.|[^'])*)'/}, + {name: "string", regex: new RegExp(stringPrefix + "'")}, + {name: "unterminated-string", regex: new RegExp(stringPrefix)}, {name: "integer", regex: /([0-9]+)/}, {name: "choice", regex: /\|/}, {name: "bang", regex: /(!)/} diff --git a/test/styles/parser/tokeniser.tests.js b/test/styles/parser/tokeniser.tests.js index e8b9d00..a7db79d 100644 --- a/test/styles/parser/tokeniser.tests.js +++ b/test/styles/parser/tokeniser.tests.js @@ -31,6 +31,10 @@ test("strings are tokenised", function() { assertTokens("'Tristan'", [isToken("string", "Tristan")]); }); +test("unterminated strings are tokenised", function() { + assertTokens("'Tristan", [isToken("unterminated-string", "Tristan")]); +}); + test("arrows are tokenised", function() { assertTokens("=>", [isToken("arrow")]); }); -- cgit v1.2.3