From f09e0d33a4d65ac71865ab83737b0c1c2f0d0eed Mon Sep 17 00:00:00 2001 From: Aryadev Chavali Date: Wed, 11 Feb 2026 08:25:01 +0000 Subject: [PATCH] reader: deal with negative prefix numbers in read --- src/reader.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/reader.c b/src/reader.c index 3588d96..ed0ec56 100644 --- a/src/reader.c +++ b/src/reader.c @@ -171,6 +171,25 @@ read_err_t read(sys_t *sys, stream_t *stream, lisp_t **ret) char c = stream_peek(stream); if (isdigit(c)) return read_int(sys, stream, ret); + else if (c == '-') + { + char c1 = stream_next(stream); + if (isdigit(c1)) + { + read_err_t err = read_int(sys, stream, ret); + if (err) + return err; + i64 n = as_int(*ret); + n *= -1; + *ret = make_int(n); + return READ_ERR_OK; + } + else if (is_sym(c1)) + { + stream_seek_backward(stream, 1); + return read_sym(sys, stream, ret); + } + } else if (is_sym(c)) return read_sym(sys, stream, ret); else if (c == '\'')