From 59fd59b27856ab5ba13576567005a4520833c506 Mon Sep 17 00:00:00 2001 From: Lukas Krickl Date: Sun, 5 Nov 2023 19:46:13 +0100 Subject: [PATCH] Cleaned up tokenizer --- src/ulas.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/ulas.c b/src/ulas.c index 6adbe18..3464a9b 100644 --- a/src/ulas.c +++ b/src/ulas.c @@ -65,20 +65,23 @@ int ulas_tok(char *dst, const char *line, size_t n, ulas_tokrule rule) { int i = 0; int write = 0; - char current = '\0'; + +#define weld_tokcond (i < n - 1 && write < n - 1 && line[i]) // always skip leading terminators - while (line[i] && i < n - 1 && rule(line[i])) { + while (weld_tokcond && rule(line[i])) { i++; } - for (; i < n - 1 && write < n - 1 && line[i]; i++, write++) { - current = line[i]; - if (rule(current)) { + while (weld_tokcond) { + if (rule(line[i])) { break; } - dst[write] = current; + dst[write] = line[i]; + i++; + write++; } +#undef weld_tokcond dst[write + 1] = '\0'; return i; -- 2.30.2