From 3a9f7e6c9e1f44385c1950edc6267af8eea56a7e Mon Sep 17 00:00:00 2001 From: Fabrice Date: Tue, 3 Mar 2026 09:42:37 +0100 Subject: formatting of tokens --- src/token.cc | 30 +++++++++++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) (limited to 'src/token.cc') diff --git a/src/token.cc b/src/token.cc index 7f38f71..ddc0a68 100644 --- a/src/token.cc +++ b/src/token.cc @@ -1,8 +1,9 @@ #ifndef TOKEN_CC #define TOKEN_CC -#include "source.cc" +#include #include "common.cc" +#include "source.cc" #define TOKEN_KINDS_NOLEX \ X(Eof) \ @@ -13,7 +14,7 @@ #define TOKEN_KIND(name) Token_Kind_##name -enum Token_Kind { +enum Token_Kind: u8 { #define X(name) TOKEN_KIND(name), TOKEN_KINDS_NOLEX #undef X @@ -29,7 +30,30 @@ struct Token { Span span; Token() : kind(Token_Kind_Eof), text(), span() {} - Token(Token_Kind kind, String text, Span span) : kind(kind), text(text), span(span) {} + Token(Token_Kind kind, String text, Span span) + : kind(kind), text(text), span(span) {} }; +bool token_write(const Token* token, FILE* stream) { + assert_neq(token, nullptr); + assert_neq(stream, nullptr); + + i32 rc = fprintf(stream, "Token { kind: %d, text: ", token->kind); + if(unlikely(rc < 0)) return false; + + bool status = string_write(&token->text, stream); + if(unlikely(!status)) return false; + + rc = fprintf(stream, ", span: "); + if(unlikely(rc < 0)) return false; + + status = span_write(&token->span, stream); + if(unlikely(!status)) return false; + + rc = fprintf(stream, " }"); + if(unlikely(rc < 0)) return false; + + return true; +} + #endif -- cgit v1.2.3