diff options
| author | hachem <im@hachem.wtf> | 2026-08-30 02:15:04 +0200 |
|---|---|---|
| committer | hachem <im@hachem.wtf> | 2026-08-30 02:15:04 +0200 |
| commit | 8fd64902c7752a9607974b093cd1946bc5ff79d6 (patch) | |
| tree | 36d0274b2b45bae3d1201da0f5c045161873ddcd /src/lexer/lexer.h | |
| parent | d235876f94f84dca15520a20bb476b916b927afb (diff) | |
add: start basic work on the lexer
Diffstat (limited to 'src/lexer/lexer.h')
| -rw-r--r-- | src/lexer/lexer.h | 48 |
1 files changed, 48 insertions, 0 deletions
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 <stddef.h> +#include <stdint.h> + +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); |
