From 93798144b2c1069ee0710dec278fe998b2cc583e Mon Sep 17 00:00:00 2001 From: Justin Ethier Date: Mon, 14 Aug 2017 22:43:43 +0000 Subject: [PATCH] WIP --- read.scm | 3 +++ runtime.c | 22 +++++++++++++++++++--- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/read.scm b/read.scm index 0f4d2436..78b4ea97 100644 --- a/read.scm +++ b/read.scm @@ -743,6 +743,9 @@ (reverse lis)) (else (loop (cons t lis) (parse2 fp)))))) + ((eq? token #()) + ;; TODO: vector parsing, similar to list + 'TODO) ((eq? token #\') (list 'quote (parse2 fp))) ((eq? token #\`) diff --git a/runtime.c b/runtime.c index 1b65c669..2204e499 100644 --- a/runtime.c +++ b/runtime.c @@ -5946,15 +5946,31 @@ void Cyc_io_read_token(void *data, object cont, object port) p->col_num++; // TODO: block comment if (c == 't') { + if ((p->mem_buf_len - p->buf_idx) >= 3 && + p->mem_buf[p->buf_idx + 0] == 'r' && + p->mem_buf[p->buf_idx + 1] == 'u' && + p->mem_buf[p->buf_idx + 2] == 'e') { + p->buf_idx += 3; + p->col_num += 3; + } return_closcall1(data, cont, boolean_t); - // TODO: #true } else if (c == 'f') { + if ((p->mem_buf_len - p->buf_idx) >= 4 && + p->mem_buf[p->buf_idx + 0] == 'a' && + p->mem_buf[p->buf_idx + 1] == 'l' && + p->mem_buf[p->buf_idx + 2] == 's' && + p->mem_buf[p->buf_idx + 3] == 'e') { + p->buf_idx += 4; + p->col_num += 4; + } return_closcall1(data, cont, boolean_f); - } - // TODO: #false // TODO: numbers // TODO: bytevector // TODO: vector + } else if (c == '(') { + make_empty_vector(vec); + return_closcall1(data, cont, &vec); + } // TODO: character // TODO: datum comment _read_error(data, p, "Unhandled input sequence");