From 7955cac4a1f3f1a1cad132903b404886b298093c Mon Sep 17 00:00:00 2001 From: Aryadev Chavali Date: Thu, 22 Jan 2026 21:27:27 +0000 Subject: [PATCH] parser/parser.c: stream function prototypes I've made prototypes for them, put at the top, and moved their implementations to the bottom. They're not exposed to anything outside this code unit. Now, when reading the code, the parsing routines (which are the main reason to be here) are at the top and clear to read. --- src/arl/parser/parser.c | 83 ++++++++++++++++++++++------------------- 1 file changed, 44 insertions(+), 39 deletions(-) diff --git a/src/arl/parser/parser.c b/src/arl/parser/parser.c index 2ee5d52..3260a3a 100644 --- a/src/arl/parser/parser.c +++ b/src/arl/parser/parser.c @@ -33,45 +33,10 @@ const char *parse_err_to_string(parse_err_t err) } } -bool stream_eos(parse_stream_t *stream) -{ - return stream->cursor >= stream->contents.size; -} - -char stream_peek(parse_stream_t *stream) -{ - if (stream_eos(stream)) - return '\0'; - else - return stream->contents.data[stream->cursor]; -} - -void stream_advance(parse_stream_t *stream, u64 size) -{ - if (stream->cursor + size >= stream->contents.size) - stream->cursor = stream->contents.size; - else - { - for (u64 i = 0; i < size; ++i) - { - ++stream->cursor; - if (stream_peek(stream) == '\n') - { - stream->line++; - stream->column = 0; - } - else - { - stream->column++; - } - } - } -} - -u64 stream_size(parse_stream_t *stream) -{ - return stream->contents.size; -} +bool stream_eos(parse_stream_t *stream); +char stream_peek(parse_stream_t *stream); +void stream_advance(parse_stream_t *stream, u64 size); +u64 stream_size(parse_stream_t *stream); parse_err_t parse_string(parse_stream_t *stream, obj_t *ret) { @@ -140,6 +105,46 @@ parse_err_t parse(ast_t *out, parse_stream_t *stream) return PARSE_ERR_OK; } +bool stream_eos(parse_stream_t *stream) +{ + return stream->cursor >= stream->contents.size; +} + +char stream_peek(parse_stream_t *stream) +{ + if (stream_eos(stream)) + return '\0'; + else + return stream->contents.data[stream->cursor]; +} + +void stream_advance(parse_stream_t *stream, u64 size) +{ + if (stream->cursor + size >= stream->contents.size) + stream->cursor = stream->contents.size; + else + { + for (u64 i = 0; i < size; ++i) + { + ++stream->cursor; + if (stream_peek(stream) == '\n') + { + stream->line++; + stream->column = 0; + } + else + { + stream->column++; + } + } + } +} + +u64 stream_size(parse_stream_t *stream) +{ + return stream->contents.size; +} + /* Copyright (C) 2026 Aryadev Chavali * This program is distributed in the hope that it will be useful, but WITHOUT