From 8094fbbb4cb2efb40fef2386c89474a2606bfe62 Mon Sep 17 00:00:00 2001 From: Nat Quayle Nelson Date: Mon, 5 Apr 2021 19:47:25 -0600 Subject: [PATCH] Fix nextToken() EOF error --- src/kiss/Reader.hx | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/kiss/Reader.hx b/src/kiss/Reader.hx index 49f89ce..7a3f1aa 100644 --- a/src/kiss/Reader.hx +++ b/src/kiss/Reader.hx @@ -140,12 +140,17 @@ class Reader { public static final terminators = [")", "]", "}", '"', "/*", "\n", " "]; public static function nextToken(stream:Stream, expect:String) { - var tok = stream.expect(expect, () -> stream.takeUntilOneOf(terminators)); - if (tok.length == 0) { - stream.error('Expected $expect'); - return null; + switch (stream.takeUntilOneOf(terminators)) { + case Some(tok) if (tok.length > 0): + return tok; + case None if (stream.content.length > 0): + var tok = stream.content; + stream.dropChars(stream.content.length); + return tok; + default: + stream.error('Expected $expect'); + return null; } - return tok; } public static function assertRead(stream:Stream, k:KissState):ReaderExp {