sic

The sic programming language, compiler and tools (WIP)
Log | Files | Refs

commit 6a8bfd1a72a665b1032d14999469b217dded3078
parent d4d06f25ad81a9ab5bfe2cc9d01391eb48b828bd
Author: citbl <citbl@citbl.org>
Date:   Wed, 13 May 2026 23:18:42 +1000

refac

Diffstat:
Dsrc/common.h | 31-------------------------------
Msrc/lexer.c | 40----------------------------------------
Msrc/lexer.h | 29+++++++++++++++++++++++++++--
Asrc/lexer_tools.c | 42++++++++++++++++++++++++++++++++++++++++++
Asrc/lexer_tools.h | 5+++++
Msrc/main.c | 1+
Msrc/utils.c | 1-
7 files changed, 75 insertions(+), 74 deletions(-)

diff --git a/src/common.h b/src/common.h @@ -1,31 +0,0 @@ -#pragma once - -#include <stdbool.h> -#include <stddef.h> -#include <stdio.h> -#include <stdlib.h> - -#include "token.h" - -///////////////////////////////////////////////// - -typedef struct Lexer_State { - size_t pos; - size_t line; - size_t col; -} Lexer_State; - -typedef struct Lexer { - const char* code; - size_t code_len; - const char* path; - const char* filename; - Lexer_State state; - Token* tokens; - size_t len; - size_t cap; -} Lexer; - -///////////////////////////////////////////////// - -// void check(bool condition, const char* message); diff --git a/src/lexer.c b/src/lexer.c @@ -11,46 +11,6 @@ static void add_token(Lexer* lex, Token t) ARRAY_PUSH(lex->tokens, lex->len, lex->cap, t); } -void print_tokens(Lexer* lex) -{ - Token t; - Token_Type typ; - size_t i; - - printf("------- print tokens (%zu) -------\n", lex->len); - - for (i = 0; i < lex->len; i++) { - t = lex->tokens[i]; - typ = t.type; - - printf("%s: %zu:%zu ", t.filename, t.line, t.col); - - switch (typ) { - case LIT_STRING: - printf("STRING LITERAL: %s\n", lex->tokens[i].lexeme.value); - break; - case LIT_DECIMAL: - printf("DECIMAL LITERAL: %s\n", lex->tokens[i].lexeme.value); - break; - case LIT_INT: - printf("DECIMAL LITERAL: %s\n", lex->tokens[i].lexeme.value); - break; - case EQ: - printf("EQ =\n"); - break; - case SEMICOL: - printf("SEMICOL ;\n"); - break; - case IDENT: - printf("IDENT: %s\n", lex->tokens[i].lexeme.value); - break; - default: - printf("print_tokens: unhandled token %i\n", typ); - break; - } - } -} - static void add_to_string(Token* tok, char c) { Str* str = &tok->lexeme; diff --git a/src/lexer.h b/src/lexer.h @@ -1,6 +1,31 @@ #pragma once -#include "common.h" +#include <stdbool.h> +#include <stddef.h> +#include <stdio.h> +#include <stdlib.h> + +#include "token.h" + +///////////////////////////////////////////////// + +typedef struct Lexer_State { + size_t pos; + size_t line; + size_t col; +} Lexer_State; + +typedef struct Lexer { + const char* code; + size_t code_len; + const char* path; + const char* filename; + Lexer_State state; + Token* tokens; + size_t len; + size_t cap; +} Lexer; + +///////////////////////////////////////////////// -void print_tokens(Lexer* l); Lexer* lexer_lex(Lexer* lexer); diff --git a/src/lexer_tools.c b/src/lexer_tools.c @@ -0,0 +1,42 @@ +#include "lexer.h" + +void print_tokens(Lexer* lex) +{ + Token t; + Token_Type typ; + size_t i; + + printf("------- print tokens (%zu) -------\n", lex->len); + + for (i = 0; i < lex->len; i++) { + t = lex->tokens[i]; + typ = t.type; + + printf("%s: %zu:%zu ", t.filename, t.line, t.col); + + switch (typ) { + case LIT_STRING: + printf("STRING LITERAL: %s\n", lex->tokens[i].lexeme.value); + break; + case LIT_DECIMAL: + printf("DECIMAL LITERAL: %s\n", lex->tokens[i].lexeme.value); + break; + case LIT_INT: + printf("DECIMAL LITERAL: %s\n", lex->tokens[i].lexeme.value); + break; + case EQ: + printf("EQ =\n"); + break; + case SEMICOL: + printf("SEMICOL ;\n"); + break; + case IDENT: + printf("IDENT: %s\n", lex->tokens[i].lexeme.value); + break; + default: + printf("print_tokens: unhandled token %i\n", typ); + break; + } + } +} + diff --git a/src/lexer_tools.h b/src/lexer_tools.h @@ -0,0 +1,5 @@ +#pragma once + +#include "lexer.h" + +void print_tokens(Lexer*); diff --git a/src/main.c b/src/main.c @@ -2,6 +2,7 @@ #include <string.h> #include "lexer.h" +#include "lexer_tools.h" #include "utils.h" int main(int argc, char** args) diff --git a/src/utils.c b/src/utils.c @@ -1,5 +1,4 @@ #include "utils.h" -#include "common.h" #include <stdio.h> #include <stdlib.h> #include <string.h>