From 0be08fb13cff099e9f5514080dbe32badccf0569 Mon Sep 17 00:00:00 2001 From: Nat Quayle Nelson Date: Tue, 23 Nov 2021 19:33:45 -0700 Subject: [PATCH] exp comments --- src/kiss/Reader.hx | 6 ++++++ src/test/cases/BasicTestCase.hx | 4 ++++ src/test/cases/BasicTestCase.kiss | 5 ++++- 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/kiss/Reader.hx b/src/kiss/Reader.hx index 57f3618..3ab5c8e 100644 --- a/src/kiss/Reader.hx +++ b/src/kiss/Reader.hx @@ -56,7 +56,13 @@ class Reader { readTable["//"] = (stream:Stream, k) -> { stream.takeUntilAndDrop("\n"); null; + }; + // Special comment syntax that disables the next whole reader expression: + readTable["**"] = (stream:Stream, k) -> { + assertRead(stream, k); + null; }; + readTable["#|"] = (stream:Stream, k) -> RawHaxe(stream.expect("closing |#", () -> stream.takeUntilAndDrop("|#"))); readTable[":"] = (stream:Stream, k) -> TypedExp(nextToken(stream, "a type path"), assertRead(stream, k)); diff --git a/src/test/cases/BasicTestCase.hx b/src/test/cases/BasicTestCase.hx index e955aa5..448dff0 100644 --- a/src/test/cases/BasicTestCase.hx +++ b/src/test/cases/BasicTestCase.hx @@ -318,6 +318,10 @@ class BasicTestCase extends Test { function testCountingLambda() { _testCountingLambda(); } + + function testExpComment() { + _testExpComment(); + } } class BasicObject { diff --git a/src/test/cases/BasicTestCase.kiss b/src/test/cases/BasicTestCase.kiss index a7cf264..57310dd 100644 --- a/src/test/cases/BasicTestCase.kiss +++ b/src/test/cases/BasicTestCase.kiss @@ -575,4 +575,7 @@ (Assert.equals 1 (fullSyntax)) (Assert.equals 2 (fullSyntax)) (Assert.equals 1 (arrowSyntax)) - (Assert.equals 2 (arrowSyntax)))) \ No newline at end of file + (Assert.equals 2 (arrowSyntax)))) + +(function _testExpComment [] + (Assert.equals 15 (+ **6 5 **(- 5 11) 5 (+ 5 **(20 9))))) \ No newline at end of file