Support #; comment.
authorJan Nieuwenhuizen <janneke@gnu.org>
Sun, 18 Dec 2016 09:02:49 +0000 (10:02 +0100)
committerJan Nieuwenhuizen <janneke@gnu.org>
Sun, 18 Dec 2016 09:02:49 +0000 (10:02 +0100)
* module/mes/read-0.mes (read-word): Implement #;.
* reader.c (read_word)[READER]: Likewise.
* tests/read.test: Test it.
* NEWS: Mention it.

NEWS
module/mes/read-0.mes
reader.c
tests/read.test

diff --git a/NEWS b/NEWS
index 3a42bd963066c596dbc1cc8f891741c09343b48c..6f191f11ac817e609be83353641db5e2e72939e3 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -20,6 +20,7 @@ block-comments are all handled by the Scheme reader later.
 *** Keywords are supported.
 *** Cond now supports =>.
 *** Lambda* and define* are now supported.
+*** #;-comment is now supported.
 * Changes in 0.3 since 0.2
 ** Core
 *** Number-based rather than pointer-based cells.
index ea854e16d378011c50a5db61461e7a52c8f0b10f..1e77ddd7f2cbdc96a0f6307501a17258d2f6a040 100644 (file)
                    ((eq? (peek-byte) 39) (read-byte)
                     (cons (lookup (cons (integer->char 35) (cons (integer->char 39) (list))) a)
                           (cons (read-word (read-byte) w a) (list))))
+                   ((eq? (peek-byte) 59) (read-byte)
+                    (read-word (read-byte) w a)
+                    (read-word (read-byte) w a))
                    ((eq? (peek-byte) 96) (read-byte)
                     (cons (lookup (cons (integer->char 35) (cons (integer->char 96) (list))) a)
                           (cons (read-word (read-byte) w a) (list))))
index 47d1b2467100487f750475fcddb91fc6f626add4..6698061c8fc9fc11b519505e0a2d7d711b21e90a 100644 (file)
--- a/reader.c
+++ b/reader.c
@@ -94,6 +94,7 @@ read_word (int c, SCM w, SCM a)
   if (c == '#' && peekchar () == 'x') {getchar (); return read_hex ();}
   if (c == '#' && peekchar () == '\\') {getchar (); return read_character ();}
   if (c == '#' && w == cell_nil && peekchar () == '(') {getchar (); return list_to_vector (read_list (a));}
+  if (c == '#' && peekchar () == ';') {getchar (); read_word (getchar (), w, a); return read_word (getchar (), w, a);}
   if (c == '#' && peekchar () == '!') {getchar (); read_block_comment (getchar ()); return read_word (getchar (), w, a);}
 #endif //READER
   return read_word (getchar (), append2 (w, cons (make_char (c), cell_nil)), a);
index 7bcdbf3b853a8110795a11cc5e02800e393ee0f8..3ebfe31df6d0a054755dfff578da8672655d88af 100755 (executable)
@@ -32,6 +32,7 @@ cons
 #!
 barf
 !#
+#;(bla) (display "must see!\n")
 (display `(display ,display)) (newline)
 (display `(display ,@'(string port))) (newline)
 (display #(0 1 2)) (newline)