From 050d3698954babb55fa72bc804281ffeeb98952c Mon Sep 17 00:00:00 2001 From: Ivar Fatland Date: Wed, 17 Dec 2025 19:29:58 +0100 Subject: [PATCH] passing scanner --- scanner.c | 26 ++++++++++++++++++++------ test_scanner.c | 9 ++++++--- 2 files changed, 26 insertions(+), 9 deletions(-) diff --git a/scanner.c b/scanner.c index e3efe45..c98bb01 100644 --- a/scanner.c +++ b/scanner.c @@ -335,12 +335,26 @@ bool scanner_print_errors(scanner_t *s, FILE *fp) { bool looks_like_float(scanner_t *s) { const char *cur = s->cur; - if (*cur == '+' || *cur == '-') cur++; - if (!isdigit((unsigned char)*(cur++))) return false; - while (isdigit((unsigned char)*(cur++))); - if (*cur != '.') return false; - cur++; - return isdigit((unsigned char)*cur); + if ( + ((*cur) == '+') || + ((*cur) == '-') + ) { + cur++; + } + if (!isdigit(((unsigned char)*cur))) { + return false; + } else { + cur++; + } + while (isdigit(((unsigned char)*cur))) { + cur++; + } + if ((*cur) != '.') { + return false; + } else { + cur++; + } + return isdigit(((unsigned char)*cur)); } bool looks_like_int(scanner_t *s) { diff --git a/test_scanner.c b/test_scanner.c index 7f3582c..3a98686 100644 --- a/test_scanner.c +++ b/test_scanner.c @@ -21,7 +21,8 @@ Test(scanner, looks_like_float) { with_borrow(allocator) { scanner_t scanner = make_scanner("test", buffer, allocator); while (!scan_eof(&scanner)) { - bool actual = looks_like_float(&scanner); + bool does_look_like_float = looks_like_float(&scanner); + bool does_look_like_int = looks_like_float(&scanner); while (*scanner.cur++ != ' '); bool expect; if (scan_literal(&scanner, "true")) { @@ -32,8 +33,10 @@ Test(scanner, looks_like_float) { assert(false && "invalid expectation"); } scan_whitespace(&scanner); - cr_assert_eq(actual, expect); - + cr_assert_eq(does_look_like_float, expect); + if (does_look_like_float) { + cr_assert(does_look_like_int); + } } }