From 8fd64902c7752a9607974b093cd1946bc5ff79d6 Mon Sep 17 00:00:00 2001 From: hachem Date: Sun, 30 Aug 2026 02:15:04 +0200 Subject: add: start basic work on the lexer --- src/lexer/lexer.h | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 src/lexer/lexer.h (limited to 'src/lexer/lexer.h') diff --git a/src/lexer/lexer.h b/src/lexer/lexer.h new file mode 100644 index 0000000..4c40354 --- /dev/null +++ b/src/lexer/lexer.h @@ -0,0 +1,48 @@ +#pragma once + +#include +#include + +enum TokenType +{ + TOKEN_EOF, + TOKEN_IDENTIFIER, + TOKEN_INTEGER, + + TOKEN_EQUAL, + TOKEN_PLUS, + TOKEN_MINUS, + TOKEN_STAR, + TOKEN_SLASH, + TOKEN_CARET, + TOKEN_DOT, + TOKEN_COMMA, + TOKEN_COLON, + TOKEN_LEFT_PAREN, + TOKEN_RIGHT_PAREN, + TOKEN_LEFT_BRACKET, + TOKEN_RIGHT_BRACKET, + TOKEN_LEFT_BRACE, + TOKEN_RIGHT_BRACE, + + TOKEN_UNKNOWN, +}; + +struct Token +{ + enum TokenType type; + const char* start; + size_t length; + uint32_t line; +}; + +struct Lexer +{ + const char* source; + const char* current; + uint32_t line; +}; + +struct Lexer create_lexer(const char* source); +struct Token scan_token(struct Lexer* lexer); +const char* token_type_name(enum TokenType type); -- cgit v1.3