diff options
author | c+1 | 2023-05-03 10:23:35 -0400 |
---|---|---|
committer | c+1 | 2023-05-03 10:23:35 -0400 |
commit | 9d981a2597dca067572ee16d1a3f6e99f9c6ddd6 (patch) | |
tree | 37de867b64491259e2b1dd33330bc234fd0b6eb1 /src/lexer.c | |
parent | 191c063e6c7332a8558835ce0d4710c3f8ba7de8 (diff) |
in which i learn how c structs work
Diffstat (limited to 'src/lexer.c')
-rw-r--r-- | src/lexer.c | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/src/lexer.c b/src/lexer.c new file mode 100644 index 0000000..692a9c9 --- /dev/null +++ b/src/lexer.c @@ -0,0 +1,52 @@ +#include "include/lexer.h" +#include <stdlib.h> +#include <string.h> + +lexer_T* lexer_init(char* content) { + lexer_T* lexer = calloc(1, sizeof(struct LEXER_STRUC)); + + lexer->content = content; + lexer->i = 0; + lexer->c = content[lexer->i]; + + return lexer; +} + +void lexer_next(lexer_T* lexer) { + // if not at end of line or file + if (lexer->c != '\0' && lexer->i < strlen(lexer->content)) { + lexer->i += 1; // advance index 1 character + lexer->c = lexer->content[lexer->i]; // set character w/ index + } +} + +void lexer_pass(lexer_T* lexer) { + while (lexer->c == ' ' || + lexer->c == '\t' || + lexer->c == '\n') { + lexer_next(lexer); + } +} + +token_T* lexer_get_next_token(lexer_T* lexer) { + while (lexer->c != '\0' && lexer->i < strlen(lexer->content)) { + if (lexer->c == ' ' || + lexer->c == '\t' || + lexer->c == '\n') { + + } + } +} + +token_T* lexer_get_string(lexer_T* lexer) { + +} +token_T* lexer_get_id(lexer_T* lexer) { + +} +token_T* lexer_next_token(lexer_T* lexer, token_T* token) { + +} +char* lexer_get_c_as_string(lexer_T* lexer) { + +} |