Some work

This commit is contained in:
2026-04-09 23:27:34 -07:00
parent 0671e17e8e
commit 52e421d0c9
7 changed files with 218 additions and 7 deletions

View File

@@ -50,6 +50,9 @@ typedef struct {
SrcPos pos;
const char *src;
size_t src_len;
bool has_buffer;
Token buffer;
} TokenStream;
typedef struct {
@@ -66,6 +69,7 @@ inline static void token_stream_init(TokenStream *stream, const char *src,
stream->pos.line_offset = 0;
stream->src = src;
stream->src_len = src_len;
stream->has_buffer = false;
}
inline static bool token_stream_is_eof(TokenStream *stream) {
@@ -73,8 +77,13 @@ inline static bool token_stream_is_eof(TokenStream *stream) {
}
// return true on success, false on error
bool token_stream_peek(TokenStream *restrict stream, Token *restrict out,
ParseError *restrict error);
bool token_stream_next(TokenStream *restrict stream, Token *restrict out,
ParseError *restrict error);
bool token_stream_discard(TokenStream *restrict stream,
ParseError *restrict error);
static inline void parse_error_clear(ParseError *error) {
error->set = false;
}