ox

The Ox programming language, compiler and tools (WIP)
Log | Files | Refs | README | LICENSE

commit f7946e20cdc617207a36a264500f6167db548673
parent 8370e7cd1c901c76e0fca560e8f7622d972d9359
Author: citbl <citbl@citbl.org>
Date:   Thu, 25 Jun 2026 17:24:46 +1000

refac

Diffstat:
Msrc/lexer.c | 30+++++++++++++++---------------
Msrc/lexer.h | 1+
2 files changed, 16 insertions(+), 15 deletions(-)

diff --git a/src/lexer.c b/src/lexer.c @@ -62,7 +62,7 @@ skip_space_and_comments(Lexer* lex) } static Token -make_ident(Lexer* lex, size_t pos, size_t line, size_t col) +make_ident(Lexer* lex, size_t start, size_t line, size_t col) { for (;;) { char c = peek(lex); @@ -74,34 +74,34 @@ make_ident(Lexer* lex, size_t pos, size_t line, size_t col) TokenType type = TOKEN_IDENT; - if ((lex->pos - pos) == 6 && strncmp(lex->src + pos, "return", 6) == 0) + if ((lex->pos - start) == 6 && strncmp(lex->src + start, "return", 6) == 0) type = TOKEN_RETURN; - else if ((lex->pos - pos) == 3 && strncmp(lex->src + pos, "for", 3) == 0) + else if ((lex->pos - start) == 3 && strncmp(lex->src + start, "for", 3) == 0) type = TOKEN_FOR; - else if ((lex->pos - pos) == 2 && strncmp(lex->src + pos, "if", 2) == 0) + else if ((lex->pos - start) == 2 && strncmp(lex->src + start, "if", 2) == 0) type = TOKEN_IF; - else if ((lex->pos - pos) == 4 && strncmp(lex->src + pos, "else", 4) == 0) + else if ((lex->pos - start) == 4 && strncmp(lex->src + start, "else", 4) == 0) type = TOKEN_ELSE; - else if ((lex->pos - pos) == 8 && strncmp(lex->src + pos, "continue", 8) == 0) + else if ((lex->pos - start) == 8 && strncmp(lex->src + start, "continue", 8) == 0) type = TOKEN_CONTINUE; - else if ((lex->pos - pos) == 5 && strncmp(lex->src + pos, "break", 5) == 0) + else if ((lex->pos - start) == 5 && strncmp(lex->src + start, "break", 5) == 0) type = TOKEN_BREAK; - else if ((lex->pos - pos) == 5 && strncmp(lex->src + pos, "while", 5) == 0) + else if ((lex->pos - start) == 5 && strncmp(lex->src + start, "while", 5) == 0) type = TOKEN_WHILE; - else if ((lex->pos - pos) == 6 && strncmp(lex->src + pos, "struct", 6) == 0) + else if ((lex->pos - start) == 6 && strncmp(lex->src + start, "struct", 6) == 0) type = TOKEN_STRUCT; - else if ((lex->pos - pos) == 6 && strncmp(lex->src + pos, "extend", 6) == 0) + else if ((lex->pos - start) == 6 && strncmp(lex->src + start, "extend", 6) == 0) type = TOKEN_EXTEND; - else if ((lex->pos - pos) == 4 && strncmp(lex->src + pos, "true", 4) == 0) + else if ((lex->pos - start) == 4 && strncmp(lex->src + start, "true", 4) == 0) type = TOKEN_BOOL_TRUE_LITERAL; - else if ((lex->pos - pos) == 5 && strncmp(lex->src + pos, "false", 5) == 0) + else if ((lex->pos - start) == 5 && strncmp(lex->src + start, "false", 5) == 0) type = TOKEN_BOOL_FALSE_LITERAL; - else if ((lex->pos - pos) == 2 && strncmp(lex->src + pos, "fx", 2) == 0) + else if ((lex->pos - start) == 2 && strncmp(lex->src + start, "fx", 2) == 0) type = TOKEN_FX; - else if ((lex->pos - pos) == 2 && strncmp(lex->src + pos, "fn", 2) == 0) + else if ((lex->pos - start) == 2 && strncmp(lex->src + start, "fn", 2) == 0) type = TOKEN_FN; // Check for keywords, or a Capitalised CustomType // -- @later do it in the parser, keep types as unprotected names @@ -121,7 +121,7 @@ make_ident(Lexer* lex, size_t pos, size_t line, size_t col) // } // } - return (Token) { .type = type, .start = pos, .line = line, .col = col, .end = lex->pos }; + return (Token) { .type = type, .start = start, .line = line, .col = col, .end = lex->pos }; } static Token make_number(Lexer* lex, size_t pos, size_t line, size_t col) diff --git a/src/lexer.h b/src/lexer.h @@ -1,6 +1,7 @@ #pragma once #include <stdlib.h> + #include "types.h" void lexer_lex(Lexer*, const char* filename, const char* contents);