From 2495381bcbc20d323a5c855f2edd2f046a4c07a6 Mon Sep 17 00:00:00 2001 From: Joshua Bell Date: Wed, 24 Jun 2020 21:42:10 -0700 Subject: [PATCH] Fix parsing of unterminated strings in DATA statements Fixes #35 --- basic.js | 2 +- samples/sample.unittests.txt | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/basic.js b/basic.js index e5d7a6e..dd2127d 100644 --- a/basic.js +++ b/basic.js @@ -333,7 +333,7 @@ this.basic = (function() { var parseDataInput = (function() { var regexWhitespace = /^[ \t]+/, - regexQuotedString = /^"([^"]*?)"/, + regexQuotedString = /^"([^"]*?)(?:"|(?=\n|\r|$))/, regexUnquotedString = /^[^:,\r\n]*/, regexComma = /^,/; diff --git a/samples/sample.unittests.txt b/samples/sample.unittests.txt index 2e61b39..074cf56 100644 --- a/samples/sample.unittests.txt +++ b/samples/sample.unittests.txt @@ -384,6 +384,8 @@ 6001 DATA 1,2,3 6002 DATA "A","B","C" +6003 DATA A,B,C +6004 DATA "UNTERM,INATED 6010 T$ = "READ" : RESTORE @@ -391,6 +393,8 @@ : READ T,U : S = (T=2 AND U=3) : GOSUB 1 : READ A$ : S = (A$="A") : GOSUB 1 : READ A$,B$ : S = (A$="B" AND B$="C") : GOSUB 1 +: READ A$,B$,C$ : S = (A$="A" AND B$="B" AND C$="C") : GOSUB 1 +: READ A$ : S = (A$="UNTERM,INATED") : GOSUB 1 6020 T$ = "RESTORE" : RESTORE : READ T : S = (T=1) : GOSUB 1